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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    </CodeReinstall>
    <BuildCommitID>b7c72a3d493c335e3f340e5344f586b9a38c6ad3</BuildCommitID>
    <BuildDate>2026-10-28 08:36:27</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Modules/AdminDynamicField.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA1ODJlOTIxOTRlODBmYzI1YzdiYTI3ZDFjN2VhZjZiNjlhNTgxYTIxIC0gS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFkbWluRHluYW1pY0ZpZWxkOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHNldCBwcmVmIGZvciBjb2x1bW5zIGtleQogICAgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9ID0gJ0luY2x1ZGVJbnZhbGlkJyAuICctJyAuICRTZWxmLT57QWN0aW9ufTsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA9ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9IH07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0R5bmFtaWNGaWVsZERlbGV0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fRHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0lUU01Db25maWdJdGVtVmVyc2lvblVwZGF0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25TeW5jKCkgKSB7CiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgcmV0dXJuICRTZWxmLT5fU2hvd092ZXJ2aWV3KAogICAgICAgICVQYXJhbSwKICAgICAgICBBY3Rpb24gPT4gJ092ZXJ2aWV3JywKICAgICk7Cn0KCiMgQUpBWCBzdWItYWN0aW9uCnN1YiBfRHluYW1pY0ZpZWxkRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIG15ICRDb25maXJtZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlybWVkJyApOwogICAgaWYgKCAhJENvbmZpcm1lZCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiTmVlZCAnQ29uZmlybWVkJyEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X1RyaWdnZXJFcnJvckRpYWxvZygKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVsZXRpb24gd2FzIG5vdCBjb25maXJtZWQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSUQnICk7CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgSUQgPT4gJElELAogICAgKTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAnTWVzc2FnZScgID0+ICJDb3VsZCBub3QgZmluZCBEeW5hbWljRmllbGQgJElEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fVHJpZ2dlckVycm9yRGlhbG9nKAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb3VsZCBub3QgZmluZCBkeW5hbWljIGZpZWxkIHRvIGJlIGRlbGV0ZWQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntJbnRlcm5hbEZpZWxkfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSBpbnRlcm5hbCBEeW5hbWljRmllbGQgJElEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fVHJpZ2dlckVycm9yRGlhbG9nKAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggIkNvdWxkIG5vdCBkZWxldGUgZHluYW1pYyBmaWVsZCAnJXMnIGJlY2F1c2UgaXQgaXMgYW4gaW50ZXJuYWwgZmllbGQuIiwgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICksCiAgICAgICAgKTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgIyBwcmV2ZW50IGR5bmFtaWMgZmllbGQgZGVsZXRpb24gaWYgdGhlIGZpZWxkIGlzIHVzZWQgaW4gYSBjb25maWcgaXRlbSBkZWZpbml0aW9uCiAgICB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwoKICAgICAgICAjIHN0YW5kYXJkIGNhc2U6IHRoZSBmaWVsZCBpcyBkaXJlY3RseSBpbnRlZ3JhdGVkCiAgICAgICAgbXkgJUxvY2FsaXplZERGQ29uZmlnID0gJER5bmFtaWNGaWVsZENvbmZpZy0+JSo7CiAgICAgICAgbXkgJExvY2FsaXplZERGQ29uZmlnUmVmID0geyAlTG9jYWxpemVkREZDb25maWcgfTsKCiAgICAgICAgIyBpZiB0aGUgZHluYW1pYyBmaWVsZCBpcyBwYXJ0IG9mIGEgc2V0LCBhbnkgY2hhbmdlIHRvIGl0IHdpbGwgYWZmZWN0IHRoZSBleGlzdGluZyBzZXQKICAgICAgICAjIGFuZCB0aHVzIHRoZSBDSQogICAgICAgIGlmICggJExvY2FsaXplZERGQ29uZmlnUmVmLT57Q29uZmlnfXtQYXJ0T2ZTZXR9ICkgewogICAgICAgICAgICAkTG9jYWxpemVkREZDb25maWdSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICRMb2NhbGl6ZWRERkNvbmZpZ1JlZi0+e0NvbmZpZ317UGFydE9mU2V0fSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgbG9vcCBvdmVyIGFsbCBjbGFzc2VzIGFuZCBjaGVjayB3aGV0aGVyIHRoZXkgaW5jbHVkZSB0aGUgY2hhbmdlZCBkeW5hbWljIGZpZWxkCiAgICAgICAgbXkgQEFmZmVjdGVkQ0lDbGFzc2VzOwogICAgICAgIGZvciBteSAkQ2xhc3NJRCAoIGtleXMgJENsYXNzTGlzdC0+JSogKSB7CiAgICAgICAgICAgIG15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1c2UgbmFtZSBvZiBmaWVsZCBpdHNlbGYKICAgICAgICAgICAgaWYgKCAkRGVmaW5pdGlvblJlZi0+e0R5bmFtaWNGaWVsZFJlZn17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAQWZmZWN0ZWRDSUNsYXNzZXMsICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0LWlubmVyIGZpZWxkcyBhcmUgbm90IHN0b3JlZCBpbiBkZWZpbml0aW9uIGR5bmFtaWMgZmllbGQgcmVmCiAgICAgICAgICAgIGVsc2lmICggJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyAkTG9jYWxpemVkREZDb25maWdSZWYtPntOYW1lfSB9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAQWZmZWN0ZWRDSUNsYXNzZXMsICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2VuZCBlcnJvciBtZXNzYWdlIHRvIGZyb250ZW5kIHRvIGJlIGRpc3BsYXllZCBpbiBtb2RhbCBkaWFsb2cKICAgICAgICBpZiAoIEBBZmZlY3RlZENJQ2xhc3NlcyApIHsKICAgICAgICAgICAgbXkgJEpvaW5lZENsYXNzZXMgPSBqb2luKCc8YnIvPicsIEBBZmZlY3RlZENJQ2xhc3Nlcyk7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9UcmlnZ2VyRXJyb3JEaWFsb2coCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCJUaGUgZHluYW1pYyBmaWVsZCAnJXMnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuIiwgJExvY2FsaXplZERGQ29uZmlnUmVmLT57TmFtZX0sICRKb2luZWRDbGFzc2VzKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgbXkgJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkFsbFZhbHVlc0RlbGV0ZSgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRWYWx1ZXNEZWxldGVTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X1RyaWdnZXJFcnJvckRpYWxvZygKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0KICAgICAgICAgICAgICAgIC0+VHJhbnNsYXRlKCAiVmFsdWVzIGZvciB0aGUgZHluYW1pYyBmaWVsZCAnJXMnIGNvdWxkIG5vdCBiZSBkZWxldGVkLiBQbGVhc2UgcmV2aWV3IHRoZSBsb2dzIGZvciBtb3JlIGRldGFpbHMuIiwgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZERlbGV0ZSgKICAgICAgICBJRCAgICAgPT4gJElELAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRFbmNvZGVkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyktPkVuY29kZSgKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAkU3VjY2VzcywKICAgICAgICB9LAogICAgKTsKCiAgICAjIEpTT04gZW5jb2RpbmcgbmVlZGVkIGFzIGZyb250ZW5kIGRvZXMgdXNlIHRoZSByZXNwb25zZSBmb3Igc2hvd2luZyBhbiBlcnJvciBkaWFsb2cgaWYgbmVjZXNzYXJ5CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgQ29udGVudCAgICAgPT4gJEVuY29kZWRDb250ZW50LAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgpzdWIgX1Nob3dPdmVydmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRmllbGRUeXBlQ29uZmlnICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKTsKICAgIG15ICRPYmplY3RUeXBlRmlsdGVyICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnT2JqZWN0VHlwZUZpbHRlcicgKSB8fCAnJzsKICAgIG15ICRGaWVsZFR5cGVGaWx0ZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnRmllbGRUeXBlRmlsdGVyJyApICB8fCAnJzsKICAgIG15ICROYW1lc3BhY2VGaWx0ZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZXNwYWNlRmlsdGVyJyApICB8fCAnJzsKCiAgICAkUGFyYW17SW5jbHVkZUludmFsaWR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0luY2x1ZGVJbnZhbGlkJyApOwoKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SW5jbHVkZUludmFsaWR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9LAogICAgICAgICAgICBWYWx1ZSAgPT4gJFBhcmFte0luY2x1ZGVJbnZhbGlkfSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA9ICRQYXJhbXtJbmNsdWRlSW52YWxpZH07CiAgICB9CiAgICAkUGFyYW17SW5jbHVkZUludmFsaWRDaGVja2VkfSA9ICRTZWxmLT57SW5jbHVkZUludmFsaWR9ID8gJ2NoZWNrZWQnIDogJyc7CgogICAgbXkgJE91dHB1dCA9IGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXI7CgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICVDSURlZmluaXRpb25zT3V0T2ZTeW5jID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25OZWVkU3luYygpOwoKICAgIGlmICggJUNJRGVmaW5pdGlvbnNPdXRPZlN5bmMgKSB7CiAgICAgICAgbXkgJENJU3luY2hyb25pemVNZXNzYWdlID0gVHJhbnNsYXRhYmxlKAogICAgICAgICAgICAnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJwogICAgICAgICk7CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBJbmZvID0+ICRDSVN5bmNocm9uaXplTWVzc2FnZSwKICAgICAgICApOwogICAgfQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgY2hlY2sgZm9yIHBvc3NpYmxlIG9yZGVyIGNvbGxpc2lvbnMgb3IgZ2FwcwogICAgbXkgJE9yZGVyU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZE9yZGVyQ2hlY2soKTsKICAgIGlmICggISRPcmRlclN1Y2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fRHluYW1pY0ZpZWxkT3JkZXJSZXNldCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBjYWxsIGFsbCBuZWVkZWQgdGVtcGxhdGUgYmxvY2tzCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNYWluJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0KICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEZpZWxkVHlwZUNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnRmllbGRzIGNvbmZpZ3VyYXRpb24gaXMgbm90IHZhbGlkJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB0aGUgZmllbGQgdHlwZXMgKGJhY2tlbmRzKSBhbmQgaXRzIGNvbmZpZyBkaWFsb2dzCiAgICBteSAlRmllbGRUeXBlczsKICAgIG15ICVGaWVsZERpYWxvZ3M7CiAgICBGSUVMRFRZUEU6CiAgICBmb3IgbXkgJEZpZWxkVHlwZSAoIHNvcnQga2V5cyAleyRGaWVsZFR5cGVDb25maWd9ICkgewoKICAgICAgICBuZXh0IEZJRUxEVFlQRSBpZiAhJEZpZWxkVHlwZUNvbmZpZy0+eyRGaWVsZFR5cGV9OwogICAgICAgIG5leHQgRklFTERUWVBFIGlmICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlfS0+e0Rpc2FibGVkQWRkfTsKCiAgICAgICAgIyBhZGQgdGhlIGZpZWxkIHR5cGUgdG8gdGhlIGxpc3QKICAgICAgICAkRmllbGRUeXBlc3skRmllbGRUeXBlfSA9ICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlfS0+e0Rpc3BsYXlOYW1lfTsKCiAgICAgICAgIyBnZXQgdGhlIGNvbmZpZyBkaWFsb2cKICAgICAgICAkRmllbGREaWFsb2dzeyRGaWVsZFR5cGV9ID0gJEZpZWxkVHlwZUNvbmZpZy0+eyRGaWVsZFR5cGV9LT57Q29uZmlnRGlhbG9nfTsKICAgIH0KCiAgICBteSAkT2JqZWN0VHlwZUNvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZScpOwogICAgbXkgQERGTmFtZXNwYWNlcyAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TmFtZXNwYWNlJyktPk5hbWVzcGFjZXNMaXN0KAogICAgICAgIFNjb3BlID0+ICdEeW5hbWljRmllbGQnLAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkT2JqZWN0VHlwZUNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnT2JqZWN0cyBjb25maWd1cmF0aW9uIGlzIG5vdCB2YWxpZCcpLAogICAgICAgICk7CiAgICB9CgogICAgIyBtYWtlIE9iamVjdFR5cGVDb25maWcgbG9jYWwgdmFyaWFibGUgdG8gcHJvcGVyIHNvcnRpbmcKICAgIG15ICVPYmplY3RUeXBlQ29uZmlnID0gJXskT2JqZWN0VHlwZUNvbmZpZ307CgogICAgIyBjeWNsZSB0aG91Z2h0IGFsbCBvYmplY3RzIHRvIGNyZWF0ZSB0aGUgc2VsZWN0IGFkZCBmaWVsZCBzZWxlY3RzCiAgICBteSBAT2JqZWN0VHlwZXM7CiAgICBteSAlT2JqZWN0VHlwZXNUcmFuc2xhdGVkOwoKICAgIE9CSkVDVFRZUEU6CiAgICBmb3IgbXkgJE9iamVjdFR5cGUgKAogICAgICAgIHNvcnQgewogICAgICAgICAgICAoIGludCAkT2JqZWN0VHlwZUNvbmZpZ3skYX0tPntQcmlvfSB8fCAwICkgPD0+ICggaW50ICRPYmplY3RUeXBlQ29uZmlneyRifS0+e1ByaW99IHx8IDAgKQogICAgICAgIH0ga2V5cyAlT2JqZWN0VHlwZUNvbmZpZwogICAgICAgICkKICAgIHsKICAgICAgICBuZXh0IE9CSkVDVFRZUEUgdW5sZXNzICRPYmplY3RUeXBlQ29uZmlnLT57JE9iamVjdFR5cGV9OwoKICAgICAgICBteSAkU2VsZWN0TmFtZSA9ICRPYmplY3RUeXBlIC4gJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgIG15IEBGaWVsZExpc3Q7CiAgICAgICAgbXkgQFJlZmVyZW5jZUR5bmFtaWNGaWVsZHM7CiAgICAgICAgRklFTERUWVBFOgogICAgICAgIGZvciBteSAkRmllbGRUeXBlTmFtZSAoIHNvcnQgeyAkRmllbGREaWFsb2dzeyRhfSBjbXAgJEZpZWxkRGlhbG9nc3skYn0gfSBrZXlzICVGaWVsZFR5cGVzICkgewoKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlTmFtZX17T2JqZWN0VHlwZXN9ICkgKSB7CiAgICAgICAgICAgICAgICBuZXh0IEZJRUxEVFlQRSB1bmxlc3MgYW55IHsgJE9iamVjdFR5cGUgZXEgJF8gfSAkRmllbGRUeXBlQ29uZmlnLT57JEZpZWxkVHlwZU5hbWV9e09iamVjdFR5cGVzfS0+QCo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ3JvdXAgcmVmZXJlbmNlIGZpZWxkIHR5cGVzIHRvIHNob3cgaW4gdHJlZSB2aWV3CiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRGaWVsZFR5cGVzeyRGaWVsZFR5cGVOYW1lfTsKICAgICAgICAgICAgaWYgKCAkRmllbGREaWFsb2dzeyRGaWVsZFR5cGVOYW1lfSA9fiAvXkFkbWluRHluYW1pY0ZpZWxkUmVmZXJlbmNlJC8gKSB7CiAgICAgICAgICAgICAgICAkVmFsdWUgPSAnUmVmZXJlbmNlOjonIC4gJFZhbHVlOwogICAgICAgICAgICAgICAgcHVzaCBAUmVmZXJlbmNlRHluYW1pY0ZpZWxkcywgJEZpZWxkVHlwZU5hbWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQEZpZWxkTGlzdCwgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJEZpZWxkVHlwZU5hbWUsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJEZpZWxkIChARmllbGRMaXN0KSB7CgogICAgICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoIkZyb250ZW5kOjpNb2R1bGUiKS0+eyAkRmllbGREaWFsb2dzeyAkRmllbGQtPntLZXl9IH0gfSApIHsKICAgICAgICAgICAgICAgICRGaWVsZC0+e0Rpc2FibGVkfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRoZSBBZGQgRHluYW1pYyBGaWVsZCBzZWxlY3QKICAgICAgICBteSAkQWRkRHluYW1pY0ZpZWxkU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFxARmllbGRMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICRTZWxlY3ROYW1lLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgID0+IDEsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMSwKICAgICAgICAgICAgU29ydCAgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICctJywKICAgICAgICAgICAgVHJlZVZpZXcgICAgICA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUgVzc1cGMnLAogICAgICAgICk7CgogICAgICAgICMgVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkcy4KICAgICAgICAjIEluamVjdCBhZGRpdGlvbmFsIGRhdGEgaW50byB0aGUgb3B0aW9uIHRhZy4KICAgICAgICAjIEUuZy4gPG9wdGlvbiB2YWx1ZT0iUmVmZXJlbmNlOjpJVFNNQ29uZmlnSXRlbSIgZGF0YS1yZWZlcmVuY2VkX29iamVjdF90eXBlPSJJVFNNQ29uZmlnSXRlbSI+Jm5ic3A7Jm5ic3A7SVRTTUNvbmZpZ0l0ZW08L29wdGlvbj4KICAgICAgICAjIFNlZSBodHRwczovL3d3dy53M3NjaG9vbHMuY29tL3RhZ3MvYXR0X2RhdGEtLmFzcAogICAgICAgIG15ICRSZWZlcmVuY2VGaWVsZHNTdHJnID0gam9pbiggJ3wnLCBAUmVmZXJlbmNlRHluYW1pY0ZpZWxkcyApOwogICAgICAgICRBZGREeW5hbWljRmllbGRTdHJnID1+IHNbICh2YWx1ZT0iKCRSZWZlcmVuY2VGaWVsZHNTdHJnKSIpPl1bICQxIGRhdGEtcmVmZXJlbmNlZF9vYmplY3RfdHlwZT0iJDIiPl1nOwoKICAgICAgICBteSAkT2JqZWN0VHlwZU5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0R5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGUnKQogICAgICAgICAgICAtPnskT2JqZWN0VHlwZX0tPntEaXNwbGF5TmFtZX0gfHwgJE9iamVjdFR5cGU7CgogICAgICAgIHB1c2ggQE9iamVjdFR5cGVzLCAkT2JqZWN0VHlwZTsKCiAgICAgICAgaWYgKCAkT2JqZWN0VHlwZU5hbWUgbmUgJ0FydGljbGUnICkgewogICAgICAgICAgICAkT2JqZWN0VHlwZXNUcmFuc2xhdGVkeyRPYmplY3RUeXBlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkT2JqZWN0VHlwZU5hbWUpOwogICAgICAgIH0KCiAgICAgICAgIyBjYWxsIEFjdGlvbkFkZER5bmFtaWNGaWVsZCBibG9jawogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBY3Rpb25BZGREeW5hbWljRmllbGQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIEFkZER5bmFtaWNGaWVsZFN0cmcgPT4gJEFkZER5bmFtaWNGaWVsZFN0cmcsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICAgICAgICAgID0+ICRPYmplY3RUeXBlLAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZU5hbWUgICAgICA9PiAkT2JqZWN0VHlwZU5hbWUsCiAgICAgICAgICAgICAgICBTZWxlY3ROYW1lICAgICAgICAgID0+ICRTZWxlY3ROYW1lLAogICAgICAgICAgICB9LAogICAgICAgICk7CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIGlmICggJE9iamVjdFR5cGVOYW1lIGVxICdJVFNNIENvbmZpZ0l0ZW0nICYmICVDSURlZmluaXRpb25zT3V0T2ZTeW5jICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FjdGlvbkR5bmFtaWNGaWVsZEV4dHJhJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgID0+ICdBZG1pbkR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgU3ViYWN0aW9uICAgPT4gJ0lUU01Db25maWdJdGVtVmVyc2lvblVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgVGV4dCAgICAgICAgPT4gJ1N5bmMgQ0kgRGVmaW5pdGlvbnMnLAogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICdEZXBsb3kgZHluYW1pYyBmaWVsZCBjaGFuZ2VzOiBBZGQgbmV3IGRlZmluaXRpb25zIGZvciBhbGwgYWZmZWN0ZWQgSVRTTUNvbmZpZ0l0ZW0gY2xhc3Nlcy4nLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdFN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVPYmplY3RUeXBlc1RyYW5zbGF0ZWQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdEeW5hbWljRmllbGRPYmplY3RUeXBlJywKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJE9iamVjdFR5cGVGaWx0ZXIsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGRPYmplY3RUeXBlJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBEeW5hbWljRmllbGRPYmplY3RTdHJnID0+ICREeW5hbWljRmllbGRPYmplY3RTdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICVGaWVsZFR5cGVTZWxlY3Rpb24gPSBtYXAgewogICAgICAgICRfID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZpZWxkVHlwZUNvbmZpZy0+eyRffS0+e0Rpc3BsYXlOYW1lfSApCiAgICB9IGtleXMgJEZpZWxkVHlwZUNvbmZpZy0+JSo7CgogICAgbXkgJER5bmFtaWNGaWVsZFR5cGVTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlRmllbGRUeXBlU2VsZWN0aW9uLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkRmllbGRUeXBlJywKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJEZpZWxkVHlwZUZpbHRlciwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZEZpZWxkVHlwZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkVHlwZVN0cmcgPT4gJER5bmFtaWNGaWVsZFR5cGVTdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgIGlmIChAREZOYW1lc3BhY2VzKSB7CiAgICAgICAgbXkgJU5hbWVzcGFjZVNlbGVjdGlvbiA9ICgKICAgICAgICAgICAgJzxub25lPicgPT4gJzwnIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdub25lJykgLiAnPicsCiAgICAgICAgICAgIG1hcCB7ICRfID0+ICRfIH0gQERGTmFtZXNwYWNlcywKICAgICAgICApOwoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZXNwYWNlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVOYW1lc3BhY2VTZWxlY3Rpb24sCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkTmFtZXNwYWNlJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkTmFtZXNwYWNlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lc3BhY2VTdHJnID0+ICREeW5hbWljRmllbGROYW1lc3BhY2VTdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnT2JqZWN0VHlwZXMnLAogICAgICAgIFZhbHVlID0+IFxAT2JqZWN0VHlwZXMKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnRHluYW1pY0ZpZWxkcycsCiAgICAgICAgVmFsdWUgPT4gXCVGaWVsZERpYWxvZ3MKICAgICk7CgogICAgIyBjYWxsIGhpbnQgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0hpbnQnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBtZXJnZSBUaWNrZXQgYW5kIEFydGljbGUgaW50byBvbmUgdHlwZQogICAgbXkgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZjsKICAgIGlmICggJE9iamVjdFR5cGVGaWx0ZXIgZXEgJ1RpY2tldCcgKSB7CiAgICAgICAgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiA9IFsgJ1RpY2tldCcsICdBcnRpY2xlJyBdOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiA9ICRPYmplY3RUeXBlRmlsdGVyID8gWyRPYmplY3RUeXBlRmlsdGVyXSA6IHVuZGVmOwogICAgfQoKICAgICMgZ2V0IGNvbXBsZXRlIGR5bmFtaWMgZmllbGRzIGxpc3QKICAgIG15ICREeW5hbWljRmllbGRzTGlzdEFsbCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CgogICAgIyBnZXQgZmlsdGVyZWQgZHluYW1pYyBmaWVsZHMgbGlzdAogICAgbXkgJER5bmFtaWNGaWVsZHNMaXN0RmlsdGVyZWQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgIE9iamVjdFR5cGUgPT4gJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiwKICAgICAgICBGaWVsZFR5cGUgID0+IElzU3RyaW5nV2l0aERhdGEoJEZpZWxkVHlwZUZpbHRlcikgPyBbJEZpZWxkVHlwZUZpbHRlcl0gOiB1bmRlZiwKICAgICAgICBOYW1lc3BhY2UgID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgVmFsaWQgICAgICA9PiAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA/IDAgOiAxLAogICAgKTsKCiAgICBteSAkRmlsdGVyU3RyZyA9ICcnOwogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCRPYmplY3RUeXBlRmlsdGVyKSApIHsKICAgICAgICAkRmlsdGVyU3RyZyAuPSAiO09iamVjdFR5cGVGaWx0ZXI9IiAuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuRmlsdGVyIHwgdXJpICVdJywKICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRPYmplY3RUeXBlRmlsdGVyLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCRGaWVsZFR5cGVGaWx0ZXIpICkgewogICAgICAgICRGaWx0ZXJTdHJnIC49ICI7RmllbGRUeXBlRmlsdGVyPSIgLiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkZpbHRlciB8IHVyaSAlXScsCiAgICAgICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkRmllbGRUeXBlRmlsdGVyLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKEBERk5hbWVzcGFjZXMpIHsKICAgICAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoJE5hbWVzcGFjZUZpbHRlcikgKSB7CiAgICAgICAgICAgICRGaWx0ZXJTdHJnIC49ICI7TmFtZXNwYWNlRmlsdGVyPSIgLiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkTmFtZXNwYWNlRmlsdGVyLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBwcmludCB0aGUgbGlzdCBvZiBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPl9EeW5hbWljRmllbGRzTGlzdFNob3coCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAkRHluYW1pY0ZpZWxkc0xpc3RGaWx0ZXJlZCwKICAgICAgICBUb3RhbCAgICAgICAgID0+IHNjYWxhciBAeyREeW5hbWljRmllbGRzTGlzdEZpbHRlcmVkfSwKICAgICAgICBNYXhGaWVsZE9yZGVyID0+IHNjYWxhciBAeyREeW5hbWljRmllbGRzTGlzdEFsbH0sCiAgICAgICAgRmlsdGVyU3RyZyAgICA9PiAkRmlsdGVyU3RyZywKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbkR5bmFtaWNGaWVsZCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBGaWx0ZXJTdHJnID0+ICRGaWx0ZXJTdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9EeW5hbWljRmllbGRzTGlzdFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJEZpZWxkVHlwZUNvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHJpdmVyJyk7CgogICAgIyBjaGVjayBzdGFydCBvcHRpb24sIGlmIGhpZ2hlciB0aGFuIGZpZWxkcyBhdmFpbGFibGUsIHNldAogICAgIyBpdCB0byB0aGUgbGFzdCBmaWVsZCBwYWdlCiAgICBteSAkU3RhcnRIaXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMTsKCiAgICAjIGdldCBwZXJzb25hbCBwYWdlIHNob3duIGNvdW50CiAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnQWRtaW5EeW5hbWljRmllbGRzT3ZlcnZpZXdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPntTZXNzaW9ufXskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDM1OwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ0R5bmFtaWNGaWVsZHNPdmVydmlld1BhZ2VTaG93bic7CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgY2FsY3VsYXRlIG1heC4gc2hvd24gcGVyIHBhZ2UKICAgIGlmICggJFN0YXJ0SGl0ID4gJFBhcmFte1RvdGFsfSApIHsKICAgICAgICBteSAkUGFnZXMgPSBpbnQoICggJFBhcmFte1RvdGFsfSAvICRQYWdlU2hvd24gKSArIDAuOTk5OTkgKTsKICAgICAgICAkU3RhcnRIaXQgPSAoICggJFBhZ2VzIC0gMSApICogJFBhZ2VTaG93biApICsgMTsKICAgIH0KCiAgICAjIGJ1aWxkIG5hdiBiYXIKICAgIG15ICRMaW1pdCAgID0gJFBhcmFte0xpbWl0fSB8fCAyMF8wMDA7CiAgICBteSAlUGFnZU5hdiA9ICRMYXlvdXRPYmplY3QtPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgQWN0aW9uICAgID0+ICdBY3Rpb249JyAuICRMYXlvdXRPYmplY3QtPntBY3Rpb259LAogICAgICAgIExpbmsgICAgICA9PiAkUGFyYW17TGlua1BhZ2V9LAogICAgICAgIElEUHJlZml4ICA9PiAkTGF5b3V0T2JqZWN0LT57QWN0aW9ufSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biBkeW5hbWljIGZpZWxkcyBwZXIgcGFnZQogICAgJFBhcmFte1JlcXVlc3RlZFVSTH0gICAgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXksCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhZ2VTaG93biwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIERhdGEgICAgICAgID0+IFwlRGF0YSwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY1ZhbHVlJywKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgaWYgKCVQYWdlTmF2KSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhcicsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYWdlTmF2LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb250ZXh0U2V0dGluZ3MnLAogICAgICAgICAgICBEYXRhID0+IHsgJVBhZ2VOYXYsICVQYXJhbSwgfSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgaWYgYXQgbGVhc3QgMSBkeW5hbWljIGZpZWxkIGlzIHJlZ2lzdGVyZWQgaW4gdGhlIHN5c3RlbQogICAgaWYgKCAkUGFyYW17VG90YWx9ICkgewoKICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkcyBkZXRhaWxzCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICBEWU5BTUlDRklFTERJRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZElEICggQHsgJFBhcmFte0R5bmFtaWNGaWVsZHN9IH0gKSB7CiAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgIGlmICggJENvdW50ZXIgPj0gJFN0YXJ0SGl0ICYmICRDb3VudGVyIDwgKCAkUGFnZVNob3duICsgJFN0YXJ0SGl0ICkgKSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICBJRCA9PiAkRHluYW1pY0ZpZWxkSUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTERJRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZERhdGEpOwoKICAgICAgICAgICAgICAgICMgY29udmVydCBWYWxpZElEIHRvIFZhbGlkaXR5IHN0cmluZwogICAgICAgICAgICAgICAgbXkgJFZhbGlkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gJER5bmFtaWNGaWVsZERhdGEtPntWYWxpZElEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIG9iamVjdCB0eXBlIGRpc3BsYXkgbmFtZQogICAgICAgICAgICAgICAgbXkgJE9iamVjdFR5cGVOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlJykKICAgICAgICAgICAgICAgICAgICAtPnsgJER5bmFtaWNGaWVsZERhdGEtPntPYmplY3RUeXBlfSB9LT57RGlzcGxheU5hbWV9CiAgICAgICAgICAgICAgICAgICAgfHwgJER5bmFtaWNGaWVsZERhdGEtPntPYmplY3RUeXBlfTsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgZmllbGQgdHlwZSBkaXNwbGF5IG5hbWUKICAgICAgICAgICAgICAgIG15ICRGaWVsZFR5cGVOYW1lID0gJEZpZWxkVHlwZUNvbmZpZy0+eyAkRHluYW1pY0ZpZWxkRGF0YS0+e0ZpZWxkVHlwZX0gfS0+e0Rpc3BsYXlOYW1lfQogICAgICAgICAgICAgICAgICAgIHx8ICREeW5hbWljRmllbGREYXRhLT57RmllbGRUeXBlfTsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgZmllbGQgYmFja2VuZCBkaWFsb2cKICAgICAgICAgICAgICAgIG15ICRDb25maWdEaWFsb2cgPSAkRmllbGRUeXBlQ29uZmlnLT57ICREeW5hbWljRmllbGREYXRhLT57RmllbGRUeXBlfSB9LT57Q29uZmlnRGlhbG9nfQogICAgICAgICAgICAgICAgICAgIHx8ICcnOwoKICAgICAgICAgICAgICAgICMgcHJpbnQgZWFjaCBkeW5hbWljIGZpZWxkIHJvdwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkc1JvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICV7JER5bmFtaWNGaWVsZERhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICBWYWxpZCAgICAgICAgICA9PiAkVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0RpYWxvZyAgID0+ICRDb25maWdEaWFsb2csCiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkVHlwZU5hbWUgID0+ICRGaWVsZFR5cGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlTmFtZSA9PiAkT2JqZWN0VHlwZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclN0cmcgICAgID0+ICRQYXJhbXtGaWx0ZXJTdHJnfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIEludGVybmFsIGZpZWxkcyBjYW4gbm90IGJlIGRlbGV0ZWQuCiAgICAgICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkRGF0YS0+e0ludGVybmFsRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdEZWxldGVMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyREeW5hbWljRmllbGREYXRhfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkICAgICAgICAgID0+ICRWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0RpYWxvZyAgID0+ICRDb25maWdEaWFsb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFR5cGVOYW1lICA9PiAkRmllbGRUeXBlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdFR5cGVOYW1lID0+ICRPYmplY3RUeXBlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDbG9uZUxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JER5bmFtaWNGaWVsZERhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWQgICAgICAgICAgPT4gJFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnRGlhbG9nICAgPT4gJENvbmZpZ0RpYWxvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkVHlwZU5hbWUgID0+ICRGaWVsZFR5cGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZU5hbWUgPT4gJER5bmFtaWNGaWVsZERhdGEtPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIHNob3cgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UKICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZCcsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01heEZpZWxkT3JkZXInLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBNYXhGaWVsZE9yZGVyID0+ICRQYXJhbXtNYXhGaWVsZE9yZGVyfSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRHluYW1pY0ZpZWxkT3JkZXJSZXNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUmVzZXRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRPcmRlclJlc2V0KCk7CgogICAgIyBzaG93IGVycm9yIG1lc3NhZ2UgaWYgdGhlIG9yZGVyIHJlc2V0IHdhcyBub3Qgc3VjY2Vzc2Z1bAogICAgaWYgKCAhJFJlc2V0U3VjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKAogICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCByZXNldCBEeW5hbWljIEZpZWxkIG9yZGVyIHByb3Blcmx5LCBwbGVhc2UgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgbW9yZSBkZXRhaWxzLicKICAgICAgICAgICAgKSwKICAgICAgICApOwogICAgfQoKICAgICMgcmVkaXJlY3QgdG8gbWFpbiBzY3JlZW4KICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAiQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIiwKICAgICk7Cn0KCnN1YiBfVHJpZ2dlckVycm9yRGlhbG9nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkRXJyb3JNZXNzYWdlCiAgICAgICAgPSAkUGFyYW17RXJyb3JNZXNzYWdlfQogICAgICAgIHx8ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0KICAgICAgICAtPlRyYW5zbGF0ZSgnRHluYW1pYyBmaWVsZCBkZWxldGlvbiBjb3VsZCBub3QgYmUgY29tcGxldGVkLiBQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvciBvciByZXZpZXcgdGhlIGxvZ3MgZm9yIG1vcmUgaW5mb3JtYXRpb24nKTsKCiAgICBteSAkRW5jb2RlZENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5FbmNvZGUoCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJEVycm9yTWVzc2FnZSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIEpTT04gZW5jb2RpbmcgbmVlZGVkIGFzIGZyb250ZW5kIGRvZXMgdXNlIHRoZSByZXNwb25zZSBmb3Igc2hvd2luZyBhbiBlcnJvciBkaWFsb2cgaWYgbmVjZXNzYXJ5CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgQ29udGVudCAgICAgPT4gJEVuY29kZWRDb250ZW50LAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=</File>
        <File Location="Custom/Kernel/Modules/AgentDashboardCommon.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBmZDY2MTZkZjNiZmIwZjE2ZGJlYjQ5MTg0NWI1MzU4MjhlZThlYjFjIC0gS2VybmVsL01vZHVsZXMvQWdlbnREYXNoYm9hcmRDb21tb24ucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RGFzaGJvYXJkQ29tbW9uOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6REJPYmplY3QpCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7JVBhcmFtfSwgJFR5cGU7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSAgPSAnRGFzaGJvYXJkQmFja2VuZCc7CiAgICBteSAkTWFpbk1lbnVDb25maWdLZXkgPSAnQWdlbnREYXNoYm9hcmQ6Ok1haW5NZW51JzsKICAgIG15ICRVc2VyU2V0dGluZ3NLZXkgICA9ICdVc2VyRGFzaGJvYXJkJzsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKICAgICAgICAkQmFja2VuZENvbmZpZ0tleSAgPSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kJzsKICAgICAgICAkTWFpbk1lbnVDb25maWdLZXkgPSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpNYWluTWVudSc7CiAgICAgICAgJFVzZXJTZXR0aW5nc0tleSAgID0gJ1VzZXJDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJzsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJyApIHsKICAgICAgICAkQmFja2VuZENvbmZpZ0tleSAgPSAnQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCc7CiAgICAgICAgJE1haW5NZW51Q29uZmlnS2V5ID0gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6Ok1haW5NZW51JzsKICAgICAgICAkVXNlclNldHRpbmdzS2V5ICAgPSAnVXNlckN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJzsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgbG9hZCBiYWNrZW5kcwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgkQmFja2VuZENvbmZpZ0tleSk7CiAgICBpZiAoICEkQ29uZmlnICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBzdWNoIGNvbmZpZyBmb3IgJXMnLCAkQmFja2VuZENvbmZpZ0tleSApLAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgYWxsIGNvbmZpZ3VyZWQgc3RhdGlzdGljcyBmcm9tIHRoZSBzeXN0ZW0gdGhhdCBzaG91bGQgYmUgc2hvd24gYXMgYSBkYXNoYm9hcmQgd2lkZ2V0CiAgICAjICAgYW5kIHJlZ2lzdGVyIHRoZW0gZHluYW1pY2FsbHkgaW4gdGhlIGNvbmZpZ3VyYXRpb24uCiAgICBteSBAU3RhdHNJRHM7CiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnREYXNoYm9hcmQnICkgewoKICAgICAgICBteSAkU3RhdHNIYXNoID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzTGlzdEdldCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRTdGF0c0hhc2gpICkgewogICAgICAgICAgICBTVEFUSUQ6CiAgICAgICAgICAgIGZvciBteSAkU3RhdElEICggc29ydCBrZXlzICV7JFN0YXRzSGFzaH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57U2hvd0FzRGFzaGJvYXJkV2lkZ2V0fTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57UGVybWlzc2lvbn07CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkU3RhdHNIYXNoLT57JFN0YXRJRH0tPntQZXJtaXNzaW9ufSApOwoKICAgICAgICAgICAgICAgIG15IEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzOwogICAgICAgICAgICAgICAgZm9yIG15ICRHcm91cElEICggQHsgJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57UGVybWlzc2lvbn0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoIEdyb3VwSUQgPT4gJEdyb3VwSUQgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG15ICRTdGF0c1Blcm1pc3Npb25Hcm91cHMgPSBqb2luKCAnOycsIEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzICk7CgogICAgICAgICAgICAgICAgIyByZXBsYWNlIGFsbCBsaW5lIGJyZWFrcyB3aXRoIHNwYWNlcyAob3RoZXJ3aXNlIFRyYW5zbGF0ZSgpIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5KQogICAgICAgICAgICAgICAgJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57RGVzY3JpcHRpb259ID1+IHN7XHI/XG58XHJ9eyB9bXN4ZzsKCiAgICAgICAgICAgICAgICBteSAkRGVzY3JpcHRpb24gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRTdGF0c0hhc2gtPnskU3RhdElEfS0+e0Rlc2NyaXB0aW9ufSApOwoKICAgICAgICAgICAgICAgIG15ICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57VGl0bGV9ICk7CiAgICAgICAgICAgICAgICAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N0YXRpc3RpYycpIC4gJzogJwogICAgICAgICAgICAgICAgICAgIC4gJFRpdGxlIC4gJyAoJwogICAgICAgICAgICAgICAgICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTdGF0czo6U3RhdHNIb29rJykKICAgICAgICAgICAgICAgICAgICAuICRTdGF0c0hhc2gtPnskU3RhdElEfS0+e1N0YXROdW1iZXJ9IC4gJyknOwoKICAgICAgICAgICAgICAgICRDb25maWctPnsgKCAkU3RhdElEICsgMTAwMCApIC4gJy1TdGF0cycgfSA9IHsKICAgICAgICAgICAgICAgICAgICAnQmxvY2snICAgICAgID0+ICdDb250ZW50TGFyZ2UnLAogICAgICAgICAgICAgICAgICAgICdEZWZhdWx0JyAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAnTW9kdWxlJyAgICAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpTdGF0cycsCiAgICAgICAgICAgICAgICAgICAgJ1RpdGxlJyAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgJ1N0YXRJRCcgICAgICA9PiAkU3RhdElELAogICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbicgPT4gJERlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICdHcm91cCcgICAgICAgPT4gJFN0YXRzUGVybWlzc2lvbkdyb3VwcywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBwdXNoIEBTdGF0c0lEcywgJFN0YXRJRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0Rhc2hib2FyZFN0YXRzSURzJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFxAU3RhdHNJRHMKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJFNlbGYtPntDdXN0b21lcklEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDdXN0b21lcklEJyApOwoKICAgICAgICAjIGNoZWNrIEN1c3RvbWVySUQgcHJlc2VuY2UgZm9yIGFsbCBzdWJhY3Rpb25zIHRoYXQgbmVlZCBpdAogICAgICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdVcGRhdGVQb3NpdGlvbicgKSB7CiAgICAgICAgICAgIGlmICggISRTZWxmLT57Q3VzdG9tZXJJRH0gKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNPbkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29kZSA9PiAnQ29yZS5BZ2VudC5DdXN0b21lckluZm9ybWF0aW9uQ2VudGVyU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coKTsnCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJFNlbGYtPntDdXN0b21lclVzZXJJRH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ3VzdG9tZXJVc2VySUQnICk7CgogICAgICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VySUQgcHJlc2VuY2UgZm9yIGFsbCBzdWJhY3Rpb25zIHRoYXQgbmVlZCBpdAogICAgICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdVcGRhdGVQb3NpdGlvbicgKSB7CgogICAgICAgICAgICBpZiAoICEkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU09uRG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb2RlID0+ICdDb3JlLkFnZW50LkN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coKTsnCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRTZXNzaW9uT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKTsKICAgIG15ICRVc2VyT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgdXBkYXRlL2Nsb3NlIGl0ZW0KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdVcGRhdGVSZW1vdmUnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYW1lJyApOwogICAgICAgIG15ICRLZXkgID0gJFVzZXJTZXR0aW5nc0tleSAuICROYW1lOwoKICAgICAgICAjIE1hbmRhdG9yeSB3aWRnZXRzIGNhbid0IGJlIHJlbW92ZWQuCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9ICYmICRDb25maWctPnskTmFtZX0tPntNYW5kYXRvcnl9ICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gMCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAgICAgaWYgKCAkU2VsZi0+e0N1c3RvbWVySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJJRD0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJFNlbGYtPntDdXN0b21lcklEfSApOwogICAgICAgIH0KICAgICAgICBpZiAoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJVc2VySUQ9IiAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICRVUkwsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1VwZGF0ZVByZWZlcmVuY2VzJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgJE5hbWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZScgKTsKCiAgICAgICAgIyBnZXQgcHJlZmVyZW5jZXMgc2V0dGluZ3MKICAgICAgICBteSBAUHJlZmVyZW5jZXNPbmx5ID0gJFNlbGYtPl9FbGVtZW50KAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIENvbmZpZ3MgICAgICAgICA9PiAkQ29uZmlnLAogICAgICAgICAgICBQcmVmZXJlbmNlc09ubHkgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggIUBQcmVmZXJlbmNlc09ubHkgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIHByZWZlcmVuY2VzIGZvciAlcyEnLCAkTmFtZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciBwcmVmZXJlbmNlcwogICAgICAgIGZvciBteSAkUGFyYW0gKEBQcmVmZXJlbmNlc09ubHkpIHsKCiAgICAgICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgICAgICBteSAkVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW0tPntOYW1lfSApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcnVudGltZSB2YXJzCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPnsgJFBhcmFtLT57TmFtZX0gfSA9ICRWYWx1ZTsKCiAgICAgICAgICAgICMgdXBkYXRlIHNlc3Npb24KICAgICAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsaXZlciBuZXcgY29udGVudCBwYWdlCiAgICAgICAgbXkgJUVsZW1lbnRSZWxvYWQgPSAkU2VsZi0+X0VsZW1lbnQoCiAgICAgICAgICAgIE5hbWUgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIENvbmZpZ3MgPT4gJENvbmZpZywKICAgICAgICAgICAgQUpBWCAgICA9PiAxCiAgICAgICAgKTsKICAgICAgICBpZiAoICElRWxlbWVudFJlbG9hZCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBlbGVtZW50IGRhdGEgb2YgJXMhJywgJE5hbWUgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkeyAkRWxlbWVudFJlbG9hZHtDb250ZW50fSB9LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgdXBkYXRlIHNldHRpbmdzCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnVXBkYXRlU2V0dGluZ3MnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSBAQmFja2VuZHMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnQmFja2VuZCcgKTsKICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJXskQ29uZmlnfSApIHsKICAgICAgICAgICAgbXkgJEFjdGl2ZSA9IDA7CiAgICAgICAgICAgIEJBQ0tFTkQ6CiAgICAgICAgICAgIGZvciBteSAkQmFja2VuZCAoQEJhY2tlbmRzKSB7CiAgICAgICAgICAgICAgICBuZXh0IEJBQ0tFTkQgaWYgJEJhY2tlbmQgbmUgJE5hbWU7CiAgICAgICAgICAgICAgICAkQWN0aXZlID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgQkFDS0VORDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBNYW5kYXRvcnkgd2lkZ2V0cyBjYW4gbm90IGJlIHJlbW92ZWQuCiAgICAgICAgICAgIGlmICggJENvbmZpZy0+eyROYW1lfS0+e01hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICAgICAkQWN0aXZlID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJEtleSA9ICRVc2VyU2V0dGluZ3NLZXkgLiAkTmFtZTsKCiAgICAgICAgICAgICMgdXBkYXRlIHNlc3Npb24KICAgICAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkQWN0aXZlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJEFjdGl2ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAgICAgaWYgKCAkU2VsZi0+e0N1c3RvbWVySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJJRD0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJFNlbGYtPntDdXN0b21lcklEfSApOwogICAgICAgIH0KICAgICAgICBpZiAoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJVc2VySUQ9IiAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICRVUkwsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1VwZGF0ZVBvc2l0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgQEJhY2tlbmRzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0JhY2tlbmQnICk7CgogICAgICAgICMgZ2V0IG5ldyBvcmRlcgogICAgICAgIG15ICRLZXkgID0gJFVzZXJTZXR0aW5nc0tleSAuICdQb3NpdGlvbic7CiAgICAgICAgbXkgJERhdGEgPSAnJzsKICAgICAgICBmb3IgbXkgJEJhY2tlbmQgKEBCYWNrZW5kcykgewogICAgICAgICAgICAkQmFja2VuZCA9fiBzeyBcQSBEYXNoYm9hcmQgKC4rPykgLWJveCBceiB9eyQxfWd4bXM7CiAgICAgICAgICAgICREYXRhIC49ICRCYWNrZW5kIC4gJzsnOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJERhdGEsCiAgICAgICAgKTsKCiAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlbW9TeXN0ZW0nKSApIHsKICAgICAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICREYXRhLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHN1Y2Nlc3NmdWwgcmVzcG9uc2UKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcxJywKICAgICAgICApOwogICAgfQoKICAgICMgZGVsaXZlciBlbGVtZW50CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRWxlbWVudCcgKSB7CgogICAgICAgIG15ICROYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICk7CgogICAgICAgICMgZ2V0IHRoZSBjb2x1bW4gZmlsdGVycyBmcm9tIHRoZSB3ZWIgcmVxdWVzdAogICAgICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICAgICAgbXkgJUdldENvbHVtbkZpbHRlcjsKICAgICAgICBteSAlR2V0Q29sdW1uRmlsdGVyU2VsZWN0OwoKICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgIHF3KE93bmVyIFJlc3BvbnNpYmxlIFN0YXRlIFF1ZXVlIFByaW9yaXR5IFR5cGUgTG9jayBTZXJ2aWNlIFNMQSBDdXN0b21lcklEIEN1c3RvbWVyVXNlcklEKQogICAgICAgICAgICBxdyhPd25lciBSZXNwb25zaWJsZSBTdGF0ZSBRdWV1ZSBQcmlvcml0eSBUeXBlIExvY2sgU2VydmljZSBTTEEgQ3VzdG9tZXJJRCBDdXN0b21lclVzZXJJRCBDbGFzcyBDdXJEZXBsU3RhdGUgQ3VySW5jaVN0YXRlKQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lIC4gJE5hbWUgKQogICAgICAgICAgICAgICAgfHwgJyc7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CgogICAgICAgICAgICBpZiAoICRDb2x1bW5OYW1lIGVxICdDdXN0b21lcklEJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gfSwgICAgICAgICAgICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcnsgJENvbHVtbk5hbWUgLiAnUmF3JyB9IH0sICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW5OYW1lIGVxICdDdXN0b21lclVzZXJJRCcgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRDb2x1bW5GaWx0ZXJ7Q3VzdG9tZXJVc2VyTG9naW59IH0sICAgICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcntDdXN0b21lclVzZXJMb2dpblJhd30gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICROYW1lIH0gPSAkRmlsdGVyVmFsdWU7CiAgICAgICAgICAgICRHZXRDb2x1bW5GaWx0ZXJTZWxlY3R7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMSwKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgICAgICAgICBPYmplY3RUeXBlID0+IFsnVGlja2V0JywgJ0lUU01Db25maWdJdGVtJ10sCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgKTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgICAgIFBhcmFtID0+ICdDb2x1bW5GaWx0ZXJEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICROYW1lCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhZGVmaW5lZCAkRmlsdGVyVmFsdWU7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnJzsKCiAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJ7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gewogICAgICAgICAgICAgICAgRXF1YWxzID0+ICRGaWx0ZXJWYWx1ZSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgJEdldENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJE5hbWUgfSA9ICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgJEdldENvbHVtbkZpbHRlclNlbGVjdHsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRmlsdGVyVmFsdWU7CiAgICAgICAgfQoKICAgICAgICBteSAkU29ydEJ5ICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICk7CiAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKTsKCiAgICAgICAgbXkgJUVsZW1lbnQgPSAkU2VsZi0+X0VsZW1lbnQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ29uZmlncyAgICAgICAgICAgICAgID0+ICRDb25maWcsCiAgICAgICAgICAgIEFKQVggICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgICAgICAgICAgPT4gXCVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgIEdldENvbHVtbkZpbHRlciAgICAgICA9PiBcJUdldENvbHVtbkZpbHRlciwKICAgICAgICAgICAgR2V0Q29sdW1uRmlsdGVyU2VsZWN0ID0+IFwlR2V0Q29sdW1uRmlsdGVyU2VsZWN0LAogICAgICAgICk7CgogICAgICAgIGlmICggISVFbGVtZW50ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDYW5cJ3QgZ2V0IGVsZW1lbnQgZGF0YSBvZiAlcyEnLCAkTmFtZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRFbGVtZW50e0NvbnRlbnR9IH0sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBkZWxpdmVyIGVsZW1lbnQKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYRmlsdGVyVXBkYXRlJyApIHsKCiAgICAgICAgbXkgJEVsZW1lbnRDaGFuZ2VkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnRDaGFuZ2VkJyApOwogICAgICAgIG15ICgkTmFtZSkgICAgICAgICA9ICRFbGVtZW50Q2hhbmdlZCA9fiBteyAoIFxkezR9IC0gLio/ICkgXHogfWd4bXM7CiAgICAgICAgbXkgJENvbHVtbiAgICAgICAgID0gJEVsZW1lbnRDaGFuZ2VkOwogICAgICAgICRDb2x1bW4gPX4gc3sgXEEgQ29sdW1uRmlsdGVyIH17fWd4bXM7CiAgICAgICAgJENvbHVtbiA9fiBzeyAkTmFtZSB9e31neG1zOwoKICAgICAgICBteSAkRmlsdGVyQ29udGVudCA9ICRTZWxmLT5fRWxlbWVudCgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIEZpbHRlckNvbnRlbnRPbmx5ID0+IDEsCiAgICAgICAgICAgIEZpbHRlckNvbHVtbiAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgIEVsZW1lbnRDaGFuZ2VkICAgID0+ICRFbGVtZW50Q2hhbmdlZCwKICAgICAgICAgICAgQ29uZmlncyAgICAgICAgICAgPT4gJENvbmZpZywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmlsdGVyQ29udGVudCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBmaWx0ZXIgY29udGVudCBkYXRhIG9mICVzIScsICROYW1lICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmlsdGVyQ29udGVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICB9CgogICAgIyBzdG9yZSBsYXN0IHF1ZXVlIHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICBteSAlQ29udGVudEJsb2NrRGF0YTsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJENvbnRlbnRCbG9ja0RhdGF7Q3VzdG9tZXJJRH0gPSAkU2VsZi0+e0N1c3RvbWVySUR9OwoKICAgICAgICAjIEgxIHRpdGxlCiAgICAgICAgJENvbnRlbnRCbG9ja0RhdGF7Q3VzdG9tZXJJRFRpdGxlfSA9ICRTZWxmLT57Q3VzdG9tZXJJRH07CgogICAgICAgIG15ICVDdXN0b21lckNvbXBhbnlEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpLT5DdXN0b21lckNvbXBhbnlHZXQoCiAgICAgICAgICAgIEN1c3RvbWVySUQgPT4gJFNlbGYtPntDdXN0b21lcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRDdXN0b21lckNvbXBhbnlEYXRhe0N1c3RvbWVyQ29tcGFueU5hbWV9ICkgewogICAgICAgICAgICAkQ29udGVudEJsb2NrRGF0YXtDdXN0b21lcklEVGl0bGV9ID0gIiRDdXN0b21lckNvbXBhbnlEYXRhe0N1c3RvbWVyQ29tcGFueU5hbWV9ICgkU2VsZi0+e0N1c3RvbWVySUR9KSI7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXInICkgewoKICAgICAgICBteSAlQ3VzdG9tZXJVc2VyRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAkQ29udGVudEJsb2NrRGF0YXtDdXN0b21lclVzZXJJRH0gPSAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfTsKCiAgICAgICAgIyBIMSB0aXRsZQogICAgICAgICRDb250ZW50QmxvY2tEYXRhe0N1c3RvbWVyVXNlcklEVGl0bGV9ID0gIlwiJEN1c3RvbWVyVXNlckRhdGF7VXNlckZ1bGxuYW1lfVwiIDwkQ3VzdG9tZXJVc2VyRGF0YXtVc2VyRW1haWx9PiI7CgogICAgfQoKICAgICMgc2hvdyBkYXNoYm9hcmQKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgIERhdGEgPT4gXCVDb250ZW50QmxvY2tEYXRhLAogICAgKTsKCiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAjIGdldCBzaG93biBiYWNrZW5kcwogICAgbXkgJUJhY2tlbmRzOwogICAgQkFDS0VORDoKICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAleyRDb25maWd9ICkgewoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9LT57R3JvdXB9ICkgewogICAgICAgICAgICBteSAkUGVybWlzc2lvbk9LID0gMDsKICAgICAgICAgICAgbXkgQEdyb3VwcyAgICAgICA9IHNwbGl0IC87LywgJENvbmZpZy0+eyROYW1lfS0+e0dyb3VwfTsKICAgICAgICAgICAgR1JPVVA6CiAgICAgICAgICAgIGZvciBteSAkR3JvdXAgKEBHcm91cHMpIHsKICAgICAgICAgICAgICAgIG15ICRIYXNQZXJtaXNzaW9uID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJEdyb3VwLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAncm8nLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICgkSGFzUGVybWlzc2lvbikgewogICAgICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uT0sgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbmV4dCBCQUNLRU5EIGlmICEkUGVybWlzc2lvbk9LOwogICAgICAgIH0KCiAgICAgICAgbXkgJEtleSA9ICRVc2VyU2V0dGluZ3NLZXkgLiAkTmFtZTsKICAgICAgICBpZiAoIGRlZmluZWQgJFNlbGYtPntTZXNzaW9ufXskS2V5fSApIHsKICAgICAgICAgICAgJEJhY2tlbmRzeyROYW1lfSA9ICRTZWxmLT57U2Vzc2lvbn17JEtleX07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQmFja2VuZHN7JE5hbWV9ID0gJENvbmZpZy0+eyROYW1lfS0+e0RlZmF1bHR9OwogICAgICAgIH0KCiAgICAgICAgIyBBbHdheXMgc2hvdyB3aWRnZXRzIHdpdGggbWFuZGF0b3J5IGZsYWcuCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgJEJhY2tlbmRzeyROYW1lfSA9ICRDb25maWctPnskTmFtZX0tPntNYW5kYXRvcnl9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBvcmRlciBvZiBwbHVnaW5zCiAgICBteSAkS2V5ID0gJFVzZXJTZXR0aW5nc0tleSAuICdQb3NpdGlvbic7CiAgICBteSBAT3JkZXI7CiAgICBteSAkVmFsdWUgPSAkU2VsZi0+e1Nlc3Npb259eyRLZXl9OwoKICAgIGlmICgkVmFsdWUpIHsKICAgICAgICBAT3JkZXIgPSBzcGxpdCAvOy8sICRWYWx1ZTsKCiAgICAgICAgIyBvbmx5IHVzZSBhY3RpdmUgYmFja2VuZHMKICAgICAgICBAT3JkZXIgPSBncmVwIHsgJENvbmZpZy0+eyRffSB9IEBPcmRlcjsKICAgIH0KICAgIGlmICggIUBPcmRlciApIHsKICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJUJhY2tlbmRzICkgewogICAgICAgICAgICBwdXNoIEBPcmRlciwgJE5hbWU7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIG5vdCBvcmRlcmVkIHBsdWdpbnMgKGUuIGcuIG5ldyBhY3RpdmUpCiAgICBOQU1FOgogICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVCYWNrZW5kcyApIHsKICAgICAgICBteSAkSW5jbHVkZWQgPSAwOwogICAgICAgIElURU06CiAgICAgICAgZm9yIG15ICRJdGVtIChAT3JkZXIpIHsKICAgICAgICAgICAgbmV4dCBJVEVNIGlmICRJdGVtIG5lICROYW1lOwogICAgICAgICAgICAkSW5jbHVkZWQgPSAxOwogICAgICAgIH0KICAgICAgICBuZXh0IE5BTUUgaWYgJEluY2x1ZGVkOwogICAgICAgIHB1c2ggQE9yZGVyLCAkTmFtZTsKICAgIH0KCiAgICAjIGdldCBkZWZhdWx0IGNvbHVtbnMKICAgIG15ICRDb2x1bW5zID0gJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IHx8ICRDb25maWdPYmplY3QtPkdldCgnRGVmYXVsdE92ZXJ2aWV3Q29sdW1ucycpIHx8IHt9OwoKICAgICMgdHJ5IGV2ZXJ5IGJhY2tlbmQgdG8gbG9hZCBhbmQgZXhlY3V0ZSBpdAogICAgbXkgQENvbnRhaW5lck5hbWVzOwogICAgTkFNRToKICAgIGZvciBteSAkTmFtZSAoQE9yZGVyKSB7CgogICAgICAgICMgZ2V0IGVsZW1lbnQgZGF0YQogICAgICAgIG15ICVFbGVtZW50ID0gJFNlbGYtPl9FbGVtZW50KAogICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ29uZmlncyAgPT4gJENvbmZpZywKICAgICAgICAgICAgQmFja2VuZHMgPT4gXCVCYWNrZW5kcywKICAgICAgICApOwogICAgICAgIG5leHQgTkFNRSBpZiAhJUVsZW1lbnQ7CgogICAgICAgICMgTmFtZUZvcm0gKHRvIHN1cHBvcnQgSUUsIGlzIG5vdCB3b3JraW5nIHdpdGggIi0iIGluIGZvcm0gbmFtZXMpCiAgICAgICAgbXkgJE5hbWVGb3JtID0gJE5hbWU7CiAgICAgICAgJE5hbWVGb3JtID1+IHN7LX17fWc7CgogICAgICAgIG15ICVKU0RhdGEgPSAoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICBOYW1lRm9ybSA9PiAkTmFtZUZvcm0sCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAQ29udGFpbmVyTmFtZXMsIFwlSlNEYXRhOwoKICAgICAgICAjIHJlbmRlcmluZwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30sCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICBOYW1lRm9ybSAgICAgICA9PiAkTmFtZUZvcm0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICA9PiAkeyAkRWxlbWVudHtDb250ZW50fSB9LAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgcmVmcmVzaCBsaW5rIGlmIHJlZnJlc2hpbmcgaXMgYXZhaWxhYmxlCiAgICAgICAgaWYgKCAkRWxlbWVudHtDb25maWd9LT57Q2FuUmVmcmVzaH0gKSB7CgogICAgICAgICAgICBteSAkTmFtZUhUTUwgPSAkTmFtZTsKICAgICAgICAgICAgJE5hbWVIVE1MID1+IHN7LX17X314bXNnOwoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NhblJlZnJlc2gtJyAuICROYW1lLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVIVE1MID0+ICROYW1lSFRNTCwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRWxlbWVudHtDb25maWd9LT57QmxvY2t9IC4gJ1JlZnJlc2gnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVIVE1MID0+ICROYW1lSFRNTCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERvIG5vdCBzaG93IHRoZSBkZWxldGUgbGluayBpZiB0aGUgd2lkZ2V0IGlzIG1hbmRhdG9yeS4KICAgICAgICBpZiAoICEkQ29uZmlnLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRWxlbWVudHtDb25maWd9LT57QmxvY2t9IC4gJ1JlbW92ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyAkRWxlbWVudHtDb25maWd9IH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0gfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBjb2x1bW4gaXMgbm90IGEgZGVmYXVsdCBjb2x1bW4sIGFkZCBpdCBmb3IgdHJhbnNsYXRpb24KICAgICAgICBmb3IgbXkgJENvbHVtbiAoIHNvcnQga2V5cyAleyAkRWxlbWVudHtDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH0gKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJENvbHVtbnMtPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICRDb2x1bW5zLT57JENvbHVtbn0gPSAkRWxlbWVudHtDb25maWd9LT57RGVmYXVsdENvbHVtbnN9LT57JENvbHVtbn07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2hvdyBzZXR0aW5ncyBsaW5rIGlmIHByZWZlcmVuY2VzIGFyZSBhdmFpbGFibGUKICAgICAgICBpZiAoICRFbGVtZW50e1ByZWZlcmVuY2VzfSAmJiBAeyAkRWxlbWVudHtQcmVmZXJlbmNlc30gfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtID0+ICROYW1lRm9ybSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIFBBUkFNOgogICAgICAgICAgICBmb3IgbXkgJFBhcmFtICggQHsgJEVsZW1lbnR7UHJlZmVyZW5jZXN9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBzcGVjaWFsIHBhcmFtZXRlcnMgYXJlIGFkZGVkLCB3aGljaCBkbyBub3QgaGF2ZSBhIHR0IGJsb2NrLAogICAgICAgICAgICAgICAgIyBiZWNhdXNlIHRoZSBkaXNwbGF5ZWQgZmllbGRzIGFyZSBhZGRlZCB3aXRoIHRoZSBvdXRwdXQgZmlsdGVyLAogICAgICAgICAgICAgICAgIyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgYW55IGJsb2NrIGhlcmUKICAgICAgICAgICAgICAgIG5leHQgUEFSQU0gaWYgISRQYXJhbS0+e0Jsb2NrfTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXNJdGVtJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm0gPT4gJE5hbWVGb3JtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW0tPntCbG9ja30gZXEgJ09wdGlvbicgKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtLT57T3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkUGFyYW0tPntEYXRhfSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbS0+e1NlbGVjdGVkSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkUGFyYW0tPntUcmFuc2xhdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXNJdGVtJyAuICRQYXJhbS0+e0Jsb2NrfSwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAleyRQYXJhbX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgID0+ICRTZWxmLT57U2Vzc2lvbn17ICRQYXJhbS0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVQcmVmID0+ICRQYXJhbS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm0gPT4gJE5hbWVGb3JtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIG1vcmUgbGluawogICAgICAgIGlmICggJEVsZW1lbnR7Q29uZmlnfS0+e0xpbmt9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEVsZW1lbnR7Q29uZmlnfS0+e0Jsb2NrfSAuICdNb3JlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICV7ICRFbGVtZW50e0NvbmZpZ30gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ0NvbnRhaW5lck5hbWVzJywKICAgICAgICBWYWx1ZSA9PiBcQENvbnRhaW5lck5hbWVzLAogICAgKTsKCiAgICAjIGJ1aWxkIG1haW4gbWVudQogICAgbXkgJE1haW5NZW51Q29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCRNYWluTWVudUNvbmZpZ0tleSk7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRNYWluTWVudUNvbmZpZykgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ01haW5NZW51JyApOwoKICAgICAgICBmb3IgbXkgJE1haW5NZW51SXRlbSAoIHNvcnQga2V5cyAleyRNYWluTWVudUNvbmZpZ30gKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ01haW5NZW51SXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyAkTWFpbk1lbnVDb25maWctPnskTWFpbk1lbnVJdGVtfSB9LAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCB0cmFuc2xhdGlvbnMgZm9yIHRoZSBhbGxvY2F0aW9uIGxpc3RzIGZvciByZWd1bGFyIGNvbHVtbnMKICAgIGlmICggJENvbHVtbnMgJiYgSXNIYXNoUmVmV2l0aERhdGEoJENvbHVtbnMpICkgewoKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IGtleXMgJXskQ29sdW1uc30gKSB7CgogICAgICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgdHJhbnNsYXRlZCBpbiB0aGUgbmV4dCBibG9jawogICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAkQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRDb2x1bW47CiAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRXNjYWxhdGlvblRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdTZXJ2aWNlIFRpbWUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0VzY2FsYXRpb25SZXNwb25zZVRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdGaXJzdCBSZXNwb25zZSBUaW1lJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdFc2NhbGF0aW9uU29sdXRpb25UaW1lJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnU29sdXRpb24gVGltZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnRXNjYWxhdGlvblVwZGF0ZVRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdVcGRhdGUgVGltZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnUGVuZGluZ1RpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdQZW5kaW5nIHRpbGwnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1c3RvbWVyQ29tcGFueU5hbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXN0b21lciBOYW1lJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXN0b21lcklEJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VzdG9tZXIgSUQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1c3RvbWVyTmFtZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1c3RvbWVyIFVzZXIgTmFtZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VzdG9tZXJVc2VySUQnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXN0b21lciBVc2VyIElEJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW4nIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVHJhbnNsYXRlZFdvcmQpLAogICAgICAgICAgICApOwoKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgdHJhbnNsYXRpb25zIGZvciB0aGUgYWxsb2NhdGlvbiBsaXN0cyBmb3IgZHluYW1pYyBmaWVsZCBjb2x1bW5zCiAgICBteSAkQ29sdW1uc0R5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydUaWNrZXQnXSwKICAgICk7CgogICAgaWYgKCAkQ29sdW1uc0R5bmFtaWNGaWVsZCAmJiBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnNEeW5hbWljRmllbGQpICkgewoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHNvcnQgQHskQ29sdW1uc0R5bmFtaWNGaWVsZH0gKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZDsKCiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGQtPntMYWJlbH0gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbQogICAgICAgICksCiAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwp9CgpzdWIgX0VsZW1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTmFtZSAgICAgICAgICAgICAgICAgID0gJFBhcmFte05hbWV9OwogICAgbXkgJENvbmZpZ3MgICAgICAgICAgICAgICA9ICRQYXJhbXtDb25maWdzfTsKICAgIG15ICRCYWNrZW5kcyAgICAgICAgICAgICAgPSAkUGFyYW17QmFja2VuZHN9OwogICAgbXkgJFNvcnRCeSAgICAgICAgICAgICAgICA9ICRQYXJhbXtTb3J0Qnl9OwogICAgbXkgJE9yZGVyQnkgICAgICAgICAgICAgICA9ICRQYXJhbXtPcmRlckJ5fTsKICAgIG15ICRDb2x1bW5GaWx0ZXIgICAgICAgICAgPSAkUGFyYW17Q29sdW1uRmlsdGVyfTsKICAgIG15ICRHZXRDb2x1bW5GaWx0ZXIgICAgICAgPSAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfTsKICAgIG15ICRHZXRDb2x1bW5GaWx0ZXJTZWxlY3QgPSAkUGFyYW17R2V0Q29sdW1uRmlsdGVyU2VsZWN0fTsKCiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICBpZiAoICRDb25maWdzLT57JE5hbWV9LT57R3JvdXB9ICkgewogICAgICAgIG15ICRQZXJtaXNzaW9uT0sgPSAwOwogICAgICAgIG15IEBHcm91cHMgICAgICAgPSBzcGxpdCAvOy8sICRDb25maWdzLT57JE5hbWV9LT57R3JvdXB9OwogICAgICAgIEdST1VQOgogICAgICAgIGZvciBteSAkR3JvdXAgKEBHcm91cHMpIHsKICAgICAgICAgICAgbXkgJEhhc1Blcm1pc3Npb24gPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJEdyb3VwLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdybycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkSGFzUGVybWlzc2lvbikgewogICAgICAgICAgICAgICAgJFBlcm1pc3Npb25PSyA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IEdST1VQOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBpZiAhJFBlcm1pc3Npb25PSzsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZHMKICAgIG15ICRNb2R1bGUgPSAkQ29uZmlncy0+eyROYW1lfS0+e01vZHVsZX07CgogICAgcmV0dXJuIHVubGVzcyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRNb2R1bGUpOwoKICAgIG15ICRPYmplY3QgPSAkTW9kdWxlLT5uZXcoCiAgICAgICAgJXskU2VsZn0sCiAgICAgICAgQ29uZmlnICAgICAgICAgICAgICAgID0+ICRDb25maWdzLT57JE5hbWV9LAogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICBDdXN0b21lcklEICAgICAgICAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgQ3VzdG9tZXJVc2VySUQgICAgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnLAogICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgICA9PiAkU29ydEJ5LAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBDb2x1bW5GaWx0ZXIgICAgICAgICAgPT4gJENvbHVtbkZpbHRlciwKICAgICAgICBHZXRDb2x1bW5GaWx0ZXIgICAgICAgPT4gJEdldENvbHVtbkZpbHRlciwKICAgICAgICBHZXRDb2x1bW5GaWx0ZXJTZWxlY3QgPT4gJEdldENvbHVtbkZpbHRlclNlbGVjdCwKICAgICk7CgogICAgIyBnZXQgbW9kdWxlIGNvbmZpZwogICAgbXkgJUNvbmZpZyA9ICRPYmplY3QtPkNvbmZpZygpOwoKICAgICMgUGVyZm9ybSB0aGUgYWN0dWFsIGRhdGEgZmV0Y2hpbmcgYW5kIGNvbXB1dGF0aW9uIG9uIHRoZSBtaXJyb3IgREIsIGlmIGNvbmZpZ3VyZWQKICAgIGxvY2FsICRLZXJuZWw6OlN5c3RlbTo6REI6OlVzZU1pcnJvckRCID0gMTsKCiAgICAjIGdldCBtb2R1bGUgcHJlZmVyZW5jZXMKICAgIG15IEBQcmVmZXJlbmNlcyA9ICRPYmplY3QtPlByZWZlcmVuY2VzKCk7CgogICAgcmV0dXJuIEBQcmVmZXJlbmNlcyBpZiAkUGFyYW17UHJlZmVyZW5jZXNPbmx5fTsKCiAgICAjIFBlcmZvcm0gdGhlIGFjdHVhbCBkYXRhIGZldGNoaW5nIGFuZCBjb21wdXRhdGlvbiBvbiB0aGUgbWlycm9yIERCLCBpZiBjb25maWd1cmVkCiAgICBsb2NhbCAkS2VybmVsOjpTeXN0ZW06OkRCOjpVc2VNaXJyb3JEQiA9IDE7CgogICAgaWYgKCAkUGFyYW17RmlsdGVyQ29udGVudE9ubHl9ICkgewogICAgICAgIG15ICRGaWx0ZXJDb250ZW50ID0gJE9iamVjdC0+RmlsdGVyQ29udGVudCgKICAgICAgICAgICAgRmlsdGVyQ29sdW1uICAgPT4gJFBhcmFte0ZpbHRlckNvbHVtbn0sCiAgICAgICAgICAgIENvbmZpZyAgICAgICAgID0+ICRDb25maWdzLT57JE5hbWV9LAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRGaWx0ZXJDb250ZW50OwogICAgfQoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBhZGQgYmFja2VuZCB0byBzZXR0aW5ncyBzZWxlY3Rpb24KICAgIGlmICgkQmFja2VuZHMpIHsKICAgICAgICBteSAkQ2hlY2tlZCA9ICcnOwogICAgICAgIGlmICggJEJhY2tlbmRzLT57JE5hbWV9IHx8ICRDb25maWdzLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgJENoZWNrZWQgPSAnY2hlY2tlZCAnOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayB3aGV0aGVyIHRoZSB3aWRnZXQgaXMgZm9yY2libHkgZGlzcGxheWVkLgogICAgICAgICMgTWFuZGF0b3J5IHdpZGdldHMgYXJlIGRpc3BsYXllZCBhcyByZWFkLW9ubHkuCiAgICAgICAgbXkgJFJlYWRvbmx5ID0gJyc7CiAgICAgICAgaWYgKCAkQ29uZmlncy0+eyROYW1lfS0+e01hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICRSZWFkb25seSA9ICdkaXNhYmxlZCc7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudFNldHRpbmdzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlQ29uZmlnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICBDaGVja2VkICA9PiAkQ2hlY2tlZCwKICAgICAgICAgICAgICAgIFJlYWRvbmx5ID0+ICRSZWFkb25seSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gaWYgISRCYWNrZW5kcy0+eyROYW1lfTsKICAgIH0KCiAgICAjIGNoZWNrIGJhY2tlbmRzIGNhY2hlIChodG1sIHBhZ2UgY2FjaGUpCiAgICBteSAkQ29udGVudDsKICAgIG15ICRDYWNoZUtleSAgICA9ICRDb25maWd7Q2FjaGVLZXl9OwogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgaWYgKCAhJENhY2hlS2V5ICkgewogICAgICAgICRDYWNoZUtleSA9ICROYW1lIC4gJy0nCiAgICAgICAgICAgIC4gKCAkU2VsZi0+e0N1c3RvbWVySUR9ICAgICB8fCAnJyApIC4gJy0nCiAgICAgICAgICAgIC4gKCAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSB8fCAnJyApIC4gJy0nCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e1VzZXJMYW5ndWFnZX07CiAgICB9CiAgICBpZiAoICRDb25maWd7Q2FjaGVUVEx9ICkgewogICAgICAgICRDb250ZW50ID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgICAgICk7CiAgICB9CgogICAgIyBleGVjdXRlIGJhY2tlbmRzCiAgICBteSAkQ2FjaGVVc2VkID0gMTsKICAgIGlmICggIWRlZmluZWQgJENvbnRlbnQgfHwgJFNvcnRCeSApIHsKICAgICAgICAkQ2FjaGVVc2VkID0gMDsKICAgICAgICAkQ29udGVudCAgID0gJE9iamVjdC0+UnVuKAogICAgICAgICAgICBBSkFYICAgICAgICAgICA9PiAkUGFyYW17QUpBWH0sCiAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0gICAgIHx8ICcnLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSB8fCAnJywKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgaWYgY29udGVudCBzaG91bGQgYmUgc2hvd24KICAgIHJldHVybiBpZiAhJENvbnRlbnQ7CgogICAgIyBzZXQgY2FjaGUgKGh0bWwgcGFnZSBjYWNoZSkKICAgIGlmICggISRDYWNoZVVzZWQgJiYgJENvbmZpZ3tDYWNoZVRUTH0gKSB7CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICdEYXNoYm9hcmQnLAogICAgICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgICAgIFZhbHVlID0+ICRDb250ZW50LAogICAgICAgICAgICBUVEwgICA9PiAkQ29uZmlne0NhY2hlVFRMfSAqIDYwLAogICAgICAgICk7CiAgICB9CgogICAgIyByZXR1cm4gcmVzdWx0CiAgICByZXR1cm4gKAogICAgICAgIENvbnRlbnQgICAgID0+IFwkQ29udGVudCwKICAgICAgICBDb25maWcgICAgICA9PiBcJUNvbmZpZywKICAgICAgICBQcmVmZXJlbmNlcyA9PiBcQFByZWZlcmVuY2VzLAogICAgKTsKfQoKMTsK</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminDynamicField.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAyZDgxYzQ0MzBhYTg3OWJhODU5YzZlMzRlMmMxMTNhMTdhMmQ3NzM0IC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZC50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNYWluIikgJV0KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRHluYW1pYyBGaWVsZHMgTWFuYWdlbWVudCIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZShEYXRhLkFjdGlvbikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0R5bmFtaWMgRmllbGRzIE1hbmFnZW1lbnQnKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZpbHRlciBieSB2YWxpZCBzdGF0ZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IkluY2x1ZGVJbnZhbGlkIiBuYW1lPSJJbmNsdWRlSW52YWxpZCIgdmFsdWU9IjEiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXSIgWyUgRGF0YS5JbmNsdWRlSW52YWxpZENoZWNrZWQgfCBodG1sICVdLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluY2x1ZGVJbnZhbGlkIj5bJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyRHluYW1pY0ZpZWxkcyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIER5bmFtaWMgRmllbGRzIikgfCBodG1sICVdPC9sYWJlbD48L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IkZpbHRlckR5bmFtaWNGaWVsZHMiIGNsYXNzPSJGaWx0ZXJCb3giIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoIkp1c3Qgc3RhcnQgdHlwaW5nIHRvIGZpbHRlci4uLiIpIHwgaHRtbCAlXSIgbmFtZT0iRmlsdGVyRHluYW1pY0ZpZWxkcyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRPYmplY3RUeXBlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkR5bmFtaWNGaWVsZE9iamVjdFN0cmcgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZpZWxkIGJ5IG9iamVjdCB0eXBlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkT2JqZWN0VHlwZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZEZpZWxkVHlwZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5EeW5hbWljRmllbGRUeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZmllbGQgYnkgZmllbGQgdHlwZSIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkR5bmFtaWNGaWVsZEZpZWxkVHlwZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZE5hbWVzcGFjZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5EeW5hbWljRmllbGROYW1lc3BhY2VTdHJnICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkZpbHRlciBmaWVsZCBieSBuYW1lc3BhY2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGROYW1lc3BhY2UiKSAlXQogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbkFkZER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQ+PGxhYmVsIGZvcj0iWyUgRGF0YS5TZWxlY3ROYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCBEYXRhLk9iamVjdFR5cGVOYW1lICkgfCBodG1sICVdPC9sYWJlbD48L2g0PgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFkZER5bmFtaWNGaWVsZFN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkFkZCBuZXcgZmllbGQgZm9yIG9iamVjdCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuT2JqZWN0VHlwZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2xpPgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uRHluYW1pY0ZpZWxkRXh0cmEiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIERhdGEuQWN0aW9uIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5TdWJhY3Rpb24gfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciIgdHlwZT0ic3VibWl0IiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGV4dCkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcm9ja2V0Ij48L2k+WyUgVHJhbnNsYXRlKERhdGEuVGV4dCkgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uRHluYW1pY0ZpZWxkRXh0cmEiKSAlXQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudApbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uQWRkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSGludCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkhpbnQiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBhZGQgYSBuZXcgZmllbGQsIHNlbGVjdCB0aGUgZmllbGQgdHlwZSBmcm9tIG9uZSBvZiB0aGUgb2JqZWN0J3MgbGlzdCwgdGhlIG9iamVjdCBkZWZpbmVzIHRoZSBib3VuZGFyeSBvZiB0aGUgZmllbGQgYW5kIGl0IGNhbid0IGJlIGNoYW5nZWQgYWZ0ZXIgdGhlIGZpZWxkIGNyZWF0aW9uLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiMgVE9ETzogQWRkIHRoZSBhY3R1YWxseSBuZXcgZmllbGRzCiMgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiMgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgojICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIk5ldyBEeW5hbWljIEZpZWxkcyIpIHwgaHRtbCAlXTwvaDI+CiMgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgojICAgICAgICAgICAgICAgICAgICA8cD4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiV291bGQgeW91IGxpa2UgdG8gYmVuZWZpdCBmcm9tIGFkZGl0aW9uYWwgZHluYW1pYyBmaWVsZCB0eXBlcz8gWW91IGhhdmUgZnVsbCBhY2Nlc3MgdG8gdGhlIGZvbGxvd2luZyBmaWVsZCB0eXBlczoiKSB8IGh0bWwgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9wPgojICAgICAgICAgICAgICAgICAgICA8ZGw+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCdEYXRhYmFzZScpIHwgaHRtbCAlXTwvZHQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+WyUgVHJhbnNsYXRlKCdVc2UgZXh0ZXJuYWwgZGF0YWJhc2VzIGFzIGNvbmZpZ3VyYWJsZSBkYXRhIHNvdXJjZXMgZm9yIHRoaXMgZHluYW1pYyBmaWVsZC4nKSB8IGh0bWwgJV08L2RkPgojCiMgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCdXZWIgc2VydmljZScpIHwgaHRtbCAlXTwvZHQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+WyUgVHJhbnNsYXRlKCdFeHRlcm5hbCB3ZWIgc2VydmljZXMgY2FuIGJlIGNvbmZpZ3VyZWQgYXMgZGF0YSBzb3VyY2VzIGZvciB0aGlzIGR5bmFtaWMgZmllbGQuJykgfCBodG1sICVdPC9kZD4KIwojICAgICAgICAgICAgICAgICAgICAgICAgPGR0PlslIFRyYW5zbGF0ZSgnQ29udGFjdCB3aXRoIGRhdGEnKSB8IGh0bWwgJV08L2R0PgojICAgICAgICAgICAgICAgICAgICAgICAgPGRkPlslIFRyYW5zbGF0ZSgnVGhpcyBmZWF0dXJlIGFsbG93cyB0byBhZGQgKG11bHRpcGxlKSBjb250YWN0cyB3aXRoIGRhdGEgdG8gdGlja2V0cy4nKSB8IGh0bWwgJV08L2RkPgojICAgICAgICAgICAgICAgICAgICA8L2RsPgojICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSGludCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIEZpZWxkcyBMaXN0IikgfCBodG1sICVdPC9oMj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRleHRTZXR0aW5ncyIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkNvbnRleHRGdW5jdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQ29udGV4dFNldHRpbmdzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlNob3dDb250ZXh0U2V0dGluZ3NEaWFsb2ciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jb2ciPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIiIGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQWdlbnRQcmVmZXJlbmNlcyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJVcGRhdGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iR3JvdXAiIHZhbHVlPSJbJSBEYXRhLkdyb3VwIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSZWRpcmVjdFVSTCIgdmFsdWU9IlslIERhdGEuUmVxdWVzdGVkVVJMIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLlByZWZlcmVuY2VzS2V5IHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIGZpZWxkcyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRleHRTZXR0aW5ncyIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRHluYW1pY0ZpZWxkc1BhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlBhZ2luYXRpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VOYXZCYXIiKSAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmVzdWx0TG9uZyAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJEeW5hbWljRmllbGRzQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSIgaWQ9IkR5bmFtaWNGaWVsZHNUYWJsZSIgc3VtbWFyeT0iTGlzdCBvZiBhbGwgcmVnaXN0ZXJlZCBEeW5hbWljIEZpZWxkcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkxhYmVsIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk9yZGVyIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiT2JqZWN0IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNvcHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkc1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uWyUgSUYgRGF0YS5WYWxpZElEICE9IDElXSBJbnZhbGlkWyUgRU5EICVdIiBpZD0iRHluYW1pY0ZpZWxkSURfWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBEYXRhLkNvbmZpZ0RpYWxvZyB8IHVyaSAlXTtTdWJhY3Rpb249Q2hhbmdlO09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgdXJpICVdO0ZpZWxkVHlwZT1bJSBEYXRhLkZpZWxkVHlwZSB8IHVyaSAlXTtJRD1bJSBEYXRhLklEIHwgdXJpICVdWyUgRGF0YS5GaWx0ZXJTdHJnICVdIiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTmFtZSAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5GaWVsZE9yZGVyICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgVHJhbnNsYXRlKERhdGEuRmllbGRUeXBlTmFtZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgVHJhbnNsYXRlKERhdGEuT2JqZWN0VHlwZU5hbWUpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIFRyYW5zbGF0ZShEYXRhLlZhbGlkKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNsb25lTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkR5bmFtaWNGaWVsZENsb25lIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRGF0YS5Db25maWdEaWFsb2cgJV07U3ViYWN0aW9uPUFkZDtDbG9uZUZpZWxkSUQ9WyUgRGF0YS5JRCB8IHVyaSAlXVslIERhdGEuRmlsdGVyU3RyZyAlXTtGaWVsZFR5cGU9WyUgRGF0YS5GaWVsZFR5cGUgfCB1cmkgJV07T2JqZWN0VHlwZT1bJSBEYXRhLk9iamVjdFR5cGVOYW1lIHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb3B5IHRoaXMgZmllbGQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY29weSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsb25lTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZWxldGVMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iVHJhc2hDYW4gRHluYW1pY0ZpZWxkRGVsZXRlIiBocmVmPSIjIiBkYXRhLXF1ZXJ5LXN0cmluZz0iQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkO1N1YmFjdGlvbj1EeW5hbWljRmllbGREZWxldGU7SUQ9WyUgRGF0YS5JRCB8IHVyaSAlXVslIERhdGEuRmlsdGVyU3RyZyAlXTtbJSBFbnYoIkNoYWxsZW5nZVRva2VuUGFyYW0iKSB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGZpZWxkIikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGZpZWxkIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiRGVsZXRlTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkc1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iRmlsdGVyTWVzc2FnZSBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjciPlslIFRyYW5zbGF0ZSgiTm8gbWF0Y2hlcyBmb3VuZC4iKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWF4RmllbGRPcmRlciIpICVdCiAgICAgICAgPGlucHV0IGlkPSJNYXhGaWVsZE9yZGVyIiB0eXBlPSJoaWRkZW4iIG5hbWU9Ik1heEZpZWxkT3JkZXIiIHZhbHVlPSJbJSBEYXRhLk1heEZpZWxkT3JkZXIgfCBodG1sICVdIi8+ClslIFJlbmRlckJsb2NrRW5kKCJNYXhGaWVsZE9yZGVyIikgJV0KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFpbiIpICVdCg==</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorageDB.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZURCLnBtIC0gYXR0YWNobWVudCBzdG9yYWdlIGluIGxvY2FsIGRhdGEgYmFzZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQgYnk6CiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMKIyAtLQojICRJZDogQXR0YWNobWVudFN0b3JhZ2VEQi5wbSx2IDEuMTEgMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlREI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0Owp1c2UgRGlnZXN0OjpNRDUgcXcobWQ1X2hleCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlREIKCj1oZWFkMSBTWU5PUFNJUwoKUHJvdmlkZXMgYXR0YWNobWVudCBoYW5kbGluZyBmb3IgZGF0YSBiYXNlIGJhY2tlbmQgLSBsb2NhbCwgT1RSUy1kYXRhIGJhc2UuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBBdHRhY2htZW50U3RvcmFnZURCIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEF0dGFjaG1lbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVudFN0b3JhZ2VEQicpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIEF0dGFjaG1lbnRBZGQoKQoKY3JlYXRlIGEgbmV3IHN0ZC4gYXR0YWNobWVudAoKICAgIG15ICRJRCA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+IDEyMywKICAgICAgICBEYXRhUmVmICA9PiBcJFNvbWVDb250ZW50LAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkSUQgPSAwOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVmZi4uLgogICAgZm9yZWFjaCAocXcoQXR0RGlySUQgRGF0YVJlZikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCAkXyEiICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgI2VuY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQuLi4KICAgIGlmICggISRTZWxmLT57REJPYmplY3R9LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdEaXJlY3RCbG9iJykgKSB7CiAgICAgICAgJFNlbGYtPntFbmNvZGVPYmplY3R9LT5FbmNvZGVPdXRwdXQoICRQYXJhbXtEYXRhUmVmfSApOwoKICAgICAgICAjb3ZlcndyaXRlIGV4aXN0aW5nIHZhbHVlIGluc3RlYWQgb2YgdXNpbmcgYW5vdGhlciBmaWxlc2l6ZSBvZiBtZW1vcnkuLi4KICAgICAgICAkeyAkUGFyYW17RGF0YVJlZn0gfSA9IGVuY29kZV9iYXNlNjQoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CiAgICB9CgogICAgI2RiIHF1b3RpbmcuLi4KICAgIGZvcmVhY2ggKHF3KCBBdHREaXJJRCkpIHsKICAgICAgICAkUGFyYW17JF99ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17JF99LCAnSW50ZWdlcicgKTsKICAgIH0KCiAgICAjYnVpbGQgc3FsLi4uCiAgICBteSAkU1FMID0gIiI7CiAgICBpZiAoICRTZWxmLT57REJPYmplY3R9LT57QmFja2VuZH0tPnsnREI6OlR5cGUnfSA9fiAvb3JhY2xlLyApIHsKICAgICAgICAkU1FMID0gIklOU0VSVCBJTlRPIGF0dGFjaG1lbnRfc3RvcmFnZSAiIC4KICAgICAgICAgICAgIiAoYXR0YWNobWVudF9kaXJlY3RvcnlfaWQsIGRhdGEpICIgLgogICAgICAgICAgICAiIFZBTFVFUyAiIC4KICAgICAgICAgICAgIiAoICRQYXJhbXtBdHREaXJJRH0sIEVNUFRZX0NMT0IoKSkiOwoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTUUwgPSAiSU5TRVJUIElOVE8gYXR0YWNobWVudF9zdG9yYWdlICIgLgogICAgICAgICAgICAiIChhdHRhY2htZW50X2RpcmVjdG9yeV9pZCwgZGF0YSkgIiAuCiAgICAgICAgICAgICIgVkFMVUVTICIgLgogICAgICAgICAgICAiICggJFBhcmFte0F0dERpcklEfSwgPykiOwogICAgfQoKICAgICNydW4gc3FsLi4uCiAgICBteSAkRG9SZXN1bHQgPSAwOwogICAgJERvUmVzdWx0ID0gJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAkU1FMLCBCaW5kID0+IFsgJFBhcmFte0RhdGFSZWZ9IF0sICAgICMgQXR0RGlySUQgPT4gJFBhcmFte0F0dERpcklEfQogICAgKTsKCiAgICBpZiAoJERvUmVzdWx0KSB7CgogICAgICAgICNyZXR1cm4gSUQuLi4KICAgICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBhdHRhY2htZW50X3N0b3JhZ2UgV0hFUkUgIiAuCiAgICAgICAgICAgICAgICAiYXR0YWNobWVudF9kaXJlY3RvcnlfaWQgPSAkUGFyYW17QXR0RGlySUR9IiwKICAgICAgICApOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRJRCA9ICRSb3dbMF07CiAgICAgICAgfQogICAgICAgIHJldHVybiAkSUQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSA9PiAiRmFpbGVkIHRvIGluc2VydCBhdHRhY2htZW50IGRhdGEhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQp9Cgo9aXRlbSBBdHRhY2htZW50R2V0KCkKCnJldHVybnMgYW4gZW50cnkgaW4gYXR0YWNobWVudF9zdG9yYWdlCgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudE9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICBJRCA9PiAxMjMsICMoc29tZSBhdHRhY2htZW50IHN0b3JhZ2UgaWQpCiAgICAgICAgIyAuLi5PUi4uLgogICAgICAgIEF0dERpcklEID0+IDEyMyAjKHNvbWUgYXR0YWNobWVudCBkaXJlY3RvcnkgaWQpLAogICAgKTsKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhICA9ICgpOwogICAgbXkgJFdIRVJFID0gIiI7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICYmICEkUGFyYW17QXR0RGlySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkIEF0dERpcklEIG9yIElEISIgKTsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgICNkYiBxdW90aW5nLi4uCiAgICBmb3JlYWNoIChxdyggQXR0RGlySUQgSUQpKSB7CiAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgaWYgKCBkZWZpbmVkKCAkUGFyYW17QXR0RGlySUR9ICkgJiYgJFBhcmFte0F0dERpcklEfSApIHsKICAgICAgICAkV0hFUkUgPSAiIFdIRVJFIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkID0gJFBhcmFte0F0dERpcklEfSI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkV0hFUkUgPSAiIFdIRVJFIGlkID0gJFBhcmFte0lEfSI7CiAgICB9CgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQsIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkIEZST00gYXR0YWNobWVudF9zdG9yYWdlICIgLiAkV0hFUkU7CgogICAgaWYgKCAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMLCBFbmNvZGUgPT4gWyAwLCAwLCAxIF0gKSApIHsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgIG15IEBEYXRhID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKTsKCiAgICBpZiAoQERhdGEpIHsKICAgICAgICBteSAkU1FMID0gIlNFTEVDVCBkYXRhIEZST00gYXR0YWNobWVudF9zdG9yYWdlICIgLiAkV0hFUkU7CgogICAgICAgIGlmICggISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKCBTUUwgPT4gJFNRTCApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmFpbGVkIHRvIHByZXBhcmUgU1FMIGZvciBGZXRjaHJvd0FycmF5ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIFwlRGF0YTsKICAgICAgICB9CgogICAgICAgIG15IEBBdHRhY2hEYXRhID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKTsKCiAgICAgICAgbXkgJEF0dGFjaERhdGFSZWYgPSBcJEF0dGFjaERhdGFbMF07CgogICAgICAgIGlmICggISRBdHRhY2hEYXRhUmVmICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmFpbGVkIHRvIEZldGNocm93QXJyYXkhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgICAgIH0KCiAgICAgICAgI2RlY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQuLi4KICAgICAgICBpZiAoICEkU2VsZi0+e0RCT2JqZWN0fS0+R2V0RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewogICAgICAgICAgICAkeyRBdHRhY2hEYXRhUmVmfSA9IGRlY29kZV9iYXNlNjQoICR7JEF0dGFjaERhdGFSZWZ9ICk7CiAgICAgICAgfQoKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgSUQgICAgICAgPT4gJERhdGFbMF0sCiAgICAgICAgICAgIEF0dERpcklEID0+ICREYXRhWzFdLAoKICAgICAgICAgICAgRGF0YVJlZiA9PiAkQXR0YWNoRGF0YVJlZiwKICAgICAgICApOwoKICAgICAgICAkQXR0YWNoRGF0YVJlZiA9IHVuZGVmOwogICAgfQoKICAgIHJldHVybiBcJURhdGE7Cn0KCj1pdGVtIEF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcygpCgpyZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBhdHRhY2htZW50IGluIHRoZSBzdG9yYWdlIGJhY2tlbmQgYW5kIHRoZSBtZDVzdW0uCgogICAgbXkgUmVhbFByb3BlcnRpZXMgPSBBdHRhY2htZW50U3RvcmFnZU9iamVjdC0+QXR0YWNobWVudEdldFJlYWxQcm9wZXJ0aWVzKAogICAgICAgIEF0dERpcklEID0+IDEyMywgIyhzb21lIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkKQogICAgICAgICMuLk9SLi4uCiAgICAgICAgSUQgPT4gMTIzLCAjKHNvbWUgYXR0YWNobWVudCBzdG9yYWdlIGlkKQogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50R2V0UmVhbFByb3BlcnRpZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlUmVhbFByb3BlcnRpZXM7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17QXR0RGlySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkIEF0dERpcklEISIgKTsKICAgICAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwogICAgfQoKICAgIG15ICREYXRhID0gJFNlbGYtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgQXR0RGlySUQgPT4gJFBhcmFte0F0dERpcklEfQogICAgKTsKCiAgICBteSAkUmVhbEZpbGVTaXplID0gMDsKICAgIG15ICRSZWFsTUQ1U3VtICAgPSAnJzsKCiAgICBpZiAoIGRlZmluZWQgJERhdGEgJiYgJERhdGEtPntEYXRhUmVmfSApIHsKICAgICAgICBteSAkQ29udGVudCA9ICR7ICREYXRhLT57RGF0YVJlZn0gfTsKICAgICAgICAkU2VsZi0+e0VuY29kZU9iamVjdH0tPkVuY29kZU91dHB1dCggXCRDb250ZW50ICk7CgogICAgICAgICRSZWFsRmlsZVNpemUgPSBieXRlczo6bGVuZ3RoKCRDb250ZW50KTsKICAgICAgICAkUmVhbE1ENVN1bSAgID0gbWQ1X2hleCgkQ29udGVudCk7CiAgICB9CgogICAgJFJlYWxQcm9wZXJ0aWVze1JlYWxGaWxlU2l6ZX0gPSAkUmVhbEZpbGVTaXplOwogICAgJFJlYWxQcm9wZXJ0aWVze1JlYWxNRDVTdW19ICAgPSAkUmVhbE1ENVN1bTsKCiAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dA==</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorageFS.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZUZTLnBtIC0gYXR0YWNobWVudCBzdG9yYWdlIGluIGZpbGUgc3lzdGVtCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlLWl0KGRvdClkZQojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUtaXQoZG90KWRlCiMgLS0KIyAkSWQ6IEF0dGFjaG1lbnRTdG9yYWdlRlMucG0sdiAxLjE0IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZUZTOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NDsKdXNlIEZpbGU6OnN0YXQ7CnVzZSBEaWdlc3Q6Ok1ENSBxdyhtZDVfaGV4KTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlRlMKCj1oZWFkMSBTWU5PUFNJUwoKUHJvdmlkZXMgYXR0YWNobWVudCBoYW5kbGluZyBmb3IgZmlsZSBzeXN0ZW0gYmFja2VuZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIEF0dGFjaG1lbnRTdG9yYWdlRlMgb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQXR0YWNobWVudE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZUZTJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIEF0dGFjaG1lbnRBZGQoKQoKY3JlYXRlIGEgbmV3IHN0ZC4gYXR0YWNobWVudAoKICAgIG15ICRJRCA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+IDEyMywKICAgICAgICBEYXRhUmVmICA9PiBcJFNvbWVDb250ZW50LAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkcmV0VmFsID0gMTsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGZvcmVhY2ggKHF3KEF0dERpcklEIERhdGFSZWYpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgJF8hIiApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICNidWlsZCBhdHRhY2htZW50IGRhdGEgZmlsZSBwYXRoLi4uCiAgICAkcmV0VmFsID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0hvbWUnKSAuCiAgICAgICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0F0dGFjaG1lbnRTdG9yYWdlRlM6OlN0b3JhZ2VEaXJlY3RvcnknKTsKCiAgICAjY2hlY2sgaWYgZGVzdGluYXRpb24gcGF0aCBleGlzdHMuLi4KICAgIGlmICggIS1kICRyZXRWYWwgKSB7CiAgICAgICAgaWYgKCAhRmlsZTo6UGF0aDo6bWtwYXRoKCBbJHJldFZhbF0sIDAsIDA3NzUgKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJBdHRhY2htZW50U3RvcmFnZUZTIHBhdGggZG9lcyBub3QgZXhpc3QgbmVpdGhlciBJIGNhbiBjcmVhdGUgaXQgKCRyZXRWYWwpOiAkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjYnVpbGQgYXR0YWNobWVudCBkYXRhIGZpbGUgcGF0aC4uLgogICAgJHJldFZhbCAuPSAiLyIgLiAkUGFyYW17QXR0RGlySUR9IC4gIi5kYXQiOwoKICAgICN3cml0ZSB0aGUgYXR0YWNobWVudCBkYXRhIGZpbGUuLi4KICAgIGlmICggb3BlbiggbXkgJERBVEEsICI+IiwgIiRyZXRWYWwiICkgKSB7CiAgICAgICAgYmlubW9kZSgkREFUQSk7CiAgICAgICAgcHJpbnQgJERBVEEgJHsgJFBhcmFte0RhdGFSZWZ9IH07CiAgICAgICAgY2xvc2UoJERBVEEpOwogICAgICAgIHJldHVybiAkcmV0VmFsOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4gTk9UIHdyaXRlIGZpbGUgKCRyZXRWYWwpOiAkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9Cn0KCj1pdGVtIEF0dGFjaG1lbnRHZXQoKQoKcmV0dXJucyBhbiBlbnRyeSBpbiBhdHRhY2htZW50X3N0b3JhZ2UKCiAgICBteSAlRGF0YSA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIEF0dERpcklEID0+IDEyMywgIyhzb21lIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkKQogICAgICAgICMuLk9SLi4uCiAgICAgICAgRmlsZVBhdGggPT4gJy9wYXRoL3RvL3RoZS9hdHRhY2htZW50L2ZpbGUuZGF0JywKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJURhdGEgICAgID0gKCk7CiAgICBteSAkRmlsZVBhdGggPSAnJzsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtBdHREaXJJRH0gJiYgISRQYXJhbXtGaWxlUGF0aH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgQXR0RGlySUQgb3IgRmlsZVBhdGghIiApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgaWYgKCBkZWZpbmVkKCAkUGFyYW17RmlsZVBhdGh9ICkgJiYgJFBhcmFte0ZpbGVQYXRofSApIHsKICAgICAgICAkRmlsZVBhdGggPSAkUGFyYW17RmlsZVBhdGh9OwogICAgfQoKICAgICNjaGVjayBpZiBQYXJhbUlEIGlzIGRlZmluZWQKICAgIGlmICggZGVmaW5lZCggJFBhcmFte0F0dERpcklEfSApICYmICRQYXJhbXtBdHREaXJJRH0gKSB7CgogICAgICAgICNkYiBxdW90aW5nLi4uCiAgICAgICAgZm9yZWFjaCAocXcoIEF0dERpcklEKSkgewogICAgICAgICAgICAkUGFyYW17JF99ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17JF99LCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICNidWlsZCBzcWwuLi4KICAgICAgICBteSAkU1FMID0gIlNFTEVDVCBmaWxlX3BhdGggRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSAiCiAgICAgICAgICAgIC4gIldIRVJFIGlkPSRQYXJhbXtBdHREaXJJRH0iOwoKICAgICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICRTUUwsCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRGaWxlUGF0aCA9ICREYXRhWzBdOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEkRmlsZVBhdGggKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICJDb3VsZCBOT1QgZmluZCBmaWxlIHBhdGggZm9yIGdpdmVuIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkICgkUGFyYW17QXR0RGlySUR9KSEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgICNnZXQgdGhlIGF0dGFjaG1lbnQgZGF0YSBmaWxlLi4uCiAgICBpZiAoIG9wZW4oIG15ICREQVRBLCAiPCIsICRGaWxlUGF0aCApICkgewogICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBteSAkRGF0YSAgICA9ICIiOwogICAgICAgIGJpbm1vZGUoJERBVEEpOwogICAgICAgIHdoaWxlICg8JERBVEE+KSB7CiAgICAgICAgICAgICREYXRhIC49ICRfOwogICAgICAgIH0KICAgICAgICBjbG9zZSgkREFUQSk7CgogICAgICAgICMgc2V0IERhdGFSZWYgcGFyYW0KICAgICAgICAkRGF0YXtEYXRhUmVmfSA9IFwkRGF0YTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IG9wZW4gJEZpbGVQYXRoOiAkISAhIiwKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gQXR0YWNobWVudEdldFJlYWxQcm9wZXJ0aWVzKCkKCnJldHVybnMgdGhlIHNpemUgb2YgdGhlIGF0dGFjaG1lbnQgaW4gdGhlIHN0b3JhZ2UgYmFja2VuZCBhbmQgdGhlIG1kNXN1bS4KCiAgICBteSBSZWFsUHJvcGVydGllcyA9IEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50R2V0UmVhbFByb3BlcnRpZXMoCiAgICAgICAgQXR0RGlySUQgPT4gMTIzLCAjKHNvbWUgYXR0YWNobWVudCBkaXJlY3RvcnkgaWQpCiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJVJlYWxQcm9wZXJ0aWVzOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVmZi4uLgogICAgaWYgKCAhJFBhcmFte0F0dERpcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCBBdHREaXJJRCEiICk7CiAgICAgICAgcmV0dXJuICVSZWFsUHJvcGVydGllczsKICAgIH0KCiAgICBteSAkRGF0YSA9ICRTZWxmLT5BdHRhY2htZW50R2V0KAogICAgICAgIEF0dERpcklEID0+ICRQYXJhbXtBdHREaXJJRH0KICAgICk7CgogICAgbXkgJFJlYWxGaWxlU2l6ZSA9IDA7CiAgICBteSAkUmVhbE1ENVN1bSAgID0gJyc7CgogICAgaWYgKGRlZmluZWQgJERhdGEgJiYgJERhdGEtPntEYXRhUmVmfSkgewogICAgICAgIG15ICRDb250ZW50ID0gJHsgJERhdGEtPntEYXRhUmVmfSB9OwogICAgICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fS0+RW5jb2RlT3V0cHV0KCBcJENvbnRlbnQgKTsKCiAgICAgICAgJFJlYWxGaWxlU2l6ZSA9IGJ5dGVzOjpsZW5ndGgoJENvbnRlbnQpOwogICAgICAgICRSZWFsTUQ1U3VtICAgPSBtZDVfaGV4KCRDb250ZW50KTsKICAgIH0KCiAgICAkUmVhbFByb3BlcnRpZXN7UmVhbEZpbGVTaXplfSA9ICRSZWFsRmlsZVNpemU7CiAgICAkUmVhbFByb3BlcnRpZXN7UmVhbE1ENVN1bX0gICA9ICRSZWFsTUQ1U3VtOwoKICAgIHJldHVybiAlUmVhbFByb3BlcnRpZXM7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCgo9Y3V0</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorage.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZS5wbSAtIGxpYiBmb3IgYXR0YWNobWVudCBtYW5hZ2VtZW50CiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlLWl0KGRvdClkZQojICogRG9yb3RoZWEoZG90KURvZXJmZmVsKGF0KWNhcGUtaXQoZG90KWRlCiMgKiBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZS1pdChkb3QpZGUKIyAtLQojICRJZDogQXR0YWNobWVudFN0b3JhZ2UucG0sdiAxLjE0IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBEaWdlc3Q6Ok1ENSBxdyhtZDVfaGV4KTsKdXNlIEVuY29kZSBxdyhlbmNvZGVfdXRmOCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVudFN0b3JhZ2UgLSBzdGQuIGF0dGFjaG1lbnQgbGliCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBhdHRhY2htZW50IHN0b3JhZ2UgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgc3RkLiBhdHRhY2htZW50IG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgICRTZWxmLT57TWFpbk9iamVjdH0gICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgIyBnZXQgY29uZmlndXJlZCBzdG9yYWdlIGJhY2tlbmRzLi4uCiAgICBteSAkQmFja2VuZFJlZiA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdBdHRhY2htZW50U3RvcmFnZTo6U3RvcmFnZUJhY2tlbmRNb2R1bGVzJyk7CiAgICBpZiAoICEoIHJlZigkQmFja2VuZFJlZikgZXEgJ0hBU0gnICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICNyZXRyaWV2ZSByZXF1aXJlZCBzdG9yYWdlIGJhY2tlbmQgbW9kdWxlcy4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgZGlzdGluY3Qoc3RvcmFnZV9iYWNrZW5kKSBGUk9NIGF0dGFjaG1lbnRfZGlyZWN0b3J5IjsKICAgIGlmICggJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMICkgKSB7CiAgICAgICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRCYWNrZW5kUmVmLT57ICREYXRhWzBdIH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjbG9hZCBzdG9yYWdlIGJhY2tlbmRzLi4uCiAgICBmb3IgbXkgJEN1cnJLZXkgKCBrZXlzKCAleyRCYWNrZW5kUmVmfSApICkgewogICAgICAgIGlmICggJEJhY2tlbmRSZWYtPnskQ3VycktleX0gJiYgJFNlbGYtPntNYWluT2JqZWN0fS0+UmVxdWlyZSgkQ3VycktleSkgKSB7CiAgICAgICAgICAgICRTZWxmLT57JEN1cnJLZXl9ID0gJEtlcm5lbDo6T00tPkdldCgkQ3VycktleSk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gQXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkoKQoKZ2V0IGFuIGF0dGFjaG1lbnQgLSByZXR1cm5zIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGVudHJ5IHdpdGhvdXQgYXR0YWNobWVudCBjb250ZW50CgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudFN0b3JhZ2VPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0RGlyZWN0b3J5KAogICAgICAgIElEID0+ICRJRCwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhID0gKCk7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkIElEISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZ2V0IGF0dGFjaG1lbnQgZGlyZWN0b3J5CiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICNkYiBxdW90aW5nLi4uCiAgICBmb3JlYWNoIChxdyggSUQpKSB7CiAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQsIHN0b3JhZ2VfYmFja2VuZCwgZmlsZV9wYXRoLCAiIC4KICAgICAgICAiZmlsZV9uYW1lICIgLgogICAgICAgICJGUk9NIGF0dGFjaG1lbnRfZGlyZWN0b3J5ICIgLgogICAgICAgICJXSEVSRSBpZD0kUGFyYW17SUR9IjsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJFNRTCwKICAgICk7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIEF0dERpcklEICAgICAgID0+ICREYXRhWzBdLAogICAgICAgICAgICBTdG9yYWdlQmFja2VuZCA9PiAkRGF0YVsxXSwKICAgICAgICAgICAgRmlsZVBhdGggICAgICAgPT4gJERhdGFbMl0sCiAgICAgICAgICAgIEZpbGVOYW1lICAgICAgID0+ICREYXRhWzNdLAogICAgICAgICk7CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZ2V0IGF0dGFjaG1lbnQgZGlyZWN0b3J5IHByZWZlcmVuY2VzCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICNidWlsZCBzcWwuLi4KICAgICRTUUwgPSAiU0VMRUNUIHByZWZlcmVuY2VzX2tleSwgcHJlZmVyZW5jZXNfdmFsdWUgIiAuCiAgICAgICAgIkZST00gYXR0YWNobWVudF9kaXJfcHJlZmVyZW5jZXMgIiAuCiAgICAgICAgIldIRVJFIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkPSRQYXJhbXtJRH0iOwoKICAgICRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAkU1FMLAogICAgKTsKCiAgICBteSAlUHJlZmVyZW5jZXM7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFByZWZlcmVuY2VzeyAkRGF0YVswXSB9ID0gJERhdGFbMV07CiAgICB9CgogICAgI2FkZCBwcmVmZXJlbmNlcwogICAgJERhdGF7UHJlZmVyZW5jZXN9ID0gXCVQcmVmZXJlbmNlczsKCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIEF0dGFjaG1lbnRTdG9yYWdlR2V0KCkKCmdldCBhbiBhdHRhY2htZW50CgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudFN0b3JhZ2VPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0KAogICAgICAgIElEID0+ICRJRCwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhID0gKCk7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkIElEISIKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgI2dldCBkaXJlY3RvcnkgZGF0YS4uLgogICAgJURhdGEgPSAkU2VsZi0+QXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkoIElEID0+ICRQYXJhbXtJRH0gKTsKCiAgICBpZiAoICFkZWZpbmVkKCAkRGF0YXtBdHREaXJJRH0gKSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSA9PiAiTm8gYXR0YWNobWVudCB3aXRoIHRoaXMgSUQgZXhpc3RzISIKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgI2dldCB0aGUgYWN0dWFsIGF0dGFjaG1lbnQuLi4KICAgIG15ICRBdHRhY2htZW50UmVmID0gJFNlbGYtPnsgJERhdGF7U3RvcmFnZUJhY2tlbmR9IH0tPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIEF0dERpcklEID0+ICREYXRhe0F0dERpcklEfSwKICAgICk7CgogICAgIyREYXRhe0NvbnRlbnRUeXBlfSA9ICRBdHRhY2htZW50UmVmLT57RGF0YVR5cGV9OwoKICAgICMgZ2V0IENvbnRlbnRSZWYgZm9yIERCIGJhY2tlbmQKICAgIGlmICggJEF0dGFjaG1lbnRSZWYtPntEYXRhUmVmfSApIHsKICAgICAgICAkRGF0YXtDb250ZW50UmVmfSA9ICRBdHRhY2htZW50UmVmLT57RGF0YVJlZn07CiAgICB9CgogICAgIyBnZXQgQ29udGVudFJlZiBmb3IgRlMgYmFja2VuZAogICAgZWxzaWYgKCBleGlzdHMoICRBdHRhY2htZW50UmVmLT57RGF0YX0gKSApIHsKICAgICAgICAkRGF0YXtDb250ZW50UmVmfSA9IFwkQXR0YWNobWVudFJlZi0+e0RhdGF9OwogICAgfQoKICAgICRBdHRhY2htZW50UmVmID0gdW5kZWY7CiAgICAkQXR0YWNobWVudFJlZiA9IHt9OwoKICAgIHJldHVybiBcJURhdGE7Cn0KCj1pdGVtICBBdHRhY2htZW50U3RvcmFnZUdldFJlYWxQcm9wZXJ0aWVzKCkKCmdldCB0aGUgYXR0YWNobWVudCdzIHNpemUgb24gZGlzayBhbmQgdGhlIG1kNXN1bQoKICAgIG15ICVEYXRhID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUdldFJlYWxQcm9wZXJ0aWVzKAogICAgICAgIEF0dERpcklEICAgICAgPT4gJEF0dERpcklELAogICAgICAgU3RvcmFnZUJhY2tlbmQgPT4gIktlcm5lbDo6U3lzdGVtOjpBdHRhY2htZW50U3RvcmFnZURCIiwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXRSZWFsUHJvcGVydGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJVJlYWxQcm9wZXJ0aWVzOwoKICAgICMgY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtBdHREaXJJRH0gJiYgISRQYXJhbXtTdG9yYWdlQmFja2VuZH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEF0dERpcklEIGFuZCBTdG9yYWdlQmFja2VuZCEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwogICAgfQoKICAgICMgZ2V0IHRoZSBhY3R1YWwgYXR0YWNobWVudCBwcm9wZXJ0aWVzLi4uCiAgICAlUmVhbFByb3BlcnRpZXMgPSAkU2VsZi0+eyAkUGFyYW17U3RvcmFnZUJhY2tlbmR9IH0tPkF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcygKICAgICAgICBBdHREaXJJRCA9PiAkUGFyYW17QXR0RGlySUR9LAogICAgKTsKCiAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwp9Cgo9aXRlbSBBdHRhY2htZW50U3RvcmFnZUFkZCgpCgpjcmVhdGUgYSBuZXcgYXR0YWNobWVudCBkaXJlY3RvcnkgZW50cnkgYW5kIHdyaXRlIGF0dGFjaG1lbnQgdG8gdGhlIHNwZWNpZmllZCBiYWNrZW5kCgogICAgbXkgJElEID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUFkZCgKICAgICAgICBTdG9yYWdlQmFja2VuZCA9PiAnS2VybmVsOjpTeXN0ZW06OkF0dGFjaG1lbnRTdG9yYWdlREInLAogICAgICAgIERhdGFSZWYgPT4gJFNvbWVDb250ZW50UmVmZXJlbmNlLAogICAgICAgIEZpbGVOYW1lID0+ICdTb21lRmlsZU5hbWUuemlwJywKICAgICAgICBVc2VySUQgPT4gMTIzLAogICAgICAgIFByZWZlcmVuY2VzICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhVHlwZSAgICAgICAgICAgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVDdXN0b21QYXJhbXMgICA9PiAnd2l0aCBvdXIgb3duIHZhbHVlJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50U3RvcmFnZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJElEICAgICA9IDA7CiAgICBteSAkTUQ1c3VtID0gJyc7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBmb3JlYWNoIChxdyhEYXRhUmVmIEZpbGVOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEoICRQYXJhbXtTdG9yYWdlQmFja2VuZH0gKSApIHsKICAgICAgICAkUGFyYW17U3RvcmFnZUJhY2tlbmR9ID0KICAgICAgICAgICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0F0dGFjaG1lbnRTdG9yYWdlOjpEZWZhdWx0U3RvcmFnZUJhY2tlbmRNb2R1bGUnKTsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgKDEpIGNyZWF0ZSBhdHRhY2htZW50IGRpcmVjdG9yeSBlbnRyeS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjZGIgcXVvdGluZy4uLgogICAgZm9yZWFjaCAocXcoIFN0b3JhZ2VCYWNrZW5kIEZpbGVOYW1lKSkgewogICAgICAgICRQYXJhbXskX30gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXskX30gKTsKICAgIH0KICAgIGZvcmVhY2ggKHF3KCBVc2VySUQgKSkgewogICAgICAgICRQYXJhbXskX30gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXskX30sICdJbnRlZ2VyJyApOwogICAgfQoKICAgICNidWlsZCBzcWwuLi4KICAgIG15ICRTUUwgPSAiSU5TRVJUIElOVE8gYXR0YWNobWVudF9kaXJlY3RvcnkgKCIgLgogICAgICAgICIgc3RvcmFnZV9iYWNrZW5kLCAiIC4KICAgICAgICAiIGZpbGVfcGF0aCwgZmlsZV9uYW1lLCAgIiAuCiAgICAgICAgIiBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5KSAiIC4KICAgICAgICAiIFZBTFVFUyAoIiAuCiAgICAgICAgIiAnJFBhcmFte1N0b3JhZ2VCYWNrZW5kfScsICIgLgogICAgICAgICIgJycsICckUGFyYW17RmlsZU5hbWV9JywgIiAuCiAgICAgICAgIiBjdXJyZW50X3RpbWVzdGFtcCwgJFBhcmFte1VzZXJJRH0sIGN1cnJlbnRfdGltZXN0YW1wLCAkUGFyYW17VXNlcklEfSkiOwoKICAgICNydW4gU1FMLi4uCiAgICBpZiAoICRTZWxmLT57REJPYmplY3R9LT5EbyggU1FMID0+ICRTUUwgKSApIHsKCiAgICAgICAgIy4uLmFuZCBnZXQgdGhlIElELi4uCiAgICAgICAgJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAiU0VMRUNUIG1heChpZCkgRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSBXSEVSRSAiIC4KICAgICAgICAgICAgICAgICJmaWxlX25hbWUgPSAnJFBhcmFte0ZpbGVOYW1lfScgQU5EICIgLgogICAgICAgICAgICAgICAgInN0b3JhZ2VfYmFja2VuZCA9ICckUGFyYW17U3RvcmFnZUJhY2tlbmR9JyBBTkQgIiAuCiAgICAgICAgICAgICAgICAiY3JlYXRlX2J5ID0gJFBhcmFte1VzZXJJRH0iLAogICAgICAgICk7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJElEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBOT1QgaW5zZXJ0IGF0dGFjaG1lbnQgaW4gYXR0YWNobWVudCBkaXJlY3RvcnkhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgKDIpIHNhdmUgYXR0YWNobWVudCBkaXJlY3RvcnkgcHJlZmVyZW5jZXMgLi4uCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAjIG1kNXN1bSBjYWxjdWxhdGlvbgogICAgJFNlbGYtPntFbmNvZGVPYmplY3R9LT5FbmNvZGVPdXRwdXQoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57TUQ1U3VtfSA9IG1kNV9oZXgoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CgogICAgIyBzaXplIGNhbGN1bGF0aW9uCiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57RmlsZVNpemVCeXRlc30gPSBieXRlczo6bGVuZ3RoKCAkeyAkUGFyYW17RGF0YVJlZn0gfSApOwoKICAgIG15ICRGaWxlU2l6ZSA9ICRQYXJhbXtQcmVmZXJlbmNlc30tPntGaWxlU2l6ZUJ5dGVzfTsKICAgIGlmICggJEZpbGVTaXplID4gKCAxMDI0ICogMTAyNCApICkgewogICAgICAgICRGaWxlU2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5dGVzIiwgKCAkRmlsZVNpemUgLyAoIDEwMjQgKiAxMDI0ICkgKTsKICAgIH0KICAgIGVsc2lmICggJEZpbGVTaXplID4gMTAyNCApIHsKICAgICAgICAkRmlsZVNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICggJEZpbGVTaXplIC8gMTAyNCApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZpbGVTaXplID0gJEZpbGVTaXplIC4gJyBCeXRlcyc7CiAgICB9CiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57RmlsZVNpemV9ID0gJEZpbGVTaXplOwoKICAgICMgaW5zZXJ0IHByZWZlcmVuY2VzCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkUGFyYW17UHJlZmVyZW5jZXN9IH0gKSB7CiAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gYXR0YWNobWVudF9kaXJfcHJlZmVyZW5jZXMgJwogICAgICAgICAgICAgICAgLiAnKGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkLCBwcmVmZXJlbmNlc19rZXksIHByZWZlcmVuY2VzX3ZhbHVlKSBWQUxVRVMgKCA/LCA/LCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJElELCBcJEtleSwgXCRQYXJhbXtQcmVmZXJlbmNlc30tPnskS2V5fSBdLAogICAgICAgICk7CgogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyAoMykgY3JlYXRlIGF0dGFjaG1lbnQgc3RvcmFnZSBlbnRyeSAoID0gc2F2ZSBmaWxlKS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgbXkgJEF0dElEID0gJFNlbGYtPnsgJFBhcmFte1N0b3JhZ2VCYWNrZW5kfSB9LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+ICRJRCwKICAgICAgICBEYXRhUmVmICA9PiAkUGFyYW17RGF0YVJlZn0sCiAgICApOwoKICAgIGlmICggISRBdHRJRCApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIE5PVCBzdG9yZSBhdHRhY2htZW50IGluIHN0b3JhZ2UgKCRQYXJhbXtTdG9yYWdlQmFja2VuZH0pISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjICg0KSB1cGRhdGUgYXR0YWNobWVudCBkaXJlY3RvcnkgKGkuZS4gZmlsZSBwYXRoKS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgJEF0dElEID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCRBdHRJRCk7CiAgICAkU1FMICAgPSAiVVBEQVRFIGF0dGFjaG1lbnRfZGlyZWN0b3J5IFNFVCAiIC4KICAgICAgICAiIGZpbGVfcGF0aCA9ICckQXR0SUQnICIgLgogICAgICAgICIgV0hFUkUgaWQgPSAkSUQiOwoKICAgIGlmICggJFNlbGYtPntEQk9iamVjdH0tPkRvKCBTUUwgPT4gJFNRTCApICkgewogICAgICAgIHJldHVybiAkSUQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIE5PVCB1cGRhdGUgYXR0YWNobWVudCBkaXJlY3RvcnkgKElEPSRJRCwgZmlsZV9wYXRoPSRBdHRJRCkhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KfQoKPWl0ZW0gQXR0YWNobWVudFN0b3JhZ2VTZWFyY2goKQoKcmV0dXJucyBhdHRhY2htZW50IGRpcmVjdG9yeSBJRHMgZm9yIHRoZSBnaXZlbiBGaWxlTmFtZQoKICAgIG15IEBEYXRhID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZVNlYXJjaCgKICAgICAgICBGaWxlTmFtZSA9PiAnU29tZUZpbGVOYW1lLnppcCcsCiAgICAgICAgVXNpbmdXaWxkY2FyZHMgPT4gMSwgKDEgfHwgMCwgb3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRTdG9yYWdlU2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSBAUmVzdWx0ID0gKCk7CiAgICBteSAkV0hFUkUgID0gIihpZCA+IDApIjsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtGaWxlTmFtZX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEZpbGVOYW1lISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjZGIgcXVvdGluZy4uLgogICAgZm9yZWFjaCAocXcoIEZpbGVOYW1lICkpIHsKICAgICAgICBpZiAoIGRlZmluZWQoICRQYXJhbXskX30gKSAmJiAoICRQYXJhbXskX30gKSApIHsKICAgICAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSApOwogICAgICAgIH0KICAgIH0KCiAgICAjYnVpbGQgV0hFUkUtY2xhdXNlLi4uCiAgICBpZiAoICRQYXJhbXtVc2luZ1dpbGRjYXJkc30gKSB7CiAgICAgICAgJFdIRVJFIC49ICIgQU5EIChmaWxlX25hbWUgTElLRSAnJFBhcmFte0ZpbGVOYW1lfScpIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRXSEVSRSAuPSAiIEFORCAoZmlsZV9uYW1lID0gJyRQYXJhbXtGaWxlTmFtZX0nKSI7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQgRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSAiIC4KICAgICAgICAiV0hFUkUgIiAuICRXSEVSRTsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJFNRTCwKICAgICk7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCggQFJlc3VsdCwgJERhdGFbMF0gKTsKICAgIH0KCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQ=</File>
        <File Location="Custom/Kernel/System/DynamicField/Driver/Lens.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojICRvcmlnaW46IG90b2JvIC0gOTBmYzdlM2QxY2JmZjFiZjAyYmRjYjUwZWI4ZWVkYTAzNjEwMmNmZSAtIEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9MZW5zLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpMZW5zOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGFyYW1PYmplY3QpCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpCYXNlKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkxlbnMgLSBkcml2ZXIgZm9yIHRoZSBMZW5zIGR5bmFtaWMgZmllbGQKCj1oZWFkMSBERVNDUklQVElPTgoKQWNjZXNzIHRvIGFuIGF0dHJpYnV0ZSBvZiBhIHJlZmVyZW5jZWQgb2JqZWN0LgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKClRoaXMgZHluYW1pYyBmaWVsZCBkcml2ZXIgbW9kdWxlIGltcGxlbWVudHMgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb2YgTDxLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kPi4KUGxlYXNlIGxvb2sgdGhlcmUgZm9yIGEgZGV0YWlsZWQgcmVmZXJlbmNlIG9mIHRoZSBmdW5jdGlvbnMuCgo9aGVhZDIgbmV3KCkKCml0IGlzIHVzdWFsbHkgbm90IG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IGNyZWF0ZSBpbnN0YW5jZXMgb2YgZHluYW1pYyBmaWVsZCBkcml2ZXJzLgpJbnN0YW5jZXMgb2YgdGhlIGRyaXZlcnMgYXJlIGNyZWF0ZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZQpkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0IEM8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZD4uCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gYmxlc3Mge30sICRUeXBlOwoKICAgICMgVXNlZCBmb3IgZGVjbGFyaW5nIENTUyBjbGFzc2VzCiAgICAkU2VsZi0+e0ZpZWxkQ1NTQ2xhc3N9ID0gJ0R5bmFtaWNGaWVsZExlbnMnOwoKICAgICMgc2V0IGZpZWxkIGJlaGF2aW9ycwogICAgIyAgIE5PVEUgYmVoYXZpb3JzIElzQUNMUmVkdWNpYmxlLCBJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSwgSXNSZWZlcmVuY2VGaWVsZCBhbmQKICAgICMgICBJc1NldEZpZWxkIGdldCBvdmVycmlkZGVuIHdpdGggdGhlIGF0dHJpYnV0ZSBmaWVsZHMgYmVoYXZpb3JzIGluIHN1YiBIYXNCZWhhdmlvcgogICAgJFNlbGYtPntCZWhhdmlvcnN9ID0gewogICAgICAgICdJc0FDTFJlZHVjaWJsZScgICAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc05vdGlmaWNhdGlvbkV2ZW50Q29uZGl0aW9uJyA9PiAxLAogICAgICAgICdJc1NvcnRhYmxlJyAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc0ZpbHRyYWJsZScgICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc1N0YXRzQ29uZGl0aW9uJyAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScgICA9PiAwLAogICAgICAgICdJc0hpZGRlbkluVGlja2V0SW5mb3JtYXRpb24nICA9PiAwLAogICAgICAgICdTZXRzRHluYW1pY0NvbnRlbnQnICAgICAgICAgICA9PiAxLAogICAgICAgICdJc1JlZmVyZW5jZUZpZWxkJyAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc1NldEZpZWxkJyAgICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc1NldENhcGFibGUnICAgICAgICAgICAgICAgICA9PiAxLAogICAgfTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBWYWx1ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICAjIGluIHNldCBjYXNlLCBhbiBhcnJheXJlZiBvZiBvYmplY3QgaWRzIGlzIHJldHVybmVkCiAgICBteSAkUmVmZXJlbmNlZE9iamVjdElEID0gJFBhcmFte1JlZmVyZW5jZWRPYmplY3RJRH0gfHwgJFNlbGYtPl9HZXRSZWZlcmVuY2VkT2JqZWN0SUQoCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgICAgICA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICAgICBTZXQgICAgICAgICAgICAgICAgICAgID0+ICRQYXJhbXtTZXR9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRSZWZlcmVuY2VkT2JqZWN0SUQ7CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgICMgR2V0IHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgdGhlIHJlZmVyZW5jZWQgb2JqZWN0CiAgICBteSAkUmVmZXJlbmNlREZDb25maWcgPSAkU2VsZi0+X0dldFJlZmVyZW5jZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJE9iamVjdElET3JOYW1lID0gJFJlZmVyZW5jZURGQ29uZmlnLT57RmllbGRUeXBlfSA9fiAvXkN1c3RvbWVyLyA/ICdPYmplY3ROYW1lJyA6ICdPYmplY3RJRCc7CgogICAgIyBpbiBzZXQgY2FzZSwgdmFsdWVzIG5lZWQgdG8gYmUgY29sbGVjdGVkIG9uZSBieSBvbmUKICAgIGlmICggJFBhcmFte1NldH0gKSB7CiAgICAgICAgbXkgQFZhbHVlczsKICAgICAgICBmb3IgbXkgJFJlZklEICggJFJlZmVyZW5jZWRPYmplY3RJRC0+QCogKSB7CiAgICAgICAgICAgIGlmICggISRSZWZJRCApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFZhbHVlcywgdW5kZWY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwdXNoIEBWYWx1ZXMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICAgICAgICAgICAgICAgICAkT2JqZWN0SURPck5hbWUgICAgPT4gJFJlZklELAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gXEBWYWx1ZXM7CiAgICB9CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICAgICAkT2JqZWN0SURPck5hbWUgICAgPT4gJFJlZmVyZW5jZWRPYmplY3RJRCwKICAgICAgICBGb3JMZW5zICAgICAgICAgICAgPT4gJFBhcmFte0ZvckxlbnN9LAogICAgKTsKfQoKc3ViIFZhbHVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiBub3QgZXhwbGljaXRseSBkZWFjdGl2YXRlZCB3ZSBhc3N1bWUgYmVpbmcgb24gYW4gZWRpdCBtYXNrCiAgICBteSAkRWRpdEZpZWxkVmFsdWUgPSAkUGFyYW17RWRpdEZpZWxkVmFsdWV9IC8vIDE7CiAgICBteSAkTGVuc0RGQ29uZmlnICAgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiMgICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKIyAgICApOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgR2V0IHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgdGhlIHJlZmVyZW5jZWQgb2JqZWN0CiAgICBteSAkUmVmZXJlbmNlREZDb25maWcgPSAkU2VsZi0+X0dldFJlZmVyZW5jZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJE9iamVjdElET3JOYW1lID0gJFJlZmVyZW5jZURGQ29uZmlnLT57RmllbGRUeXBlfSA9fiAvXkN1c3RvbWVyLyA/ICdPYmplY3ROYW1lJyA6ICdPYmplY3RJRCc7CgogICAgIyBpbiBzZXQgY2FzZSwgd2UgaXRlcmF0ZSBvdmVyIHRoZSB2YWx1ZXMgYW5kIHNldCB0aGVtIG9uZSBieSBvbmUKICAgIGlmICggJFBhcmFte1NldH0gKSB7CiAgICAgICAgSU5ERVg6CiAgICAgICAgZm9yIG15ICRTZXRJbmRleCAoIDAgLi4gJCN7ICRQYXJhbXtWYWx1ZX0gfSApIHsKCiAgICAgICAgICAgICRMZW5zREZDb25maWctPntTZXRJbmRleH0gPSAkU2V0SW5kZXg7CgogICAgICAgICAgICAjIHdpdGggcGFyYW0gU2V0SW5kZXgsIGEgc2luZ2xlIG9iamVjdCBpZCBpcyByZXR1cm5lZAogICAgICAgICAgICAjIGFzIHdlIGFyZSBhbHJlYWR5IHNhdmluZyB3ZSB0cnVzdCwgdGhhdCB0aGUgcmVmZXJlbmNlIGVkaXQgZmllbGQgaGFzIGJlZW4gdmFsaWRhdGVkCiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VkT2JqZWN0SUQgPSAkU2VsZi0+X0dldFJlZmVyZW5jZWRPYmplY3RJRCgKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICAgICAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICAgICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICAgICAgICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICAgICAgPT4gJEVkaXRGaWVsZFZhbHVlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjbGVhbiB1cCBvYmplY3QgaWQgaW4gY2FzZSB0aGF0IE9iamVjdE5hbWUgaXMgcGFzc2VkIHRvIG5vdCBjb2xsaWRlCiAgICAgICAgICAgIGlmICggJE9iamVjdElET3JOYW1lIGVxICdPYmplY3ROYW1lJyApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkUGFyYW17T2JqZWN0SUR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IElOREVYIHVubGVzcyAkUmVmZXJlbmNlZE9iamVjdElEOwoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0SUQgICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICAgICAgICAgICk7CgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX1bJFNldEluZGV4XSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1IYW5kbGVkICA9PiAwLAogICAgICAgICAgICAgICAgRWRpdEZpZWxkVmFsdWUgICAgID0+IDAsCiAgICAgICAgICAgICAgICBTZXQgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICRPYmplY3RJRE9yTmFtZSA9PiAkUmVmZXJlbmNlZE9iamVjdElELAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFzIHdlIGFyZSBhbHJlYWR5IHNhdmluZyB3ZSB0cnVzdCwgdGhhdCB0aGUgcmVmZXJlbmNlIGVkaXQgZmllbGQgaGFzIGJlZW4gdmFsaWRhdGVkCiAgICBteSAkUmVmZXJlbmNlZE9iamVjdElEID0gJFNlbGYtPl9HZXRSZWZlcmVuY2VkT2JqZWN0SUQoCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgICAgICA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICAgICBFZGl0RmllbGRWYWx1ZSAgICAgICAgID0+ICRFZGl0RmllbGRWYWx1ZSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkUmVmZXJlbmNlZE9iamVjdElEOwoKICAgICMgY2xlYW4gdXAgb2JqZWN0IGlkIGluIGNhc2UgdGhhdCBPYmplY3ROYW1lIGlzIHBhc3NlZCB0byBub3QgY29sbGlkZQogICAgaWYgKCAkT2JqZWN0SURPck5hbWUgZXEgJ09iamVjdE5hbWUnICkgewogICAgICAgIGRlbGV0ZSAkUGFyYW17T2JqZWN0SUR9OwogICAgfQoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0SUQgICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICApOwoKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlU2V0KAogICAgICAgICVQYXJhbSwKICAgICAgICBDb25maWdJdGVtSGFuZGxlZCAgPT4gMCwKICAgICAgICBFZGl0RmllbGRWYWx1ZSAgICAgPT4gMCwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgIH0sCiAgICAgICAgJE9iamVjdElET3JOYW1lID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICApOwp9CgpzdWIgVmFsdWVWYWxpZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVWYWxpZGF0ZSgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hTUUxHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlNlYXJjaFNRTEdldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hTUUxPcmRlckZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBUT0RPCiAgICByZXR1cm4gJyc7Cn0KCnN1YiBFZGl0RmllbGRSZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgICMgVGhlIGVkaXQgZmllbGQgc2hvdWxkIGJlIHJlbmRlcmVkIGxpa2UgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgcmVmZXJlbmNlZCBvYmplY3QsCiAgICAjIEJ1dCBuYW1lIGFuZCBMYWJlbCBzaG91bGQgYmUgdGhhdCBvZiB0aGUgTGVucyBkeW5hbWljIGZpZWxkLgogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TmFtZX0gID0gJExlbnNERkNvbmZpZy0+e05hbWV9OwogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TGFiZWx9ID0gJExlbnNERkNvbmZpZy0+e0xhYmVsfTsKICAgIG15ICRBdHRyaWJ1dGVGaWVsZEhUTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgUHJvY2Vzc1N1ZmZpeCA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtQcm9jZXNzU3VmZml4fSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJEF0dHJpYnV0ZUZpZWxkSFRNTDsKfQoKc3ViIEVkaXRGaWVsZFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICAjIFRoZSBuYW1lIHVzZWQgaW4gdGhlIEdVSSBpcyB0aGUgbmFtZSBvZiB0aGUgTGVucwogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TmFtZX0gPSAkTGVuc0RGQ29uZmlnLT57TmFtZX07CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICApOwp9CgpzdWIgRWRpdEZpZWxkVmFsdWVWYWxpZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZmV0Y2ggYXR0cmlidXRlIGRmIGNvbmZpZwogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICAjIGNhbGwgYXR0cmlidXRlIGRmIGNvbmZpZyB2YWxpZGF0aW9uCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5FZGl0RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgIH0sCiAgICApOwp9CgpzdWIgRGlzcGxheVZhbHVlUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICByZXR1cm4gJycgdW5sZXNzICRBdHRyaWJ1dGVERkNvbmZpZzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgJVBhcmFtLCAgICAjIGUuZy4gVmFsdWUgYW5kIEhUTUxPdXRwdXQKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIFNlYXJjaEZpZWxkUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFJlbmRlcigKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSAgPT4gJExlbnNERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBMYWJlbCA9PiAkTGVuc0RGQ29uZmlnLT57TGFiZWx9LAogICAgICAgIH0KICAgICk7Cn0KCnN1YiBTZWFyY2hGaWVsZFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICBteSAkUmVzdWx0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lICA9PiAkTGVuc0RGQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIExhYmVsID0+ICRMZW5zREZDb25maWctPntMYWJlbH0sCiAgICAgICAgfQogICAgKTsKICAgIHJldHVybiAkUmVzdWx0Owp9CgpzdWIgU2VhcmNoRmllbGRQYXJhbWV0ZXJCdWlsZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+U2VhcmNoRmllbGRQYXJhbWV0ZXJCdWlsZCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSAgPT4gJExlbnNERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBMYWJlbCA9PiAkTGVuc0RGQ29uZmlnLT57TGFiZWx9LAogICAgICAgIH0KICAgICk7CiAgICByZXR1cm4gJFJlc3VsdDsKfQoKc3ViIFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgewoKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICBteSAkUmVzdWx0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lICA9PiAkTGVuc0RGQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIExhYmVsID0+ICRMZW5zREZDb25maWctPntMYWJlbH0sCiAgICAgICAgfQogICAgKTsKICAgIHJldHVybiAkUmVzdWx0Owp9CgpzdWIgU3RhdHNGaWVsZFBhcmFtZXRlckJ1aWxkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIHsKICAgICAgICBOYW1lICAgID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TGFiZWx9LAogICAgICAgIEVsZW1lbnQgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSwKICAgIH07Cn0KCnN1YiBTdGF0c1NlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgc2V0IG9wZXJhdG9yCiAgICBteSAkT3BlcmF0b3IgPSAnRXF1YWxzJzsKCiAgICAjIHNlYXJjaCBmb3IgYSB3aWxkIGNhcmQgaW4gdGhlIHZhbHVlCiAgICBpZiAoICRWYWx1ZSAmJiAkVmFsdWUgPX4gbXtcKn0gKSB7CgogICAgICAgICMgY2hhbmdlIG9wZXJhdG9yCiAgICAgICAgJE9wZXJhdG9yID0gJ0xpa2UnOwogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgJE9wZXJhdG9yID0+ICRWYWx1ZSwKICAgIH07Cn0KCnN1YiBSZWFkYWJsZVZhbHVlUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIFRlbXBsYXRlVmFsdWVUeXBlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX07CgogICAgIyBzZXQgdGhlIGZpZWxkIHR5cGVzCiAgICBteSAkRWRpdFZhbHVlVHlwZSAgID0gJ1NDQUxBUic7CiAgICBteSAkU2VhcmNoVmFsdWVUeXBlID0gJ1NDQUxBUic7CgogICAgIyByZXR1cm4gdGhlIGNvcnJlY3Qgc3RydWN0dXJlCiAgICBpZiAoICRQYXJhbXtGaWVsZFR5cGV9IGVxICdFZGl0JyApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAkRmllbGROYW1lID0+ICRFZGl0VmFsdWVUeXBlLAogICAgICAgIH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtGaWVsZFR5cGV9IGVxICdTZWFyY2gnICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICdTZWFyY2hfJyAuICRGaWVsZE5hbWUgPT4gJFNlYXJjaFZhbHVlVHlwZSwKICAgICAgICB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgJEZpZWxkTmFtZSAgICAgICAgICAgICA9PiAkRWRpdFZhbHVlVHlwZSwKICAgICAgICAgICAgJ1NlYXJjaF8nIC4gJEZpZWxkTmFtZSA9PiAkU2VhcmNoVmFsdWVUeXBlLAogICAgICAgIH07CiAgICB9Cn0KCnN1YiBSYW5kb21WYWx1ZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZG8gbm90aGluZyBidXQgcmVwb3J0aW5nIHN1Y2Nlc3MKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBWYWx1ZSAgID0+IDEsCiAgICB9Owp9CgpzdWIgT2JqZWN0TWF0Y2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBmaWVsZCBpcyBub3QgZGVmaW5lZAogICAgcmV0dXJuIDAgdW5sZXNzIGRlZmluZWQgJFBhcmFte09iamVjdEF0dHJpYnV0ZXN9LT57JEZpZWxkTmFtZX07CgogICAgIyByZXR1cm4gZmFsc2UgaWYgbm90IG1hdGNoCiAgICByZXR1cm4gMSBpZiAkUGFyYW17T2JqZWN0QXR0cmlidXRlc30tPnskRmllbGROYW1lfSBlcSAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuIDA7Cn0KCnN1YiBIaXN0b3JpY2FsVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyByZXR1cm4gdGhlIGhpc3RvcmljYWwgdmFsdWVzIGZyb20gZGF0YWJhc2UKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKS0+SGlzdG9yaWNhbFZhbHVlR2V0KAogICAgICAgIEZpZWxkSUQgICA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0lEfSwKICAgICAgICBWYWx1ZVR5cGUgPT4gJ1RleHQnLAogICAgKTsKfQoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZUxvb2t1cCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBWYWx1ZUlzRGlmZmVyZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZUlzRGlmZmVyZW50KAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIEhhc0JlaGF2aW9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBUT0RPOiBUaGluayBhYm91dCBhZGRpdGlvbmFsIGJlaGF2aW9ycyB3ZSBjYW4ganVzdCBhZG9wdCBmcm9tIHRoZSBhdHRyaWJ1dGUgZmllbGQKICAgICMgZm9yIGNlcnRhaW4gYmVoYXZpb3JzIGluc3RlYWQgdXNlIHRoZSBhdHRyaWJ1dGUgZmllbGQgYmVoYXZpb3JzCiAgICBpZiAoIGFueSB7ICRQYXJhbXtCZWhhdmlvcn0gZXEgJF8gfSBxdy9Jc0FDTFJlZHVjaWJsZSBJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSBJc1NldEZpZWxkIElzUmVmZXJlbmNlRmllbGQvICkgewogICAgICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICAgICApOwogICAgfQoKICAgICMgcmV0dXJuIHN1Y2Nlc3MgaWYgdGhlIGR5bmFtaWMgZmllbGQgaGFzIHRoZSBleHBlY3RlZCBiZWhhdmlvcgogICAgcmV0dXJuICRTZWxmLT5TVVBFUjo6SGFzQmVoYXZpb3IoIEJlaGF2aW9yID0+ICRQYXJhbXtCZWhhdmlvcn0gKTsKfQoKc3ViIFBvc3NpYmxlVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBPYmplY3REZXNjcmlwdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+JSosCiAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317TmFtZX0sCiAgICAgICAgfSwKICAgICk7Cn0KCnN1YiBCdWlsZFNlbGVjdGlvbkRhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hPYmplY3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hPYmplY3RzKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgIH0sCiAgICApOwp9CgpzdWIgR2V0RmllbGRTdGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKICAgIG15ICRERlBhcmFtICAgICAgICAgICAgPSAkUGFyYW17R2V0UGFyYW19e0R5bmFtaWNGaWVsZH07CiAgICBteSAkTmVlZHNSZXNldDsKCiAgICAjIHJlc2V0IGlmIHRoZSByZWZlcmVuY2VkIG9iamVjdCBjaGFuZ2VzCiAgICBpZiAoICRQYXJhbXtDaGFuZ2VkRWxlbWVudHN9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtSZWZlcmVuY2VERk5hbWV9IH0gKSB7CiAgICAgICAgJE5lZWRzUmVzZXQgPSAxOwogICAgfQoKICAgICMgb3IgaWYgd2UgaGF2ZSB0aGUgZmllbGQgcmVhcHBlYXIKICAgIGVsc2lmICggISRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fSB8fCAhJFBhcmFte0NhY2hlZFZpc2liaWxpdHl9eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSApIHsKICAgICAgICAkTmVlZHNSZXNldCA9IDE7CiAgICB9CgogICAgbXkgJEF0dHJpYnV0ZUZpZWxkVmFsdWU7CiAgICBpZiAoJE5lZWRzUmVzZXQpIHsKCiAgICAgICAgbXkgJFJlZmVyZW5jZUlEID0gJERGUGFyYW0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSB9ID8gJERGUGFyYW0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSB9WzBdIDogdW5kZWY7CgogICAgICAgICMgZ2V0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSByZWZlcmVuY2VkIGF0dHJpYnV0ZSBmaWVsZCBpZiBhbiBvYmplY3QgaXMgcmVmZXJlbmNlZAogICAgICAgIGlmICgkUmVmZXJlbmNlSUQpIHsKCiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VERk5hbWUgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtSZWZlcmVuY2VERk5hbWV9IC4gKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57UHJvY2Vzc1N1ZmZpeH0gLy8gJycgKTsKCiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkUGFyYW17U2V0SW5kZXh9ICkgewogICAgICAgICAgICAgICAgJFJlZmVyZW5jZURGTmFtZSAuPSAiXyRQYXJhbXtTZXRJbmRleH0iOwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e1NldEluZGV4fSA9ICRQYXJhbXtTZXRJbmRleH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgdGhlIHZhbHVlIHdvdWxkIGNoYW5nZSwgd2UgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGUgdXNlciBpcyByZWFsbHkgYWxsb3dlZAogICAgICAgICAgICAjIHRvIGFjY2VzcyB0aGUgcHJvdmlkZWQgcmVmZXJlbmNlZCBvYmplY3QgdmlhIHRoaXMgZm9ybQogICAgICAgICAgICAjIHRoaXMgaXMgdGhlIGNhc2UgaWYgZWl0aGVyIHRoZSByZWZlcmVuY2VkIG9iamVjdCB3YXMgc2hvd24gdmlhIGEgc2VhcmNoICgxKQogICAgICAgICAgICAjIG9yIGhhcyBiZWVuIHJlbmRlcmVkICgyKQogICAgICAgICAgICAjIG9yIGlzIGN1cnJlbnRseSBzdG9yZWQgZm9yIHRoZSBlZGl0ZWQgdGlja2V0L2NpLy4uLiAoMykKICAgICAgICAgICAgbXkgJExhc3RTZWFyY2hSZXN1bHRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJyktPkdldEZvcm1EYXRhKAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKSwKICAgICAgICAgICAgICAgIEtleSAgICAgICAgICA9PiAnUG9zc2libGVWYWx1ZXNfJyAuICRSZWZlcmVuY2VERk5hbWUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluIHNldCBjYXNlLCB3ZSBmZXRjaCB0aGUgdGVtcGxhdGUgdmFsdWVzIGFuZCBlaXRoZXIgY29uY2F0ZW5hdGUgdGhlbSB0byB0aGUgc2VhcmNoIHJlc3VsdHMKICAgICAgICAgICAgIyAgIG9yLCBpZiBubyBzZWFyY2ggcmVzdWx0cyBhcmUgcHJlc2VudCwgdXNlIHRoZSB0ZW1wbGF0ZSB2YWx1ZXMgZW50aXJlbHkKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTZXRJbmRleH0gKSB7CiAgICAgICAgICAgICAgICBteSAkVGVtcGxhdGVOYW1lICAgICAgICAgID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSAuICdfVGVtcGxhdGUnOwogICAgICAgICAgICAgICAgbXkgJFRlbXBsYXRlU2VhcmNoUmVzdWx0cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScpLT5HZXRGb3JtRGF0YSgKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgICA9PiAnUG9zc2libGVWYWx1ZXNfJyAuICRUZW1wbGF0ZU5hbWUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggcmVmICRMYXN0U2VhcmNoUmVzdWx0cyAmJiByZWYgJFRlbXBsYXRlU2VhcmNoUmVzdWx0cyApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoICRMYXN0U2VhcmNoUmVzdWx0cy0+QCosICRUZW1wbGF0ZVNlYXJjaFJlc3VsdHMtPkAqOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCByZWYgJFRlbXBsYXRlU2VhcmNoUmVzdWx0cyApIHsKICAgICAgICAgICAgICAgICAgICAkTGFzdFNlYXJjaFJlc3VsdHMgPSAkVGVtcGxhdGVTZWFyY2hSZXN1bHRzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIGEgc2VhcmNoIGhhcyBhbHJlYWR5IGJlZW4gcGVyZm9ybWVkIGZvciB0aGlzIGZvcm0gaWQKICAgICAgICAgICAgbXkgJEFsbG93ZWQgPSAoIGdyZXAgeyAkXyBlcSAkUmVmZXJlbmNlSUQgfSAkTGFzdFNlYXJjaFJlc3VsdHMtPkAqICkgPyAxIDogMDsKCiAgICAgICAgICAgICMgYWJvcnQgaWYgcmVxdWVzdGVkIHZhbHVlIGlzIG5vdCBhbGxvd2VkCiAgICAgICAgICAgIGlmICggISRBbGxvd2VkICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlZhbHVlICRSZWZlcmVuY2VJRCBmb3IgbGVucyBmaWVsZCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gaXMgbm90IGFsbG93ZWQuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAjIGZvciBjb25maWcgaXRlbSByZWZlcmVuY2UgZmllbGRzLCBHZXRQYXJhbSBjb250YWlucyB0aGUgY29uZmlnIGl0ZW0gaWQKICAgICAgICAgICAgIyAgIHRoaXMgaGFzIHRvIGJlIHRyYW5zaXRpb25lZCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gaWQgb2YgdGhlIHJlc3BlY3RpdmUgY29uZmlnIGl0ZW0KICAgICAgICAgICAgbXkgJFJlZmVyZW5jZURGQ29uZmlnID0gJFNlbGYtPl9HZXRSZWZlcmVuY2VERkNvbmZpZygKICAgICAgICAgICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgdGhpcyBjYW4gYWxzbyBiZSBuZXN0ZWQgaW4gYSBsZW5zIC0gd2UgaGF2ZSB0byBjaGVjayBpdHMgYXR0cmlidXRlIERGIHRoZW4KICAgICAgICAgICAgIyAgIGlmIGEgbGVucyBpcyB1c2VkIGFzIHJlZmVyZW5jZSBkZiwgd2UgaGF2ZSB0byBjaGVjayBpZiBpdHMgYXR0cmlidXRlIGlzIGEgQ0kKICAgICAgICAgICAgdW50aWwgKCAkUmVmZXJlbmNlREZDb25maWctPntGaWVsZFR5cGV9IG5lICdMZW5zJyApIHsKICAgICAgICAgICAgICAgICRSZWZlcmVuY2VERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgICAgICAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUmVmZXJlbmNlREZDb25maWcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRSZWZlcmVuY2VERkNvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW0nICkgewoKICAgICAgICAgICAgICAgICMgQmFja2VuZE9iamVjdCBoYXMgYWxsIHRoZSBPYmplY3RUeXBlIEhhbmRsZXJzIGxvYWRlZCBhcyBwcm9wZXJ0aWVzCiAgICAgICAgICAgICAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgICAgICAjIGRldGVybWluZSB0aGUgcHJvcGVydHkgbmFtZSBmb3Igb3VyIHR5cGVuYW1lCiAgICAgICAgICAgICAgICBteSAkQmFja2VuZFR5cGVPYmplY3RLZXkgPSAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbU9iamVjdCc7CgogICAgICAgICAgICAgICAgIyBpZiB0aGVyZSBpcyBhIFR5cGVPYmplY3QgaGFuZGxlciBvYmplY3QgLi4uCiAgICAgICAgICAgICAgICBpZiAoIGV4aXN0cyAkQmFja2VuZE9iamVjdC0+eyRCYWNrZW5kVHlwZU9iamVjdEtleX0gKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRCYWNrZW5kVHlwZU9iamVjdCA9ICRCYWNrZW5kT2JqZWN0LT57JEJhY2tlbmRUeXBlT2JqZWN0S2V5fTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRCYWNrZW5kVHlwZU9iamVjdC0+Y2FuKCdWYWx1ZUZvckxlbnMnKSkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVGb3JMZW5zID0gJEJhY2tlbmRUeXBlT2JqZWN0LT5WYWx1ZUZvckxlbnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkUmVmZXJlbmNlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGV4cGVjdGVkIGlzIGVpdGhlciBvbmUgaXRlbSBvciBub25lCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRWYWx1ZUZvckxlbnMpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJlZmVyZW5jZUlEID0gJFZhbHVlRm9yTGVucy0+WzBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgICAgICAgICAkQXR0cmlidXRlRmllbGRWYWx1ZSA9ICRTZWxmLT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAoKICAgICAgICAgICAgICAgICMgVE9ETzogSW5zdGVhZCB3ZSBjb3VsZCBqdXN0IHNlbmQgJERGUGFyYW0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSB9IGFzIE9iamVjdElECiAgICAgICAgICAgICAgICAjIGJ1dCB3ZSB3b3VsZCBuZWVkIHRvIGludGVycHJldCBpdCBsYXRlciAoZnJvbSBDb25maWdJdGVtSUQgdG8gTGFzdFZlcnNpb25JRCwgZS5nLikKICAgICAgICAgICAgICAgICMgVE9ETzogVmFsaWRhdGUgdGhlIFJlZmVyZW5jZSBPYmplY3RJRCBoZXJlLCBvciBlYXJsaWVyLCB0byBwcmV2ZW50IGRhdGEgbGVha3MhCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICMgd2lsbCBub3QgYmUgdXNlZDsKICAgICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RJRCA9PiAkUmVmZXJlbmNlSUQsCiAgICAgICAgICAgICkgLy8gJyc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQXR0cmlidXRlRmllbGRWYWx1ZSA9ICcnOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICk7CgogICAgbXkgJUZpZWxkU3RhdGVzID0gJFBhcmFte0ZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0fS0+R2V0RmllbGRTdGF0ZXMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIE5lZWRzUmVzZXQgICAgICAgPT4gJE5lZWRzUmVzZXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIGJ5cGFzcyBjaGVja3MgaW4gcmVmZXJlbmNlIGRyaXZlcgogICAgICAgIENhY2hlZFZpc2liaWxpdHkgPT4gJE5lZWRzUmVzZXQgPyB1bmRlZiA6ICRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fSwKICAgICAgICBEeW5hbWljRmllbGRzICAgID0+IHsKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID0+IHsKICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+JSosCiAgICAgICAgICAgICAgICBQcm9jZXNzU3VmZml4ID0+ICREeW5hbWljRmllbGRDb25maWctPntQcm9jZXNzU3VmZml4fSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgR2V0UGFyYW0gPT4gewogICAgICAgICAgICAkUGFyYW17R2V0UGFyYW19LT4lKiwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkID0+IHsKICAgICAgICAgICAgICAgICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJEF0dHJpYnV0ZUZpZWxkVmFsdWUgLy8gJFBhcmFte0dldFBhcmFtfXtEeW5hbWljRmllbGR9eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgKTsKICAgIGlmICggZGVmaW5lZCAkRmllbGRTdGF0ZXN7TmV3VmFsdWVzfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gKSB7CiAgICAgICAgJEZpZWxkU3RhdGVze05ld1ZhbHVlfSA9ICRGaWVsZFN0YXRlc3tOZXdWYWx1ZXN9eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KICAgIGVsc2lmICggZGVmaW5lZCAkQXR0cmlidXRlRmllbGRWYWx1ZSApIHsKICAgICAgICAkRmllbGRTdGF0ZXN7TmV3VmFsdWV9ID0gJEF0dHJpYnV0ZUZpZWxkVmFsdWU7CiAgICB9CgogICAgIyBwcmV2ZW50IGF1dG92aXZpZmljYXRpb24KICAgIGlmICggZXhpc3RzICRGaWVsZFN0YXRlc3tGaWVsZHN9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSAmJiBleGlzdHMgJEZpZWxkU3RhdGVze0ZpZWxkc317ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9e1Bvc3NpYmxlVmFsdWVzfSApIHsKICAgICAgICAkRmllbGRTdGF0ZXN7UG9zc2libGVWYWx1ZXN9ID0gJEZpZWxkU3RhdGVze0ZpZWxkc317ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9e1Bvc3NpYmxlVmFsdWVzfTsKCiAgICAgICAgaWYgKCBleGlzdHMgJEZpZWxkU3RhdGVze0ZpZWxkc317ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9e05vdEFDTFJlZHVjaWJsZX0gKSB7CiAgICAgICAgICAgICRGaWVsZFN0YXRlc3tOb3RBQ0xSZWR1Y2libGV9ID0gJEZpZWxkU3RhdGVze0ZpZWxkc317ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9e05vdEFDTFJlZHVjaWJsZX07CiAgICAgICAgfQogICAgfQoKICAgICMgbmVjZXNzYXJ5IGNsZWFuLXVwIHRvIGF2b2lkIGludGVyZmVyZW5jZSB3aXRoIEdldEZpZWxkU3RhdGUgbWVjaGFuaXNtIGluIEZpZWxkUmVzdHJpY3Rpb25zIG1vZHVsZXMKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkRmllbGRTdGF0ZXN7U2V0c30gKSApIHsKICAgICAgICBkZWxldGUgJEZpZWxkU3RhdGVze1NldHN9OwogICAgfQogICAgZWxzaWYgKCROZWVkc1Jlc2V0KSB7CgogICAgICAgICMgZmlsbCB2YWx1ZXMgd2l0aCBkYXRhIHdpdGggc2V0IHZhbHVlIGRhdGEKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQXR0cmlidXRlRmllbGRWYWx1ZSkgKSB7CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgICMgZ2V0IHNldCBpbm5lciBkeW5hbWljIGZpZWxkcyBmcm9tIGF0dHJpYnV0ZSBmaWVsZAogICAgICAgICAgICBteSAkSW5uZXJEeW5hbWljRmllbGRzID0gJFNlbGYtPl9HZXRJbmNsdWRlZER5bmFtaWNGaWVsZHMoCiAgICAgICAgICAgICAgICBJbnB1dEZpZWxkRGVmaW5pdGlvbiA9PiAkQXR0cmlidXRlREZDb25maWctPntDb25maWd9e0luY2x1ZGV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRJbmRleCAoIDAgLi4gJCN7JEF0dHJpYnV0ZUZpZWxkVmFsdWV9ICkgewoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZUl0ZW0gPSAkQXR0cmlidXRlRmllbGRWYWx1ZS0+WyRJbmRleF07CiAgICAgICAgICAgICAgICBteSBAREZOYW1lcyAgID0ga2V5cyAkVmFsdWVJdGVtLT4lKjsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJERGTmFtZSAoQERGTmFtZXMpIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJFN1ZmZpeGVkREZOYW1lID0gJERGTmFtZSAuICggJER5bmFtaWNGaWVsZENvbmZpZy0+e1Byb2Nlc3NTdWZmaXh9IHx8ICcnICkgLiAiXyRJbmRleCI7CgogICAgICAgICAgICAgICAgICAgICMgZmlsbCB1cCBkeW5hbWljIGZpZWxkIGNvbmZpZ3Mgb2Ygc2V0LWlubmVyIGZpZWxkcwogICAgICAgICAgICAgICAgICAgIGlmICggIWV4aXN0cyAkRmllbGRTdGF0ZXN7U2V0c317JERGTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZFN0YXRlc3tTZXRzfXskREZOYW1lfXtEeW5hbWljRmllbGRDb25maWd9ID0gJElubmVyRHluYW1pY0ZpZWxkcy0+eyRERk5hbWV9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgRmllbGRTdGF0ZXMgaGFzaAogICAgICAgICAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRJbm5lckR5bmFtaWNGaWVsZHMtPnskREZOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0FDTFJlZHVjaWJsZScsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkSXNBQ0xSZWR1Y2libGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZFN0YXRlc3tTZXRzfXskREZOYW1lfXtGaWVsZFN0YXRlc317JFN1ZmZpeGVkREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBmaWxsIHVwIHZhbHVlcyBoYXNoCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZXhpc3RzICRGaWVsZFN0YXRlc3tTZXRzfXskREZOYW1lfXtWYWx1ZXN9eyRTdWZmaXhlZERGTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZFN0YXRlc3tTZXRzfXskREZOYW1lfXtWYWx1ZXN9eyRTdWZmaXhlZERGTmFtZX0gPSAkVmFsdWVJdGVtLT57JERGTmFtZX07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkU2V0VmFsdWVDb3VudCAgICAgPSBJc0FycmF5UmVmV2l0aERhdGEoICRGaWVsZFN0YXRlc3tOZXdWYWx1ZX0gKSA/IHNjYWxhciAkRmllbGRTdGF0ZXN7TmV3VmFsdWV9LT5AKiA6IDE7CiAgICAgICAgbXkgJENvbXBsZXRlRmllbGROYW1lID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57UHJvY2Vzc1N1ZmZpeH0gfHwgJycgKTsKCiAgICAgICAgIyBhZGQgY291bnQgb2YgU2V0IHZhbHVlcyBmb3IgYWRkaW5nIHRoZSBjb3JyZWN0IG51bWJlciBvZiBmaWVsZHMgaW4gdGhlIGZyb250ZW5kCiAgICAgICAgJEZpZWxkU3RhdGVze1NldHN9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IHsKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+JSosCiAgICAgICAgICAgICAgICBOYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRmllbGRTdGF0ZXMgPT4gewogICAgICAgICAgICAgICAgJENvbXBsZXRlRmllbGROYW1lID0+IHsKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgTm90QUNMUmVkdWNpYmxlID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBWYWx1ZXMgPT4gewogICAgICAgICAgICAgICAgJENvbXBsZXRlRmllbGROYW1lID0+ICRTZXRWYWx1ZUNvdW50LAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuICVGaWVsZFN0YXRlczsKfQoKPWhlYWQyIEltcG9ydEV4cG9ydFByZXBhcmVDb25maWcoKQoKVGhpcyBzdWIgcGVyZm9ybXMgdHJhbnNsYXRpb24gYmV0d2VlbiBOYW1lIGFuZCBJRCBmb3IgYXR0cmlidXRlcyB3aGljaCBhcmUgc3RvcmVkIHdpdGggSUQgaW4gdGhlIGZpZWxkIGNvbmZpZy4gRm9yIGV4cG9ydCwgdGhlIE5hbWUgaXMgbmVlZGVkIGJlY2F1c2UgSURzIG9mIG9iamVjdHMgbWF5IGRpZmZlciBiZXR3ZWVuIHN5c3RlbXMuIER1cmluZyBpbXBvcnQsIHRoZSBOYW1lIG5lZWRzIHRvIGJlIHRyYW5zbGF0ZWQgYmFjayBpbnRvIHRoZSBJRCBmb3IgdGhlIGZpZWxkIHRvIHdvcmsgcHJvcGVybHkuCgogICAgbXkgQE9iamVjdElEcyA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLCAgIyByZXF1aXJlZAogICAgICAgIERpcmVjdGlvbiAgICAgICAgICA9PiAnSW1wb3J0JywgICAgICAgICAgICAgIyByZXF1aXJlZDsgSW1wb3J0IG9yIEV4cG9ydAogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhEeW5hbWljRmllbGRDb25maWcgRGlyZWN0aW9uKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgbXkgJVJldHVybjsKICAgIGlmICggJFBhcmFte0RpcmVjdGlvbn0gZXEgJ0ltcG9ydCcgKSB7CgogICAgICAgICMgbmVlZGVkIHRyYW5zZm9ybWF0aW9uOiBOYW1lIC0+IElECiAgICAgICAgbXkgJEF0dHJpYnV0ZURGID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9LAogICAgICAgICk7CiAgICAgICAgJFJldHVybntBdHRyaWJ1dGVERn0gPSAkQXR0cmlidXRlREYtPntJRH07CiAgICAgICAgbXkgJFJlZmVyZW5jZURGID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317UmVmZXJlbmNlREZ9LAogICAgICAgICk7CiAgICAgICAgJFJldHVybntSZWZlcmVuY2VERn0gPSAkUmVmZXJlbmNlREYtPntJRH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEaXJlY3Rpb259IGVxICdFeHBvcnQnICkgewoKICAgICAgICAjIG5lZWRlZCB0cmFuc2Zvcm1hdGlvbjogSUQgLT4gTmFtZQogICAgICAgIG15ICRBdHRyaWJ1dGVERiA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgSUQgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtBdHRyaWJ1dGVERn0sCiAgICAgICAgKTsKICAgICAgICAkUmV0dXJue0F0dHJpYnV0ZURGfSA9ICRBdHRyaWJ1dGVERi0+e05hbWV9OwogICAgICAgIG15ICRSZWZlcmVuY2VERiA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgSUQgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0sCiAgICAgICAgKTsKICAgICAgICAkUmV0dXJue1JlZmVyZW5jZURGfSA9ICRSZWZlcmVuY2VERi0+e05hbWV9OwogICAgfQoKICAgIHJldHVybiAlUmV0dXJuOwp9Cgo9aGVhZDEgaW50ZXJuYWwgbWV0aG9kcwoKTWV0aG9kcyB0aGF0IGFyZSB1c2VkIG9ubHkgaW50ZXJuYWxseS4KCj1oZWFkMiBfR2V0UmVmZXJlbmNlREZDb25maWcoKQoKQSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24gdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGRlbGVnYXRlLgoKPWN1dAoKI1RPRE86IGluIENJIGRlZmluaXRpb25zIHN0b3JlIHRoZSBkZWZpbml0aW9uIGlkIG9yIGRmIGNvbmZpZ3MgaW4gdGhlIGxlbnMgY29uZmlnIGFuZCB1c2UgdGhpcyBvbmUgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBkZiBjb25maWdzCnN1YiBfR2V0UmVmZXJlbmNlREZDb25maWcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICRTZWxmLT57UmVmZXJlbmNlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSAvLz0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiMgICAgICAgIElEID0+ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSwKIyAgICApOwogICAgIyBjb25maWcgaXRlbXMgYW5kIGNpIHZlcnNpb25zIHN0b3JlIHRoZWlyIHJlc3BlY3RpdmUgcmVmZXJlbmNlIGNvbmZpZ3MgYXMgcGFydCBvZiB0aGUgbGVucyBjb25maWcKICAgICMgZWxzZSB1c2Ugc3RhbmRhcmQgZHluYW1pYyBmaWVsZCBnZXQKICAgICRTZWxmLT57UmVmZXJlbmNlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSAvLz0gJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e1JlZmVyZW5jZURGQ29uZmlnfQogICAgICAgIC8vICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBJRCA9PiAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0sCiAgICAgICAgKTsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICByZXR1cm4gJFNlbGYtPntSZWZlcmVuY2VERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9Owp9Cgo9aGVhZDIgX0dldEF0dHJpYnV0ZURGQ29uZmlnKCkKCkEgZHluYW1pYyBmaWVsZCBjb25maWd1cmF0aW9uIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBkZWxlZ2F0ZS4KCj1jdXQKCnN1YiBfR2V0QXR0cmlidXRlREZDb25maWcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICFkZWZpbmVkICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIElEID0+ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0F0dHJpYnV0ZURGfSwKICAgICAgICApOwogICAgICAgICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSA9ICREeW5hbWljRmllbGRDb25maWcgPyB7ICREeW5hbWljRmllbGRDb25maWctPiUqIH0gOiB7fTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgI3JldHVybiAkU2VsZi0+e0F0dHJpYnV0ZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH07CiAgICBpZiAoICRQYXJhbXtSZWZlcmVuY2VkT2JqZWN0SUR9ICYmICRTZWxmLT57UmVmZXJlbmNlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSApIHsKICAgICAgICBteSAkUmVmZXJlbmNlREZDb25maWcgPSAkU2VsZi0+e1JlZmVyZW5jZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH07CgogICAgICAgIGlmICggJFJlZmVyZW5jZURGQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1JlZmVyZW5jZWRPYmplY3RJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0F0dHJpYnV0ZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH0tPiUqLAogICAgICAgICAgICAgICAgICAgIENJQ2xhc3MgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc30sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAnUHJpb3JpdHknID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiTm8gQ29uZmlnSXRlbSB3aXRoIFZlcnNpb25JRCAnJFBhcmFte1JlZmVyZW5jZWRPYmplY3RJRH0nLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiB7ICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfS0+JSogfTsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKfQoKPWhlYWQyIF9HZXRSZWZlcmVuY2VkT2JqZWN0SUQoKQoKVGhlIGNvbmZpZyBvZiB0aGUgbGVucyBjb250YWlucyB0aGUgSUQgb2YgYW5vdGhlciBkeW5hbWljIGZpZWxkLiBUaGF0IGZpZWxkIGlzIGEgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgdGhhdApyZWZlcmVuY2VzIGFub3RoZXIgb2JqZWN0LiBUaGUgSUQgb2YgdGhlIHJlZmVyZW5jZWQgb2JqZWN0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGQuCgo9Y3V0CgpzdWIgX0dldFJlZmVyZW5jZWRPYmplY3RJRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZXh0cmFjdCBwYXJhbXMKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGQgY29uZmlnIGZvciB0aGUgcmVmZXJlbmNlZCBvYmplY3QKICAgIG15ICRSZWZlcmVuY2VERkNvbmZpZyA9ICRTZWxmLT5fR2V0UmVmZXJlbmNlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICBpZiAoICRQYXJhbXtFZGl0RmllbGRWYWx1ZX0gKSB7CgogICAgICAgICMgc3VmZml4IG5hbWUgd2l0aCBwcm9jZXNzIGlkIGFuZCBzZXQgaW5kZXgsIGlmIHByZXNlbnQKICAgICAgICBteSAkUmVmZXJlbmNlREZOYW1lID0gJFJlZmVyZW5jZURGQ29uZmlnLT57TmFtZX07CiAgICAgICAgaWYgKCAkTGVuc0RGQ29uZmlnLT57UHJvY2Vzc1N1ZmZpeH0gKSB7CiAgICAgICAgICAgICRSZWZlcmVuY2VERk5hbWUgLj0gJExlbnNERkNvbmZpZy0+e1Byb2Nlc3NTdWZmaXh9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCBkZWZpbmVkICRMZW5zREZDb25maWctPntTZXRJbmRleH0gKSB7CiAgICAgICAgICAgICRSZWZlcmVuY2VERk5hbWUgLj0gIl8kTGVuc0RGQ29uZmlnLT57U2V0SW5kZXh9IjsKICAgICAgICB9CgogICAgICAgIG15ICRPYmplY3RJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICAkUmVmZXJlbmNlREZDb25maWctPiUqLAogICAgICAgICAgICAgICAgTmFtZSA9PiAkUmVmZXJlbmNlREZOYW1lLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyksCiAgICAgICAgICAgIFRyYW5zZm9ybURhdGVzID0+IDAsCiAgICAgICAgICAgIEZvckxlbnMgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIGlmICEkT2JqZWN0SUQ7CiAgICAgICAgcmV0dXJuICRPYmplY3RJRC0+WzBdOwogICAgfQoKICAgIG15ICRPYmplY3RJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRSZWZlcmVuY2VERkNvbmZpZywKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBGb3JMZW5zICAgICAgICAgICAgPT4gMSwKICAgICAgICBTZXQgICAgICAgICAgICAgICAgPT4gJFBhcmFte1NldH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJE9iamVjdElEOwoKICAgICMgaW4gc2V0IGNhc2UsIHdlIG5lZWQgdG8gbWFwIHRoZSByZXR1cm5lZCBhcnJheSBvZiBhcnJheXMgaW50byBhbiBhcnJheSBvZiBmaXJzdCB2YWx1ZXMgYXMgbXVsdGl2YWx1ZSBsZW5zZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVudAogICAgaWYgKCAkUGFyYW17U2V0fSApIHsKICAgICAgICBteSBAT2JqZWN0SURzID0gbWFwIHsgJF8tPlswXSB9ICRPYmplY3RJRC0+QCo7CiAgICAgICAgcmV0dXJuIFxAT2JqZWN0SURzOwogICAgfQoKICAgIHJldHVybiAkT2JqZWN0SUQtPlswXTsKfQoKPWhlYWQyIF9HZXRJbmNsdWRlZER5bmFtaWNGaWVsZHMoJEluY2x1ZGUsICREeW5hbWljRmllbGRPYmplY3QpCgpIZWxwZXIgRnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIER5bmFtaWMgRmllbGRzIGZyb20gYW4gSW5jbHVkZSwgaS5lLgokRHluYW1pY0ZpZWxkcyA9ICRHZXRJbmNsdWRlZER5bmFtaWNGaWVsZHMtPigkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0luY2x1ZGV9KTsKVGhpcyBzdWJyb3V0aW5lIHRha2VzIHRocmVlIGFyZ3VtZW50czoKJEluY2x1ZGU6IGEgbGlzdCBvZiBoYXNoIHJlZmVyZW5jZXMgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbXMgdG8gaW5jbHVkZQokRHluYW1pY0ZpZWxkT2JqZWN0OiBhbiBvYmplY3QgdXNlZCB0byByZXRyaWV2ZSBkeW5hbWljIGZpZWxkIGluZm9ybWF0aW9uCmFuZCByZXR1cm5zIGVpdGhlciB0aGUgRHluYW1pY0ZpZWxkcyBvciB1bmRlZiBpbiBjYXNlIG9mIGFuIGVycm9yLgoKPWN1dAoKc3ViIF9HZXRJbmNsdWRlZER5bmFtaWNGaWVsZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJUR5bmFtaWNGaWVsZDsKCiAgICAjIFRoaXMgc3Vicm91dGluZSB0YWtlcyBhIERGRW50cnkgYW5kIHRoZSBEeW5hbWljRmllbGRPYmplY3QgYXMgYXJndW1lbnRzCiAgICAjIEl0IHJldHJpZXZlcyB0aGUgZHluYW1pYyBmaWVsZCBkZWZpbml0aW9uIGZvciB0aGUgZ2l2ZW4gREZFbnRyeQogICAgIyBJZiB0aGUgZGVmaW5pdGlvbiBpcyBub3QgYXZhaWxhYmxlLCBpdCByZXRyaWV2ZXMgaXQgZnJvbSB0aGUgRHluYW1pY0ZpZWxkT2JqZWN0CiAgICAjIFJldHVybnMgdGhlIGR5bmFtaWMgZmllbGQgZGVmaW5pdGlvbgogICAgbXkgJEdldER5bmFtaWNGaWVsZCA9IHN1YiB7CgogICAgICAgIG15ICgkREZFbnRyeSkgPSBAXzsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICRERkVudHJ5LT57RGVmaW5pdGlvbn0gLy8gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRERkVudHJ5LT57REZ9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkRHluYW1pY0ZpZWxkOwogICAgfTsKCiAgICBJVEVNOgogICAgZm9yIG15ICRJbmNsdWRlSXRlbSAoIEB7ICRQYXJhbXtJbnB1dEZpZWxkRGVmaW5pdGlvbn0gfSApIHsKCiAgICAgICAgaWYgKCAkSW5jbHVkZUl0ZW0tPntHcmlkfSApIHsKCiAgICAgICAgICAgIGZvciBteSAkUm93ICggQHsgJEluY2x1ZGVJdGVtLT57R3JpZH17Um93c30gfSApIHsKCiAgICAgICAgICAgICAgICBERkVOVFJZOgogICAgICAgICAgICAgICAgZm9yIG15ICRERkVudHJ5ICggJFJvdy0+QCogKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkR2V0RHluYW1pY0ZpZWxkLT4oJERGRW50cnkpOwogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJERGRW50cnktPntMYWJlbH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ID0gJERGRW50cnktPntMYWJlbH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e01hbmRhdG9yeX0gICAgICA9ICRERkVudHJ5LT57TWFuZGF0b3J5fTsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e1JlYWRvbmx5fSAgICAgICA9ICRERkVudHJ5LT57UmVhZG9ubHl9OwogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkeyAkREZFbnRyeS0+e0RGfSB9ID0gJER5bmFtaWNGaWVsZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljRmllbGRDb25maWcgbWlzc2luZyBmb3IgZmllbGQ6ICRERkVudHJ5LT57REZ9LCBvciBpcyBub3QgYSBUaWNrZXQgRHluYW1pYyBGaWVsZCEiLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBERkVOVFJZOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRJbmNsdWRlSXRlbS0+e0RGfSApIHsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkR2V0RHluYW1pY0ZpZWxkLT4oJEluY2x1ZGVJdGVtKTsKICAgICAgICAgICAgaWYgKCREeW5hbWljRmllbGQpIHsKICAgICAgICAgICAgICAgIGlmICggJEluY2x1ZGVJdGVtLT57TGFiZWx9ICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGQtPntMYWJlbH0gPSAkSW5jbHVkZUl0ZW0tPntMYWJlbH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TWFuZGF0b3J5fSAgICAgICAgICA9ICRJbmNsdWRlSXRlbS0+e01hbmRhdG9yeX07CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57UmVhZG9ubHl9ICAgICAgICAgICA9ICRJbmNsdWRlSXRlbS0+e1JlYWRvbmx5fTsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGR7ICRJbmNsdWRlSXRlbS0+e0RGfSB9ID0gJER5bmFtaWNGaWVsZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkR5bmFtaWNGaWVsZENvbmZpZyBtaXNzaW5nIGZvciBmaWVsZDogJEluY2x1ZGVJdGVtLT57REZ9LCBvciBpcyBub3QgYSBUaWNrZXQgRHluYW1pYyBGaWVsZCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgSVRFTTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbmV4dCBJVEVNOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVEeW5hbWljRmllbGQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItem.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJDb25maWciPgoKICAgIDwhLS0gcmVnaXN0cmF0aW9uIG9mIGFnZW50IGFuZCBjdXN0b21lciBmcm9udGVuZCBtb2R1bGVzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5BZG1pbi48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWRtaW5JVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uTW9kdWxlIyMjQWRtaW5JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BZG1pbiBhcmVhIG5hdmlnYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6QWRtaW5PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6TmF2QmFyOjpNb2R1bGVBZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgSXRlbXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5DTURCU2V0dGluZ3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikljb25CaWciPmZhLWxhcHRvcDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSWNvblNtYWxsIj48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluSVRTTUNvbmZpZ0l0ZW0jIyMwMDItSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkNvZGVNaXJyb3JFZGl0b3IuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkFkbWluLklUU01Db25maWdJdGVtLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvbGliL2NvZGVtaXJyb3IuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9oaW50L3Nob3ctaGludC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvZm9sZGd1dHRlci5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2RpYWxvZy9kaWFsb2cuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaXNwbGF5L2Z1bGxzY3JlZW4uY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvbGliL2NvZGVtaXJyb3IuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL21vZGUveWFtbC95YW1sLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9oaW50L3Nob3ctaGludC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9tYXRjaHRhZ3MuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2VkaXQvbWF0Y2hicmFja2V0cy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9jbG9zZXRhZy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9jbG9zZWJyYWNrZXRzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvc2VhcmNoY3Vyc29yLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvc2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9mb2xkL2ZvbGRjb2RlLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9lZGl0L3RyYWlsaW5nc3BhY2UuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL3NlbGVjdGlvbi9zZWxlY3Rpb24tcG9pbnRlci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZm9sZC9mb2xkZ3V0dGVyLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9mb2xkL2JyYWNlLWZvbGQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvaW5kZW50LWZvbGQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvY29tbWVudC1mb2xkLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9jb21tZW50L2NvbW1lbnQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2NvbW1lbnQvY29udGludWVjb21tZW50LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaWFsb2cvZGlhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvanVtcC10by1saW5lLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaXNwbGF5L2Z1bGxzY3JlZW4uanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPklUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWxsb2NhdGlvbkxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRJVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5NZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5JdGVtQXJlYTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMjAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPk92ZXJ2aWV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SVRTTSBjb25maWcgaXRlbSBvdmVydmlldy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5PdmVydmlldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpDdXN0b21lcklUU01Db25maWdJdGVtIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkUmVmZXJlbmNlU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRPRE8gcmVsZXZhbnQgZm9yIGNvbHVtbiBzZXR0aW5ncwogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRhYmxlRmlsdGVycy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1PdmVydmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uVGFibGUuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tLSBUT0RPIHJlbGV2YW50IGZvciBjb2x1bW4gc2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BbGxvY2F0aW9uTGlzdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIC0tPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0jIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5UaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+TWVudTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMxMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJzdmdJY29uIj52YXIvaHR0cGQvaHRkb2NzL3NraW5zL0N1c3RvbWVyL2RlZmF1bHQvaW1nL2RldmljZXNfYmxhY2tfMjRkcC5zdmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBjb25maWcgaXRlbXMuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtT3ZlcnZpZXcuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1TZWFyY2guY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRldGFpbC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uVGFibGUuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlByaW50LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkUmVmZXJlbmNlU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIHpvb20uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtWm9vbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFsbG9jYXRpb25MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5QcmludC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2pxdWVyeS10YWJsZXNvcnRlci0yLjI4LjE0L2pxdWVyeS50YWJsZXNvcnRlci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5JbnB1dEZpZWxkcy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5UYWJsZS5Tb3J0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkR5bmFtaWNGaWVsZERCRGV0YWlsZWRTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkREJTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkxpbmtPYmplY3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maXJtRGlhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIHpvb20uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIGVkaXQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtRWRpdCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkREJEZXRhaWxlZFNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5EeW5hbWljRmllbGREQlNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5JbnB1dEZpZWxkcy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQjIyNSaWNoVGV4dFdpZHRoIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSB3aWR0aCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1FZGl0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCslPyQiPjYyMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRWRpdCMjI1JpY2hUZXh0SGVpZ2h0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtRWRpdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJT8kIj4zMjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtUHJpbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gcHJpbnQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+RGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkRlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPklUU00gQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5Db25maWdJdGVtIFRyZWUgVmlldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5UcmVlIFZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5JVFNNIENvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldyMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5UcmVlVmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRyZWVWaWV3LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2pzcGx1bWItMS42LjQvanNwbHVtYi5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIGFkZC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5BZGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRJVFNNQ29uZmlnSXRlbUFkZCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudElUU01Db25maWdJdGVtQWRkIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPk5ldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4yMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggY29uZmlnIGl0ZW1zLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BbGxvY2F0aW9uTGlzdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGV0YWlsLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5UYWJsZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uUHJpbnQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5UYWJsZS5Tb3J0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRhYmxlRmlsdGVycy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoIGNvbmZpZyBpdGVtcy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPm9uY2xpY2s9IklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guT3BlblNlYXJjaERpYWxvZygnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcpOyBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9IGVsc2UgeyB3aW5kb3cuZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7IjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIG1lbnUgbW9kdWxlcyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAwMC1CYWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+WyUgRW52KCJMYXN0U2NyZWVuT3ZlcnZpZXciKSAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMjAwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5O0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMzMDAtRWRpdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNDAwLVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlByaW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtQYXJhbSI+dGFyZ2V0PSJwcmludCI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNTAwLUxpbmsiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50TGlua09iamVjdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9SVRTTUNvbmZpZ0l0ZW07U291cmNlS2V5PVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyM1NTAtVHJlZVZpZXciIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlRyZWUgVmlldzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnSXRlbSBUcmVlIFZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3O1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNjAwLUR1cGxpY2F0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5EdXBsaWNhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkR1cGxpY2F0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0R1cGxpY2F0ZUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzcwMC1Db25maWdJdGVtRGVsZXRlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRGVsZXRlO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+Q29uZmlybURpYWxvZzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRWxlbWVudFNlbGVjdG9yIj4jTWVudVslIERhdGEuTWVudUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGU7U3ViYWN0aW9uPUNvbmZpZ0l0ZW1EZWxldGU7Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlhbG9nVGl0bGUiPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIFslIENvbmZpZygiSVRTTUNvbmZpZ0l0ZW06Okhvb2siKSAlXSBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gc2V0dGluZ3MgZm9yIHNwZWNpZmljIGNvbmZpZyBpdGVtIGNsYXNzZXMgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6Q0lOYW1lUmVnZXgiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbXB1dGVyOjpDSU5hbWVSZWdleCI+XkFCQy4qPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb21wdXRlcjo6Q0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UiPkEgY29tcHV0ZXIgbmFtZSBtdXN0IHN0YXJ0IHdpdGggQUJDITwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSGFyZHdhcmU6OkNJTmFtZVJlZ2V4Ij4uKlxkXGQkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJIYXJkd2FyZTo6Q0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UiPkEgaGFyZHdhcmUgbmFtZSBtdXN0IGVuZCB3aXRoIHR3byBkaWdpdHMhPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIHNldHRpbmdzIGZvciB0aGUgTGlua09iamVjdCBmZWF0dXJlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6Q29tcGxleFRhYmxlOjpTZXR0aW5nc1Zpc2liaWxpdHkjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpMaW5rT2JqZWN0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OkRlZmF1bHRTdWJPYmplY3QjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgJ0lUU01Db25maWdJdGVtJy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5DbGllbnQ8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtOjpTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5DdXJJbmNpU2lnbmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3VyRGVwbFNpZ25hbDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW06OlNob3dDb2x1bW5zQnlDbGFzcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua09iamVjdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkN1ckRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjozPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjozOjpDYXBhY2l0eTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpXYXJyYW50eUV4cGlyYXRpb25EYXRlOjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkNyZWF0ZVRpbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Mb2NhdGlvbjo6VHlwZTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpBZGRyZXNzOjoxPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBzdGF0cyBzZXR0aW5ncyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IlN0YXRzOjpEeW5hbWljT2JqZWN0UmVnaXN0cmF0aW9uIyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN0YXRzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlN0YXRzOjpEeW5hbWljOjpJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJbXBvcnQvRXhwb3J0IHNldHRpbmdzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kUmVnaXN0cmF0aW9uIyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+T2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gZXZlbnQgc2V0dGluZ3MgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMTAwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRvSGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihDb25maWdJdGVtQ3JlYXRlfFZlcnNpb25DcmVhdGV8RGVwbG95bWVudFN0YXRlVXBkYXRlfEluY2lkZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbURlbGV0ZXxMaW5rQWRkfExpbmtEZWxldGV8RGVmaW5pdGlvblVwZGF0ZXxOYW1lVXBkYXRlfFZlcnNpb25EZWxldGV8QXR0YWNobWVudEFkZFBvc3R8QXR0YWNobWVudERlbGV0ZVBvc3R8Q29uZmlnSXRlbUR5bmFtaWNGaWVsZCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMzMDAtRGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EZWZpbml0aW9uQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjNDAwMC1TY3JpcHREeW5hbWljRmllbGRzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2YWx1YXRlIGFsbCBzY3JpcHQgZmllbGRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RXZhbHVhdGVTY3JpcHRGaWVsZHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIG1vcmUgZnJvbnRlbmQgbW9kdWxlIHNldHRpbmdzIGFuZCByZWdpc3RyYXRpb25zIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpIaXN0b3J5T3JkZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9InJldmVyc2UiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJyZXZlcnNlIiBUcmFuc2xhdGFibGU9IjEiPnJldmVyc2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Im5vcm1hbCIgVHJhbnNsYXRhYmxlPSIxIj5ub3JtYWw8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIGhpc3RvcnkuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uSGlzdG9yeS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlByZWZlcmVuY2VzOjpVcGRhdGVBSkFYOjpBbGxvd2VkIyMjMDAyLUlUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIiBDb25maWdMZXZlbD0iMjAwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BIGxpc3Qgb2YgcGFyYW1ldGVycyB3aGljaCBjYW4gYmUgdXBkYXRlZCB2aWEgdGhlIFVwZGF0ZUFKQVguPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlByZWZlcmVuY2VzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJDb25maWdJdGVtWm9vbVRhYmxlSGVpZ2h0Ij4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNEZXBsb3ltZW50U3RhdGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZSBUeXBlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwb3N0cHJvZHVjdGl2ZSIgVHJhbnNsYXRhYmxlPSIxIj5wb3N0cHJvZHVjdGl2ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwcmVwcm9kdWN0aXZlIiBUcmFuc2xhdGFibGU9IjEiPnByZXByb2R1Y3RpdmU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0icHJvZHVjdGl2ZSIgVHJhbnNsYXRhYmxlPSIxIj5wcm9kdWN0aXZlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+RnVuY3Rpb25hbGl0eTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPk9wdGlvbjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBHZW5lcmFsQ2F0YWxvZyBzZXR0aW5ncyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNEZXBsb3ltZW50U3RhdGVzQ29sb3JzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZSBDb2xvcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Db2xvcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbG9yUGlja2VyPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNOYW1lTW9kdWxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lIE1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjMwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkNob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+TmFtZU1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPk5hbWVNb2R1bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzIyMjTnVtYmVyTW9kdWxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpHZW5lcmFsQ2F0YWxvZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlciBNb2R1bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij40MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj5DaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPk51bWJlck1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPk51bWJlck1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNWZXJzaW9uU3RyaW5nTW9kdWxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+VmVyc2lvbiBTdHJpbmcgTW9kdWxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+NTA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8IS0tIFRPRE8gcmVuYW1lIERhdGFTZWxlY3RlZCBwcm9wZXJseSB0byBEYXRhU2VsZWN0ZWRJRCwgYXMgaXQgaXMgcGFzc2VkIGFzIFNlbGVjdGVkSUQgc3Vic2VxdWVudGx5IC0tPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhU2VsZWN0ZWQiPkluY3JlbWVudGFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYW5kYXRvcnkiIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPlZlcnNpb25TdHJpbmdNb2R1bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5WZXJzaW9uU3RyaW5nTW9kdWxlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNWZXJzaW9uU3RyaW5nRXhwcmVzc2lvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+VmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjYwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYW5kYXRvcnkiIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPlZlcnNpb25TdHJpbmdFeHByZXNzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+SW5wdXQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI1ZlcnNpb25UcmlnZ2VyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+VmVyc2lvbiBUcmlnZ2VyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+NzA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EZXNjcmlwdGlvbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsU3RhdGVJRCIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW5jaVN0YXRlSUQiIFRyYW5zbGF0YWJsZT0iMSI+SW5jaWRlbnRTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZpbml0aW9uVXBkYXRlIiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VmVyc2lvblRyaWdnZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db25maWdJdGVtVmVyc2lvblRyaWdnZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTXVsdGlwbGUiIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI0NhdGVnb3JpZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+Q2F0ZWdvcmllczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjgwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkNob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5DYXRlZ29yaWVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29uZmlnSXRlbUNsYXNzQ2F0ZWdvcmllczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTXVsdGlwbGUiIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBwZXJtaXNzaW9uIHNldHRpbmdzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OkNsYXNzIyMjMDEwLUNsYXNzR3JvdXBDaGVjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OkNsYXNzR3JvdXBDaGVjazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUmVxdWlyZWQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkdyYW50ZWQiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246Okl0ZW0jIyMwMTAtSXRlbUNsYXNzR3JvdXBDaGVjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uOjpJdGVtQ2xhc3NHcm91cENoZWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZXF1aXJlZCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JhbnRlZCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0gLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1ZpZXdBbGxQb3NzaWJsZUNvbmZpZ0l0ZW1zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZG1pbklUU01Db25maWdJdGVtIyMjRWRpdG9yUm93cyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46OlZpZXc6OklUU01Db25maWdJdGVtRGVmaW5pdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MzA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQWRkIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQWRkIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ydzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtUHJpbnQgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtUHJpbnQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtRGVsZXRlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb20jIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRXh0ZW5kZWRTZWFyY2hDb25kaXRpb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiZhbXA7JmFtcDsqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj40MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkFnZSI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkFnZSIgVHJhbnNsYXRhYmxlPSIxIj5BZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8IS0tIFRPRE8gdmVyaWZ5IGF0dHJpYnV0ZSBuYW1lcyAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTnVtYmVyIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEZXBsU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iSW5jaVN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPCEtLSBUT0RPIHRlc3QgZHluYW1pYyBmaWVsZHMgLS0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjT3JkZXI6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoQ1NWRGF0YSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EYXRhIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+VmVyc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+Q3JlYXRlVGltZTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgRmllbGRzIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI051bWJlciIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOYW1lIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0RlcGxveW1lbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSW5jaWRlbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjQ3VzdG9tZXJJRCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNDdXN0b21lclVzZXJMb2dpbiIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVNsb3QiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNoYW5nZVRpbWVQb2ludCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNoYW5nZVRpbWVTbG90IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI1NlYXJjaFByZXZpb3VzVmVyc2lvbnMiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgJ1gnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6ICdhIHRleHQnLCBEcm9wZG93bjogJzEnLCBEYXRlL1RpbWU6ICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5OycgYW5kIG9yICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03JzsuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlcGxveW1lbnRTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNJbmNpZGVudFN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNFeHRlbmRlZFNlYXJjaENvbmRpdGlvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJmFtcDsmYW1wOyprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaFBhZ2VTaG93biIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjQwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iQWdlIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iQWdlIiBUcmFuc2xhdGFibGU9IjEiPkFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTnVtYmVyIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEZXBsU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iSW5jaVN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEb3duIiBUcmFuc2xhdGFibGU9IjEiPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlVwIiBUcmFuc2xhdGFibGU9IjEiPlVwPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjTnVtYmVyIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI05hbWUiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRGVwbG95bWVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJbmNpZGVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNEeW5hbWljRmllbGQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSAnWCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogJ2EgdGV4dCcsIERyb3Bkb3duOiAnMScsIERhdGUvVGltZTogJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7JyBhbmQgb3IgJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTcnOy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3IC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJvPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI1Blcm1pc3Npb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPlBlcm1pc3Npb24gR3JvdXA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij4xMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPlBlcm1pc3Npb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+UGVybWlzc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpTZWFyY2gjIyNDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Il4oPzpBZ2VudHxBZG1pbilJVFNNQ29uZmlnSXRlbSI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g7U3ViYWN0aW9uPUFKQVg8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OlNlYXJjaDo6SmF2YVNjcmlwdCMjI0NvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SmF2YVNjcmlwdCBmdW5jdGlvbiBmb3IgdGhlIHNlYXJjaCBmcm9udGVuZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Il4oPzpBZ2VudHxBZG1pbilJVFNNQ29uZmlnSXRlbSI+SVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5PcGVuU2VhcmNoRGlhbG9nKCdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpBZ2VudDo6Q29tbW9uSlMjIyMxMDAtQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBKUyBmaWxlcyB0byBhbHdheXMgYmUgbG9hZGVkIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkLmpzPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQcmVmZXJlbmNlc0dyb3VwcyMjI0NvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6UHJlZmVyZW5jZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZlcmVuY2VHcm91cCI+TWlzY2VsbGFuZW91czwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJhdGlvbiBJdGVtIExpbWl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IktleSIgVHJhbnNsYXRhYmxlPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEwIj4xMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MTU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjAiPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjI1Ij4yNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzMCI+MzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzUiPjM1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YVNlbGVjdGVkIj4yNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VXNlckNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDAwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHJlZmVyZW5jZXNHcm91cHMjIyNDb25maWdJdGVtT3ZlcnZpZXdGaWx0ZXJTZXR0aW5ncyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyAnQWN0aXZlJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyJ3MgYmVoYWxmLiBVc2UgJ1ByZWZlcmVuY2VHcm91cCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlByZWZlcmVuY2VzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpDb2x1bW5GaWx0ZXJzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmZXJlbmNlR3JvdXAiPk1pc2NlbGxhbmVvdXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZWQgZmlsdGVycy48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJLZXkiIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgxMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IyMjU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYWdlU2hvd24iPjI1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6SVRTTUNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6Q3VzdG9tZXJPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYWdlU2hvd24iPjI1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0RlZmF1bHRDb2x1bW5zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBBdmFpbGFibGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGJ5IGRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGUiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxTdGF0ZSIgU2VsZWN0ZWRJRD0iMCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbmNpU3RhdGUiIFNlbGVjdGVkSUQ9IjAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFzdENoYW5nZWQiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZWQiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6SG9vayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5Db25maWdJdGVtIzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj4xMDAwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0RlZmF1bHRDYXRlZ29yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbT5BbGw8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0NsYXNzQ29sdW1uc0Rpc2FibGVkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0NsYXNzQ29sdW1uc0F2YWlsYWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjQ2xhc3NDb2x1bW5zRGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbSMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlVuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKCdjbGFzcycpIG9yIGdsb2JhbGx5ICgnZ2xvYmFsJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9Imdsb2JhbCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Imdsb2JhbCIgVHJhbnNsYXRhYmxlPSIxIj5nbG9iYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9ImNsYXNzIiBUcmFuc2xhdGFibGU9IjEiPmNsYXNzPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6QnVsa0FjdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6QnVsa0FjdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPmFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+dXNlcnM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtQnVsayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+QnVsayBBY3Rpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5DTURCPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsjIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGs8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtQXR0YWNobWVudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5UbyBkb3dubG9hZCBhdHRhY2htZW50cy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQXR0YWNobWVudCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ6OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+VG8gZG93bmxvYWQgYXR0YWNobWVudHMuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHJlTWVudU1vZHVsZSMjIzEwMC1ab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZVByZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtWm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHJlTWVudU1vZHVsZSMjIzIwMC1IaXN0b3J5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZVByZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5O0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlByZU1lbnVNb2R1bGUjIyMzMDAtRHVwbGljYXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZVByZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RHVwbGljYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EdXBsaWNhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtEdXBsaWNhdGVJRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEIHwgaHRtbCAlXTtSZXR1cm5Ub0xhc3RTY3JlZW49MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIyMjRGVwbFN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbUJ1bGs8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIyMjSW5jaVN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1CdWxrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OkFkbWluTW9kdWxlR3JvdXBzIyMjMjAwLUlUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGF2YWlsYWJsZSBncm91cHMgZm9yIHRoZSBhZG1pbiBvdmVydmlldyBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6TmF2QmFyTW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNNREJTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Q01EQiBTZXR0aW5nczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPcmRlciI+ODAwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSMjI1ZlcnNpb25zRW5hYmxlZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1ab29tPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSMjI1ZlcnNpb25zU2VsZWN0YWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OklUU01Db25maWdJdGVtWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb20jIyNHZW5lcmFsSW5mbyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5XaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OklUU01Db25maWdJdGVtWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIEhpZGRlbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIFNob3duPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTnVtYmVyIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbmNpZGVudFN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZWRUaW1lIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoYW5nZWRUaW1lIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IkFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OklUU01Db25maWdJdGVtR2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+QXNzaWduZWQgQ0lzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0cmlidXRlcyI+Q3VzdG9tZXJDb21wYW55PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGaWx0ZXIiPkFzc2lnbmVkVG9FbnRpdHk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbWl0Ij4xMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGVybWlzc2lvbiI+cm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db250ZW50TGFyZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhY2hlVFRMTG9jYWwiPjAuNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93bkNsYXNzZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Q29sdW1ucyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBBdmFpbGFibGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYnkgZGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhc3RDaGFuZ2VkIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6SVRTTUNvbmZpZ0l0ZW1HZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5Bc3NpZ25lZCBDSXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRyaWJ1dGVzIj5DdXN0b21lcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRmlsdGVyIj5Bc3NpZ25lZFRvRW50aXR5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW1pdCI+MTA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBlcm1pc3Npb24iPnJvPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29udGVudExhcmdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYWNoZVRUTExvY2FsIj4wLjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3duQ2xhc3NlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0l0ZW1LZXkiPkNvbnRhY3QtVXNlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdENvbHVtbnMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gQXZhaWxhYmxlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGJ5IGRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTnVtYmVyIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTdGF0ZVR5cGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYXN0Q2hhbmdlZCIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJFbGFzdGljc2VhcmNoOjpFeGNsdWRlZENJQ2xhc3NlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFbGFzdGljc2VhcmNoOjpTZXR0aW5nczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRWxhc3RpY3NlYXJjaDo6RXhjbHVkZWRDSURlcGxveW1lbnRTdGF0ZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RWxhc3RpY3NlYXJjaDo6U2V0dGluZ3M8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TdG9yZUZpZWxkcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIiBDb25maWdMZXZlbD0iMTAwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RWxhc3RpY3NlYXJjaDo6U2V0dGluZ3M8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmFzaWMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29uZmlnSXRlbUlEPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5DbGFzc0lEPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbVNlYXJjaEZpZWxkcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFbGFzdGljc2VhcmNoOjpTZXR0aW5nczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCYXNpYyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0YWNobWVudHMiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRWxhc3RpY3NlYXJjaDo6UXVpY2tTZWFyY2hTaG93IyMjQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5PYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkVsYXN0aWNzZWFyY2g6OlNldHRpbmdzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvdW50Ij41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRyaWJ1dGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRyaWJ1dGVIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkV2ZW50cyMjI0lUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgYWxsIFBhY2thZ2UgZXZlbnRzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgR1VJLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+Q29uZmlnSXRlbUNyZWF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbmZpZ0l0ZW1VcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5WZXJzaW9uQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VmVyc2lvblVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxveW1lbnRTdGF0ZVVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lkZW50U3RhdGVVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db25maWdJdGVtRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZVVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkF0dGFjaG1lbnRBZGRQb3N0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+QXR0YWNobWVudERlbGV0ZVBvc3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5WZXJzaW9uRGVsZXRlPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBkeW5hbWljIGZpZWxkIHJlbGF0ZWQgc2V0dGluZ3MgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlIyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pY0ZpZWxkIG9iamVjdCByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpc3BsYXlOYW1lIiBUcmFuc2xhdGFibGU9IjEiPklUU00gQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MTE1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZFNjcmVlbnMjIyNJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBjb25maWd1cmF0aW9uIGRlZmluZXMgYWxsIHBvc3NpYmxlIHNjcmVlbnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgZHluYW1pYyBmaWVsZHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6RHluYW1pY0ZpZWxkU2NyZWVuczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IyMjRHluYW1pY0ZpZWxkIj5BZ2VudElUU01Db25maWdJdGVtRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtUHJpbnQjIyNEeW5hbWljRmllbGQiPkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRHluYW1pY0ZpZWxkIj5BZ2VudElUU01Db25maWdJdGVtU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIyMjRHluYW1pY0ZpZWxkIj5BZ2VudElUU01Db25maWdJdGVtWm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRHluYW1pY0ZpZWxkIj5DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkRlZmF1bHRDb2x1bW5zU2NyZWVucyMjI0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIGNvbmZpZ3VyYXRpb24gZGVmaW5lcyBhbGwgcG9zc2libGUgc2NyZWVucyB0byBlbmFibGUgb3IgZGlzYWJsZSBkZWZhdWx0IGNvbHVtbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6RHluYW1pY0ZpZWxkU2NyZWVuczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyIj5EYXNoYm9hcmRXaWRnZXQgQ1VJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyVXNlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkiPkRhc2hib2FyZFdpZGdldCBDSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0RlZmF1bHRDb2x1bW5zIj5BZ2VudElUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0jIyNEZWZhdWx0Q29sdW1ucyI+Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRTY3JlZW5zOjpPYmplY3RUeXBlcyMjI0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpEeW5hbWljRmllbGRTY3JlZW5zPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+SVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIGR5bmFtaWMgZmllbGQgSVRTTUNvbmZpZ0l0ZW0gUmVmZXJlbmNlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkczo6RHJpdmVyIyMjQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljRmllbGQgYmFja2VuZCByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpEeW5hbWljRmllbGRzOjpEcml2ZXJSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlzcGxheU5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5EeW5hbWljRmllbGRSZWZlcmVuY2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdFR5cGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkFydGljbGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5UaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8IS0tIEVuZCBkeW5hbWljIGZpZWxkIElUU01Db25maWdJdGVtIFJlZmVyZW5jZSAtLT4KCiAgICA8IS0tIGR5bmFtaWMgZmllbGQgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uIFJlZmVyZW5jZSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZHM6OkRyaXZlciMjI0NvbmZpZ0l0ZW1WZXJzaW9uIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWNGaWVsZCBiYWNrZW5kIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkR5bmFtaWNGaWVsZHM6OkRyaXZlclJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaXNwbGF5TmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtIFZlcnNpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtVmVyc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkR5bmFtaWNGaWVsZFJlZmVyZW5jZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0VHlwZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+QXJ0aWNsZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlRpY2tldDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gRW5kIGR5bmFtaWMgZmllbGQgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uIFJlZmVyZW5jZSAtLT4KCiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGQ6OkV2ZW50TW9kdWxlUG9zdCMjIzIwMC1EeW5hbWljRmllbGRTeW5jIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RXZlbnQ6OklUU01Db25maWdJdGVtRGVmaW5pdGlvblN5bmM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EeW5hbWljRmllbGRBZGR8RHluYW1pY0ZpZWxkVXBkYXRlfER5bmFtaWNGaWVsZERlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHJhbnNhY3Rpb24iPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkOjpFdmVudE1vZHVsZVBvc3QjIyMyNDAwLVJlYnVpbGRBQ0xQcmVzZWxlY3Rpb25DYWNoZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZWJ1aWxkcyB0aGUgQUNMIHByZXNlbGVjdGlvbiBjYWNoZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OlJlYnVpbGRBQ0xQcmVzZWxlY3Rpb25DYWNoZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPkRlZmluaXRpb25DcmVhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5BbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cHMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlckR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXJEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzA1IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cHMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlckR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyNEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjIzAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjIzA0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gVHJlZVZpZXcgcmVsYXRlZCBzZXR0aW5ncyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJUcmVlVmlldzo6RGVmYXVsdERlcHRoIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjM8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJUcmVlVmlldzo6U2hvd0xpbmtMYWJlbHMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iWWVzIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iWWVzIiBUcmFuc2xhdGFibGU9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTm8iIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZHM6OkR5bmFtaWNGaWVsZFNldDo6SW5uZXJGaWVsZHNUaWNrZXRUb0NJIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkEgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkR5bmFtaWNGaWVsZHM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3dhcHBlZERpc2tTTiI+SVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50IyMjMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVG90YWxMaWNlbnNlc0RGIj5JVFNNTGljZW5zZS1MaWNlbnNlQ291bnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF2YWlsYWJsZUxpY2Vuc2VzREYiPklUU01MaWNlbnNlLUxpY2Vuc2VzQXZhaWxhYmxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNaW5pbXVtTGljZW5zZXMiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj5JVFNNLVJlZmVyZW5jZVRvTGljZW5zZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+TWlzYzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0IiBWYWx1ZVR5cGU9IlRleHRhcmVhIj5UaGUgbGljZW5zZSAmbHQ7T1RPQk9fQ09ORklHSVRFTV9OQU1FJmd0OyBoYXMgbGVzcyB0aGFuICZsdDtPVE9CT19DT05GSUdJVEVNX0xJQ0VOU0VTX01JTiZndDsgaXRlbXMgKCZsdDtPVE9CT19DT05GSUdJVEVNX0xJQ0VOU0VTX0FWQUlMJmd0OyBsaWNlbnNlcyBsZWZ0KS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkIj5DTURCTGljZW5zZU5vdGlmaWNhdGlvbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZXJ2aWNlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU0xBIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlciI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik93bmVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+TGljZW5zZSBSZXByb3Zpc2lvbmluZzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlQ291bnQjIyMwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNaW5pbXVtTGljZW5zZXMiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkRGVwbFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0IiBWYWx1ZVR5cGU9IlRleHRhcmVhIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlQ291bnQjIyMwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNaW5pbXVtTGljZW5zZXMiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkRGVwbFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0IiBWYWx1ZVR5cGU9IlRleHRhcmVhIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlQ291bnQjIyMwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNaW5pbXVtTGljZW5zZXMiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkRGVwbFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0IiBWYWx1ZVR5cGU9IlRleHRhcmVhIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlQ291bnQjIyMwNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNaW5pbXVtTGljZW5zZXMiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkRGVwbFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0IiBWYWx1ZVR5cGU9IlRleHRhcmVhIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMyMDAtTGljZW5zZUxpbmtDb3VudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpDb3VudExpY2Vuc2VMaW5rczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPkRlcGxveW1lbnRTdGF0ZVVwZGF0ZXxDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlX3xEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkVsYXN0aWNzZWFyY2hXaWRnZXRCYWNrZW5kIyMjMDQtRWxhc3RpY3NlYXJjaENvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFbGFzdGljc2VhcmNoOjpTZXR0aW5nczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpFbGFzdGljc2VhcmNoOjpFbGFzdGljc2VhcmNoQ29uZmlnSXRlbUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIEl0ZW1zPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZXJtaXNzaW9uIj5BZ2VudElUU01Db25maWdJdGVtWm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SVRTTSBjb25maWcgaXRlbSBvdmVydmlldy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNJVFNNQ29uZmlnSXRlbVpvb20iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgaXRlbSB6b29tLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggY29uZmlnIGl0ZW1zLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5UbyBkb3dubG9hZCBhdHRhY2htZW50cy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6UHVibGljT3ZlcnZpZXdTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWVTaG9ydCI+UzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFnZVNob3duIj4yNTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtIyMjUGFnZVNob3duIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjEwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjQ2xhc3MiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNOYW1lIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI051bWJlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlcGxveW1lbnRTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNJbmNpZGVudFN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJBZ2UiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJBZ2UiIFRyYW5zbGF0YWJsZT0iMSI+QWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOdW1iZXIiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRlcGxTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJJbmNpU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+SW5jaWRlbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjTnVtYmVyIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjTmFtZSIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0RlcGxveW1lbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJbmNpZGVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0R5bmFtaWNGaWVsZCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlICdYJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiAnYSB0ZXh0JywgRHJvcGRvd246ICcxJywgRGF0ZS9UaW1lOiAnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTsnIGFuZCBvciAnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9Nyc7LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTdXBwcmVzc0Z1enp5TG9naWMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpOYXZpZ2F0aW9uIyMjUHVibGljSVRTTUNvbmZpZ0l0ZW0jIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNNREI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPlRpY2tldDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5NZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MzEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9InN2Z0ljb24iPnZhci9odHRwZC9odGRvY3Mvc2tpbnMvUHVibGljL2RlZmF1bHQvaW1nL2RldmljZXNfYmxhY2tfMjRkcC5zdmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzA1IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyNEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6UHVibGljSVRTTUNvbmZpZ0l0ZW0jIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkR5bmFtaWNGaWVsZFJlZmVyZW5jZVNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtLk92ZXJ2aWV3LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkN1c3RvbWVyLlNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUT0RPIHJlbGV2YW50IGZvciBjb2x1bW4gc2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIC0tPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtT3ZlcnZpZXcuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlRhYmxlLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0gVE9ETyByZWxldmFudCBmb3IgY29sdW1uIHNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWxsb2NhdGlvbkxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAtLT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbU92ZXJ2aWV3LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtU2VhcmNoLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlRhYmxlLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5QcmludC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uUHVibGljLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkUmVmZXJlbmNlU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OlB1YmxpY0lUU01Db25maWdJdGVtWm9vbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20uY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlB1YmxpYy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tIyMjVmVyc2lvbnNFbmFibGVkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlB1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtWm9vbSMjI1ZlcnNpb25zU2VsZWN0YWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tIyMjR2VuZXJhbEluZm8iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+V2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBIaWRkZW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBTaG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW5jaWRlbnRTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDcmVhdGVkVGltZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkVGltZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJBdXRvQ29tcGxldGU6OlB1YmxpYyMjI0RlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBhdXRvY29tcGxldGlvbiBmZWF0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdXRvQ29tcGxldGVBY3RpdmUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1pblF1ZXJ5TGVuZ3RoIj4yPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWVyeURlbGF5Ij4xMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1heFJlc3VsdHNEaXNwbGF5ZWQiPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCdXR0b25UZXh0IiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNDb2xvckRlZmluaXRpb25zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFpbkRhcmsiPiMwMDAyM2M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1haW5MaWdodCI+IzAwMWJmZjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFpbkhvdmVyIj4jMDAwMDk5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCR0xpZ2h0Ij4jZjdmN2Y5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCR0RhcmsiPiNiZmJmY2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHREYXJrIj4jMDAwMjNjPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0TGlnaHQiPiM3ZjgwOWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkhpZ2hsaWdodCI+I2ZlZjIzNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTm90aWZ5T0siPiNjNGNkZmE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5vdGlmeVdhcm4iPiNmZmZjY2M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5vdGlmeUVyciI+I2Y5YmNiMjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSG92ZXJMaWdodCI+I2M0Y2RmYTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSG92ZXJEYXJrIj4jNmQ4M2YyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaGFkb3dNYWluIj5yZ2JhKDAsMjcsMjU1LDAuMjQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaGFkb3dEYXJrIj5yZ2JhKDQsMCw3MSwwLjE2KTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtIyMjVGl0bGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj5Db25maWdJdGVtczwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1RpdGxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPkNvbmZpZ0l0ZW0gU2VhcmNoPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemACL.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJDb25maWciPgo8IS0tIFRPRE86IG1lcmdlIGZpbGUgaW50byBzdGFuZGFyZCBjb25maWdpdGVtLnhtbCAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMU1hdGNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcm9wZXJ0aWVzIj5Qcm9wZXJ0aWVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcm9wZXJ0aWVzRGF0YWJhc2UiPlByb3BlcnRpZXNEYXRhYmFzZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbUFDTEtleXNMZXZlbDFDaGFuZ2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBvc3NpYmxlIj5Qb3NzaWJsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUG9zc2libGVBZGQiPlBvc3NpYmxlQWRkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQb3NzaWJsZU5vdCI+UG9zc2libGVOb3Q8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwyOjpQb3NzaWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0l0ZW0iPkNvbmZpZ0l0ZW08L0l0ZW0+CjwhLS0gVE9ETyAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWN0aW9uPC9JdGVtPiAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRm9ybSI+Rm9ybTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbUFDTEtleXNMZXZlbDI6OlBvc3NpYmxlQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSI+Q29uZmlnSXRlbTwvSXRlbT4KPCEtLSBUT0RPICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BY3Rpb248L0l0ZW0+IC0tPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGb3JtIj5Gb3JtPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMjo6UG9zc2libGVOb3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdJdGVtIj5Db25maWdJdGVtPC9JdGVtPgo8IS0tIFRPRE8gICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFjdGlvbjwvSXRlbT4gLS0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZvcm0iPkZvcm08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwyOjpQcm9wZXJ0aWVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGcm9udGVuZCIgVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlciIgVHJhbnNsYXRhYmxlPSIxIj5Vc2VyPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMjo6UHJvcGVydGllc0RhdGFiYXNlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyIiBUcmFuc2xhdGFibGU9IjEiPlVzZXI8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwzOjpBY3Rpb25zIyMjMTAwLURlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciAnQWN0aW9uJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+QWdlbnRJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNvbmZpZ0l0ZW1BQ0w6OkFDTFByZXNlbGVjdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5XaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ29uZmlnSXRlbUFDTDo6QXV0b3NlbGVjdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5XaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+Cg==</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemGenericInterface.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtR2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNDb25maWdJdGVtOjpDb25maWdJdGVtVXBzZXJ0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNvbmZpZ0l0ZW1VcHNlcnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZSMjI0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtR2V0IyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtR2V0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVVwc2VydCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVVwc2VydDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJ3PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDh9JCI+NTAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iQWdlIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOdW1iZXIiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRlcGxTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJJbmNpU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+SW5jaWRlbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkN1ckRlcGxTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5DdXJyZW50IERlcGxveW1lbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkN1ckluY2lTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5DdXJyZW50IEluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJBZ2UiIFRyYW5zbGF0YWJsZT0iMSI+QWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJDcmVhdGVkIiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkNoYW5nZWQiIFRyYW5zbGF0YWJsZT0iMSI+Q2hhbmdlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRG93biIgVHJhbnNsYXRhYmxlPSIxIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJVcCIgVHJhbnNsYXRhYmxlPSIxIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1EZWxldGUjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1EZWxldGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ydzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6TW9kdWxlIyMjRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbU1hbmFnZW1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW52b2tlciBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtTWFuYWdlbWVudDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbU1hbmFnZW1lbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkV2ZW50TW9kdWxlUG9zdCMjIzk3MDAtR2VuZXJpY0ludGVyZmFjZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkV2ZW50OjpIYW5kbGVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihWZXJzaW9uVXBkYXRlfE5hbWVVcGRhdGV8RGVwbG95bWVudFN0YXRlVXBkYXRlfEluY2lkZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbUNyZWF0ZXxDb25maWdJdGVtVXBkYXRlfFZlcnNpb25DcmVhdGV8Q29uZmlnSXRlbURlbGV0ZXxBdHRhY2htZW50QWRkUG9zdHxBdHRhY2htZW50RGVsZXRlUG9zdCk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbUZldGNoOjpDbGFzc2VzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0+PEFycmF5PjwvQXJyYXk+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGUjIyNDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJEZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZSMjI0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1GZXRjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtRmV0Y2g8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbVVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5UaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBhZG1pbiBhcmVhIG9mIE9UT0JPLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgSW52b2tlciBHVUk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJDb25maWdJdGVtIyMjMDA3LUlUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuQWRtaW4uR2VuZXJpY0ludGVyZmFjZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtVXBzZXJ0OjpDbGFzc2VzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbT48QXJyYXk+PC9BcnJheT48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPkFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBPcGVyYXRpb24gR1VJPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25Db25maWdJdGVtIyMjMDAyLUdlbmVyaWNJbnRlcmZhY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkdlbmVyaWNJbnRlcmZhY2UuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5BZG1pbi5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNUcmlnZ2VyQ29uZmlnSXRlbUZldGNoLTAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiIENvbmZpZ0xldmVsPSIxMDAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDAxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTY2hlZHVsZSI+Ki8yMCAqICogKiAqPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6V2ViU2VydmljZTo6VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRnVuY3Rpb24iPkV4ZWN1dGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1heGltdW1QYXJhbGxlbEluc3RhbmNlcyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFyYW1zIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPldlYlNlcnZpY2VOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JbnZva2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNUcmlnZ2VyQ29uZmlnSXRlbUZldGNoLTAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiIENvbmZpZ0xldmVsPSIxMDAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDAyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTY2hlZHVsZSI+Ki8yMCAqICogKiAqPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6V2ViU2VydmljZTo6VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRnVuY3Rpb24iPkV4ZWN1dGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1heGltdW1QYXJhbGxlbEluc3RhbmNlcyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFyYW1zIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPldlYlNlcnZpY2VOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JbnZva2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNUcmlnZ2VyQ29uZmlnSXRlbUZldGNoLTAzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiIENvbmZpZ0xldmVsPSIxMDAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDAzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTY2hlZHVsZSI+Ki8yMCAqICogKiAqPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6V2ViU2VydmljZTo6VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRnVuY3Rpb24iPkV4ZWN1dGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1heGltdW1QYXJhbGxlbEluc3RhbmNlcyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFyYW1zIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPldlYlNlcnZpY2VOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JbnZva2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4K</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemTicketLink.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpTZXRJbmNpZGVudFN0YXRlT25MaW5rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkV2ZW50TW9kdWxlUG9zdCMjIzA0Mi1JVFNNQ29uZmlnSXRlbVRpY2tldFN0YXR1c0xpbmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OlRpY2tldDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpUaWNrZXRTdGF0dXNMaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KExpbmtBZGR8TGlua0RlbGV0ZSk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyMwNDItSVRTTUNvbmZpZ0l0ZW1UaWNrZXRTdGF0dXNMaW5rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpUaWNrZXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6VGlja2V0U3RhdHVzTGluazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihUaWNrZXRTdGF0ZVVwZGF0ZXxUaWNrZXRUeXBlVXBkYXRlKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjNDAwLUxpbmtlZFRpY2tldFVwZGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5VcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6TGlua2VkVGlja2V0VXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KENvbmZpZ0l0ZW1VcGRhdGV8Q29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZSk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua1R5cGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6VGlja2V0VHlwZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlR5cGUiIFZhbHVlUmVnZXg9IiI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlR5cGUiIFZhbHVlUmVnZXg9IiI+SW5jaWRlbnQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua1N0YXR1czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPlByb2R1Y3Rpb248L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpJbmNpZGVudFN0YXRlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaWRlbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5XYXJuaW5nPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+T3BlcmF0aW9uYWw8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpMaW5rVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua1N0YXR1czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZWxldmFudFRvIj5JbmNpZGVudDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI0NNREJOb3RpZmljYXRpb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+Q01EQk5vdGlmaWNhdGlvbnM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4wIDQgKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpJVFNNOjpDb25maWdJdGVtOjpDcmVhdGVDb25kaXRpb25hbFRpY2tldHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZ1bmN0aW9uIj5FeGVjdXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXhpbXVtUGFyYWxsZWxJbnN0YW5jZXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmFtcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ01EQk5vdGlmaWNhdGlvbnM6OlJ1bGVzIyMjMDAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtOjpOb3RpZmljYXRpb25FdmVudDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+TGljZW5zZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Qcm9kdWN0aW9uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+SVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPi0zMGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPk1pc2M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+VGhlIGxpY2Vuc2UgJmx0O09UT0JPX0NPTkZJR0lURU1fTkFNRSZndDsgcnVucyBvdXQgaW4gMzAgZGF5cyAoJmx0O09UT0JPX0NPTkZJR0lURU1fREFURSZndDspLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkxpY2Vuc2UgUmVuZXdhbDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwOCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwOSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxOCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxOSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAyMCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMyMDAtTGljZW5zZVVwZGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkNvdW50TGljZW5zZUxpbmtzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KERlcGxveW1lbnRTdGF0ZVVwZGF0ZXxDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlX3xEZWxldGUpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/GenericInterface/Event/ObjectType/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkV2ZW50OjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RXZlbnQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtIC0gR2VuZXJpY0ludGVyZmFjZSBldmVudCBkYXRhIGhhbmRsZXIKCj1oZWFkMSBTWU5PUFNJUwoKVGhpcyBldmVudCBoYW5kbGVyIGdhdGhlcnMgZGF0YSBmcm9tIG9iamVjdHMuCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBEYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgQ29uZmlnSXRlbUlEISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE9iamVjdERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICBTaWxlbnQgICAgICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAleyRPYmplY3REYXRhfTsKfQoKMTsK</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/Common.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwp1c2UgU3RvcmFibGUgICAgIHF3KGRjbG9uZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW06OkNvbW1vbiAtIGNvbW1vbiBJbnZva2VyIGZ1bmN0aW9ucwoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgY29tbW9uIGZ1bmN0aW9ucyBmb3IgQ29uZmlnSXRlbXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uOwoKICAgIG15ICRDb25maWdJdGVtQ29tbW9uT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCAgICAgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgICAgIEludm9rZXIgICAgICAgICAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsICMgZXhhbXBsZQogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IEludm9rZXIgV2Vic2VydmljZUlEICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWItc2VydmljZS4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPlByZXBhcmVSZXF1ZXN0KAogICAgICAgIERhdGEgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICB9LAogICAgKTsKClJlc3VsdCBleGFtcGxlOgoKICAgIHsKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgID0+ICdDSUNsYXNzJywKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgPT4gJ1NvbWUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSA9PiAnREZWYWx1ZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBMYXN0VmVyc2lvbklEICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdDb25maWdJdGVtTmFtZScsCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgID0+IDQ1NiwKICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW0uTWlzc2luZ0RhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFNlbGYtPntJbnZva2VyfSAuICI6IFRoZSByZXF1ZXN0IGRhdGEgaXMgaW52YWxpZCEiLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtLk1pc3NpbmdDb25maWdJdGVtSUQnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFNlbGYtPntJbnZva2VyfSAuICI6IENvbmZpZ0l0ZW1JRCBpcyByZXF1aXJlZCEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBDb25maWdJdGVtSUQKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfTsKCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbS5NaXNzaW5nQ29uZmlnSXRlbUlEJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRTZWxmLT57SW52b2tlcn0gLiAiOiBVc2VyIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBjb25maWcgaXRlbSEiLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtLkFjY2Vzc0RlbmllZCcsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkU2VsZi0+e0ludm9rZXJ9IC4gIjogVXNlciBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgY29uZmlnIGl0ZW0hIiwKICAgICAgICApOwogICAgfQoKICAgIG15IEBBdHRhY2htZW50RGF0YTsKICAgIG15IEBDb25maWdJdGVtQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRGaWxlbmFtZSAoQENvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCkgewogICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJEZpbGVuYW1lOwogICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIE9ubHlNeUJhY2tlbmQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50KTsKCiAgICAgICAgIyB1c2UgJ3V0ZjgnIGluc3RlYWQgb2YgJ3V0Zi04JwogICAgICAgICMgYmVjYXVzZSBPcGVyYXRpb24gVGlja2V0Q3JlYXRlL1RpY2tldFVwZGF0ZQogICAgICAgICMgY3VycmVudGx5IGRvZXMgbm90IGFjY2VwdCAndXRmLTgnCiAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gc3t1dGYtOH17dXRmOH07CgogICAgICAgICMgY29udmVydCBjb250ZW50IHRvIGJhc2U2NAogICAgICAgICRBdHRhY2htZW50LT57Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+e0NvbnRlbnR9ICk7CgogICAgICAgICRBdHRhY2htZW50LT57RmlsZW5hbWV9ID0gJEZpbGVuYW1lOwogICAgICAgICRBdHRhY2htZW50LT57TWltZVR5cGV9ID0gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CiAgICAgICAgJEF0dGFjaG1lbnQtPntNaW1lVHlwZX0gPX4gc3sgWyw7XSBbIF0qIGNoYXJzZXQ9IC4rIFx6IH17fXhtc2k7CgogICAgICAgICMgcmVtb3ZlIGVtcHR5IGF0dHJpYnV0ZXMKICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJEF0dGFjaG1lbnQtPiUqICkgewogICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAkQXR0cmlidXRlIGVxICdDb250ZW50VHlwZSc7CiAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICRBdHRyaWJ1dGUgZXEgJ0NvbnRlbnQnOwogICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiBJc1N0cmluZ1dpdGhEYXRhKCAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9ICk7CiAgICAgICAgICAgIGRlbGV0ZSAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9OwogICAgICAgIH0KCiAgICAgICAgcHVzaCBAQXR0YWNobWVudERhdGEsICRBdHRhY2htZW50OwogICAgfQoKICAgICMgYWRkIGF0dGFjaG1lbnRzIHdpdGggb2xkIHN0cnVjdHVyZQogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxAQXR0YWNobWVudERhdGEgKSApIHsKICAgICAgICAkQ29uZmlnSXRlbURhdGEtPntBdHRhY2htZW50fSA9IFxAQXR0YWNobWVudERhdGE7CiAgICB9CgogICAgIyByZXBsYWNlIGNvbmZpZyBpdGVtIHZhbHVlcyB3aXRoIHJlYWRhYmxlIHZhbHVlcwogICAgJENvbmZpZ0l0ZW1EYXRhID0gJFNlbGYtPl9UcmFuc2l0aW9uRHluYW1pY0ZpZWxkRGF0YSgKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtRGF0YSwKICAgICk7CgogICAgJFNlbGYtPntSZXF1ZXN0RGF0YX0gPSBcJVBhcmFtOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLAogICAgfTsKfQoKPWhlYWQyIEhhbmRsZVJlc3BvbnNlKCkKCmhhbmRsZSByZXNwb25zZSBkYXRhIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWItc2VydmljZS4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPkhhbmRsZVJlc3BvbnNlKAogICAgICAgIFJlc3BvbnNlU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAjIHN1Y2Nlc3Mgc3RhdHVzIG9mIHRoZSByZW1vdGUgd2ViLXNlcnZpY2UKICAgICAgICBSZXNwb25zZUVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIHdlYi1zZXJ2aWNlIGVycm9yCiAgICAgICAgRGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICcnLCAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAjIGRhdGEgcGF5bG9hZCBhZnRlciBJbnZva2VyCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIEhhbmRsZVJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gdGhlIHJlc3BvbnNlLCBmb3J3YXJkIGl0CiAgICBpZiAoICEkUGFyYW17UmVzcG9uc2VTdWNjZXNzfSAmJiAhJFBhcmFte0RhdGF9ICkgewogICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtSZXNwb25zZUVycm9yTWVzc2FnZX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbS5SZXNwb25zZUVycm9yJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkU2VsZi0+e0ludm9rZXJ9CiAgICAgICAgICAgICAgICAgICAgLiAiOiBHb3QgcmVzcG9uc2UgZXJyb3IsIGJ1dCBubyByZXNwb25zZSBlcnJvciBtZXNzYWdlISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFBhcmFte1Jlc3BvbnNlRXJyb3JNZXNzYWdlfSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJFBhcmFte0RhdGF9LAogICAgfTsKfQoKPWhlYWQyIFJldHVybkVycm9yKCkKCmhlbHBlciBmdW5jdGlvbiB0byByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4KCiAgICBteSAkUmV0dXJuID0gJENvbW1vbk9iamVjdC0+UmV0dXJuRXJyb3IoCiAgICAgICAgRXJyb3JDb2RlICAgID0+IENvbmZpZ0l0ZW0uQWNjZXNzRGVuaWVkLAogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnWW91IGRvbnQgaGF2ZSByaWdodHMgdG8gYWNjZXNzIHRoaXMgdGlja2V0JywKICAgICk7Cgo9Y3V0CgpzdWIgUmV0dXJuRXJyb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+e0RlYnVnZ2VyT2JqZWN0fS0+RXJyb3IoCiAgICAgICAgU3VtbWFyeSA9PiAkUGFyYW17RXJyb3JDb2RlfSwKICAgICAgICBEYXRhICAgID0+ICRQYXJhbXtFcnJvck1lc3NhZ2V9LAogICAgKTsKCiAgICAjIHJldHVybiBzdHJ1Y3R1cmUKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkUGFyYW17RXJyb3JDb2RlfTogJFBhcmFte0Vycm9yTWVzc2FnZX0iLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAkUGFyYW17RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUGFyYW17RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKfQoKc3ViIF9UcmFuc2l0aW9uRHluYW1pY0ZpZWxkRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAoKSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtfSApOwoKICAgIG15ICVDb25maWdJdGVtRGF0YSA9ICgKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPiUqLAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIEtFWToKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVDb25maWdJdGVtRGF0YSApIHsKCiAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRDb25maWdJdGVtRGF0YXskS2V5fTsKCiAgICAgICAgaWYgKCAkS2V5ID1+IC9eRHluYW1pY0ZpZWxkXyguKikkLyApIHsKICAgICAgICAgICAgbXkgJEZpZWxkTmFtZSAgID0gJDE7CiAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRSZWFkYWJsZVZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlJlYWRhYmxlVmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXskS2V5fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFJlYWRhYmxlVmFsdWUpICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EYXRheyRLZXl9ID0gJFJlYWRhYmxlVmFsdWUtPntWYWx1ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlQ29uZmlnSXRlbURhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemCreate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uICgpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtQ3JlYXRlIEludm9rZXIgYmFja2VuZAoKPWhlYWQxIERFU0NSSVBUSU9OCgpDb250YWlucyBmdW5jdGlvbnMgZm9yIENvbmZpZ0l0ZW1DcmVhdGUuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCBJbnZva2VyICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldyggJXskU2VsZn0gKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9LT5QcmVwYXJlUmVxdWVzdCglUGFyYW0pOwp9CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPntDb25maWdJdGVtQ29tbW9uT2JqZWN0fS0+SGFuZGxlUmVzcG9uc2UoJVBhcmFtKTsKfQoKc3ViIEhhbmRsZUVycm9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT57Q29uZmlnSXRlbUNvbW1vbk9iamVjdH0tPkhhbmRsZVJlc3BvbnNlKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZXNwb25zZVN1Y2Nlc3MgPT4gMCwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemFetch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUZldGNoOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhwYWlycyk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1GZXRjaCAtIEdlbmVyaWNJbnRlcmZhY2UgZm9yIElUU00gQ29uZmlnSXRlbXMKCj1oZWFkMSBTWU5PUFNJUwoKR2VuZXJpY0ludGVyZmFjZSBmb3IgSVRTTSBDb25maWdJdGVtcwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBwYXJhbXMKICAgIGZvciBteSAkTmVlZGVkICgKICAgICAgICBxdyhEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgSW52b2tlcikKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT57JE5lZWRlZH0gPSAkUGFyYW17JE5lZWRlZH07CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWIgc2VydmljZS4KVGhpcyB3aWxsIGp1c3QgcmV0dXJuIHRoZSBkYXRhIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCgogICAgbXkgJFJlc3VsdCA9ICRJbnZva2VyT2JqZWN0LT5QcmVwYXJlUmVxdWVzdCgKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUHJlcGFyZVJlcXVlc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+IElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSA/ICRQYXJhbXtEYXRhfSA6IHt9LAogICAgfTsKfQoKPWl0ZW0gSGFuZGxlUmVzcG9uc2UoKQoKaGFuZGxlIHJlc3BvbnNlIGRhdGEgb2YgdGhlIGNvbmZpZ3VyZWQgcmVtb3RlIHdlYiBzZXJ2aWNlLgpUaGlzIHdpbGwganVzdCByZXR1cm4gdGhlIGRhdGEgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPkhhbmRsZVJlc3BvbnNlKAogICAgICAgIFJlc3BvbnNlU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAjIHN1Y2Nlc3Mgc3RhdHVzIG9mIHRoZSByZW1vdGUgd2ViIHNlcnZpY2UKICAgICAgICBSZXNwb25zZUVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIHdlYiBzZXJ2aWNlIGVycm9yCiAgICAgICAgRGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICcnLCAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAjIGRhdGEgcGF5bG9hZCBhZnRlciBJbnZva2VyCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIEhhbmRsZVJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gdGhlIHJlc3BvbnNlLCBmb3J3YXJkIGl0CiAgICBpZiAoICEkUGFyYW17UmVzcG9uc2VTdWNjZXNzfSApIHsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5FcnJvcigKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRQYXJhbXtSZXNwb25zZUVycm9yTWVzc2FnZX0gfHwgJ1Vua25vd24gRXJyb3InLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCByZWYgJFBhcmFte0RhdGF9IG5lICdIQVNIJyAmJiByZWYgJFBhcmFte0RhdGF9IG5lICdBUlJBWScgKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiSW52YWxpZCBzdHJ1Y3R1cmUgZm9yIHBhcmFtZXRlciAnRGF0YScuIiwKICAgICAgICApOwogICAgfQoKICAgICMgTm90aGluZyB0byBkby4KICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSAmJiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlN1Y2Nlc3MoCiAgICAgICAgICAgIERhdGEgPT4gJFBhcmFte0RhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyByZW1vdmUgdG9wbGV2ZWwgQ29uZmlnSXRlbXMgaWYgbm90IGdpdmVuIGFzIGRpcmVjdCBhcnJheQogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgJiYgJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1zfSApIHsKICAgICAgICAkUGFyYW17RGF0YX0gPSAkUGFyYW17RGF0YX17Q29uZmlnSXRlbXN9OwogICAgfQoKICAgICMgdHJhbnNmb3JtIHRvIGFycmF5IHJlZmVyZW5jZQogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgKSB7CiAgICAgICAgJFBhcmFte0RhdGF9ID0gWyAkUGFyYW17RGF0YX0gXTsKICAgIH0KCiAgICAjIGdldCB3ZWJzZXJ2aWNlIGNvbmZpZ3VyYXRpb24KICAgIG15ICRXZWJzZXJ2aWNlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZUdldCgKICAgICAgICBJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgICMgZ2V0IGludm9rZXIgY29uZmlnCiAgICBteSAkSW52b2tlckNvbmZpZyA9ICRXZWJzZXJ2aWNlLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkU2VsZi0+e0ludm9rZXJ9IH07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICVDSUNsYXNzTWFwcGluZyA9ICgKICAgICAgICBJbmNpZGVudFN0YXRlICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIERlcGxveW1lbnRTdGF0ZSA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgbXkgJUdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cDsKICAgIG15ICVOYW1lTW9kdWxlT2JqZWN0czsKICAgIENJOgogICAgZm9yIG15ICRSZW1vdGVDSURhdGEgKCBAeyAkUGFyYW17RGF0YX0gfSApIHsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFJlbW90ZUNJRGF0YSkgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgcmVtb3RlIENJIHN0cnVjdHVyZSBmb3VuZC4gU2tpcHBpbmcgaXRlbS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICB9CgogICAgICAgIG15IEBSZXF1aXJlZEF0dHJpYnV0ZXMgPSBxdyhDbGFzcyBEZXBsb3ltZW50U3RhdGUgSW5jaWRlbnRTdGF0ZSk7CiAgICAgICAgbXkgJVJlcXVpcmVkQXR0cmlidXRlczsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAoIHNvcnQgQFJlcXVpcmVkQXR0cmlidXRlcyApIHsKCiAgICAgICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRSZW1vdGVDSURhdGEtPnskTmVlZGVkfSApICkgewoKICAgICAgICAgICAgICAgIG15ICROb3RpY2VJbmZvID0gJFJlbW90ZUNJRGF0YS0+e051bWJlcn0gPyAiTnVtYmVyOiAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfTsiIDogJyc7CiAgICAgICAgICAgICAgICAkTm90aWNlSW5mbyAuPSAkUmVtb3RlQ0lEYXRhLT57TmFtZX0gPyAiTmFtZTogJFJlbW90ZUNJRGF0YS0+e05hbWV9OyIgOiAnJzsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTWlzc2luZyAnJE5lZWRlZCcgcGFyYW1ldGVyIGZvciBjcmVhdGluZy91cGRhdGluZyBhIENJLiBTa2lwcGluZyBpdGVtLiAkTm90aWNlSW5mbyIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRSZXF1aXJlZEF0dHJpYnV0ZXN7JE5lZWRlZH0gPSAkUmVtb3RlQ0lEYXRhLT57JE5lZWRlZH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCBJRHMgZm9yIENsYXNzLCBEZXBsLSBhbmQgSW5jaVN0YXRlCiAgICAgICAgZm9yIG15ICRDdXJyZW50Q0kgKCBzb3J0IGtleXMgJUNJQ2xhc3NNYXBwaW5nICkgewoKICAgICAgICAgICAgIyBjcmVhdGUvZ2V0IGxvb2t1cCBmb3IgZ2VuZXJhbCBjYXRhbG9nIGl0ZW1zCiAgICAgICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ0l0ZW07CiAgICAgICAgICAgIGlmICggJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9ICkgewogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW1Mb29rdXB7ICRDSUNsYXNzTWFwcGluZ3skQ3VycmVudENJfSB9LT57ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICFJc0hhc2hSZWZXaXRoRGF0YSgkR2VuZXJhbENhdGFsb2dJdGVtKQogICAgICAgICAgICAgICAgICAgIHx8ICFJc1N0cmluZ1dpdGhEYXRhKCAkR2VuZXJhbENhdGFsb2dJdGVtLT57SXRlbUlEfSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciB3aGlsZSBsb29raW5nIHVwICRDdXJyZW50Q0kgJyRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0nLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFkZCB0byBsb29rdXAKICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ0l0ZW1Mb29rdXB7ICRDSUNsYXNzTWFwcGluZ3skQ3VycmVudENJfSB9LT57ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0gfSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFJlcXVpcmVkQXR0cmlidXRlc3sgJEN1cnJlbnRDSSAuICdJRCcgfSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbGF0ZXN0IGRlZmluaXRpb24gZm9yIHRoZSBjbGFzcwogICAgICAgIG15ICRDbGFzc0lEID0gJFJlbW90ZUNJRGF0YS0+e0NsYXNzSUR9OwogICAgICAgIGlmICggISRDbGFzc0lEICkgewogICAgICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAkQ2xhc3NMaXN0LT4lKjsKICAgICAgICAgICAgJENsYXNzSUQgPSAkUmV2ZXJzZUNsYXNzTGlzdHsgJFJlbW90ZUNJRGF0YS0+e0NsYXNzfSB9OwogICAgICAgIH0KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgdmFsaWRhdGUgZHluYW1pYyBmaWVsZHMKICAgICAgICBEQVRBOgogICAgICAgIGZvciBteSAkRGF0YSAoIHBhaXJzICRSZW1vdGVDSURhdGEtPiUqICkgewogICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gJERhdGEtPkAqOwoKICAgICAgICAgICAgbmV4dCBEQVRBIHVubGVzcyAoICRLZXkgPX4gL15EeW5hbWljRmllbGRfLyApOwoKICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eRHluYW1pY0ZpZWxkXyg/PFBsYWluRmllbGROYW1lPltBLVphLXowLTktXSspLyApIHsKICAgICAgICAgICAgICAgIG15ICRQbGFpbkZpZWxkTmFtZSA9ICQre1BsYWluRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGlzIGluIGNsYXNzIGRlZmluaXRpb24KICAgICAgICAgICAgICAgIGlmICggISREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskUGxhaW5GaWVsZE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiRHluYW1pY0ZpZWxkLT5OYW1lIHBhcmFtZXRlciBpcyBpbnZhbGlkLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGNvbmZpZwogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskUGxhaW5GaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgICMgdmFsaWRhdGUgdmFsdWUKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIHN0cnVjdHVyZXMgYXJlIHN0cmluZyBhbmQgYXJyYXksIG5vIGRhdGEgaW5zaWRlIGlzIG5lZWRlZAogICAgICAgICAgICAgICAgICAgIGlmICggIUlzU3RyaW5nKCRWYWx1ZSkgJiYgcmVmICRWYWx1ZSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkVmFsaWRhdGVWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggISRWYWxpZGF0ZVZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJEeW5hbWljRmllbGQtPlZhbHVlIHBhcmFtZXRlciBpcyBpbnZhbGlkLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkSWRlbnRpZmllciA9ICRJbnZva2VyQ29uZmlnLT57ICdJZGVudGlmaWVyJyAuICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0gfTsKICAgICAgICBpZiAoICEkSWRlbnRpZmllciApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOb3QgaW1wb3J0aW5nIGl0ZW1zIGluIGNsYXNzICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9IC0gc2tpcHBpbmcuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhpcyBpdGVtIGV4aXN0cyAodXBkYXRlKSBvciBpcyBuZXcgKGNyZWF0ZSkKICAgICAgICBteSAkQ29uZmlnSXRlbUlEOwogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAjIHByZXBhcmUgc2VhcmNoCiAgICAgICAgbXkgJVNlYXJjaFBhcmFtID0gKAogICAgICAgICAgICBSZXN1bHQgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgICAgICBRdWVyeUNvbmRpdGlvbiA9PiAwLAogICAgICAgICk7CiAgICAgICAgQVRUUklCVVRFOgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggJElkZW50aWZpZXItPkAqICkgewogICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgPX4gL15EeW4vICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFteyRBdHRyaWJ1dGV9ID0gewogICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUmVtb3RlQ0lEYXRhLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnQ2xhc3NlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17Q2xhc3Nlc30gPSBbICRSZW1vdGVDSURhdGEtPntDbGFzc30gXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ05hbWUnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte05hbWV9ID0gJFJlbW90ZUNJRGF0YS0+e05hbWV9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnRGVwbFN0YXRlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17RGVwbFN0YXRlc30gPSBbICRSZW1vdGVDSURhdGEtPntEZXBsb3ltZW50U3RhdGV9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdOdW1iZXInICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfTsKCiAgICAgICAgICAgICAgICBsYXN0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0NvbmZpZ0l0ZW1JRCcgKSB7CiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVtb3RlQ0lEYXRhLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm90IGltcG9ydGluZyBpdGVtcyBpbiBjbGFzcyAkUmVxdWlyZWRBdHRyaWJ1dGVze0NsYXNzfSAtIHNraXBwaW5nLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlEID0gJFJlbW90ZUNJRGF0YS0+e0NvbmZpZ0l0ZW1JRH07CgogICAgICAgICAgICAgICAgbGFzdCBBVFRSSUJVVEU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSAkQXR0cmlidXRlIGFzIElkZW50aWZpZXIgLSBza2lwcGluZy4iLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IENJOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5laXRoZXIgTnVtYmVyIG5vciBJRCBhcmUgcHJvdmlkZWQgZGlyZWN0bHksIHBlcmZvcm0gYSB0aGUgc2VhcmNoCiAgICAgICAgaWYgKCRDb25maWdJdGVtTnVtYmVyKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFJlbW90ZUNJRGF0YS0+e051bWJlcn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goJVNlYXJjaFBhcmFtKTsKCiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbUlEc1swXTsKCiAgICAgICAgICAgIGlmICggc2NhbGFyIEBDb25maWdJdGVtSURzID4gMSApIHsKICAgICAgICAgICAgICAgIG15ICRTZWFyY2hQYXJhbWV0ZXJzID0gam9pbiggJzsnLCBtYXAgeyIkXyA9PiAkU2VhcmNoUGFyYW17JF99In0ga2V5cyAlU2VhcmNoUGFyYW0gKTsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSBhbWJpZ3VvcyBzZWFyY2ggcmVzdWx0IC0gc2tpcHBpbmcuIFBhcmFtZXRlcnM6ICRTZWFyY2hQYXJhbWV0ZXJzOyIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9LAogICAgICAgICk7CiAgICAgICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlcy0+e05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXMtPntOYW1lTW9kdWxlfVswXSA6ICcnOwogICAgICAgIGlmICgkTmFtZU1vZHVsZSkgewogICAgICAgICAgICBpZiAoICEkTmFtZU1vZHVsZU9iamVjdHN7ICRSZW1vdGVDSURhdGEtPntDbGFzc30gfSApIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JyAuICROYW1lTW9kdWxlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgICAgICAkTmFtZU1vZHVsZU9iamVjdHN7ICRSZW1vdGVDSURhdGEtPntDbGFzc30gfSA9ICRLZXJuZWw6Ok9NLT5HZXQoICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OicgLiAkTmFtZU1vZHVsZSApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICAgICAgZGVsZXRlICRSZW1vdGVDSURhdGEtPntOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRSZW1vdGVDSURhdGEtPntOYW1lfSA9ICROYW1lTW9kdWxlT2JqZWN0c3sgJFJlbW90ZUNJRGF0YS0+e0NsYXNzfSB9LT5Db25maWdJdGVtTmFtZUNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAkUmVtb3RlQ0lEYXRhLT4lKiwKICAgICAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7SW5jaWRlbnRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCAmJiAhJFJlbW90ZUNJRGF0YS0+e05hbWV9ICkgewogICAgICAgICAgICBteSAkTm90aWNlSW5mbyA9ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9ID8gIk51bWJlcjogJFJlbW90ZUNJRGF0YS0+e051bWJlcn07IiA6ICcnOwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJNaXNzaW5nICdOYW1lJyBwYXJhbWV0ZXIgZm9yIGNyZWF0aW5nIGEgQ0kuIFNraXBwaW5nIGl0ZW0uICROb3RpY2VJbmZvIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgfQoKICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tJbmNpZGVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJFcnJvciB3aGlsZSB1cGRhdGluZyBDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tEZXBsb3ltZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICA9PiAkUmVxdWlyZWRBdHRyaWJ1dGVze0luY2lkZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3Igd2hpbGUgY3JlYXRpbmcgQ0kgd2l0aCBOYW1lICckUmVxdWlyZWRBdHRyaWJ1dGVze05hbWV9JywgQ2xhc3MgJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9JyAoQ2xhc3NJRDogJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0nKS4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPlN1Y2Nlc3MoCiAgICAgICAgRGF0YSA9PiAkUGFyYW17RGF0YX0sCiAgICApOwp9Cgo9aXRlbSBFcnJvcigpCgpXcml0ZSBlcnJvciBtZXNzYWdlIHRvIE9UT0JPIGxvZyBhbmQgcmV0dXJuIGV4aXQgc3RydWN0dXJlLgoKICAgIG15ICRFeGl0U3RydWN0dXJlID0gJENvbW1vbk9iamVjdC0+RXJyb3IoCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICdhbiBlcnJvciBtZXNzYWdlJywKICAgICk7CgpyZXR1cm5zCgogICAgJEV4aXRTdHJ1Y3R1cmUgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdhbiBlcnJvciBtZXNzYWdlJywKICAgIH07Cgo9Y3V0CgpzdWIgRXJyb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciBpbiAnIiAuICRTZWxmLT57SW52b2tlcn0KICAgICAgICAgICAgLiAiJyBJbnZva2VyIChXZWJzZXJ2aWNlSUQ6ICIgLiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0gLiAiKToiCiAgICAgICAgICAgIC4gJFBhcmFte0Vycm9yTWVzc2FnZX0sCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRQYXJhbXtFcnJvck1lc3NhZ2V9LAogICAgfTsKfQoKPWl0ZW0gU3VjY2VzcygpCgpXcml0ZSBMYXN0UnVuVGltZXN0YW1wIGNhY2hlIGVudHJ5IGFuZCByZXR1cm4gZXhpdCBzdHJ1Y3R1cmUuCgogICAgbXkgJEV4aXRTdHJ1Y3R1cmUgPSAkQ29tbW9uT2JqZWN0LT5TdWNjZXNzKAogICAgICAgIERhdGEgPT4gJFJldHVybkRhdGEsCiAgICApOwoKcmV0dXJucwoKICAgICRFeGl0U3RydWN0dXJlID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+ICRSZXR1cm5EYXRhLAogICAgfTsKCj1jdXQKCnN1YiBTdWNjZXNzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExhc3RSdW5UaW1lc3RhbXAgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKS0+VG9TdHJpbmcoKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIEtleSAgID0+ICdHZW5lcmljSW50ZXJmYWNlOjpJVFNNOjpDb25maWdJdGVtOjonIC4gJFNlbGYtPntJbnZva2VyfSAuICc6Okxhc3RSdW5UaW1lc3RhbXAnLAogICAgICAgIFZhbHVlID0+ICRMYXN0UnVuVGltZXN0YW1wLAogICAgICAgIFR5cGUgID0+ICdJVFNNQ2hhbmdlSXRlbVdlYnNlcnZpY2UnIC4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAyNCAqIDcsCiAgICApOwoKICAgICMgbG9nIGNvbXBsZXRpb24KICAgICRTZWxmLT57RGVidWdnZXJPYmplY3R9LT5EZWJ1ZygKICAgICAgICBTdW1tYXJ5ID0+ICdTdWNjZXNzZnVsbHkgY29tcGxldGVkLicsCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJFBhcmFte0RhdGF9LAogICAgfTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RPQk8gcHJvamVjdCAoTDxodHRwczovL290b2JvLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uICgpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb25maWdJdGVtVXBkYXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtVXBkYXRlIEludm9rZXIgYmFja2VuZAoKPWhlYWQxIERFU0NSSVBUSU9OCgpDb250YWlucyBmdW5jdGlvbnMgZm9yIENvbmZpZ0l0ZW1VcGRhdGUuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCBJbnZva2VyICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldyggJXskU2VsZn0gKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9LT5QcmVwYXJlUmVxdWVzdCglUGFyYW0pOwp9CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPntDb25maWdJdGVtQ29tbW9uT2JqZWN0fS0+SGFuZGxlUmVzcG9uc2UoJVBhcmFtKTsKfQoKc3ViIEhhbmRsZUVycm9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT57Q29uZmlnSXRlbUNvbW1vbk9iamVjdH0tPkhhbmRsZVJlc3BvbnNlKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZXNwb25zZVN1Y2Nlc3MgPT4gMCwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/Elasticsearch/ConfigItemManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6RWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbU1hbmFnZW1lbnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBNSU1FOjpCYXNlNjQgcXcoZW5jb2RlX2Jhc2U2NCk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXcoOmFsbCk7CnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkVsYXN0aWNzZWFyY2g6Ok1hbmFnZW1lbnRDb21tb24gcXcoUmVtb3ZlRVNXZWlnaHRlZFNlYXJjaEJvb3N0U3VmZml4KTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50Cgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBjaGVjayBuZWVkZWQgcGFyYW1zIGFuZCBzdG9yZSB0aGVtIGluICRTZWxmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvRGVidWdnZXJPYmplY3QgV2Vic2VydmljZUlELykgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWIgc2VydmljZS4KVGhpcyB3aWxsIGp1c3QgcmV0dXJuIHRoZSBkYXRhIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCgogICAgbXkgJFJlc3VsdCA9ICRJbnZva2VyT2JqZWN0LT5QcmVwYXJlUmVxdWVzdCgKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUHJlcGFyZVJlcXVlc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgZm9yIG15ICROZWVkZWQgKHF3L0V2ZW50IENvbmZpZ0l0ZW1JRC8pIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGRvIG5vdGhpbmcgaWYgQ29uZmlnSXRlbXMgYXJlIG5vdCBjb25maWd1cmVkCiAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TdG9yZUZpZWxkcycpICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSBhbGwgZXZlbnRzIHdoaWNoIGFyZSBuZWl0aGVyIHVwZGF0ZSBub3IgY3JlYXRpb24gZmlyc3QKCiAgICAjIGRlbGV0ZSB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICggJFBhcmFte0RhdGF9e0V2ZW50fSBlcSAnQ29uZmlnSXRlbURlbGV0ZScgKSB7CiAgICAgICAgbXkgJUNvbnRlbnQgPSAoCiAgICAgICAgICAgIHF1ZXJ5ID0+IHsKICAgICAgICAgICAgICAgIHRlcm0gPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJ19kZWxldGVfYnlfcXVlcnknLAogICAgICAgICAgICAgICAgaWQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgJUNvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHB1dCBhIHNpbmdsZSB0ZW1wb3JhcnkgYXR0YWNobWVudCBpbnRvIGEgcXVldWUKICAgICMgbW9yZSB0aGFuIG9uZSBhdHRhY2hlbWVudCBjb3VsZCBiZSBwdXQgcGVyIGNhbGwsIGJ1dCB0aGlzIHdvdWxkIG1ha2UgZXJyb3IgaGFuZGxpbmcgaGFyZGVyCiAgICBpZiAoICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ1B1dFRNUEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBmaWxlIGZvcm1hdCB0byBiZSBpbmdlc3RlZAogICAgICAgIG15ICRGaWxlRm9ybWF0ID0gJENvbmZpZ09iamVjdC0+R2V0KCdFbGFzdGljc2VhcmNoOjpJbmdlc3RBdHRhY2htZW50Rm9ybWF0Jyk7CiAgICAgICAgbXkgJUZvcm1hdEhhc2ggPSBtYXAgeyAkXyA9PiAxIH0gQHskRmlsZUZvcm1hdH07CgogICAgICAgIG15ICRNYXhGaWxlc2l6ZSA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6SW5nZXN0TWF4RmlsZXNpemUnKTsKICAgICAgICBteSAkRmlsZW5hbWUgICAgPSAkUGFyYW17RGF0YX17RmlsZW5hbWV9OwogICAgICAgIG15ICRDb250ZW50VHlwZSA9ICRQYXJhbXtEYXRhfXtDb250ZW50VHlwZX07CiAgICAgICAgbXkgJEZpbGVzaXplICAgID0gJFBhcmFte0RhdGF9e0ZpbGVzaXplfTsKCiAgICAgICAgIyBpbmdlc3QgYXR0YWNobWVudCBvbmx5IGlmIGZpbGVzaXplIGxlc3MgdGhhbiBkZWZpbmVkIGluIHN5c2NvbmZpZwogICAgICAgIGlmICggJEZpbGVzaXplID4gJE1heEZpbGVzaXplICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSAoJFR5cGVGb3JtYXQpID0gJENvbnRlbnRUeXBlID1+IG0vXi4qP1wvKFtcZFx3XSspLzsKICAgICAgICBteSAoJE5hbWVGb3JtYXQpID0gJEZpbGVuYW1lICAgID1+IG0vXC4oW1xkXHddKykkLzsKCiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgaWYgKCAkRm9ybWF0SGFzaHskVHlwZUZvcm1hdH0gfHwgJEZvcm1hdEhhc2h7JE5hbWVGb3JtYXR9ICkgewogICAgICAgICAgICBteSAkRW5jb2RlZCA9IGVuY29kZV9iYXNlNjQoICRQYXJhbXtEYXRhfXtDb250ZW50fSApOwogICAgICAgICAgICAkRW5jb2RlZCA9fiBzL1xuLy9nOwogICAgICAgICAgICAkRGF0YXtmaWxlbmFtZX0gPSAkRmlsZW5hbWU7CiAgICAgICAgICAgICREYXRhe2RhdGF9ICAgICA9ICRFbmNvZGVkOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBub3QgYSB2YWxpZCBmaWxlIHR5cGUKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTdG9wQ29tbXVuaWNhdGlvbiA9PiAxLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIGRvY2FwaSAgICAgID0+ICdfZG9jJywKICAgICAgICAgICAgICAgIHBhdGggICAgICAgID0+ICdBdHRhY2htZW50cycsICAgICMgYWN0dWFsbHkgdGhlIHBpcGVsaW5lCiAgICAgICAgICAgICAgICBpZCAgICAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzID0+IFsgXCVEYXRhIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSB0aGUgcmVndWxhciB1cGRhdGluZyBhbmQgY3JlYXRpb24KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGF0dGFjaG1lbnQgbWFuYWdlbWVudAogICAgaWYgKCAkUGFyYW17RGF0YX17RXZlbnR9IGVxICdBdHRhY2htZW50QWRkUG9zdCcgKSB7CiAgICAgICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CgogICAgICAgICMgY3JlYXRlIGEgdGVtcG9yYXJ5IGluZGV4IHRvICJpbmdlc3QiIHRoZSBhdHRhY2htZW50CiAgICAgICAgbXkgJFJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgSW52b2tlciAgICAgID0+ICdDb25maWdJdGVtSW5nZXN0QXR0YWNobWVudCcsCiAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAwLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJXsgJFBhcmFte0RhdGF9IH0sCiAgICAgICAgICAgICAgICBFdmVudCA9PiAnUHV0VE1QQXR0YWNobWVudCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4sIGlmIGF0dGFjaG1lbnQgd2FzIG5vdCBhZGRlZAogICAgICAgIGlmICggISRSZXN1bHQgfHwgISRSZXN1bHQtPntEYXRhfXtfaWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIHNldCBwYXJhbWV0ZXJzCiAgICAgICAgbXkgJVJlcXVlc3QgPSAoCiAgICAgICAgICAgIGlkID0+ICRSZXN1bHQtPntEYXRhfXtfaWR9LAogICAgICAgICk7CiAgICAgICAgbXkgJUFQSSA9ICgKICAgICAgICAgICAgZG9jYXBpID0+ICdfZG9jJywKICAgICAgICApOwogICAgICAgIG15ICVJbmRleE5hbWUgPSAoCiAgICAgICAgICAgIGluZGV4ID0+ICd0bXBhdHRhY2htZW50cycsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXRyaWV2ZSB0aGUgcmVzdWx0IG9mIHRoZSBpbmdlc3QtcGx1Z2luCiAgICAgICAgJFJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgSW52b2tlciAgICAgID0+ICdVdGlsc0luZ2VzdF9HRVQnLAogICAgICAgICAgICBBc3luY2hyb25vdXMgPT4gMCwKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIEluZGV4TmFtZSA9PiBcJUluZGV4TmFtZSwKICAgICAgICAgICAgICAgIFJlcXVlc3QgICA9PiBcJVJlcXVlc3QsCiAgICAgICAgICAgICAgICBBUEkgICAgICAgPT4gXCVBUEksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmVwYXJlIHByb2Nlc3NlZCBkYXRhIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBhdHRhY2htZW50IGFycmF5IG9mIHRoZSBDSQogICAgICAgIG15IEBBdHRhY2htZW50QXJyYXk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50QXR0ciAoIEB7ICRSZXN1bHQtPntEYXRhfXtfc291cmNlfXtBdHRhY2htZW50c30gfSApIHsKICAgICAgICAgICAgbXkgJUF0dGFjaG1lbnQgPSAoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiAkQXR0YWNobWVudEF0dHItPntmaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBDb250ZW50ICA9PiAkQXR0YWNobWVudEF0dHItPnthdHRhY2htZW50fXtjb250ZW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudEFycmF5LCBcJUF0dGFjaG1lbnQ7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgZG9jIGluIHRtcGF0dGFjaG1lbnQKICAgICAgICAkUmVzdWx0ID0gJFJlcXVlc3Rlck9iamVjdC0+UnVuKAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJ1V0aWxzSW5nZXN0X0RFTEVURScsCiAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAwLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgSW5kZXhOYW1lID0+IFwlSW5kZXhOYW1lLAogICAgICAgICAgICAgICAgUmVxdWVzdCAgID0+IFwlUmVxdWVzdCwKICAgICAgICAgICAgICAgIEFQSSAgICAgICA9PiBcJUFQSSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSB0aGUgQ0kgd2l0aCB0aGUgZXh0cmFjdGVkIGRhdGEKICAgICAgICBteSAlQ29udGVudCA9ICgKICAgICAgICAgICAgc2NyaXB0ID0+IHsKICAgICAgICAgICAgICAgIHNvdXJjZSA9PiAnY3R4Ll9zb3VyY2UuQXR0YWNobWVudHMuYWRkQWxsKHBhcmFtcy5uZXcpJywKICAgICAgICAgICAgICAgIHBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgbmV3ID0+IFxAQXR0YWNobWVudEFycmF5LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgZG9jYXBpID0+ICdfdXBkYXRlJywKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICVDb250ZW50LAogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ0F0dGFjaG1lbnREZWxldGVQb3N0JyApIHsKICAgICAgICBteSAkUmVxdWVzdGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInKTsKCiAgICAgICAgIyBzZXQgcGFyYW1ldGVycwogICAgICAgIG15ICVSZXF1ZXN0ID0gKAogICAgICAgICAgICBpZCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICApOwogICAgICAgIG15ICVBUEkgPSAoCiAgICAgICAgICAgIGRvY2FwaSA9PiAnX2RvYycsCiAgICAgICAgKTsKICAgICAgICBteSAlSW5kZXhOYW1lID0gKAogICAgICAgICAgICBpbmRleCA9PiAnY29uZmlnaXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXRyaWV2ZSB0aGUgY3VycmVudCBhdHRhY2htZW50cwogICAgICAgIG15ICRSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICAgICAgICAgIEludm9rZXIgICAgICA9PiAnVXRpbHNJbmdlc3RfR0VUJywKICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+IDAsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBJbmRleE5hbWUgPT4gXCVJbmRleE5hbWUsCiAgICAgICAgICAgICAgICBSZXF1ZXN0ICAgPT4gXCVSZXF1ZXN0LAogICAgICAgICAgICAgICAgQVBJICAgICAgID0+IFwlQVBJLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgcHJlcGFyZSBwcm9jZXNzZWQgZGF0YSB0byBiZSBhcHBlbmRlZCB0byB0aGUgYXR0YWNobWVudCBhcnJheSBvZiB0aGUgQ0kKICAgICAgICBteSBAQXR0YWNobWVudEFycmF5ID0gKCk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFJlc3VsdC0+e0RhdGF9e19zb3VyY2V9e0F0dGFjaG1lbnRzfSB9ICkgewoKICAgICAgICAgICAgIyBzb3J0IG91dCBkZWxldGVkIGF0dGFjaG1lbnQKICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfSBuZSAkUGFyYW17RGF0YX17RmlsZW5hbWV9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudEFycmF5LCBcJXskQXR0YWNobWVudH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVDb250ZW50ID0gKAogICAgICAgICAgICBBdHRhY2htZW50cyA9PiBcQEF0dGFjaG1lbnRBcnJheSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgZG9jYXBpID0+ICdfdXBkYXRlJywKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIGRvYyAgICA9PiBcJUNvbnRlbnQsCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQoKICAgICMgaWdub3JlIGV2ZW50cyBvdGhlciB0aGFuIENvbmZpZ0l0ZW1DcmVhdGUgb3IgQ29uZmlnSXRlbVVwZGF0ZQogICAgaWYgKCAkUGFyYW17RGF0YX17RXZlbnR9ICF+IC9Db25maWdJdGVtQ3JlYXRlfENvbmZpZ0l0ZW1VcGRhdGUvICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSBleGNsdXNpb25zCiAgICBteSAkRXhjbHVkZWRDbGFzc2VzICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdFbGFzdGljc2VhcmNoOjpFeGNsdWRlZENJQ2xhc3NlcycpOwogICAgbXkgJEV4Y2x1ZGVkRGVwbFN0YXRlcyA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6RXhjbHVkZWRDSURlcGxveW1lbnRTdGF0ZXMnKTsKICAgICRFeGNsdWRlZENsYXNzZXMgICAgPSAkRXhjbHVkZWRDbGFzc2VzICAgID8geyBtYXAgeyAkXyA9PiAxIH0gQHskRXhjbHVkZWRDbGFzc2VzfSB9ICAgIDogdW5kZWY7CiAgICAkRXhjbHVkZWREZXBsU3RhdGVzID0gJEV4Y2x1ZGVkRGVwbFN0YXRlcyA/IHsgbWFwIHsgJF8gPT4gMSB9IEB7JEV4Y2x1ZGVkRGVwbFN0YXRlc30gfSA6IHVuZGVmOwoKICAgICMgZGVmaW5lIHRoZSBkZWZhdWx0IEFQSQogICAgbXkgJEFQSSA9ICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ0NvbmZpZ0l0ZW1DcmVhdGUnID8gJ19kb2MnIDogJ191cGRhdGUnOwoKICAgICMgZXhjbHVkZWQgY2xhc3NlcyBhbmQgZGVwbG95bWVudCBzdGF0ZXMKICAgIGlmICggZGVmaW5lZCAkRXhjbHVkZWRDbGFzc2VzIHx8IGRlZmluZWQgJEV4Y2x1ZGVkRGVwbFN0YXRlcyApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gaWYgY2xhc3MgaXMgZXhjbHVkZWQKICAgICAgICBpZiAoIGRlZmluZWQgJEV4Y2x1ZGVkQ2xhc3NlcyAmJiAkRXhjbHVkZWRDbGFzc2VzLT57ICRDb25maWdJdGVtLT57Q2xhc3N9IH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU3RvcENvbW11bmljYXRpb24gPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgaWYgdGhlIERlcGxveW1lbnRTdGF0ZSBpcyBjaGFuZ2VkLCBjaGVjayBpZiB0aGUgY29uZmlnIGl0ZW0gaGFzIHRvIGJlIGNyZWF0ZWQgb3IgZGVsZXRlZCBpbiBFUwogICAgICAgIGlmICggZGVmaW5lZCAkRXhjbHVkZWREZXBsU3RhdGVzICkgewoKICAgICAgICAgICAgIyBhIENJIHdpdGggbm8gb2xkIHN0YXRlIGFuZCBpbiBhIGN1cnJlbnQgZXhjbHVkZWQgc3RhdGUKICAgICAgICAgICAgIyBtZWFucyB0aGF0IHRoZSBDSSBoYXMganVzdCBiZWVuIGNyZWF0ZWQgaW4gdGhhdCBpbml0aWFsIGV4Y2x1ZGVkIHN0YXRlCiAgICAgICAgICAgICMgaW4gdGhhdCBjYXNlIGRvIG5vdGhpbmcgYW5kIGRvIG5vdCBldmVuIGJvdGhlciB0byBtYWtlIGFuIEVTIGNhbGwKICAgICAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9e09sZERlcGxTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRFeGNsdWRlZERlcGxTdGF0ZXMtPnsgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcENvbW11bmljYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFuIG9sZCBzdGF0ZSBhbHJlYWR5IGV4aXN0cwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICRTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgJE9sZERlcGxTdGF0ZSA9ICRTdGF0ZUxpc3QtPnsgJFBhcmFte0RhdGF9e09sZERlcGxTdGF0ZX0gfTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcgaWYgYm90aCB0aGUgb2xkIGFuZCB0aGUgbmV3IHN0YXRlIGFyZSBleGNsdWRlZAogICAgICAgICAgICAgICAgaWYgKCAkRXhjbHVkZWREZXBsU3RhdGVzLT57JE9sZERlcGxTdGF0ZX0gJiYgJEV4Y2x1ZGVkRGVwbFN0YXRlcy0+eyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBTdG9wQ29tbXVuaWNhdGlvbiA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBpZiB0aGUgQ0kgd2FzIG1vdmVkIHRvIGFuIGV4Y2x1ZGVkIHN0YXRlLCBkZWxldGUgaXQKICAgICAgICAgICAgICAgIGVsc2lmICggISRFeGNsdWRlZERlcGxTdGF0ZXMtPnskT2xkRGVwbFN0YXRlfSAmJiAkRXhjbHVkZWREZXBsU3RhdGVzLT57ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICVDb250ZW50ID0gKAogICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJ19kZWxldGVfYnlfcXVlcnknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBDSSB3YXMgbW92ZWQgb3V0IG9mIGFuIGV4Y2x1ZGVkIGRlcGxveW1lbnQgc3RhdGUsIGNyZWF0ZSBpdAogICAgICAgICAgICAgICAgIyBpbiB0aGF0IGNhc2Ugb3ZlcnJpZGUgdGhlIHByZXZpb3VzICRBUEkgdmFsdWUgdG8gJ19kb2MnCiAgICAgICAgICAgICAgICBlbHNpZiAoICRQYXJhbXtEYXRhfXtPbGREZXBsU3RhdGV9ICYmICRFeGNsdWRlZERlcGxTdGF0ZXMtPnskT2xkRGVwbFN0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICAkQVBJID0gJ19kb2MnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZWxzZSBpdCB3YXMgYSBub3JtYWwgdHJhbnNpdGlvbiBiZXR3ZWVuIG5vbiBleGNsdWRlZCBzdGF0ZXMsIHNvIG5vdGhpbmcgdG8gZG8gaW4gdGhpcyBzY29wZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2F0aGVyIGFsbCBmaWVsZHMgd2hpY2ggaGF2ZSB0byBiZSBzdG9yZWQKICAgIG15ICRTdG9yZSAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TdG9yZUZpZWxkcycpOwogICAgbXkgJFNlYXJjaCA9IFJlbW92ZUVTV2VpZ2h0ZWRTZWFyY2hCb29zdFN1ZmZpeCgKICAgICAgICBEYXRhID0+ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbVNlYXJjaEZpZWxkcycpCiAgICApOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICVEYXRhVG9TdG9yZTsKICAgIGZvciBteSAkRmllbGQgKCBAeyAkU3RvcmUtPntCYXNpY30gfSwgQHsgJFNlYXJjaC0+e0Jhc2ljfSB9ICkgewogICAgICAgICREYXRhVG9TdG9yZXskRmllbGR9ID0gMTsKICAgIH0KCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBAeyAkU3RvcmUtPntEeW5hbWljRmllbGR9IH0sIEB7ICRTZWFyY2gtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZDsKCiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0gZXEgJ0lUU01Db25maWdJdGVtJyApIHsKICAgICAgICAgICAgJERhdGFUb1N0b3JleyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZE5hbWUifSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSByZXF1ZXN0CiAgICBteSAlQ29udGVudDsKICAgIG15ICRHZXREeW5hbWljRmllbGRzID0gKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWFyY2gtPntEeW5hbWljRmllbGR9ICkgfHwgSXNBcnJheVJlZldpdGhEYXRhKCAkU3RvcmUtPntEeW5hbWljRmllbGR9ICkgKSA/IDEgOiAwOwogICAgbXkgJFZlcnNpb24gICAgICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgIyBpdGVyYXRlIG92ZXIgZHluYW1pYyBmaWVsZHMgYW5kIHJlcGxhY2UgdmFsdWUgd2l0aCBEaXNwbGF5VmFsdWVSZW5kZXIgcmVzdWx0CiAgICBpZiAoJEdldER5bmFtaWNGaWVsZHMpIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICRERk5hbWUgKCBncmVwIHsgJERhdGFUb1N0b3JleyRffSAmJiAkXyA9fiAvXkR5bmFtaWNGaWVsZF8vIH0ga2V5cyAlRGF0YVRvU3RvcmUgKSB7CiAgICAgICAgICAgIG15ICRERk5hbWVTaG9ydCA9IHN1YnN0ciAkREZOYW1lLCBsZW5ndGgoJ0R5bmFtaWNGaWVsZF8nKTsKICAgICAgICAgICAgbXkgJERGQ29uZmlnICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRERk5hbWVTaG9ydCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgIG15ICRERlZhbHVlU3RydWN0dXJlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERGQ29uZmlnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWZXJzaW9uLT57JERGTmFtZX0sCiAgICAgICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWZXJzaW9uLT57JERGTmFtZX0gPSAkREZWYWx1ZVN0cnVjdHVyZS0+e1ZhbHVlfTsKICAgICAgICB9CiAgICB9CiAgICAlQ29udGVudCA9ICgKICAgICAgICAoIG1hcCB7ICRfID0+ICRWZXJzaW9uLT57JF99IH0ga2V5cyAlRGF0YVRvU3RvcmUgKSwKICAgICk7CiAgICAkQ29udGVudHtBdHRhY2htZW50c30gPSBbXTsKCiAgICBpZiAoICRBUEkgZXEgJ191cGRhdGUnICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJEFQSSwKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIGRvYyAgICA9PiBcJUNvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJEFQSSwKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICVDb250ZW50LAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9Cn0KCj1oZWFkMiBIYW5kbGVSZXNwb25zZSgpCgpoYW5kbGUgcmVzcG9uc2UgZGF0YSBvZiB0aGUgY29uZmlndXJlZCByZW1vdGUgd2ViIHNlcnZpY2UuClRoaXMgd2lsbCBqdXN0IHJldHVybiB0aGUgZGF0YSB0aGF0IHdhcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgoKICAgIG15ICRSZXN1bHQgPSAkSW52b2tlck9iamVjdC0+SGFuZGxlUmVzcG9uc2UoCiAgICAgICAgUmVzcG9uc2VTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICMgc3VjY2VzcyBzdGF0dXMgb2YgdGhlIHJlbW90ZSB3ZWIgc2VydmljZQogICAgICAgIFJlc3BvbnNlRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAjIGluIGNhc2Ugb2Ygd2ViIHNlcnZpY2UgZXJyb3IKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiB0aGUgcmVzcG9uc2UsIGZvcndhcmQgaXQKICAgIGlmICggISRQYXJhbXtSZXNwb25zZVN1Y2Nlc3N9ICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFBhcmFte1Jlc3BvbnNlRXJyb3JNZXNzYWdlfSwKICAgICAgICB9OwogICAgfQoKICAgICMgUGVyIGRlZmF1bHQgdGhlcmUgaXMgbm8gcmVzY2hlZHVsaW5nIG9mIEVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50IHJlcXVlc3RzLAogICAgIyBidXQgRXJyb3JIYW5kbGluZzo6UmVxdWVzdFJldHJ5IGNvdWxkIGhhdmUgYmVlbiBjb25maWd1cmVkIG1hbnVhbGx5LCBlLmcuIHZpYSB0aGUgYWRtaW4gaW50ZXJmYWNlLgogICAgaWYgKCAkUGFyYW17RGF0YX17UmVzcG9uc2VDb250ZW50fSAmJiAkUGFyYW17RGF0YX17UmVzcG9uc2VDb250ZW50fSA9fiBte1JlU2NoZWR1bGU9MX0gKSB7CgogICAgICAgICMgUmVzcG9uc2VDb250ZW50IGhhcyBVUkkgbGlrZSBwYXJhbXMsIGNvbnZlcnQgdGhlbSBpbnRvIGEgaGFzaAogICAgICAgIG15ICVRdWVyeVBhcmFtcyA9IHNwbGl0IC9bJj1dLywgJFBhcmFte0RhdGF9e1Jlc3BvbnNlQ29udGVudH07CgogICAgICAgICMgdW5lc2NhcGUgVVJJIHN0cmluZ3MgaW4gcXVlcnkgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkUGFyYW0gKCBzb3J0IGtleXMgJVF1ZXJ5UGFyYW1zICkgewogICAgICAgICAgICAkUXVlcnlQYXJhbXN7JFBhcmFtfSA9IFVSSTo6RXNjYXBlOjp1cmlfdW5lc2NhcGUoICRRdWVyeVBhcmFtc3skUGFyYW19ICk7CiAgICAgICAgfQoKICAgICAgICAjIGZpeCBFeGVjdXRpb25UaW1lIHBhcmFtCiAgICAgICAgaWYgKCAkUXVlcnlQYXJhbXN7RXhlY3V0aW9uVGltZX0gKSB7CiAgICAgICAgICAgICRRdWVyeVBhcmFtc3tFeGVjdXRpb25UaW1lfSA9fiBzeyhcZCspXCsoXGQrKX17JDEgJDJ9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnUmUtU2NoZWR1bGluZy4uLicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVF1ZXJ5UGFyYW1zLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiAkUGFyYW17RGF0YX0sCiAgICB9Owp9CgoxOwo=</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/Common.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb247Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbik7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0KCk7CnVzZSBFbmNvZGU7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uIC0gQmFzZSBjbGFzcyBmb3IgYWxsIENJIE9wZXJhdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgSW5pdCgpCgppbml0aWFsaXplIHRoZSBvcGVyYXRpb24gYnkgY2hlY2tpbmcgdGhlIHdlYiBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24gYW5kIGdhdGhlciBvZiB0aGUgZHluYW1pYyBmaWVsZHMKCiAgICBteSAkUmV0dXJuID0gJENvbW1vbk9iamVjdC0+SW5pdCgKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gMSwKICAgICk7CgpyZXR1cm5zOgoKICAgICRSZXR1cm4gPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwIGluIGNhc2Ugb2YgZmFpbHVyZSwKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0Vycm9yIE1lc3NhZ2UnLAogICAgfQoKPWN1dAoKc3ViIEluaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgaWYgKCAhJFBhcmFte1dlYnNlcnZpY2VJRH0gKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vIFdlYnNlcnZpY2VJRCEiLAogICAgICAgIH07CiAgICB9CgogICAgIyBnZXQgd2ViIHNlcnZpY2UgY29uZmlndXJhdGlvbgogICAgbXkgJFdlYnNlcnZpY2UgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KAogICAgICAgIElEID0+ICRQYXJhbXtXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkV2Vic2VydmljZSkgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBkZXRlcm1pbmUgV2ViIHNlcnZpY2UgY29uZmlndXJhdGlvbicKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uOjpuZXcoKScsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07Cn0KCj1oZWFkMiBWYWxpZGF0ZUNsYXNzKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gQ2xhc3MgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlQ2xhc3MoCiAgICAgICAgQ2xhc3MgPT4gJ3NvbWUgY2xhc3MnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVDbGFzcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDbGFzc307CgogICAgIyBjaGVjayBmb3IgQ2xhc3Mgc2VudAogICAgbXkgJEl0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICA9PiAkUGFyYW17Q2xhc3N9LAogICAgKTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBpdGVtIGRhdGEgaXMgZW1wdHkKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhUmVmKTsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVEZXBsU3RhdGUoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBEZXBsU3RhdGUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlRGVwbFN0YXRlKAogICAgICAgIERlbHBTdGF0ZSA9PiAnc29tZSBEZXBsU3RhdGUnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVEZXBsU3RhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RGVwbFN0YXRlfTsKCiAgICAjIGNoZWNrIGZvciBDbGFzcyBzZW50CiAgICBteSAkSXRlbURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBOYW1lICA9PiAkUGFyYW17RGVwbFN0YXRlfSwKICAgICk7CgogICAgIyByZXR1cm4gZmFsc2UgaWYgaXRlbSBkYXRhIGlzIGVtcHR5CiAgICByZXR1cm4gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRJdGVtRGF0YVJlZik7CgogICAgIyBsb29rcyBmaW5lCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZhbGlkYXRlSW5jaVN0YXRlKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gSW5jaVN0YXRlIGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUluY2lTdGF0ZSgKICAgICAgICBJbmNpU3RhdGUgPT4gJ3NvbWUgSW5jaVN0YXRlJywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlSW5jaVN0YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiB1bmxlc3MgJFBhcmFte0luY2lTdGF0ZX07CgogICAgIyBjaGVjayBmb3IgQ2xhc3Mgc2VudAogICAgbXkgJEl0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtJbmNpU3RhdGV9LAogICAgKTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBpdGVtIGRhdGEgaXMgZW1wdHkKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhUmVmKTsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dFRleHQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dFRleHQoCiAgICAgICAgVmFsdWUgICAgID0+ICdzb21lIHZhbHVlJywKICAgICAgICBNYXhMZW5ndGggPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dFRleHQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGxlbmd0aAogICAgaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0lucHV0fS0+e01heExlbmd0aH0KICAgICAgICAmJiAkUGFyYW17SW5wdXR9LT57TWF4TGVuZ3RofQogICAgICAgICYmIGxlbmd0aCAkUGFyYW17VmFsdWV9ID4gJFBhcmFte0lucHV0fS0+e01heExlbmd0aH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dERhdGUoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzEyLzEyLzE5NzcnLAogICAgKTsKCm9yCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlKAogICAgICAgIFZhbHVlID0+ICcxOTc3LTEyLTEyJywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlSW5wdXREYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGNoZWNrIGFuZCBjb252ZXJ0IGZvciBkYXRlIGZvcm1hdCBsaWtlICIwNS8xOC8yMDExIgogICAgaWYgKCAkVmFsdWUgPX4gbXtcQSAoXGR7Mn0pIC8gKFxkezJ9KSAvIChcZHs0fSkgXHp9eG1zICkgewogICAgICAgICRWYWx1ZSA9ICQzIC4gJy0nIC4gJDEgLiAnLScgLiAkMiAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjIwMTEtMDUtMTgiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHs0fSAtIFxkezJ9IC0gXGR7Mn0gXHopIH14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDEgLiAnIDAwOjAwOjAwJzsKICAgIH0KCiAgICAjIENvbnZlcnQgdGhlIHJhdyBkYXRhIHRvIGEgc3lzdGVtIGRhdGV0aW1lIG9iamVjdC4KICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgU3RyaW5nID0+ICRWYWx1ZSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICREYXRlVGltZU9iamVjdDsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dERhdGVUaW1lKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTIvMTIvMTk3NyAxMjowMDowMCcsCiAgICApOwoKICAgIG9yCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTk3Ny0xMi0xMiAxMjowMDowMCcsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZUlucHV0RGF0ZVRpbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjA1LzE4LzIwMTEiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJyAwMDowMDowMCc7CiAgICB9CiAgICBlbHNpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSAoXGR7Mn0gOiBcZHsyfSA6IFxkezJ9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJDQ7CiAgICB9CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMjAxMS0wNS0xOCIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezR9IC0gXGR7Mn0gLSBcZHsyfSBceikgfXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMSAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgcmF3IGRhdGEgdG8gYSBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJFZhbHVlLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJERhdGVUaW1lT2JqZWN0OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEludGVnZXIoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dEludGVnZXIoCiAgICAgICAgVmFsdWUgPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEludGVnZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIHJldHVybiBpZiAhSXNJbnRlZ2VyKCRWYWx1ZSk7CgogICAgcmV0dXJuIGlmIGRlZmluZWQgJFBhcmFte1ZhbHVlTWlufSAmJiAkVmFsdWUgPCAkUGFyYW17VmFsdWVNaW59OwogICAgcmV0dXJuIGlmIGRlZmluZWQgJFBhcmFte1ZhbHVlTWF4fSAmJiAkVmFsdWUgPiAkUGFyYW17VmFsdWVNYXh9OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXRHZW5lcmFsQ2F0YWxvZygKICAgICAgICBWYWx1ZSA9PiAxMjMsCiAgICAgICAgQ2xhc3MgPT4gJ1NvbWUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzJwogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGdldCB0aGUgdmFsdWVzIGZvciB0aGUgR2VuZXJhbCBjYXRhbG9nIGNsYXNzCiAgICBteSAkSXRlbUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0lucHV0fS0+e0NsYXNzfSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBsb2t1cCBsaXN0CiAgICBteSAlSXRlbUxpc3RMb29rdXAgPSByZXZlcnNlICV7JEl0ZW1MaXN0fTsKCiAgICByZXR1cm4gaWYgISRJdGVtTGlzdExvb2t1cHskVmFsdWV9OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEN1c3RvbWVyKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXRDdXN0b21lcigKICAgICAgICBWYWx1ZSA9PiAnc29tZSBjdXN0b21lciBsb2dpbicsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZUlucHV0Q3VzdG9tZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIHJldHVybiBpZiAhJFZhbHVlOwoKICAgIG15ICVDdXN0b21lckRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgVXNlciA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKCiAgICAjIGlmIGN1c3RvbWVyIGlzIG5vdCByZWdpc3RlcmVkIGluIHRoZSBkYXRhYmFzZQogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVDdXN0b21lckRhdGEgKTsKCiAgICAjIGlmIFZhbGlkSUQgaXMgcHJlc2VudCwgY2hlY2sgaWYgaXQgaXMgdmFsaWQhCiAgICBpZiAoIGRlZmluZWQgJEN1c3RvbWVyRGF0YXtWYWxpZElEfSApIHsKCiAgICAgICAgIyByZXR1cm4gZmFsc2UgaWYgY3VzdG9tZXIgaXMgbm90IHZhbGlkCiAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExvb2t1cCggVmFsaWRJRCA9PiAkQ3VzdG9tZXJEYXRhe1ZhbGlkSUR9ICkgbmUgJ3ZhbGlkJzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZhbGlkYXRlSW5wdXRDdXN0b21lckNvbXBhbnkoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSgKICAgICAgICBWYWx1ZSA9PiAnc29tZSBjdXN0b21lciBjb21wYW55IG5hbWUnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgcmV0dXJuIGlmICEkVmFsdWU7CgogICAgbXkgJUNvbXBhbnlMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpLT5DdXN0b21lckNvbXBhbnlMaXN0KAogICAgICAgIExpbWl0ID0+IDAsICAgICMgRGlzcGxheSBhbGwgQ3VzdG9tZXIgQ29tcGFuaWVzCiAgICApOwoKICAgIHJldHVybiBpZiAhJENvbXBhbnlMaXN0eyAkUGFyYW17VmFsdWV9IH07CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZU1pbWVUeXBlKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gTWltZVR5cGUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlTWltZVR5cGUoCiAgICAgICAgTWltZVR5cGVJRCA9PiAnc29tZSBNaW1lVHlwZScsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZU1pbWVUeXBlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte01pbWVUeXBlfTsKCiAgICByZXR1cm4gaWYgJFBhcmFte01pbWVUeXBlfSAhfiBte1xBXHcrXC9cdytcen07CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZUNoYXJzZXQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBDaGFyc2V0IGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUNoYXJzZXQoCiAgICAgICAgQ2hhcnNldCA9PiAnc29tZSBjaGFyc2V0JywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlQ2hhcnNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDaGFyc2V0fTsKCiAgICBteSAkQ2hhcnNldExpc3QgPSAkU2VsZi0+X0NoYXJzZXRMaXN0OwoKICAgIHJldHVybiB1bmxlc3MgJENoYXJzZXRMaXN0LT57ICRQYXJhbXtDaGFyc2V0fSB9OwogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZUNvbnRlbnRUeXBlKCkKCmNoZWNrcyB0aGUgdmFsaWRpdHkgb2YgdGhlIGNvbnRlbnQgdHlwZS4KClZhbGlkIHZhbHVlcyBmb3IgdGhlIE1JTUUgaGVhZGVyIEk8Q29udGVudC1UeXBlPiBhcmUgc3BlY2lmaWVkIGluIEw8UkZDIDIwNDV8aHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzIwNDUjc2VjdGlvbi01LjE+LgpUaGlzIHNwZWMgYWxsb3dzIGUuZy4gYmFyZSBjYXJyaWFnZSByZXR1cm4gYW5kIGJhY2tzbGFzaCBxdW90ZWQgbGluZSBmZWVkIGNoYXJhY3RlcnMgaW4gdGhlIHZhbHVlLiBCdXQgaW4gT1RPQk8gd2UKY2FuIGJlIG1vcmUgc3RyaWN0LiBUaGlzIGlzIGJlY2F1c2UgdXN1YWxseSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBtZWRpYSB0eXBlIGFuZCBpbiB0aGUgY2hhcnNldC4KVGh1cyB0aGUgZm9sbG93aW5nLCBzb21ld2hhdCBhcmJpdHJhcnksIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQ6Cgo9b3ZlciA0Cgo9aXRlbSBUaGUgY2hhcmFjdGVyIGNhcnJpYWdlIHJldHVybiBpcyBub3QgYWxsb3dlZAoKPWl0ZW0gVGhlIGNoYXJhY3RlciBsaW5lIGZlZWQgaXMgbm90IGFsbG93ZWQKCj1pdGVtIFRoZSBNSU1FIHR5cGUsIGFrYSBtZWRpYSB0eXBlLCBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHZhbHVlIGFuZCBtYXRjaGVzIEM8cXJ7XHcvXHd9aT4KCj1pdGVtIFRoZSBjaGFyYWN0ZXIgc2V0IGlzIGV4dHJhY3RlZCBieSBzb21lIHJlZ2V4ZXMgYW5kIGlzIHJlY29nbml6ZWQgYnkgdGhlIEM8RW5jb2RlPiBtb2R1bGUKCj1iYWNrCgo9Y3V0CgpzdWIgVmFsaWRhdGVDb250ZW50VHlwZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDb250ZW50VHlwZX07CgogICAgbXkgJENvbnRlbnRUeXBlID0gJFBhcmFte0NvbnRlbnRUeXBlfTsKCiAgICAjIHByb2hpYml0IGNhcnJpYWdlIHJldHVybiBhbmQgbGluZSBmZWVkCiAgICByZXR1cm4gaWYgJENvbnRlbnRUeXBlID1+IG0vW1xyXG5dLzsKCiAgICAjIGNoZWNrIHRoZSBvcHRpb25hbCBDaGFyc2V0IHBhcnQKICAgIG15ICRDaGFyc2V0ID0gJyc7CiAgICBpZiAoICRDb250ZW50VHlwZSA9fiBtL2NoYXJzZXQ9L2kgKSB7CiAgICAgICAgJENoYXJzZXQgPSAkQ29udGVudFR5cGU7CiAgICAgICAgJENoYXJzZXQgPX4gcy8uKz9jaGFyc2V0PSgifCd8KShcdyspLyQyL2dpOwogICAgICAgICRDaGFyc2V0ID1+IHMvInwnLy9nOwogICAgICAgICRDaGFyc2V0ID1+IHMvKC4rPyk7LiovJDEvZzsKICAgIH0KCiAgICBpZiAoICRDaGFyc2V0ICYmICEkU2VsZi0+VmFsaWRhdGVDaGFyc2V0KCBDaGFyc2V0ID0+ICRDaGFyc2V0ICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgdGhlIHJlcXVpcmVkIE1pbWVUeXBlIHBhcnQKICAgIG15ICRNaW1lVHlwZSA9ICcnOwogICAgaWYgKCAkQ29udGVudFR5cGUgPX4gbS9eKFx3K1wvXHcrKS9pICkgewogICAgICAgICRNaW1lVHlwZSA9ICQxOwogICAgICAgICRNaW1lVHlwZSA9fiBzLyJ8Jy8vZzsKICAgIH0KCiAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVNaW1lVHlwZSggTWltZVR5cGUgPT4gJE1pbWVUeXBlICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9va3MgdmFsaWQKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgUmVwbGFjZUlucHV0RGF0ZSgpCgpyZXBsYWNlcyB0aGUgdXNlciB2YWx1ZSB3aXRoIGEgc3lzdGVtIHZhbGlkIHZhbHVlLgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzEyLzEyLzE5NzcnLAogICAgKTsKCiAgICBvcgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzE5NzctMTItMTInLAogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnMTk3Ny0xMi0xMicsCgo9Y3V0CgpzdWIgUmVwbGFjZUlucHV0RGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMDUvMTgvMjAxMSIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezJ9KSAvIChcZHsyfSkgLyAoXGR7NH0pIFx6fXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMyAuICctJyAuICQxIC4gJy0nIC4gJDIgLiAnIDAwOjAwOjAwJzsKICAgIH0KCiAgICAjIGNoZWNrIGFuZCBjb252ZXJ0IGZvciBkYXRlIGZvcm1hdCBsaWtlICIyMDExLTA1LTE4IgogICAgaWYgKCAkVmFsdWUgPX4gbXtcQSAoXGR7NH0gLSBcZHsyfSAtIFxkezJ9IFx6KSB9eG1zICkgewogICAgICAgICRWYWx1ZSA9ICQxIC4gJyAwMDowMDowMCc7CiAgICB9CgogICAgIyBDb252ZXJ0IHRoZSByYXcgZGF0YSB0byBhIHN5c3RlbSBkYXRldGltZSBvYmplY3QuCiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFN0cmluZyA9PiAkVmFsdWUsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICREYXRlVGltZU9iamVjdC0+Rm9ybWF0KCBGb3JtYXQgPT4gJyVGJyApOwp9Cgo9aGVhZDIgUmVwbGFjZUlucHV0RGF0ZVRpbWUoKQoKcmVwbGFjZXMgdGhlIHVzZXIgdmFsdWUgd2l0aCBhIHN5c3RlbSB2YWxpZCB2YWx1ZS4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5SZXBsYWNlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTIvMTIvMTk3NyAxMjowMDowMCcsCiAgICApOwoKICAgIG9yCgogICAgbXkgJE5ld1ZhbHVlID0gJENvbW1vbk9iamVjdC0+UmVwbGFjZUlucHV0RGF0ZVRpbWUoCiAgICAgICAgVmFsdWUgPT4gJzE5NzctMTItMTIgMTI6MDA6MDAnLAogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnMTk3Ny0xMi0xMiAxMjowMDowMCc7Cgo9Y3V0CgpzdWIgUmVwbGFjZUlucHV0RGF0ZVRpbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjA1LzE4LzIwMTEiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJyAwMDowMDowMCc7CiAgICB9CiAgICBlbHNpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSAoXGR7Mn0gOiBcZHsyfSA6IFxkezJ9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJDQ7CiAgICB9CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMjAxMS0wNS0xOCIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezR9IC0gXGR7Mn0gLSBcZHsyfSBceikgfXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMSAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgcmF3IGRhdGEgdG8gYSBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJFZhbHVlLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkRGF0ZVRpbWVPYmplY3QtPlRvU3RyaW5nKCk7Cn0KCj1oZWFkMiBSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZygpCgpyZXBsYWNlcyB0aGUgdXNlciB2YWx1ZSB3aXRoIGEgc3lzdGVtIHZhbGlkIHZhbHVlLgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dEdlbmVyYWxDYXRhbG9nKAogICAgICAgIFZhbHVlID0+ICdzb21lIHZhbHVlJywKICAgICAgICBDbGFzcyA9PiAnU29tZSBnZW5lcmFsIGNhdGFsb2cgY2xhc3MnCiAgICApOwoKcmV0dXJucwoKICAgICROZXdWYWx1ZSA9IDEyMwoKPWN1dAoKc3ViIFJlcGxhY2VJbnB1dEdlbmVyYWxDYXRhbG9nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGdldCB0aGUgdmFsdWVzIGZvciB0aGUgR2VuZXJhbCBjYXRhbG9nIGNsYXNzCiAgICBteSAkSXRlbUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0lucHV0fS0+e0NsYXNzfSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBsb2t1cCBsaXN0CiAgICBteSAlSXRlbUxpc3RMb29rdXAgPSByZXZlcnNlICV7JEl0ZW1MaXN0fTsKCiAgICByZXR1cm4gJEl0ZW1MaXN0TG9va3VweyRWYWx1ZX07Cn0KCj1oZWFkMiBJbnZlcnRSZXBsYWNlSW5wdXREYXRlKCkKCnJlcGxhY2VzIHRoZSBzeXN0ZW0gdmFsdWUgd2l0aCBhIHVzZXIgdmFsdWUuCgogICAgbXkgJE5ld1ZhbHVlID0gJENvbW1vbk9iamVjdC0+SW52ZXJ0UmVwbGFjZUlucHV0RGF0ZSgKICAgICAgICBWYWx1ZSA9PiAnMTItMTItMTk3NyAwMDowMDowMCcsCiAgICApOwoKcmV0dXJucwoKICAgICROZXdWYWx1ZSA9ICcxOTc3LTEyLTEyJywKCj1jdXQKCnN1YiBJbnZlcnRSZXBsYWNlSW5wdXREYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAkVmFsdWUgPX4gc3tcQSAoXGR7NH0gLSBcZHsyfSAtIFxkezJ9KSBbIF0gMDA6MDA6MDAgXHp9eyQxfXhtczsKCiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgSW52ZXJ0UmVwbGFjZUlucHV0R2VuZXJhbENhdGFsb2coKQoKcmVwbGFjZXMgdGhlIHN5c3RlbSB2YWx1ZSB3aXRoIGEgdXNlciB2YWx1ZS4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5JbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZygKICAgICAgICBWYWx1ZSA9PiAxMjMsCiAgICAgICAgQ2xhc3MgPT4gJ1NvbWUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzJwogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnc29tZSB2YWx1ZScKCj1jdXQKCnN1YiBJbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgIyBnZXQgdGhlIHZhbHVlcyBmb3IgdGhlIEdlbmVyYWwgY2F0YWxvZyBjbGFzcwogICAgbXkgJEl0ZW1MaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtJbnB1dH0tPntDbGFzc30sCiAgICApOwoKICAgICMgY3JlYXRlIGEgbG9rdXAgbGlzdAogICAgcmV0dXJuICRJdGVtTGlzdC0+eyRWYWx1ZX07Cn0KCj1oZWFkMiBDcmVhdGVBdHRhY2htZW50KCkKCmNyZWF0ZXMgYSBuZXcgYXR0YWNobWVudCBmb3IgdGhlIGdpdmVuIENvbmZpZ0l0ZW0uCgogICAgbXkgJFJlc3VsdCA9ICRDb21tb25PYmplY3QtPkNyZWF0ZUF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudCAgICAgID0+ICREYXRhLCAgICAgICAgICAgICAgICAgICAjIGZpbGUgY29udGVudCAoQmFzZTY0IGVuY29kZWQpCiAgICAgICAgQ29udGVudFR5cGUgID0+ICdzb21lIGNvbnRlbnQgdHlwZScsCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICdzb21lIGZpbGVuYW1lJywKICAgICAgICBDb25maWdJdGVtSUQgPT4gNDU2LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxMjMsCiAgICApOwoKcmV0dXJucwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgZXZlcnl0aGluZyBpcyBvawogICAgfQoKb3IKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nCiAgICB9Cgo9Y3V0CgpzdWIgQ3JlYXRlQXR0YWNobWVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQXR0YWNobWVudCBDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDcmVhdGVBdHRhY2htZW50KCkgR290IG5vICROZWVkZWQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyB3cml0ZSBhdHRhY2htZW50CiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAleyAkUGFyYW17QXR0YWNobWVudH0gfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgQ29udGVudCAgICAgID0+IE1JTUU6OkJhc2U2NDo6ZGVjb2RlX2Jhc2U2NCggJFBhcmFte0F0dGFjaG1lbnR9LT57Q29udGVudH0gKSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAkU3VjY2VzcywKICAgIH07Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfQ2hhcnNldExpc3QoKQoKcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBjaGFyc2V0cy4KCiAgICBteSAkQ2hhcnNldExpc3QgPSAkQ29tbW9uT2JqZWN0LT5fQ2hhcnNldExpc3QoCiAgICAgICAgVXNlcklEID0+IDEyMywKICAgICk7CgpyZXR1cm5zCgogICAgJENoYXJzZXRMaXN0ID0gewogICAgICAgICMuLi4KICAgICAgICBpc28tODg1OS0xICA9PiAxLAogICAgICAgIGlzby04ODU5LTE1ID0+IDEsCiAgICAgICAgTWFjUm9tYW4gICAgPT4gMSwKICAgICAgICB1dGY4ICAgICAgICA9PiAxLAogICAgICAgICMuLi4KICAgIH0KCj1jdXQKCnN1YiBfQ2hhcnNldExpc3QgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15ICVDaGFyc2V0SGFzaCA9IG1hcAogICAgICAgIHsgJF8gPT4gMSB9CiAgICAgICAgRW5jb2RlLT5lbmNvZGluZ3MoJzphbGwnKTsKCiAgICByZXR1cm4gXCVDaGFyc2V0SGFzaDsKfQoKPWhlYWQyIF9DaGVja0F0dGFjaG1lbnQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBhdHRhY2htZW50IHBhcmFtZXRlciBpcyB2YWxpZC4KCiAgICBteSAkQXR0YWNobWVudENoZWNrID0gJE9wZXJhdGlvbk9iamVjdC0+X0NoZWNrQXR0YWNobWVudCgKICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50LCAgICAgICAgICAgICAgICAgICMgYWxsIGF0dGFjaG1lbnQgcGFyYW1ldGVycwogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICRBdHRhY2htZW50Q2hlY2sgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGV2ZXJ5dGhpbmcgaXMgT0sKICAgIH0KCiAgICAkQXR0YWNobWVudENoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja0F0dGFjaG1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0YWNobWVudCA9ICRQYXJhbXtBdHRhY2htZW50fTsKCiAgICAjIGNoZWNrIGF0dGFjaG1lbnQgaXRlbSBpbnRlcm5hbGx5CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29udGVudCBDb250ZW50VHlwZSBGaWxlbmFtZSkpIHsKICAgICAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkQXR0YWNobWVudC0+eyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF0dGFjaG1lbnQtPiROZWVkZWQgIHBhcmFtZXRlciBpcyBtaXNzaW5nISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgQXR0YWNobWVudC0+Q29udGVudFR5cGUKICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gKSB7CgogICAgICAgICMgVGhlIE1JTUUgaGVhZGVyIGZpZWxkIENvbnRlbnQtVHlwZSBpcyBvbmx5IGluIHNvbWUgcGFydHMgY2FzZSBpbnNlbnNpdGl2ZSwKICAgICAgICAjIGJ1dCBsb3dlcmNhc2luZyB0aGUgd2hvbGUgc3RyaW5nIHNpbXBsaWZpZXMgdGhlIGhhbmRsaW5nIGluIE9UT0JPLgogICAgICAgICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9ID0gbGMgJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUNvbnRlbnRUeXBlKCBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSApICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBBdHRhY2htZW50LT5Db250ZW50VHlwZSBpcyBpbnZhbGlkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgZXZlcnl0aGluZyBpcyBPSyB0aGVuIHJldHVybiBTdWNjZXNzCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07Cn0KCj1oZWFkMiBfQ2hlY2tWYWx1ZSgpCgpjaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIHZhbGlkLgoKICAgIG15ICRWYWx1ZUNoZWNrID0gJENvbW1vbk9iamVjdC0+X0NoZWNrVmFsdWUoCiAgICAgICAgVmFsdWUgICA9PiAkVmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAjICRWYWx1ZSBjb3VsZCBiZSBhIHN0cmluZywgYSB0aW1lIHN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGdlbmVyYWwgY2F0YWxvZyBjbGFzcyBuYW1lLCBvciBhIGludGVnZXIKICAgICAgICBJbnB1dCAgID0+ICRJbnB1dERlZmluaXRpb25IYXNoUmVmLCAgICAgICMgVGhlIGRlZmluaXRpb24gb2YgdGhlIGVsZW1lbnQgaW5wdXQgZXh0cmFjdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZnJvbSB0aGUgQ29uZmlndXJhdGlvbiBJdGVtIGRlZmluaXRpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIGVhY2ggdmFsdWUKICAgICAgICBJdGVtS2V5ID0+ICdzb21lIGtleScsICAgICAgICAgICAgICAgICAgICMgVGhlIG5hbWUgb2YgdGhlIHZhbHVlIGFzIHNlbnQgaW4gdGhlIFNPQVAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1ZXN0CiAgICAgICAgUGFyZW50ICA9PiAnc29lbSBwYXJlbnQga2V5LT4nLCAgICAgICAgICAjIFRoZSBuYW1lIG9mIHRoZSBwYXJlbnQgZm9sbG93ZWQgYnkgLT4gb3IgZW1wdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmb3Igcm9vdCBrZXkgaXRlbXMKICAgICk7CgpyZXR1cm5zOgoKICAgICRWYWx1ZUNoZWNrID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBldmVyeXRoaW5nIGlzIE9LCiAgICB9CgpvcgoKICAgICRWYWx1ZUNoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja1ZhbHVlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhcmVudCAgPSAkUGFyYW17UGFyZW50fTsKICAgIG15ICRJdGVtS2V5ID0gJFBhcmFte0l0ZW1LZXl9OwoKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRQYXJhbXtJbnB1dH0tPntSZXF1aXJlZH0gJiYgJFBhcmFte0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJFBhcmFte1ZhbHVlfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgIC4gIiBpcyByZXF1aXJlZCBhbmQgaXMgbWlzc2luZyEiLAogICAgICAgIH07CiAgICB9CgogICAgaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ1RleHQnIHx8ICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnVGV4dEFyZWEnICkgewoKICAgICAgICAjIHJ1biBUZXh0IHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXRUZXh0KCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBleGNlZGVzIHRoZSBtYXhpdW0gbGVuZ3RoISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0RhdGUnICkgewoKICAgICAgICAjIHJ1biBEYXRlIHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXREYXRlKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBEYXRlIGZvcm1hdCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdEYXRlVGltZScgKSB7CgogICAgICAgICMgcnVuIERhdGVUaW1lIHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXREYXRlVGltZSglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgRGF0ZVRpbWUgZm9ybWF0ISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgIyBydW4gQ3VzdG9tZXIgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBjdXN0b21lciEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdDdXN0b21lckNvbXBhbnknICkgewoKICAgICAgICAjIHJ1biBDdXN0b21lckNvbXBhbnkgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgY3VzdG9tZXIgY29tcGFueSEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdJbnRlZ2VyJyApIHsKCiAgICAgICAgIyBydW4gSW50ZWdlciB2YWxpZGF0aW9ucwogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUlucHV0SW50ZWdlciglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgSW50ZWdlciBvciBvdXQgb2YgcmFuZ2UhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnR2VuZXJhbENhdGFsb2cnICkgewoKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nICckUGFyYW17SW5wdXR9LT57Q2xhc3N9JyEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIFRoZSB0eXBlIGlzIGR1bW15LCBkbyBub3RoaW5nCiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9Owp9Cgo9aGVhZDIgX1JlcGxhY2VWYWx1ZSgpCgpyZXBsYWNlIHVzZXIgdmFsdWVzIHdpdGggc3lzdGVtIHJlYWR5IHZhbHVlcy4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5fUmVwbGFjZVZhbHVlKAogICAgICAgIFZhbHVlICAgPT4gJFZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgIyAkVmFsdWUgY291bGQgYmUgYSBzdHJpbmcsIGEgdGltZSBzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgbmFtZSwgb3IgYSBpbnRlZ2VyCiAgICAgICAgSW5wdXQgICA9PiAkSW5wdXREZWZpbml0aW9uSGFzaFJlZiwgICAgICAjIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBlbGVtZW50IGlucHV0IGV4dHJhY3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZyb20gdGhlIENvbmZpZ3VyYXRpb24gSXRlbSBkZWZpbml0aW9uIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZvciBlYWNoIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIHJvb3Qga2V5IGl0ZW1zCiAgICApOwoKcmV0dXJuczoKCiAgICAkTmV3VmFsdWUgPSAkQU5ld1ZhbHVlCgo9Y3V0CgpzdWIgX1JlcGxhY2VWYWx1ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IHRoZSBsaXN0IG9mIGlucHV0IHR5cGVzIHRoYXQgbmVlZHMgdG8gYmUgcmVwbGFjZWQKICAgIG15ICVSZXBsYWNlSW5wdXRUeXBlcyA9ICgKICAgICAgICBEYXRlICAgICAgICAgICA9PiAxLAogICAgICAgIERhdGVUaW1lICAgICAgID0+IDEsCiAgICAgICAgR2VuZXJhbENhdGFsb2cgPT4gMSwKICAgICk7CiAgICBpZiAoICEkUmVwbGFjZUlucHV0VHlwZXN7ICRQYXJhbXtJbnB1dH0tPntUeXBlfSB9ICkgewogICAgICAgIHJldHVybiAkUGFyYW17VmFsdWV9OwogICAgfQoKICAgIG15ICROZXdWYWx1ZTsKCiAgICBpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZScgKSB7CgogICAgICAgICMgcnVuIERhdGUgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5SZXBsYWNlSW5wdXREYXRlKCVQYXJhbSk7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZVRpbWUnICkgewoKICAgICAgICAjIHJ1biBEYXRlVGltZSByZXBsYWNlCiAgICAgICAgJE5ld1ZhbHVlID0gJFNlbGYtPlJlcGxhY2VJbnB1dERhdGVUaW1lKCVQYXJhbSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5SZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyglUGFyYW0pOwogICAgfQoKICAgIHJldHVybiAkTmV3VmFsdWU7Cn0KCj1oZWFkMiBfSW52ZXJ0UmVwbGFjZVZhbHVlKCkKCnJlcGxhY2UgaW50ZXJuYWwgdmFsdWVzIHdpdGggdXNlciB2YWx1ZXMuCgogICAgbXkgJE5ld1ZhbHVlID0gJE9wZXJhdGlvbk9iamVjdC0+X0ludmVydFJlcGxhY2VWYWx1ZSgKICAgICAgICBWYWx1ZSAgID0+ICRWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICMgJFZhbHVlIGNvdWxkIGJlIGEgc3RyaW5nLCBhIHRpbWUgc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzIG5hbWUsIG9yIGEgaW50ZWdlcgogICAgICAgIElucHV0ICAgPT4gJElucHV0RGVmaW5pdGlvbkhhc2hSZWYsICAgICAgIyBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgZWxlbWVudCBpbnB1dCBleHRyYWN0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmcm9tIHRoZSBDb25maWd1cmF0aW9uIEl0ZW0gZGVmaW5pdGlvbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmb3IgZWFjaCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZvciByb290IGtleSBpdGVtcwogICAgKTsKCnJldHVybnM6CgogICAgJE5ld1ZhbHVlID0gJEFOZXdWYWx1ZQoKPWN1dAoKc3ViIF9JbnZlcnRSZXBsYWNlVmFsdWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCB0aGUgbGlzdCBvZiBpbnB1dCB0eXBlcyB0aGF0IG5lZWRzIHRvIGJlIHJlcGxhY2VkCiAgICBteSAlUmVwbGFjZUlucHV0VHlwZXMgPSAoCiAgICAgICAgRGF0ZSAgICAgICAgICAgPT4gMSwKICAgICAgICBHZW5lcmFsQ2F0YWxvZyA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkUmVwbGFjZUlucHV0VHlwZXN7ICRQYXJhbXtJbnB1dH0tPntUeXBlfSB9ICkgewogICAgICAgIHJldHVybiAkUGFyYW17VmFsdWV9OwogICAgfQoKICAgIG15ICROZXdWYWx1ZTsKCiAgICBpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZScgKSB7CgogICAgICAgICMgcnVuIERhdGUgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5JbnZlcnRSZXBsYWNlSW5wdXREYXRlKCVQYXJhbSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5JbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyglUGFyYW0pOwogICAgfQoKICAgIHJldHVybiAkTmV3VmFsdWU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemDelete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIE1JTUU6OkJhc2U2NDsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWd1cmF0aW9uIEl0ZW0gRGVsZXRlIE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRGVidWdnZXJPYmplY3QgV2Vic2VydmljZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e09wZXJhdGlvbk5hbWV9ID0gJ0NvbmZpZ0l0ZW1EZWxldGUnOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbURlbGV0ZSBPcGVyYXRpb24uIFRoaXMgZnVuY3Rpb24gaXMgYWJsZSB0byByZXR1cm4Kb25lIG9yIG1vcmUgQ29uZmlnSXRlbSBlbnRyaWVzIGluIG9uZSBjYWxsLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgICAgID0+ICdzb21lIGFnZW50IGxvZ2luJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VyTG9naW4gb3IgQ3VzdG9tZXJVc2VyTG9naW4gb3IgU2Vzc2lvbklEIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIHJlcXVpcmVkCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICdzb21lIGN1c3RvbWVyIGxvZ2luJywKICAgICAgICAgICAgU2Vzc2lvbklEICAgICAgICAgPT4gMTIzLAoKICAgICAgICAgICAgUGFzc3dvcmQgICAgICAgICAgPT4gJ3NvbWUgcGFzc3dvcmQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIFVzZXJMb2dpbiBvciBjdXN0b21lclVzZXJMb2dpbiBpcyBzZW50IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGFzc3dvcmQgaXMgcmVxdWlyZWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gJzMyLDMzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkLCBjb3VsZCBiZSBjb21hIHNlcGFyYXRlZCBJRHMgb3IgYW4gQXJyYXkKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWzEyMywgNDU2XSwgICAgICAgICAjIENvbmZpZ3VyYXRpb24gSXRlbSBJRHMgbnVtYmVyIGluIE9UT0JPOjpJVFNNIChTZXJ2aWNlIGRlc2sgc3lzdGVtKQogICAgICAgICAgICBFcnJvciA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgbm90IHJldHVybiBlcnJvcnMKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUuRXJyb3JDb2RlJwogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgRGVzY3JpcHRpb24nCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5Jbml0KAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgIGlmICggISRSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnV2Vic2VydmljZS5JbnZhbGlkQ29uZmlndXJhdGlvbicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICgkVXNlcklEKSA9ICRTZWxmLT5BdXRoKAogICAgICAgICVQYXJhbQogICAgKTsKCiAgICBpZiAoICEkVXNlcklEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BdXRoRmFpbCIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQXV0aG9yaXphdGlvbiBmYWlsaW5nISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5NaXNzaW5nUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogJE5lZWRlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIG15ICRFcnJvck1lc3NhZ2UgPSAnJzsKCiAgICAjIGFsbCBuZWVkZWQgdmFyaWFibGVzCiAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfSApICkgewogICAgICAgIEBDb25maWdJdGVtSURzID0gc3BsaXQgL1xzKixccyovLCAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9OwogICAgfQogICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKSApIHsKICAgICAgICBAQ29uZmlnSXRlbUlEcyA9IEB7ICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5Xcm9uZ1N0cnVjdHVyZSIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogU3RydWN0dXJlIGZvciBDb25maWdJdGVtSUQgaXMgbm90IGNvcnJlY3QhIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgQERlbGV0ZWRDb25maWdJdGVtSURzOwoKICAgICMgc3RhcnQgQ29uZmlnSXRlbSBsb29wCiAgICBDT05GSUdJVEVNOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICMgY2hlY2sgY3JlYXRlIHBlcm1pc3Npb25zCiAgICAgICAgbXkgJFBlcm1pc3Npb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQWNjZXNzRGVuaWVkIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ2FuIG5vdCBkZWxldGUgY29uZmlndXJhdGlvbiBpdGVtISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgY29uZmlnaXRlbQogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2VzcyApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGRlbGV0ZSBDb25maWdJdGVtIElEICcgLiAkQ29uZmlnSXRlbUlECiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGU6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uRGVsZXRlRXJyb3IiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQERlbGV0ZWRDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwoKICAgIH0gICAgIyBmaW5pc2ggQ29uZmlnSXRlbSBsb29wCgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCBcQERlbGV0ZWRDb25maWdJdGVtSURzICkgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IGRlbGV0ZSBDb25maWdJdGVtcyEnLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBcQERlbGV0ZWRDb25maWdJdGVtSURzLAogICAgICAgIH0sCiAgICB9Owp9CgoxOwo=</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemGet.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtR2V0OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIE1JTUU6OkJhc2U2NDsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtR2V0IC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWd1cmF0aW9uIEl0ZW0gR2V0IE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCApKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICRTZWxmLT57T3BlcmF0aW9uTmFtZX0gPSAnQ29uZmlnSXRlbUdldCc7CgogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1HZXQnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBDb25maWdJdGVtR2V0IE9wZXJhdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBhYmxlIHRvIHJldHVybgpvbmUgb3IgbW9yZSBDb25maWdJdGVtIGVudHJpZXMgaW4gb25lIGNhbGwuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgVXNlckxvZ2luICAgICAgICAgPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZXJMb2dpbiBvciBTZXNzaW9uSUQgaXMKICAgICAgICAgICAgU2Vzc2lvbklEICAgICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgcmVxdWlyZWQKICAgICAgICAgICAgUGFzc3dvcmQgICAgICAgICAgPT4gJ3NvbWUgcGFzc3dvcmQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIFVzZXJMb2dpbiBpcyBzZW50IHRoZW4gUGFzc3dvcmQgaXMgcmVxdWlyZWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gJzMyLDMzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkLCBjb3VsZCBiZSBjb21hIHNlcGFyYXRlZCBJRHMgb3IgYW4gQXJyYXkKICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsLCAxIGFzIGRlZmF1bHQuIElmIGl0J3Mgc2V0IHdpdGggdGhlIHZhbHVlIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhdHRhY2htZW50cyBmb3IgYXJ0aWNsZXMgd2lsbCBiZSBpbmNsdWRlZCBvbiBDb25maWdJdGVtIGRhdGEKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgPT4gJzIwMTAxMDI3MDAwMDAxJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICA9PiAnc29tZSBuYW1lJywKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgPT4gJ3NvbWUgY2xhc3MnLAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICAgICAgTGFzdFZlcnNpb25JRCAgICAgID0+IDEyMywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICA9PiAnc29tZSBpbmNpZGVudCBzdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICAgID0+ICdzb21lIGluY2lkZW50IHN0YXRlIHR5cGUnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICA9PiAnc29tZSBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgPT4gJ3NvbWUgZGVwbG95bWVudCBzdGF0ZSB0eXBlJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgPT4gJ3NvbWUgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgICA9PiAnc29tZSBpbmNpZGVudCBzdGF0ZSB0eXBlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgICAgPT4gJ3NvbWUgZGVwbG95bWVudCBzdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgID0+ICdzb21lIGRlcGxveW1lbnQgc3RhdGUgdHlwZScsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICAgICAgID0+ICcyMDEwLTEwLTI3IDIwOjE1OjAwJwogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWUgID0+ICRWYWx1ZSwKCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgICA9PiAieHh4eCIsICAgICAjIGFjdHVhbCBhdHRhY2htZW50IGNvbnRlbnRzLCBiYXNlNjQgZW5jb25kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICAgICAgICA9PiAiU3RkQXR0YWNobWVudC1UZXN0MS5wZGYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgICAgICAgID0+ICI0LjYgS0J5dGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWZlcmVuY2VzICAgICAgICA9PiAkUHJlZmVyZW5jZXNIYXNoUmVmLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgLiAuIC4KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIC4gLiAuCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+SW5pdCgKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICEkUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1dlYnNlcnZpY2UuSW52YWxpZENvbmZpZ3VyYXRpb24nLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAoJFVzZXJJRCkgPSAkU2VsZi0+QXV0aCgKICAgICAgICAlUGFyYW0KICAgICk7CgogICAgaWYgKCAhJFVzZXJJRCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQXV0aEZhaWwiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF1dGhvcml6YXRpb24gZmFpbGluZyEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICROZWVkZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBteSAkRXJyb3JNZXNzYWdlID0gJyc7CgogICAgIyBhbGwgbmVlZGVkIHZhcmlhYmxlcwogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKSApIHsKICAgICAgICBAQ29uZmlnSXRlbUlEcyA9IHNwbGl0KCAvLC8sICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKTsKICAgIH0KICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9ICkgKSB7CiAgICAgICAgQENvbmZpZ0l0ZW1JRHMgPSBAeyAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uV3JvbmdTdHJ1Y3R1cmUiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFN0cnVjdHVyZSBmb3IgQ29uZmlnSXRlbUlEIGlzIG5vdCBjb3JyZWN0ISIsCiAgICAgICAgKTsKICAgIH0KICAgIG15ICRBdHRhY2htZW50cyA9ICRQYXJhbXtEYXRhfS0+e0F0dGFjaG1lbnRzfSB8fCAwOwogICAgbXkgJFJldHVybkRhdGEgID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07CgogICAgbXkgQEl0ZW07CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIHN0YXJ0IENvbmZpZ0l0ZW0gbG9vcAogICAgQ09ORklHSVRFTToKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGNoZWNrIGNyZWF0ZSBwZXJtaXNzaW9ucwogICAgICAgIG15ICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkFjY2Vzc0RlbmllZCIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENhbiBub3QgZ2V0IGNvbmZpZ3VyYXRpb24gaXRlbSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW0gZW50cnkKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtKSApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBDb25maWdJdGVtIGRhdGEnCiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQ6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1vdmUgdW5uZWVkZWQgaXRlbXMKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVJRH07CiAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9OwogICAgICAgIGRlbGV0ZSAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZUlEfTsKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVJRH07CiAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57RGVmaW5pdGlvbklEfTsKCiAgICAgICAgIyBzZXQgQ29uZmlnSXRlbSBlbnRyeSBkYXRhCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1CdW5kbGUgPSAkQ29uZmlnSXRlbTsKCiAgICAgICAgaWYgKCRBdHRhY2htZW50cykgewoKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnREZXRhaWxzOwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRGaWxlbmFtZTsKCiAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIG5leHQgaWYgbm90IGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEF0dGFjaG1lbnQpOwoKICAgICAgICAgICAgICAgICMgY29udmVydCBjb250ZW50IHRvIGJhc2U2NAogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50fSA9IGVuY29kZV9iYXNlNjQoICRBdHRhY2htZW50LT57Q29udGVudH0gKTsKICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnREZXRhaWxzLCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgQ29uZmlnSXRlbSBlbnRyeSBkYXRhCiAgICAgICAgICAgICRDb25maWdJdGVtQnVuZGxlLT57QXR0YWNobWVudH0gPSAnJzsKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxAQXR0YWNobWVudERldGFpbHMgKSApIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtQnVuZGxlLT57QXR0YWNobWVudH0gPSBcQEF0dGFjaG1lbnREZXRhaWxzOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZAogICAgICAgIHB1c2ggQEl0ZW0sICRDb25maWdJdGVtQnVuZGxlOwoKICAgIH0gICAgIyBmaW5pc2ggQ29uZmlnSXRlbSBsb29wCgogICAgaWYgKCAhc2NhbGFyIEBJdGVtICkgewogICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBDb25maWdJdGVtIGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldDo6UnVuKCknOwoKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTm9Db25maWdJdGVtRGF0YSIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBDb25maWdJdGVtIGRhdGEgaW50byByZXR1cm4gc3RydWN0dXJlCiAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q29uZmlnSXRlbX0gPSAnJzsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCBcQEl0ZW0gKSApIHsKICAgICAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q29uZmlnSXRlbX0gPSBcQEl0ZW07CiAgICB9CgogICAgIyByZXR1cm4gcmVzdWx0CiAgICByZXR1cm4gJFJldHVybkRhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemUpsert.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtVXBzZXJ0OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgICBxdyhwYWlycyk7CnVzZSBTY2FsYXI6OlV0aWwgcXcocmVmdHlwZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwc2VydCAtIEdlbmVyaWNJbnRlcmZhY2UgQ29uZmlndXJhdGlvbiBJdGVtIEFkZCBhbmQgVXBkYXRlIE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIE9wZXJhdGlvbiBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e09wZXJhdGlvbk5hbWV9ID0gJ0NvbmZpZ0l0ZW1VcHNlcnQnOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjokU2VsZi0+e09wZXJhdGlvbk5hbWV9Iik7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbVVwc2VydCBPcGVyYXRpb24uIFRoaXMgZnVuY3Rpb24gaXMgYWJsZSB0byBhY2NlcHQKb25lIG9yIG1vcmUgQ29uZmlnSXRlbSBlbnRyaWVzIGluIG9uZSBjYWxsLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFVzZXJMb2dpbiAgPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZXJMb2dpbiBvciBTZXNzaW9uSUQgaXMKICAgICAgICAgICAgU2Vzc2lvbklEICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1aXJlZAogICAgICAgICAgICBQYXNzd29yZCAgID0+ICdzb21lIHBhc3N3b3JkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBVc2VyTG9naW4gaXMgc2VudCB0aGVuIFBhc3N3b3JkIGlzIHJlcXVpcmVkCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkCiAgICAgICAgICAgICAgICB7IC4uLiB9LAogICAgICAgICAgICAgICAgLi4uCiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICA9PiAnMjAxMDEwMjcwMDAwMDEnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICMgLiAuIC4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5Jbml0KAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgIGlmICggISRSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnV2Vic2VydmljZS5JbnZhbGlkQ29uZmlndXJhdGlvbicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICgkVXNlcklEKSA9ICRTZWxmLT5BdXRoKAogICAgICAgICVQYXJhbQogICAgKTsKCiAgICBpZiAoICEkVXNlcklEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BdXRoRmFpbCIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQXV0aG9yaXphdGlvbiBmYWlsaW5nISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICROZWVkZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBvcHRpb25hbCBhcnJheS9oYXNoZXMKICAgIGZvciBteSAkT3B0aW9uYWwgKHF3KER5bmFtaWNGaWVsZCBBdHRhY2htZW50KSkgewogICAgICAgIGlmICgKICAgICAgICAgICAgZGVmaW5lZCAkUGFyYW17RGF0YX0tPnskT3B0aW9uYWx9CiAgICAgICAgICAgICYmICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57JE9wdGlvbmFsfSApCiAgICAgICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+eyRPcHRpb25hbH0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk1pc3NpbmdQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiAkT3B0aW9uYWwgcGFyYW1ldGVyIGlzIG1pc3Npbmcgb3Igbm90IHZhbGlkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdHJhbnNmb3JtIHNpbmdsZSBDSXMgdG8gYW4gYXJyYXkgcmVmZXJlbmNlCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSApICkgewogICAgICAgICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSA9IFsgJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW19IF07CiAgICB9CgogICAgZm9yIG15ICRSZW1vdGVDSURhdGEgKCBAeyAkUGFyYW17RGF0YX17Q29uZmlnSXRlbX0gfSApIHsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUmVtb3RlQ0lEYXRhKSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5Xcm9uZ1N0cnVjdHVyZSIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFN0cnVjdHVyZSBmb3IgQ29uZmlnSXRlbSBpcyBub3QgY29ycmVjdCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgQFJlcXVpcmVkQXR0cmlidXRlcyA9IHF3KENsYXNzIERlcGxveW1lbnRTdGF0ZSBJbmNpZGVudFN0YXRlKTsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAoIHNvcnQgQFJlcXVpcmVkQXR0cmlidXRlcyApIHsKCiAgICAgICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRSZW1vdGVDSURhdGEtPnskTmVlZGVkfSApICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBOZWVkICROZWVkZWQgZm9yIGV2ZXJ5IENvbmZpZ0l0ZW0hIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgd2Vic2VydmljZSBjb25maWd1cmF0aW9uCiAgICBteSAkV2Vic2VydmljZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VHZXQoCiAgICAgICAgSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICAjIGdldCBvcGVyYXRpb24gY29uZmlnCiAgICBteSAkT3BlcmF0aW9uQ29uZmlnID0gJFdlYnNlcnZpY2UtPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkU2VsZi0+e09wZXJhdGlvbn0gfTsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICVDSUNsYXNzTWFwcGluZyA9ICgKICAgICAgICBJbmNpZGVudFN0YXRlICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIERlcGxveW1lbnRTdGF0ZSA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBidWlsZCBkeW5hbWljIGZpZWxkIHJlZmVyZW5jZSBhbmQgbGVucyBsb29rdXAKICAgIG15ICVERlJlZkxvb2t1cDsKICAgIG15ICVERkxlbnNMb29rdXA7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICREeW5hbWljRmllbGRMaXN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICkgfHwgW107CgogICAgREZDT05GSUc6CiAgICBmb3IgbXkgJERGQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewoKICAgICAgICBuZXh0IERGQ09ORklHIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwoKICAgICAgICBpZiAoICRERkNvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0xlbnMnICkgewogICAgICAgICAgICAkREZMZW5zTG9va3VweyAkREZDb25maWctPntOYW1lfSB9ID0gJERGQ29uZmlnOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkREZDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzUmVmZXJlbmNlRmllbGQnCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJERGUmVmTG9va3VweyAkREZDb25maWctPntOYW1lfSB9ID0gJERGQ29uZmlnOwogICAgICAgIH0KICAgIH0KCiAgICAjIHN0b3JlIGR5bmFtaWMgZmllbGQgcmVmZXJlbmNlIGFuZCBsZW5zIHZhbHVlcyB0byBzZXQgdGhlbSBhZnRlciBjb25maWcgaXRlbSBhZGQgLyB1cGRhdGUKICAgIG15ICVBbGxERlNoaWZ0ZWRWYWx1ZXM7CgogICAgbXkgJUdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cDsKICAgIG15IEBDSXNIYW5kbGVkOwogICAgQ0k6CiAgICBmb3IgbXkgJFJlbW90ZUNJRGF0YSAoIEB7ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSB9ICkgewoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUmVtb3RlQ0lEYXRhKSApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCByZW1vdGUgQ0kgc3RydWN0dXJlIGZvdW5kLiBTa2lwcGluZyBpdGVtLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENJOwogICAgICAgIH0KCiAgICAgICAgbXkgJVJlcXVpcmVkQXR0cmlidXRlcyA9IG1hcCB7ICRfID0+ICRSZW1vdGVDSURhdGEtPnskX30gfSBxdyhDbGFzcyBEZXBsb3ltZW50U3RhdGUgSW5jaWRlbnRTdGF0ZSk7CgogICAgICAgICMgZ2V0IElEcyBmb3IgQ2xhc3MsIERlcGwtIGFuZCBJbmNpU3RhdGUKICAgICAgICBmb3IgbXkgJEN1cnJlbnRDSSAoIHNvcnQga2V5cyAlQ0lDbGFzc01hcHBpbmcgKSB7CgogICAgICAgICAgICAjIGNyZWF0ZS9nZXQgbG9va3VwIGZvciBnZW5lcmFsIGNhdGFsb2cgaXRlbXMKICAgICAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nSXRlbTsKICAgICAgICAgICAgaWYgKCAkR2VuZXJhbENhdGFsb2dJdGVtTG9va3VweyAkQ0lDbGFzc01hcHBpbmd7JEN1cnJlbnRDSX0gfS0+eyAkUmVxdWlyZWRBdHRyaWJ1dGVzeyRDdXJyZW50Q0l9IH0gKSB7CiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dJdGVtID0gJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ0lDbGFzc01hcHBpbmd7JEN1cnJlbnRDSX0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgIUlzSGFzaFJlZldpdGhEYXRhKCRHZW5lcmFsQ2F0YWxvZ0l0ZW0pCiAgICAgICAgICAgICAgICAgICAgfHwgIUlzU3RyaW5nV2l0aERhdGEoICRHZW5lcmFsQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGxvb2tpbmcgdXAgJEN1cnJlbnRDSSAnJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfScuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHRvIGxvb2t1cAogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9ID0gJEdlbmVyYWxDYXRhbG9nSXRlbTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkUmVxdWlyZWRBdHRyaWJ1dGVzeyAkQ3VycmVudENJIC4gJ0lEJyB9ID0gJEdlbmVyYWxDYXRhbG9nSXRlbS0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCBsYXRlc3QgZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzCiAgICAgICAgbXkgJENsYXNzSUQgPSAkUmVtb3RlQ0lEYXRhLT57Q2xhc3NJRH07CiAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgICAgICAkQ2xhc3NJRCA9ICRSZXZlcnNlQ2xhc3NMaXN0eyAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9IH07CiAgICAgICAgfQogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyB2YWxpZGF0ZSBkeW5hbWljIGZpZWxkcwogICAgICAgIERBVEE6CiAgICAgICAgZm9yIG15ICREYXRhICggcGFpcnMgJFJlbW90ZUNJRGF0YS0+JSogKSB7CiAgICAgICAgICAgIG15ICggJEtleSwgJFZhbHVlICkgPSAkRGF0YS0+QCo7CgogICAgICAgICAgICBuZXh0IERBVEEgdW5sZXNzICggJEtleSA9fiAvXkR5bmFtaWNGaWVsZF8vICk7CgogICAgICAgICAgICBpZiAoICRLZXkgPX4gL15EeW5hbWljRmllbGRfKD88UGxhaW5GaWVsZE5hbWU+W0EtWmEtejAtOS1dKykvICkgewogICAgICAgICAgICAgICAgbXkgJFBsYWluRmllbGROYW1lID0gJCt7UGxhaW5GaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgZmllbGQgaXMgaW4gY2xhc3MgZGVmaW5pdGlvbgogICAgICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRQbGFpbkZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IER5bmFtaWNGaWVsZCAnJFBsYWluRmllbGROYW1lJyBpcyBub3QgcGFydCBvZiB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiZGVmaW5pdGlvbiBvZiBjbGFzcyAnJFJlbW90ZUNJRGF0YS0+e0NsYXNzfScgKENvbmZpZ0l0ZW0gJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCAkUmVtb3RlQ0lEYXRhLT57TmFtZX0gLy8gJycgKSAuICInKSEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JFBsYWluRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAjIHZhbGlkYXRlIHZhbHVlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyBwb3NzaWJsZSBzdHJ1Y3R1cmVzIGFyZSBzdHJpbmcgYW5kIGFycmF5LCBubyBkYXRhIGluc2lkZSBpcyBuZWVkZWQKICAgICAgICAgICAgICAgICAgICBpZiAoICFJc1N0cmluZygkVmFsdWUpICYmIHJlZiAkVmFsdWUgbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogVmFsdWUgb2YgRHluYW1pY0ZpZWxkICckUGxhaW5GaWVsZE5hbWUnICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICJtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IChDb25maWdJdGVtICciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoICRSZW1vdGVDSURhdGEtPntOYW1lfSAvLyAnJyApIC4gIicpISIsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkVmFsaWRhdGVWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggISRWYWxpZGF0ZVZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBWYWx1ZSBvZiBEeW5hbWljRmllbGQgJyRQbGFpbkZpZWxkTmFtZScgaXMgaW52YWxpZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiKENvbmZpZ0l0ZW0gJyIgLiAoICRSZW1vdGVDSURhdGEtPntOYW1lfSAvLyAnJyApIC4gIicpISIsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkSWRlbnRpZmllciA9ICRPcGVyYXRpb25Db25maWctPnsgJ0lkZW50aWZpZXInIC4gJFJlcXVpcmVkQXR0cmlidXRlc3tDbGFzc0lEfSB9OwogICAgICAgIGlmICggISRJZGVudGlmaWVyICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vdCBpbXBvcnRpbmcgaXRlbXMgaW4gY2xhc3MgJFJlcXVpcmVkQXR0cmlidXRlc3tDbGFzc30gLSBza2lwcGluZy4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDSXNIYW5kbGVkLCB7fTsKCiAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhpcyBpdGVtIGV4aXN0cyAodXBkYXRlKSBvciBpcyBuZXcgKGNyZWF0ZSkKICAgICAgICBteSAkQ29uZmlnSXRlbUlEOwoKICAgICAgICAjIHByZXBhcmUgc2VhcmNoCiAgICAgICAgbXkgJVNlYXJjaFBhcmFtID0gKAogICAgICAgICAgICBSZXN1bHQgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgICAgICBRdWVyeUNvbmRpdGlvbiA9PiAwLAogICAgICAgICk7CiAgICAgICAgQVRUUklCVVRFOgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggJElkZW50aWZpZXItPkAqICkgewoKICAgICAgICAgICAgIyBpZiBudW1iZXIgb3IgY29uZmlnIGl0ZW0gaWQgYXJlIGRlZmluZWQgYXMgaWRlbnRpZmllcnMsIHVzZSBvbmx5IHRoaXMKICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdOdW1iZXInICkgewogICAgICAgICAgICAgICAgaWYgKCAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfSApIHsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFJlbW90ZUNJRGF0YS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBsYXN0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0NvbmZpZ0l0ZW1JRCcgKSB7CiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVtb3RlQ0lEYXRhLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRSZW1vdGVDSURhdGEtPntDb25maWdJdGVtSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICcnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGxhc3QgQVRUUklCVVRFOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnQ2xhc3NlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17Q2xhc3Nlc30gPSBbICRSZW1vdGVDSURhdGEtPntDbGFzc30gXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ05hbWUnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte05hbWV9ID0gJFJlbW90ZUNJRGF0YS0+e05hbWV9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnRGVwbFN0YXRlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17RGVwbFN0YXRlc30gPSBbICRSZW1vdGVDSURhdGEtPntEZXBsb3ltZW50U3RhdGV9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlID1+IC9eRHluLyApIHsKICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXskQXR0cmlidXRlfSA9IHsKICAgICAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFJlbW90ZUNJRGF0YS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSAkQXR0cmlidXRlIGFzIElkZW50aWZpZXIgLSBza2lwcGluZy4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHB1c2ggQENJc0hhbmRsZWQsIHt9OwoKICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggIWRlZmluZWQgJENvbmZpZ0l0ZW1JRCApIHsKCiAgICAgICAgICAgICMgYXZvaWQgZXhlY3V0aW5nIGEgc2VhcmNoIHdpdGggZW1wdHkgc2VhcmNoIHBhcmFtcyAoZXhjbHVkaW5nICdSZXN1bHQgPT4gIkFSUkFZIicgZnJvbSBtZWFuaW5nZnVsIHBhcmFtcykKICAgICAgICAgICAgbXkgJFBlcmZvcm1TZWFyY2ggPSAwOwogICAgICAgICAgICBTRUFSQ0hQQVJBTUtFWToKICAgICAgICAgICAgZm9yIG15ICRTZWFyY2hQYXJhbUtleSAoIGtleXMgJVNlYXJjaFBhcmFtICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VhcmNoUGFyYW1LZXkgbmUgJ1Jlc3VsdCcgJiYgJFNlYXJjaFBhcmFteyRTZWFyY2hQYXJhbUtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFBlcmZvcm1TZWFyY2ggPSAxOwoKICAgICAgICAgICAgICAgICAgICBsYXN0IFNFQVJDSFBBUkFNS0VZOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJFBlcmZvcm1TZWFyY2gpIHsKCiAgICAgICAgICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKCVTZWFyY2hQYXJhbSk7CgogICAgICAgICAgICAgICAgaWYgKCBzY2FsYXIgQENvbmZpZ0l0ZW1JRHMgPiAxICkgewogICAgICAgICAgICAgICAgICAgIG15ICRTZWFyY2hQYXJhbWV0ZXJzID0gam9pbiggJzsnLCBtYXAgeyIkXyA9PiAkU2VhcmNoUGFyYW17JF99In0ga2V5cyAlU2VhcmNoUGFyYW0gKTsKCiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSBhbWJpZ3VvdXMgc2VhcmNoIHJlc3VsdCAtIHNraXBwaW5nLiBQYXJhbWV0ZXJzOiAkU2VhcmNoUGFyYW1ldGVyczsiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ0lzSGFuZGxlZCwge307CgogICAgICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSURzWzBdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICAgICAgbXkgJFBlcm1pc3Npb247CiAgICAgICAgaWYgKCRDb25maWdJdGVtSUQpIHsKICAgICAgICAgICAgJFBlcm1pc3Npb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBlcm1pc3Npb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tDbGFzc0lEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BY2Nlc3NEZW5pZWQiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDYW4gbm90IHdyaXRlIGNvbmZpZ3VyYXRpb24gaXRlbSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCAmJiAhJFJlbW90ZUNJRGF0YS0+e05hbWV9ICkgewogICAgICAgICAgICBteSAkTm90aWNlSW5mbyA9ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9ID8gIk51bWJlcjogJFJlbW90ZUNJRGF0YS0+e051bWJlcn07IiA6ICcnOwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJNaXNzaW5nICdOYW1lJyBwYXJhbWV0ZXIgZm9yIGNyZWF0aW5nIGEgQ0kuIFNraXBwaW5nIGl0ZW0uICROb3RpY2VJbmZvIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ0lzSGFuZGxlZCwge307CgogICAgICAgICAgICBuZXh0IENJOwogICAgICAgIH0KCiAgICAgICAgbXkgQEF0dGFjaG1lbnRMaXN0OwogICAgICAgIGlmICggZGVmaW5lZCAkUmVtb3RlQ0lEYXRhLT57QXR0YWNobWVudH0gKSB7CgogICAgICAgICAgICAjIGlzb2xhdGUgQXR0YWNobWVudCBwYXJhbWV0ZXIKICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnQgPSAkUmVtb3RlQ0lEYXRhLT57QXR0YWNobWVudH07CgogICAgICAgICAgICAjIGhvbW9nZW5hdGUgaW5wdXQgdG8gYXJyYXkKICAgICAgICAgICAgaWYgKCByZWYgJEF0dGFjaG1lbnQgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudExpc3QsICRBdHRhY2htZW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQEF0dGFjaG1lbnRMaXN0ID0gQHskQXR0YWNobWVudH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgQXR0YWNobWVudCBpbnRlcm5hbCBzdHJ1Y3R1cmUKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50SXRlbSAoQEF0dGFjaG1lbnRMaXN0KSB7CiAgICAgICAgICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkQXR0YWNobWVudEl0ZW0pICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+QXR0YWNobWVudCBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzCiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAkQXR0YWNobWVudEl0ZW0tPiUqICkgewogICAgICAgICAgICAgICAgICAgIGlmICggIXJlZnR5cGUgJEF0dGFjaG1lbnRJdGVtLT57JEF0dHJpYnV0ZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjcmVtb3ZlIGxlYWRpbmcgc3BhY2VzCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50SXRlbS0+eyRBdHRyaWJ1dGV9ID1+IHN7XEFccyt9e307CgogICAgICAgICAgICAgICAgICAgICAgICAjcmVtb3ZlIHRyYWlsaW5nIHNwYWNlcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudEl0ZW0tPnskQXR0cmlidXRlfSA9fiBze1xzK1x6fXt9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGNoZWNrIEF0dGFjaG1lbnQgYXR0cmlidXRlIHZhbHVlcwogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRDaGVjayA9ICRTZWxmLT5fQ2hlY2tBdHRhY2htZW50KAogICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gJEF0dGFjaG1lbnRJdGVtLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICEkQXR0YWNobWVudENoZWNrLT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvciggJXskQXR0YWNobWVudENoZWNrfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNoaWZ0IGR5bmFtaWMgZmllbGQgcmVmZXJlbmNlIGFuZCBsZW5zIHZhbHVlcyBmcm9tIGNvbmZpZ2l0ZW0gZGF0YSB0byBzZXQgdGhlbSBhZnRlcndhcmRzCiAgICAgICAgbXkgJURGU2hpZnRlZFZhbHVlczsKICAgICAgICBERk5BTUU6CiAgICAgICAgZm9yIG15ICRERk5hbWUgKCBrZXlzICVERlJlZkxvb2t1cCwga2V5cyAlREZMZW5zTG9va3VwICkgewoKICAgICAgICAgICAgbmV4dCBERk5BTUUgdW5sZXNzIGRlZmluZWQgJFJlbW90ZUNJRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9OwoKICAgICAgICAgICAgJERGU2hpZnRlZFZhbHVlc3skREZOYW1lfSA9IGRlbGV0ZSAkUmVtb3RlQ0lEYXRhLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgfQoKICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tJbmNpZGVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJFcnJvciB3aGlsZSB1cGRhdGluZyBDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tEZXBsb3ltZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICA9PiAkUmVxdWlyZWRBdHRyaWJ1dGVze0luY2lkZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3Igd2hpbGUgY3JlYXRpbmcgQ0kgd2l0aCBOYW1lICckUmVxdWlyZWRBdHRyaWJ1dGVze05hbWV9JywgQ2xhc3MgJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9JyAoQ2xhc3NJRDogJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0nKS4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJEFsbERGU2hpZnRlZFZhbHVlc3skQ29uZmlnSXRlbUlEfSA9IFwlREZTaGlmdGVkVmFsdWVzOwoKICAgICAgICAjIGhhbmRsZSBjb25maWcgaXRlbSBhdHRhY2htZW50cwogICAgICAgIGlmIChAQXR0YWNobWVudExpc3QpIHsKCiAgICAgICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRGaWxlbmFtZSAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggISREZWxldGVTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGRlbGV0aW5nIGV4aXN0aW5nIGF0dGFjaG1lbnQgd2l0aCBOYW1lICckRmlsZW5hbWUnIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50TGlzdCkgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIGFsbCBjb25maWcgaXRlbSBhdHRhY2htZW50cwoKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT4lKiwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5FcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3Igd2hpbGUgYWRkaW5nIGF0dGFjaG1lbnQgd2l0aCBOYW1lICckQXR0YWNobWVudC0+e0ZpbGVuYW1lfScgZm9yIENvbmZpZ0l0ZW0gSUQgJENvbmZpZ0l0ZW1JRC4iLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHB1c2ggQENJc0hhbmRsZWQsIHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkUmVtb3RlQ0lEYXRhLT57TmFtZX0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHNldCBkeW5hbWljIGZpZWxkIHJlZmVyZW5jZSBhbmQgbGVucyB2YWx1ZXMgYWZ0ZXIgYWRkaW5nIC8gdXBkYXRpbmcgYWxsIGNvbmZpZyBpdGVtcwogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDSURGUGFpciAoIHBhaXJzICVBbGxERlNoaWZ0ZWRWYWx1ZXMgKSB7CgogICAgICAgIG15ICggJENvbmZpZ0l0ZW1JRCwgJERGVmFsdWVzICkgPSAkQ0lERlBhaXItPkAqOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJERGVmFsdWVzKTsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gZGF0YSBmb3IgdmVyc2lvbiBpZAogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgZmlyc3QsIHNldCBkeW5hbWljIGZpZWxkIHJlZmVyZW5jZSB2YWx1ZXMKICAgICAgICBERlJFRjoKICAgICAgICBmb3IgbXkgJERGUmVmTmFtZSAoIGtleXMgJURGUmVmTG9va3VwICkgewoKICAgICAgICAgICAgbmV4dCBERlJFRiB1bmxlc3MgZXhpc3RzICRERlZhbHVlcy0+eyRERlJlZk5hbWV9OwoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERGUmVmTG9va3VweyRERlJlZk5hbWV9LAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkREZWYWx1ZXMtPnskREZSZWZOYW1lfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNlY29uZCwgc2V0IGR5bmFtaWMgZmllbGQgbGVucyB2YWx1ZXMKICAgICAgICBERkxFTlM6CiAgICAgICAgZm9yIG15ICRERkxlbnNOYW1lICgga2V5cyAlREZMZW5zTG9va3VwICkgewoKICAgICAgICAgICAgbmV4dCBERkxFTlMgdW5sZXNzIGV4aXN0cyAkREZWYWx1ZXMtPnskREZMZW5zTmFtZX07CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkREZMZW5zTG9va3VweyRERkxlbnNOYW1lfSwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJERGVmFsdWVzLT57JERGTGVuc05hbWV9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICBFeHRlcm5hbFNvdXJjZSAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiB7IENvbmZpZ0l0ZW0gPT4gXEBDSXNIYW5kbGVkIH0sCiAgICB9Owp9CgoxOwo=</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtIENvbmZpZ0l0ZW1TZWFyY2ggT3BlcmF0aW9uIGJhY2tlbmQKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCnVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzCmJ5IHVzaW5nIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uLT5uZXcoKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkTmVlZGVkIChxdyhEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBmb3IgdGhpcyBzY3JlZW4KICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoJyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbVNlYXJjaCBPcGVyYXRpb24uIFRoaXMgd2lsbCByZXR1cm4gYSBDb25maWdJdGVtIElEIGxpc3QuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBVc2VyTG9naW4gPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VyTG9naW4gb3IgU2Vzc2lvbklEIGlzCiAgICAgICAgUGFzc3dvcmQgID0+ICdzb21lIHBhc3N3b3JkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgVXNlckxvZ2luIGlzIHNlbnQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGFzc3dvcmQgaXMgcmVxdWlyZWQKCiAgICAgICAgIyBsaW1pdCB0aGUgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyAob3B0aW9uYWwsIGRlZmF1bHQgaXMgMTAwMDApCiAgICAgICAgTGltaXQgPT4gMTAwLAoKICAgICAgICAjIFVzZSBDb25maWdJdGVtU2VhcmNoIGFzIGEgY29uZmlnIGl0ZW0gZmlsdGVyIG9uIGEgc2luZ2xlIGNvbmZpZyBpdGVtLAogICAgICAgICMgb3IgYSBwcmVkZWZpbmVkIGNvbmZpZyBpdGVtIGxpc3QKICAgICAgICBDb25maWdJdGVtSUQgICAgID0+IDEyMzQsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiBbMTIzNCwgMTIzNV0sCgogICAgICAgICMgY29uZmlnIGl0ZW0gbnVtYmVyIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgTnVtYmVyID0+ICclMTIzNTQ2JScsCiAgICAgICAgTnVtYmVyID0+IFsnJTEyMzU0NiUnLCAnJTEyMzY2NiUnXSwKCiAgICAgICAgIyBjb25maWcgaXRlbSBuYW1lIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgIyBXaGVuIENvbmRpdGlvbklubGluZSBpcyBzZXQgdGhlbiByZW1haW5pbmcgd2hpdGVzcGFjZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYSAmJiBjb25kaXRpb24gYW5kCiAgICAgICAgIyBhbmQgdGhlIHNldHRpbmdzIG9mIENvbnRlbnRTZWFyY2hQcmVmaXggYW5kIENvbnRlbnRTZWFyY2hTdWZmaXggd2lsbCBiZSBob25vcmVkLgogICAgICAgIE5hbWUgPT4gJyVTb21lVGV4dCUnLAogICAgICAgIE5hbWUgPT4gWyclU29tZVRlc3QxJScsICclU29tZVRlc3QyJSddLAoKICAgICAgICBDbGFzc2VzICAgICAgICAgPT4gWydDb21wdXRlcicsICdOZXR3b3JrJ10gICAjIChvcHRpb25hbCkKICAgICAgICBDbGFzc0lEcyAgICAgICAgPT4gWzksIDgsIDcsIDZdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgRGVwbFN0YXRlcyAgICAgID0+IFsnUHJvZHVjdGlvbiddICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzICAgID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIEN1ckRlcGxTdGF0ZXMgICA9PiBbJ1Byb2R1Y3Rpb24nXSAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEN1ckRlcGxTdGF0ZUlEcyA9PiBbMSwgMiwgMywgNF0sICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBJbmNpU3RhdGVzICAgICAgPT4gWydXYXJuaW5nJ10gICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJbmNpU3RhdGVJRHMgICAgPT4gWzEsIDIsIDMsIDRdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgQ3VySW5jaVN0YXRlcyAgID0+IFsnV2FybmluZyddICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ3VySW5jaVN0YXRlSURzID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIENyZWF0ZUJ5ICAgICAgICA9PiBbMSwgMiwgM10sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIENoYW5nZUJ5ICAgICAgICA9PiBbMywgMiwgMV0sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAjIER5bmFtaWNGaWVsZHMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWyd2YWx1ZTEnLCAndmFsdWUyJ10KICAgICAgICBEeW5hbWljRmllbGRfRmllbGROYW1lWCA9PiB7CiAgICAgICAgICAgIEVtcHR5ICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAjIHdpbGwgcmV0dXJuIGR5bmFtaWMgZmllbGRzIHdpdGhvdXQgYSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgc2V0IHRvIDAgdG8gc2VhcmNoIGZpZWxkcyB3aXRoIGEgdmFsdWUgcHJlc2VudC4KICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICBMaWtlICAgICAgICAgICAgICA9PiAndmFsdWUqJywgICAgICAgICAgICAgICAgIyAiZXF1YWxzIiBvcGVyYXRvciB3aXRoIHdpbGRjYXJkIHN1cHBvcnQKICAgICAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gJzIwMDEtMDEtMDEgMDE6MDE6MDEnLAogICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnMjAwMS0wMS0wMSAwMTowMTowMScsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+ICcyMDAyLTAyLTAyIDAyOjAyOjAyJywKICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzIwMDItMDItMDIgMDI6MDI6MDInLAogICAgICAgIH0sCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBvbGRlciB0aGFuIDYwIG1pbnV0ZXMpICAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY3JlYXRlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBuZXdlciB0aGFuIDEyMCBtaW51dGVzKSAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNyZWF0ZSB0aW1lIGFmdGVyIC4uLiAoY29uZmlnIGl0ZW0gbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBjb25maWcgaXRlbXMgd2l0aCBjcmVhdGVkIHRpbWUgYmVmb3JlIC4uLiAoY29uZmlnIGl0ZW0gb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY2hhbmdlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNoYW5nZWQgdGltZSBhZnRlciAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLAogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY2hhbmdlZCB0aW1lIGJlZm9yZSAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICAjIE9yZGVyQnkgYW5kIFNvcnRCeSAob3B0aW9uYWwpCiAgICAgICAgT3JkZXJCeSA9PiAnRG93bicsICAgIyBEb3dufFVwCiAgICAgICAgU29ydEJ5ICA9PiAnTnVtYmVyJywgIyBDb25maWdJdGVtfE51bWJlcnxOYW1lfERlcGxTdGF0ZXxJbmNpU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHxDdXJEZXBsU3RhdGV8Q3VySW5jaVN0YXRlfEFnZXxDcmVhdGVkfENoYW5nZWQKCiAgICAgICAgIyBPcmRlckJ5IGFuZCBTb3J0QnkgYXMgQVJSQVkgZm9yIHN1YiBzb3J0aW5nIChvcHRpb25hbCkKICAgICAgICBPcmRlckJ5ID0+IFsnRG93bicsICdVcCddLAogICAgICAgIFNvcnRCeSAgPT4gWydDb25maWdJdGVtJywgJ051bWJlciddLAogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBjYXNlIG9mIGFuIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc3VsdCBkYXRhIHBheWxvYWQgYWZ0ZXIgT3BlcmF0aW9uCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbIDEsIDIsIDMsIDQgXSwKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPkluaXQoCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICk7CgogICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdXZWJzZXJ2aWNlLkludmFsaWRDb25maWd1cmF0aW9uJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICk7CiAgICB9CgogICAgIyBhdXRoZW50aWNhdGUgdXNlcgogICAgbXkgKCRVc2VySUQpID0gJFNlbGYtPkF1dGgoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaC5BdXRoRmFpbCcsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDb25maWdJdGVtU2VhcmNoOiBBdXRob3JpemF0aW9uIGZhaWxpbmchIiwKICAgICkgaWYgISRVc2VySUQ7CgogICAgIyBhbGwgbmVlZGVkIHZhcmlhYmxlcwogICAgJFNlbGYtPntTZWFyY2hMaW1pdH0gPSAkUGFyYW17RGF0YX0tPntMaW1pdH0KICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hMaW1pdH0KICAgICAgICB8fCA1MDA7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkUGFyYW17RGF0YX0tPntTb3J0Qnl9CiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFBhcmFte0RhdGF9LT57T3JkZXJCeX0KICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIGdldCBwYXJhbWV0ZXIgZnJvbSBkYXRhCiAgICBteSAlR2V0UGFyYW0gPSAkU2VsZi0+X0dldFBhcmFtcyggJXsgJFBhcmFte0RhdGF9IH0gKTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkcwogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSAkU2VsZi0+X0dldER5bmFtaWNGaWVsZHMoICV7ICRQYXJhbXtEYXRhfSB9ICk7CgogICAgIyBwZXJmb3JtIGNvbmZpZ2l0ZW0gc2VhcmNoCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICBSZXN1bHQgICAgID0+ICdBUlJBWScsCiAgICAgICAgU29ydEJ5ICAgICA9PiAkU2VsZi0+e1NvcnRCeX0sCiAgICAgICAgT3JkZXJCeSAgICA9PiAkU2VsZi0+e09yZGVyQnl9LAogICAgICAgIExpbWl0ICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgUGVybWlzc2lvbiA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgaWYgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBcQENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHJldHVybiByZXN1bHQKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4ge30sCiAgICB9OwoKfQoKPWhlYWQxIElOVEVSTkFMIElOVEVSRkFDRQoKPWhlYWQyIF9HZXRQYXJhbXMoKQoKZ2V0IHNlYXJjaCBwYXJhbWV0ZXJzLgoKICAgIG15ICVHZXRQYXJhbSA9IF9HZXRQYXJhbXMoCiAgICAgICAgJVBhcmFtcywgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsIGNvbmZpZ2l0ZW0gcGFyYW1ldGVycwogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICVHZXRQYXJhbSA9IHsKICAgICAgICBBbGxvd2VkUGFyYW1zID0+ICdXaXRoQ29udGVudCcsICMgcmV0dXJuIG5vdCBlbXB0eSBwYXJhbWV0ZXJzIGZvciBzZWFyY2gKICAgIH0KCj1jdXQKCnN1YiBfR2V0UGFyYW1zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwoKICAgICMgZ2V0IGFycmF5IHBhcmFtcwogICAgZm9yIG15ICRJdGVtICgKICAgICAgICBxdyhDb25maWdJdGVtSUQgTnVtYmVyIE5hbWUgQ2xhc3NlcyBDbGFzc0lEcyBEZXBsU3RhdGVzIERlcGxTdGF0ZUlEcwogICAgICAgIEN1ckRlcGxTdGF0ZXMgQ3VyRGVwbFN0YXRlSURzIEluY2lTdGF0ZXMgSW5jaVN0YXRlSURzIEN1ckluY2lTdGF0ZXMKICAgICAgICBDdXJJbmNpU3RhdGVJRHMgQ3JlYXRlQnkgQ2hhbmdlQnkgT3JkZXJCeSBTb3J0QnkpCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGdldCBzZWFyY2ggYXJyYXkgcGFyYW1zCiAgICAgICAgbXkgQFZhbHVlczsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFteyRJdGVtfSApICkgewogICAgICAgICAgICBAVmFsdWVzID0gQHsgJFBhcmFteyRJdGVtfSB9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXskSXRlbX0gKSApIHsKICAgICAgICAgICAgQFZhbHVlcyA9ICggJFBhcmFteyRJdGVtfSApOwogICAgICAgIH0KICAgICAgICAkR2V0UGFyYW17JEl0ZW19ID0gXEBWYWx1ZXMgaWYgc2NhbGFyIEBWYWx1ZXM7CiAgICB9CgogICAgbXkgQFByZWZpeGVzID0gKAogICAgICAgICdDb25maWdJdGVtQ3JlYXRlVGltZScsCiAgICAgICAgJ0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZScsCiAgICApOwoKICAgIG15IEBQb3N0Zml4ZXMgPSAoCiAgICAgICAgJ09sZGVyTWludXRlcycsCiAgICAgICAgJ05ld2VyTWludXRlcycsCiAgICAgICAgJ09sZGVyRGF0ZScsCiAgICAgICAgJ05ld2VyRGF0ZScsCiAgICApOwoKICAgIGZvciBteSAkUHJlZml4IChAUHJlZml4ZXMpIHsKCiAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFteyRQcmVmaXh9ICkgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9ICRQYXJhbXskUHJlZml4fTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9fiBzL1xzKyQvL2c7CiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9fiBzL15ccysvL2c7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFBvc3RmaXggKEBQb3N0Zml4ZXMpIHsKICAgICAgICAgICAgbXkgJEl0ZW0gPSAkUHJlZml4IC4gJFBvc3RmaXg7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFteyRJdGVtfSApICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRJdGVtfSA9ICRQYXJhbXskSXRlbX07CgogICAgICAgICAgICAgICAgIyByZW1vdmUgd2hpdGUgc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskSXRlbX0gPX4gcy9ccyskLy9nOwogICAgICAgICAgICAgICAgJEdldFBhcmFteyRJdGVtfSA9fiBzL15ccysvL2c7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVHZXRQYXJhbTsKCn0KCj1oZWFkMiBfR2V0RHluYW1pY0ZpZWxkcygpCgpnZXQgc2VhcmNoIHBhcmFtZXRlcnMuCgogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSBfR2V0RHluYW1pY0ZpZWxkcygKICAgICAgICAlUGFyYW1zLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGwgY29uZmlnaXRlbSBwYXJhbWV0ZXJzCiAgICApOwoKICAgIHJldHVybnM6CgogICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSB7CiAgICAgICAgJ0FsbEFsbG93ZWRERicgPT4gJ1dpdGhEYXRhJywgICAjIHJldHVybiBub3QgZW1wdHkgcGFyYW1ldGVycyBmb3Igc2VhcmNoCiAgICB9Cgo9Y3V0CgpzdWIgX0dldER5bmFtaWNGaWVsZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGR5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciBjb25maWdpdGVtIHNlYXJjaAogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBjb25maWdpdGVtIG9iamVjdAogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgbXkgJUR5bmFtaWNGaWVsZHNSYXc7CiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgewogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgKSB7CiAgICAgICAgICAgICREeW5hbWljRmllbGRzUmF3eyAkUGFyYW17RHluYW1pY0ZpZWxkfS0+e05hbWV9IH0gPSAkUGFyYW17RHluYW1pY0ZpZWxkfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgKSB7CiAgICAgICAgICAgICVEeW5hbWljRmllbGRzUmF3ID0gbWFwIHsgJF8tPntOYW1lfSA9PiAkXyB9IEB7ICRQYXJhbXtEeW5hbWljRmllbGR9IH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CiAgICAgICAgfQoKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIENvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgd2ViIHNlcnZpY2UuCiAgICAgICAgZm9yIG15ICRQYXJhbWV0ZXJOYW1lICggc29ydCBrZXlzICVQYXJhbSApIHsKICAgICAgICAgICAgaWYgKCAkUGFyYW1ldGVyTmFtZSA9fiBte1xBIER5bmFtaWNGaWVsZF8gKCBbYS16QS1aXGRcLV0rICkgXHp9eG1zICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZHNSYXd7JDF9ID0gJFBhcmFteyRQYXJhbWV0ZXJOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZAogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZQogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkc1Jhd3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZHNSYXd7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICk7CgogICAgICAgIG15ICVTZWFyY2hPcGVyYXRvcnMgPSAleyAkRHluYW1pY0ZpZWxkc1Jhd3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gfTsKCiAgICAgICAgZGVsZXRlICRTZWFyY2hPcGVyYXRvcnN7TmFtZX07CgogICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSBcJVNlYXJjaE9wZXJhdG9yczsKICAgIH0KCiAgICAjIGFsbG93IGZyZWUgZmllbGRzCgogICAgcmV0dXJuICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/ar_SA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmFyX1NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfYqNmK2KfZhtin2Kog2KfZhNiq2LTYutmK2YQg2KfZhNi52KfZhdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfYpdi52K/Yp9iv2KfYqiDYqNmK2KfZhtin2Kog2KfZhNi32YTYqNin2Kog2KfZhNmI2KfYsdiv2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICfYpdi52K/Yp9iv2KfYqiDYqNmK2KfZhtin2Kog2KfZhNin2LPYqtis2KfYqNipINin2YTYtdin2K/YsdipJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn2KXYr9in2LHYqSDYudmG2KfYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAn2KrYutmK2YrYsSDYqti52LHZitmBINin2YTZgdim2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9iq2LrZitmK2LEg2KrYudix2YrZgSDYp9mE2K/ZiNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn2K3YstmFINmB2KbYp9iqIFJlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn2YfZhtinINmK2YXZg9mG2YMg2KfYs9iq2YrYsdin2K8g2K3YstmFINmB2KbYp9iqIFJlYWR5MkltcG9ydCDYp9mE2KrZiiDYqti52LHYtiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTYo9mD2KvYsSDYtNmK2YjYudmL2Kcg2YTYr9mK2YbYpy4g2YrYsdis2Ykg2YXZhNin2K3YuNipINij2YYg2KjYudi2INin2YTYqtmH2YrYptipINin2YTYpdi22KfZgdmK2Kkg2YLYryDYqtmD2YjZhiDZhdi32YTZiNio2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ9iq2K3Yr9mK2Ksg2KfZhNmD2YrYp9mG2KfYqiDYp9mE2K3Yp9mE2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ9in2LPYqtmK2LHYp9ivINit2LLZhSDZgdim2KfYqiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9mB2KbYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn2K/ZiNixINi52YbYtdixINin2YTYqtmD2YjZitmGJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9i52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9iq2LXZgdmK2Kkg2YTZhNmB2KbYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9it2K/YryDZgdim2Kkg2YXZhiDYp9mE2YLYp9im2YXYqSDZhNil2YbYtNin2KEg2LnZhti12LEg2KrZg9mI2YrZhiDYrNiv2YrYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfYp9mE2YHYptipJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAn2KfZhNil2KzYsdin2KEg2KfZhNis2YXYp9i52Yog2YTYudmG2LXYsSDYp9mE2KrZh9mK2KbYqSBJVFNNSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNmG2LTYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ9it2KfZhNipINin2YTYrdin2K/Yqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfYsdin2KjYtyDYpdmE2Ykg2KLYrtixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfYsdmC2YUg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2LrZitixINi12KfZhNitISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfYsdmC2YUg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNii2K7YsSDYp9mE2YXYsdin2K8g2KfZhNix2KjYtyDYqNmHLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9mH2YQg2KrYsdmK2K8g2K3Zgtin2Ysg2K3YsNmBINi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYp9ifJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9in2LPZhSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9in2YTYp9iz2YUg2YLZitivINin2YTYp9iz2KrYrtiv2KfZhSDYqNin2YTZgdi52YQg2YXZhiDZgtio2YQg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYqNin2YTYsdmC2YUgKNin2YTYo9ix2YLYp9mFKSDYp9mE2KrYp9mE2YrYqTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfYsdmC2YUg2KfZhNil2LXYr9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9ix2YLZhSDYpdi12K/Yp9ixINi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9ix2YLZhSDYp9mE2KXYtdiv2KfYsSDZhdiz2KrYrtiv2YUg2KjYp9mE2YHYudmEINmF2YYg2YLYqNmEINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KjYp9mE2LHZgtmFICjYp9mE2KPYsdmC2KfZhSkg2KfZhNiq2KfZhNmK2Kk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2YbYtNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNit2KfYr9irJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICfYqtin2LHZitiuINi52YbYtdixINin2YTYqtmD2YjZitmGOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfYp9mE2YXYrdiq2YjZiSDYp9mE2KrYp9ix2YrYrtmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfYpdmG2LTYp9ihINin2YTZiNmC2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn2LnYsdi2INin2YTYqtmD2KjZitixJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9i52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YTZg9mEINi12YHYrdipJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJINio2YrYp9mG2KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfYrdiv2K8g2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YfYsNinJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn2KjYr9ihINin2YTYqNit2KsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfYt9ix2YrZgtipINi52LHYtiDYp9mE2LTYrNix2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ9mF2LPYqtmI2Ykg2KfZhNi52YXZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ9in2YTYqtmD2KjZitixL9in2YTYqti12LrZitixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ9iq2YUg2KfZhNmI2LXZiNmEINil2YTZiSDYp9mE2K3YryDYp9mE2KPZgti12Ykg2YTZhdiz2KrZiNmJINin2YTYsdmI2KfYqNi3INmE2YAgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfZhdi52YTZiNmF2KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2YbYtNixINin2YTYrdin2YTZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2KfZhNit2KfZhNmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9ii2K7YsSDYqti52K/ZitmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9ii2K7YsSDYqti62YrZitixINmF2YYg2YLYqNmEJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn2LnZhtin2LXYsSDYp9mE2KrZh9mK2KbYqSDYp9mE2K7Yp9i12Kkg2KjZgyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9iz2YrYqtmFINin2LPYqtmK2LHYp9ivINin2YTZgdim2KfYqiDYp9mE2KrYp9mE2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfYs9mK2KrZhSDYp9iz2KrZitix2KfYryDYp9mE2KPYr9mI2KfYsSDYp9mE2KrYp9mE2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICfZhNin2K3YuCDYo9mG2Ycg2LPZitiq2YUg2KPZiti22YvYpyDYpdmG2LTYp9ihINin2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTZhdmC2KfYqNmE2Kkg2YjZgdim2KfYqiBHZW5lcmFsQ2F0YWxvZyDYp9mE2LnYp9mF2Kkg2YjZhNmGINmK2YPZiNmGINmH2YbYp9mDINil2LLYp9mE2Kkg2KrZhNmC2KfYptmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn2YfZhCDYqtix2YrYryDYp9mE2YXYqtin2KjYudip2J8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn2KrYrdiq2KfYrCDYpdmE2Ykg2KPZhdir2YTYqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn2KfZhNiq2LnYsdmK2YEg2YTYpyDZitmI2KzYryDYqtis2LLYptipIFlBTUwg2LXYp9mE2K3YqS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfZhti42LHYqSDYudin2YXYqTog2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfZhNmFINmK2KrZhSDYpdi52LfYp9ihINmF2LnYsdmBINi52YbYtdixINin2YTYqtmD2YjZitmGIChDb25maWdJdGVtSUQpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ9iq2K3Yqtin2Kwg2KXZhNmJINi52YbYtdixINiq2YPZiNmK2YYg2YXYrdiv2K8g2YjYp9it2K8g2LnZhNmJINin2YTYo9mC2YQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn2YTZitizINmE2K/ZitmDINit2YIg2KfZhNmI2LXZiNmEINmE2YTZg9iq2KfYqNipINil2YTZiSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2Kc6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfZhNmFINmK2KrZhSDYqti52LHZitmBINij2Yog2KrYudix2YrZgSDZhNmE2YHYptipICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn2LnZhti12LEg2KfZhNiq2YPZiNmK2YYgIiVzIiDYutmK2LEg2YXZiNis2YjYryDZgdmKINmC2KfYudiv2Kkg2KfZhNio2YrYp9mG2KfYqiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfYqti52LDYsSDYrdiw2YEg2YXYudix2YEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJINil2LXYr9in2LEg2YQgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfZhNmFINmK2KrZhSDYpdi52LfYp9ihINmF2LnYsdmBINin2YTYqtmD2YjZitmGINij2Ygg2YXYudix2YEg2KfZhNiq2YPYsdin2LEg2KPZiCDZhdi52LHZgSDYp9mE2YHYptipISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn2YTZhSDZitiq2YUg2YXZhtitINij2Yog2KrYtdix2YrYrSDYr9iu2YjZhCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn2YTYpyDZitmF2YPZhiDYpdi42YfYp9ixINin2YTYs9is2YTYjCDZhNmFINmK2KrZhSDYpdi52LfYp9ihINmF2LnYsdmBINin2YTYqtmD2YjZitmGISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9mE2Kcg2YrZhdmD2YYg2LnYsdi2INin2YTYs9is2YTYjCDZhNmFINmK2KrZhSDZhdmG2K0g2K3ZgtmI2YIg2KfZhNmI2LXZiNmEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNis2K/ZitivICjYp9mE2YXYudix2YE9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfYp9mE2KXYtdiv2KfYsSDYp9mE2KzYr9mK2K8gKNin2YTZhdi52LHZgT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfYqtmFINiq2K3Yr9mK2Ksg2K3Yp9mE2Kkg2KfZhNmG2LTYsSAo2KzYr9mK2K89JXPYjCDZgtiv2YrZhT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn2KrZhSDYqtit2K/ZitirINit2KfZhNipINin2YTYrdin2K/YqyAo2KzYr9mK2K89JXPYjCDZgtiv2YrZhT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfYqtmFINit2LDZgSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiAo2KfZhNmF2LnYsdmBPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ9iq2YXYqiDYpdi22KfZgdipINin2YTYp9ix2KrYqNin2Lcg2KXZhNmJICVzICjYp9mE2YbZiNi5PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn2KrZhSDYrdiw2YEg2KfZhNin2LHYqtio2KfYtyDYpdmE2YkgJXMgKNin2YTZhtmI2Lk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfYqtmFINiq2K3Yr9mK2Ksg2KrYudix2YrZgSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiAo2KfZhNmF2LnYsdmBPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9iq2YUg2KrYrdiv2YrYqyDYp9mE2KfYs9mFICjYrNiv2YrYrz0lc9iMINmC2K/ZitmFPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ9iq2YUg2KrYrdiv2YrYqyDYp9mE2LPZhdipICVzINmF2YYgIiVzIiDYpdmE2YkgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfYqtmFINit2LDZgSDYp9mE2KXYtdiv2KfYsSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICfZhNmFINmK2KrZhSDYpdi52LfYp9ihINmF2LnYsdmBINin2YTYqtmD2YjZitmGINij2Ygg2YXYudix2YEg2KfZhNil2LXYr9in2LEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9mE2Kcg2YrZhdmD2YYg2KXYuNmH2KfYsSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhtiMINmE2YUg2YrYqtmFINmF2YbYrSDYrdmC2YjZgiDZiNi12YjZhCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfZhdi52LHZkdmBINi52YbYtdixINin2YTYqtmD2YjZitmGICVzINi62YrYsSDZhdmI2KzZiNivINmB2Yog2YLYp9i52K/YqSDYp9mE2KjZitin2YbYp9iqISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn2LnZhti12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ9iq2YXYqiDYt9io2KfYudiq2YfYpyDYqNmI2KfYs9i32KkgJXMg2YHZiiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn2YXZjtix2KzZkNi5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn2YXYudix2ZHZgSDYp9mE2YHYptipINi62YrYsSDYtdin2YTYrSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfZhNmFINmK2KrZhSDYpdi52LfYp9ihINij2Yog2YXYudix2ZHZgSDZhNmE2YHYptipISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ9mE2Kcg2KrZiNis2K8g2K3ZgtmI2YIg2YjYtdmI2YQg2YTZh9iw2Ycg2KfZhNmB2KbYqSDZhdi52LfYp9ipISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn2YTYpyDYqtmI2KzYryDZhtiq2YrYrNipISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ9mG2KrYp9im2Kwg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfZhNinINmK2YXZg9mGINil2LjZh9in2LEg2KfZhNi52YbYtdix2Iwg2YTYpyDYqtmI2KzYryDYrdmC2YjZgiDZiNi12YjZhCDZhNmAIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ9mE2YUg2YrYqtmFINin2YTYudir2YjYsSDYudmE2YkgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn2YTZhSDZitiq2YUg2KfZhNi52KvZiNixINi52YTZiSDYo9mKINil2LXYr9in2LHYp9iqISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ9in2YTYqti02LrZitmE2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn2KrYrdiw2YrYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ9in2YTYrdin2K/Yqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn2K3Yp9mE2Kkg2KfZhNmG2LTYsSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9in2YTYrdin2YTYqSDYp9mE2LnYp9ix2LbYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYpyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9mE2Kcg2KrZiNis2K8g2LXZhNin2K3Zitin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAn2KfZhNmB2YTYqtixINi62YrYsSDYtdin2YTYrSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ9io2KfYsdin2YXYsiDYp9mE2KjYrdirINi62YrYsSDYtdin2YTYrSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICfYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTZhdi52LHZiNi22KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn2YbZiNi5INit2KfZhNipINin2YTZhti02LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn2YbZiNi5INit2KfZhNipINin2YTYrdin2K/YqyDYp9mE2K3Yp9mE2YonOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn2KjZitmGJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfZgtmK2YjYryDYp9mE2YHYptipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ9it2K/YryDZgdim2Kkg2YjYp9it2K/YqSDYo9mIINij2YPYq9ixINmE2KrZgtmK2YrYryDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTZgtin2KjZhNipINmE2YTYqtit2K/ZitivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfZgtmK2YjYryDYp9mE2YHYptipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfYrdiv2K8g2YHYptipINmI2KfYrdiv2Kkg2KPZiCDYo9mD2KvYsSDZhNiq2YLZitmK2K8g2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YLYp9io2YTYqSDZhNmE2KrYrdiv2YrYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ9iv2YrZhtin2YXZitmD2YogKNi52YbYtdixINin2YTYqtmD2YjZitmGKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAn2KvYp9io2KogKNil2LXYr9in2LEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2KXYrdin2YTYqSDYp9mE2YXYsdis2LnZitipINmE2YTYsdin2KjYtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfZhdinINil2LDYpyDZg9in2YYg2YfYsNinINin2YTYp9ix2KrYqNin2Lcg2YrZhti32KjZgiDYudmE2Ykg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KPZiCDYp9mE2YbYs9iu2Kkg2KfZhNir2KfYqNiq2Kkg2YXZhiDYp9mE2YPYp9im2YYg2KfZhNmF2LHYrNi52YouINmK2KrZhSDYpdis2LHYp9ihINit2LPYp9ioINit2KfZhNipINin2YTYrdin2K/YqyDYp9mE2K3Yp9mE2Yog2YHZgti3INi52YTZiSDYp9mE2LHZiNin2KjYtyDYp9mE2K/ZitmG2KfZhdmK2YPZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ9it2K/YryDYp9mE2LPZhdipINin2YTYqtmKINiz2YrYqtmFINin2YTYqNit2Ksg2LnZhiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmF2YYg2K7ZhNin2YTZh9inJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfYp9mE2KjZhtmK2Kkg2KfZhNij2LPYp9iz2YrYqSDYutmK2LEg2LXYp9mE2K3YqS4g2YrYsdis2Ykg2KrZgtiv2YrZhSDYqtis2LLYptipINmF2Lkg2KfZhNio2YrYp9mG2KfYqiDYqNiq2YbYs9mK2YIgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfZitmE2LLZhSDYqNiv2KEg2LPZhNiz2YTYqSBZQU1MINio2YAgIi0tLSIuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ9iq2LnYsNixINmF2LPYrSDYp9mE2KzYr9mI2YQgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn2YTZhSDZitiq2YUg2KfZhNi52KvZiNixINi52YTZiSDYo9mKINit2YLZiNmEINiv2YrZhtin2YXZitmD2YrYqSDYsNin2Kog2LXZhNipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn2KrYudiw2ZHYsSDYp9mE2KXYr9ix2KfYrCDZgdmKINin2YTYrNiv2YjZhCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9iq2YUg2KXYr9ix2KfYrCAwINi12YHZiNmBINmB2Yog2KfZhNis2K/ZiNmEIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfYp9mE2K3YryDYp9mE2KPZgti12Ykg2YTYudiv2K8g2LnZhti12LEg2YjYp9it2K8g2YPYrdivINij2YLYtdmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ9iz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn2K3Yr9irINiu2LfYoyDZgdmKINmF2LLYp9mF2YbYqSDYp9mE2KrYudix2YrZgdin2KouINmK2LHYrNmJINin2YTYqtit2YLZgiDZhdmGINin2YTYs9is2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn2YTYr9mK2YMg2KrYudix2YrZgdin2KogSVRTTUNvbmZpZ0l0ZW0g2LrZitixINmF2KrYstin2YXZhtipLiDZitix2KzZiSDZhti02LEg2KrYutmK2YrYsdin2Kog2KfZhNit2YLZhCDYp9mE2K/ZitmG2KfZhdmK2YPZiiDZhNmAIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn2YXZhtiq2YfZitipINin2YTYtdmE2KfYrdmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfYp9mE2LXZitin2YbYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9i32YrZkdin2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9mF2K7Yt9i3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9in2YTYpdi12YTYp9itJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfZhdiq2YLYp9i52K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn2KfZhNmF2LHYp9is2LnYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn2KfZhNin2K7Yqtio2KfYsS/YttmF2KfZhiDYp9mE2KzZiNiv2KknOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ9mG2LjYsdipINi52KfZhdipINmI2KrYo9mD2YrYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICfYp9iz2KrZitix2KfYryDYp9mE2YHYptin2Kov2KfZhNij2K/ZiNin2LEg2YjYp9mE2K3ZgtmI2YQg2KfZhNmF2LHYqtio2LfYqSDYqNmH2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfYrdiv2Ksg2K7Yt9ijINij2KvZhtin2KEg2KfYs9iq2YrYsdin2K8g2KfZhNmB2KbYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtINmF2K7ZgdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDZhdi52LHZiNi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfZitiz2YXYrSDYqNi02LHZiNi3INio2K3YqyDZhdmI2LPYudipINmB2Yog2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuINio2KfYs9iq2K7Yr9in2YUg2YfYsNmHINin2YTZhdmK2LLYqSDZitmF2YPZhtmDINin2YTYqNit2Ksg2YXYq9mE2KfZiyDYudmGINin2LPZhSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhdi5INmH2LDYpyDYp9mE2YbZiNi5INmF2YYg2KfZhNi02LHZiNi3INmF2KvZhCAiKCrZhdmB2KrYp9itIDEqJirZhdmB2KrYp9itIDIqKSIg2KPZiCAiKCrZhdmB2KrYp9itIDEqfHzZhdmB2KrYp9itIDIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9mK2LPZhditINio2LTYsdmI2Lcg2KjYrdirINmF2YjYs9i52Kkg2YHZiiDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4g2KjYp9iz2KrYrtiv2KfZhSDZh9iw2Ycg2KfZhNmF2YrYstipINmK2YXZg9mG2YMg2KfZhNio2K3YqyDYudmE2Ykg2LPYqNmK2YQg2KfZhNmF2KvYp9mEINi52YYg2KfYs9mFINi52YbYtdixINin2YTYqtmD2YjZitmGINmF2Lkg2YfYsNinINin2YTZhtmI2Lkg2YXZhiDYp9mE2LTYsdmI2Lcg2YXYq9mEICIoKtmF2YHYqtin2K0gMSomKtmF2YHYqtin2K0gMiopIiDYo9mIICIoKtmF2YHYqtin2K0gMSp8fNmF2YHYqtin2K0gMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn2KfZhNmF2K7YqNix2YrZhiDYp9mE2LPYsdmK2YrZhiDYp9mE2YXYudmK2YbZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ9in2YTZhdiu2KjYsdmK2YYg2KfZhNiz2LHZitmK2YYg2KfZhNmF2LnZitmG2YrZhiDZhNi02LHZg9ipINin2YTYudmF2YrZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ9in2YTZhdiu2KjYsdmI2YYg2KfZhNiz2LHZitmI2YYg2KfZhNmF2K7Ytdi12YjZhiDZhNmE2YXYs9iq2K7Yr9mFINin2YTYudmF2YrZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAn2KXYudiv2KfYr9in2KogQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn2KrYrdmC2YIg2YXZhiDZiNis2YjYryDYp9iz2YUg2YHYsdmK2K8g2YHZgti3INiv2KfYrtmEINmG2YHYsyDZgdim2KkgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSDYo9mIINi52KfZhNmF2YrZi9inIChcJ9i52KfZhVwnKdiMINmF2YXYpyDZiti52YbZiiDYo9mGINmD2YQg2LnZhti12LEg2KrZg9mI2YrZhiDZhdmI2KzZiNivINmK2KTYrtiwINmB2Yog2KfZhNin2LnYqtio2KfYsSDYudmG2K8g2KfZhNio2K3YqyDYudmGINin2YTYqtmD2LHYp9ix2KfYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ9in2K7YqtixINmI2K3Yr9ipINmG2YXYt9mK2Kkg2YTZgdix2LYg2YbYuNin2YUg2KfZhNiq2LPZhdmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfYp9iu2KrYsSDZiNit2K/YqSDZhtmF2LfZitipINmE2YHYsdi2INmF2K7Yt9i3INij2LHZgtin2YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ9in2K7YqtixINmI2K3Yr9ipINmG2YXYt9mK2Kkg2YTZgdix2LYg2YXYrti32Lcg2LPZhNiz2YTYqSDYp9mE2KXYtdiv2KfYsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfYp9iu2KrYsSDYp9mE2LPZhdin2Kog2YTYqti02LrZitmEINil2YbYtNin2KEg2KXYtdiv2KfYsSDYrNiv2YrYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn2KfYrtiq2LEg2KfZhNmB2KbYp9iqINin2YTZhdix2KfYryDYqti52YrZitmG2YfYpyDZhNmB2KbYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAn2YXYsdi02K3Yp9iqINi52YbYtdixINiq2YPZiNmK2YYg2KfZhNi52YXZiNivINmE2YAg2YbYuNix2Kkg2LnYp9mF2Kkg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYudmF2YjYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ9in2YTYo9i52YXYr9ipINin2YTYqtmKINmK2YXZg9mGINiq2LXZgdmK2KrZh9inINmB2Yog2KfZhNmG2LjYsdipINin2YTYudin2YXYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuINmF2YTYp9it2LjYqTog2YrZj9iz2YXYrSDZgdmC2Lcg2KjYs9mF2KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZiNin2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfYudmG2KfYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICfYpdi22KfZgdipINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ9iq2LnYr9mK2YQg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YjYrdiv2Kkg2K3Yr9irINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTZhtmF2LfZitipINin2YTYqtmKINiq2KrZititINin2YTYqtiz2KzZitmEINmB2Yog2KfZhNiz2KzZhCDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICfZiNit2K/YqSDYrdiv2Ksg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNmG2YXYt9mK2Kkg2KfZhNiq2Yog2KrZgtmI2YUg2KjYqtit2K/ZitirINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KXZhNmJINiq2LnYsdmK2YHZh9inINin2YTYrdin2YTZii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfYqtin2LHZitiuINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfYt9io2KfYudipINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ9iq2YPYqNmK2LEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAn2LnYsdi2INi02KzYsdipINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn2KXYtdiv2KfYsSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfZhNmGINmK2KrZhSDYqtiu2LLZitmGINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YXZhiDYp9mE2YHYptin2Kog2KfZhNiq2KfZhNmK2Kkg2LnZhNmJINiu2KfYr9mFIEVsYXN0aWNzZWFyY2guINmE2KrYt9io2YrZgiDYsNmE2YMg2LnZhNmJIENJcyDYp9mE2K3Yp9mE2YrYqdiMINmK2KzYqCDYqti02LrZitmEINiq2LHYrdmK2YQgQ0kg2LnYqNixINmI2K3Yr9ipINin2YTYqtit2YPZhdiMINio2LnYryDYqti62YrZitixINmH2LDYpyDYp9mE2K7Zitin2LEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ9mE2YYg2YrYqtmFINiq2K7YstmK2YYg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYsNin2Kog2K3Yp9mE2KfYqiDYp9mE2YbYtNixINin2YTYqtin2YTZitipINi52YTZiSDYrtin2K/ZhSBFbGFzdGljc2VhcmNoLiDZhNiq2LfYqNmK2YIg2LDZhNmDINi52YTZiSBDSXMg2KfZhNit2KfZhNmK2KnYjCDZitis2Kgg2KrYtNi62YrZhCDYqtix2K3ZitmEIENJINi52KjYsSDZiNit2K/YqSDYp9mE2KrYrdmD2YXYjCDYqNi52K8g2KrYutmK2YrYsSDZh9iw2Kcg2KfZhNiu2YrYp9ixLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfYrdivINi52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfYrdivINi52YbYtdixINin2YTYqtmD2YjZitmGINmE2YPZhCDYtdmB2K3YqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ9mC2KfYudiv2Kkg2KjZitin2YbYp9iqINil2K/Yp9ix2Kkg2KfZhNiq2YfZitim2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfZiNit2K/YqSDYqtmH2YrYptipINin2YTYudmG2LXYsSDYp9mE2YXYrNmF2ZHYuSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNmF2YjYrNmHINin2YTYrtmE2YHZiiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn2KXZhti02KfYoSDYqti52LHZitmB2KfYqiDZhNi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YjYpdiv2KfYsdiq2YfYpy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICfYpdmG2LTYp9ihINiq2LDYp9mD2LEg2YTYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YbZgtin2Lcg2LLZhdmG2YrYqSDZhdit2K/Yr9ipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfZitmF2YPZhiDZhNmE2LnZhdmE2KfYoSDYp9mE2KfYt9mE2KfYuSDYudmE2Ykg2KXYtdiv2KfYsdin2KogQ0kg2KfZhNiq2KfYsdmK2K7ZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfZitmF2YPZhiDZhNmE2LnZhdmE2KfYoSDYp9mE2KrYqNiv2YrZhCDZitiv2YjZitin2Ysg2KjZitmGINil2LXYr9in2LHYp9iqIENJINin2YTYqtin2LHZitiu2YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfYp9mE2KjZitin2YbYp9iqINin2YTYp9mB2KrYsdin2LbZitipINmE2KfYs9iq2K7Yr9in2YXZh9inINmB2Yog2KfZhNiz2YXYqSDZhNi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4g2YXYq9in2YQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD3Ys9mG2KnYmyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0Pdii2K7YsdibIElUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTLYmyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfYp9mE2KjZitin2YbYp9iqINin2YTYp9mB2KrYsdin2LbZitipINmE2KfYs9iq2K7Yr9in2YXZh9inINmB2Yog2KfZhNiz2YXYqSDZhNi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9iq2LnYsdmK2YEg2KfZhNi52YXZhNmK2KfYqiDYp9mE2KrZiiDZitis2Kgg2KPZhiDZitiq2YjZgdixINio2YfYpyDYstixINin2YTYpdi52K/Yp9iv2KfYqiDZgdmKINmI2K/YrNipINmD2KfYptmGINin2YTYsdin2KjYtyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDYp9mE2LHYrNin2KEg2YXZhNin2K3YuNipINij2YbZhyDZitis2Kgg2KrYs9is2YrZhCDZhdmE2YHYp9iqIEpTINmIIENTUyDYp9mE2KrYp9mE2YrYqSDZhNmH2LDZhyDYp9mE2KXYrNix2KfYodin2Ko6IENvcmUuQ3VzdG9tTGlzdC5jc3PYjCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz2IwgQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz2IwgQ29yZS5BZ2VudC5UYWJsZUZpbHRlci5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ9iq2LnYsdmK2YEg2YXYrti32Lcg2YLYp9mE2Kg6OjrZhdis2YXZiNi52Kkg2KPYr9mI2KfYqiDZhNiz2YTYp9iz2YQg2KfZhNil2LXYr9in2LEuINmK2Y/Ys9iq2K7Yr9mFINmB2YLYtyDYpdiw2Kcg2KrZhSDYqti52YrZitmGINmI2K3Yr9ipINiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEg2KXZhNmJIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ9iq2K3Yr9mK2K8g2YXYrNmF2YjYudipINmF2YYg2KfZhNi02LHZiNi3INin2YTYqtmKINmK2Y/Ys9mF2K0g2KjZhdmI2KzYqNmH2Kcg2YTZhNi52YXZitmEINio2LHYpNmK2Kkg2LnZhti12LEg2KrZg9mI2YrZhi4g2YrZhdmD2YYg2KrZgtmK2YrYryDYp9mE2LTYsdmI2Lcg2KfYrtiq2YrYp9ix2YrZi9inINi52YTZiSDZhdis2YXZiNi52KfYqiDZhdi52YrZhtipINmF2YYg2KfZhNi52YXZhNin2KEuINin2YTYp9iz2YUg2YfZiCDYp9mE2LPZhdipINin2YTYpdmE2LLYp9mF2YrYqSDYp9mE2YjYrdmK2K/YqS4g2KXYsNinINmE2YUg2YrYqtmFINil2LnYt9in2KEg2KPZiiDYrtmK2KfYsdin2Kog2KPYrtix2YnYjCDYs9iq2YPZiNmGINis2YXZiti5INi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YXYsdim2YrYqSDYqtit2Kog2KrZhNmDINin2YTZgdim2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYrdiw2YEg2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00g2KjYp9iz2KrYrtiv2KfZhSDYp9mE2YjYp9is2YfYqSDYp9mE2LnYp9mF2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTZhNit2LXZiNmEINi52YTZiSDYudmG2KfYtdixINiq2YPZiNmK2YYgSVRTTSDYqNin2LPYqtiu2K/Yp9mFINin2YTZiNin2KzZh9ipINin2YTYudin2YXYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNmE2KjYrdirINmB2Yog2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00g2KjYp9iz2KrYrtiv2KfZhSDYp9mE2YjYp9is2YfYqSDYp9mE2LnYp9mF2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYqti52YrZitmGINi52YbYp9i12LEg2KrZg9mI2YrZhiBJVFNNINio2KfYs9iq2K7Yr9in2YUg2KfZhNmI2KfYrNmH2Kkg2KfZhNi52KfZhdipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfZitit2K/YryDZiNit2K/YqSDZhti42LHYqSDYudin2YXYqSDZhNil2LjZh9in2LEg2KfZhNi52LHYtiDYp9mE2LXYutmK2LEg2YTZgtin2KbZhdipINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINmF2Kcg2KXYsNinINmD2KfZhiDZitis2Kgg2KXYuNmH2KfYsSDYqtiz2YXZitin2Kog2YbZiNi5INin2YTYp9ix2KrYqNin2Lcg2YHZiiDYp9iq2LXYp9mE2KfYqiDYp9mE2LnZgtiv2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KrYudio2YrYsdin2Kog2KfZhNi52KfYr9mK2Kkg2KjYtNmD2YQg2YHYsdiv2Yog2YTZg9mEINmB2KbYqSDZhdmGINmB2KbYp9iqIENvbmZpZ0l0ZW0g2YTZhNiq2K3ZgtmCINmF2YYg2KfYs9mFINi52YbYtdixINin2YTYqtmD2YjZitmGINmI2KXYuNmH2KfYsSDYsdiz2KfYptmEINin2YTYrti32KMg2KfZhNmF2YLYp9io2YTYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYudmF2K/YqSDYp9mE2YXYqtin2K3YqSDZhdmGIENJINmB2Yog2KfZhNmG2LjYsdipINin2YTYudin2YXYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINin2LnYqtmF2KfYr9mL2Kcg2LnZhNmJINmB2KbYqSBDSS4g2YrYrNioINij2YYg2YrYqtmD2YjZhiDZg9mEINil2K/Yrtin2YQg2YXZhiDYp9iz2YUg2KfZhNmB2KbYqSDZiNmF2LXZgdmI2YHYqSDZhdmGINin2YTYrdmC2YjZhCDYp9mE2YXYqtin2K3YqSDZhNmE2YHYptipINin2YTZhdmC2KfYqNmE2KkuINmK2KzYqCDYo9mGINiq2K3Yqtix2YUg2KXYr9iu2KfZhNin2Kog2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Kkg2KfZhNmF2K7Yt9i3IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitit2K/YryDYs9mF2Kkg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNin2YHYqtix2KfYttmK2Kkg2YTZgdix2LIg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZhtiq2YrYrNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2LPZhdipINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYp9mB2KrYsdin2LbZitipINmE2YHYsdiyINi52YbYtdixINin2YTYqtmD2YjZitmGINmE2YbYqtmK2KzYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfZitit2K/YryDYs9mF2Kkg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNin2YHYqtix2KfYttmK2Kkg2YTZgdix2LIg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZhtiq2YrYrNipINio2K3YqyDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmH2LDZhyDYp9mE2LnZhdmE2YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYqtix2KrZitioINin2YTYp9mB2KrYsdin2LbZiiDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YbYqtmK2KzYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4g2YTYo9i52YTZiTog2KfZhNij2YLYr9mFINmB2Yog2KfZhNij2LnZhNmJLiDZhNij2LPZgdmEOiDYp9mE2KPYrdiv2Ksg2YHZiiDYp9mE2KPYudmE2YkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfZitit2K/YryDYqtix2KrZitioINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYp9mB2KrYsdin2LbZiiDZgdmKINmG2KrZitis2Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuINmE2KPYudmE2Yk6INin2YTYo9mC2K/ZhSDZgdmKINin2YTYo9i52YTZiS4g2YTYo9iz2YHZhDog2KfZhNij2K3Yr9irINmB2Yog2KfZhNij2LnZhNmJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LnZhdiv2Kkg2KfZhNin2YHYqtix2KfYttmK2Kkg2KfZhNmF2LnYsdmI2LbYqSDZhdmGIENJcyDZgdmKINin2YTZhti42LHYqSDYp9mE2LnYp9mF2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9i52KrZhdin2K/Zi9inINi52YTZiSDZgdim2KkgQ0kuINmK2KzYqCDYo9mGINmK2KrZg9mI2YYg2YPZhCDYpdiv2K7Yp9mEINmF2YYg2KfYs9mFINin2YTZgdim2Kkg2YjZhdi12YHZiNmB2Kkg2YXZhiDYp9mE2K3ZgtmI2YQg2KfZhNmF2KrYp9it2Kkg2YTZhNmB2KbYqSDYp9mE2YXZgtin2KjZhNipLiDZitis2Kgg2KPZhiDYqtit2KrYsdmFINil2K/Yrtin2YTYp9iqINin2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTZhdiu2LfYtyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICfZitit2K/YryDYudmF2YIg2KfZhNi52YTYp9mC2KfYqiDYp9mE2KfZgdiq2LHYp9i22Yog2KfZhNiw2Yog2LPZitiq2YUg2LnYsdi22YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINiz2YXYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNmF2LnYsdmI2LbYqSDYp9mE2KfZgdiq2LHYp9i22YrYqSDZhNi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINiz2YXYqSDYqNit2Ksg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNin2YHYqtix2KfYttmK2Kkg2KfZhNmF2LnYsdmI2LbYqSDZhNi02KfYtNipINio2K3YqyDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4g2YXYq9in2YQ6ICLYp9mE2YXZgdiq2KfYrSIg2YrYrNioINij2YYg2YrYrdiq2YjZiiDYudmE2Ykg2KfYs9mFINin2YTYrdmC2YQg2KfZhNiv2YrZhtin2YXZitmD2Yog2YHZiiDZh9iw2Ycg2KfZhNit2KfZhNipIFwnWFwn2IwgItin2YTZhdit2KrZiNmJIiDZitis2Kgg2KPZhiDZitit2KrZiNmKINi52YTZiSDZgtmK2YXYqSDYp9mE2K3ZgtmEINin2YTYr9mK2YbYp9mF2YrZg9mKINit2LPYqCDZhtmI2Lkg2KfZhNit2YLZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitiMINin2YTZhti1OiBcJ9mG2LVcJ9iMINin2YTZgtin2KbZhdipINin2YTZhdmG2LPYr9mE2Kk6IFwnMVwn2Iwg2KfZhNiq2KfYsdmK2K4v2KfZhNmI2YLYqjogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hEeW5hbWljRmllbGRfWFQgVGltZVNsb3RTdGxvdFN0YXJ0TWludXRlPTAw2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YIFRpbWVTbG90U3RhcnRTZWNvbmQ9MDDYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1ggVGltZVNsb3RTdG9wWWVhcj0yMDEz2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YIFRpbWVTbG90U3RvcE1vbnRoPTAxIFNlYXJjaF9EeW5hbWljRmllbGRfWER5bmFtaWNGaWVsZF9YVCBUaW1lU2xvdFN0b3BEYXk9MjbYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIz2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU52JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5OyIg2YggXCfYo9mIIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVF9UaW1lUG9pbnRGb3JtYXQ9d2Vla9ibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRfVGltZVBvaW50U3RhcnQ92YLYqNmE2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVCBUaW1lUG9pbnRWYWx1ZT03XCfYmyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNmD2KfYptmGINin2YTZgdix2LnZiiDYp9mE2KfZgdiq2LHYp9i22Yog2YTZhNmB2KbYqSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYudmF2K/YqSDYp9mE2YXYqtin2K3YqSDZhdmGIENJINmB2Yog2KfZhNmG2LjYsdipINin2YTYudin2YXYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINin2LnYqtmF2KfYr9mL2Kcg2LnZhNmJINmB2KbYqSBDSS4g2YrYrNioINij2YYg2YrYqtmD2YjZhiDZg9mEINil2K/Yrtin2YQg2YXZhiDYp9iz2YUg2KfZhNmB2KbYqSDZiNmF2LXZgdmI2YHYqSDZhdmGINin2YTYrdmC2YjZhCDYp9mE2YXYqtin2K3YqSDZhNmE2YHYptipINin2YTZhdmC2KfYqNmE2KkuINmK2KzYqCDYo9mGINiq2K3Yqtix2YUg2KXYr9iu2KfZhNin2Kog2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Kkg2KfZhNmF2K7Yt9i3IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2LHYqtmB2KfYuSDZhdmD2YjZhiDZhdit2LHYsSDYp9mE2YbYtSDYp9mE2YXZhtiz2YIuINit2K/YryDZgtmK2YXYqSDYsdmC2YXZitipICjYqNmD2LPZhCkg2KPZiCDZhtiz2KjYqSDZhdim2YjZitipICjZhtiz2KjZitipKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2LnYr9ivINin2YTYtdmB2YjZgSDZhNmF2K3YsdixINiq2LnYsdmK2YEgQ0kg2YHZiiDZiNin2KzZh9ipINin2YTZhdiz2KTZiNmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfZitmP2K3Yr9ivINiq2LHYqtmK2Kgg2KfZhNit2KfZhNin2Kog2KfZhNi52KfYsdi22Kkg2YXZhiDYp9mE2KPYudmE2YkgKNmF2KvZhCDYp9mE2K3ZhNmC2YrYqSkg2KXZhNmJINin2YTYo9iv2YbZiSAo2YXYq9mEINin2YTZiNi42YrZgdmK2KkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINit2KfZhNin2Kog2KfZhNmG2LTYsSDYsNin2Kog2KfZhNi12YTYqSDYp9mE2KrZiiDZitmF2YPZhiDYo9mGINiq2KTYq9ixINmB2YrZh9inINin2YTYqtiw2KfZg9ixINin2YTZhdix2KrYqNi32Kkg2LnZhNmJINit2KfZhNipINin2YTZhdiu2KjYsSDYp9mE2LPYsdmKLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINit2K8g2KfZhNio2K3YqyDZhNi02KfYtNipIEFnZW50SVRTTUNvbmZpZ2lnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfZitit2K/YryDYrdivINin2YTYqNit2Ksg2YTYtNin2LTYqSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINit2K8g2KfZhNio2K3YqyDZhNi02KfYtNipIEN1c3RvbWVySVRTTUNvbmZpZ2lnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfZitit2K/YryDYrdivINin2YTYqNit2Ksg2YTYtNin2LTYqSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYudmF2K/YqSDYp9mE2LjYp9mH2LHYqSDZhdmGIENJcyDZgdmKINi32LHZitmC2Kkg2KfZhNi52LHYtiDYp9mE2YXYudmC2K/YqSDZhNis2K/ZiNmEINin2YTYp9ix2KrYqNin2Lcg2YTYrNmF2YrYuSDZgdim2KfYqiBDSS4g2KXYsNinINmE2YUg2YrZg9mGINmH2YbYp9mDINil2K/Yrtin2YTYjCDZitiq2YUg2LnYsdi2INin2YTYo9i52YXYr9ipINin2YTYp9mB2KrYsdin2LbZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LnZhdiv2Kkg2KfZhNmF2LnYsdmI2LbYqSDZhdmGIENJINmB2Yog2LfYsdmK2YLYqSDYp9mE2LnYsdi2INin2YTZhdi52YLYr9ipINmE2KzYr9mI2YQg2KfZhNin2LHYqtio2KfYt9iMINin2LnYqtmF2KfYr9in2Ysg2LnZhNmJINmB2KbYqSBDSS4g2YrYrNioINij2YYg2YrZg9mI2YYg2YPZhCDYpdiv2K7Yp9mEINmF2LPYqNmI2YLZi9inINio2KfYs9mFINin2YTZgdim2Kkg2YjZhtmC2LfYqtmK2YYgKNij2Yog2KfZhNmD2YXYqNmK2YjYqtixOjo6OjopLiDZh9mG2KfZgyDYudiv2K8g2YLZhNmK2YQg2YXZhiDYs9mF2KfYqiBDSS1BdHRyaWJ1dGVzINin2YTZhdi02KrYsdmD2Kkg2KjZitmGINis2YXZiti5IENJICjZhdir2KfZhCDZhNmB2KbYqSDYp9mE2YPZhdio2YrZiNiq2LE6INin2YTYrdin2LPZiNioOjrYp9mE2KfYs9mF2Iwg2KfZhNit2KfYs9mI2Kg6OkN1ckRlcGxTdGF0ZdiMINin2YTYrdin2LPZiNioOjpDcmVhdGVUaW1lKS4g2YTYpdi42YfYp9ixINiz2YXYp9iqIENJLUF0dHJpYnV0ZXMg2KfZhNmB2LHYr9mK2Kkg2YPZhdinINmH2Yog2YXYudix2YHYqSDZgdmKINiq2LnYsdmK2YEgQ0ktRGVmaW5pdGlvbtiMINmK2KzYqCDYp9iz2KrYrtiv2KfZhSDYp9mE2YXYrti32Lcg2KfZhNiq2KfZhNmKICjZhdir2KfZhCDZhNmB2KbYqSDYp9mE2YPZhdio2YrZiNiq2LEpOiDYp9mE2YPZhdio2YrZiNiq2LE6Otin2YTZgtix2LUg2KfZhNi12YTYqDo6MdiMINin2YTZg9mF2KjZitmI2KrYsTo62KfZhNmC2LHYtSDYp9mE2LXZhNioOjoxOjrYp9mE2LPYudipOjox2Iwg2KfZhNmD2YXYqNmK2YjYqtixOiDYp9mE2YLYsdi1INin2YTYtdmE2Kg6OjLYjCDYp9mE2YPZhdio2YrZiNiq2LE6INin2YTZgtix2LUg2KfZhNi12YTYqDo6Mjog2KfZhNiz2LnYqTo6MS4g2YHZiiDYrdin2YTYqSDYudiv2YUg2YjYrNmI2K8g2KXYr9iu2KfZhCDZhNmB2KbYqSBDSdiMINmK2KrZhSDYudix2LYg2KfZhNij2LnZhdiv2Kkg2KfZhNin2YHYqtix2KfYttmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNi52YbYp9i12LEg2KfZhNmF2KrYp9it2KkgItmE2YTYpdis2LHYp9ihIiDZgdmKINin2YTZhdiz2KrZiNmJINin2YTYq9in2YTYqyDZhdmGINio2YbZitipIEFDTCDZhNi52YbYtdixINiq2YPZiNmK2YYgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2LnZhtin2LXYsSDYp9mE2YXYqtmI2YHYsdipINmB2Yog2KfZhNmF2LPYqtmI2Ykg2KfZhNij2YjZhCDZhdmGINio2YbZitipIEFDTCDZhNi52YbYtdixINiq2YPZiNmK2YYgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNi52YbYp9i12LEg2KfZhNmF2KrZiNmB2LHYqSDZgdmKINin2YTZhdiz2KrZiNmJINin2YTYq9in2YbZiiDZhdmGINio2YbZitipIEFDTCDZhNi52YbYtdixINiq2YPZiNmK2YYgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn2YrYrdiv2K8g2YbZiNi5INin2YTYp9ix2KrYqNin2LcgKNin2YTZhdiz2YXZiSDZhdmGINmF2YbYuNmI2LEg2KfZhNiq2LDZg9ix2KkpINin2YTYsNmKINmK2YXZg9mGINij2YYg2YrYpNir2LEg2LnZhNmJINit2KfZhNipIENJINin2YTZhdix2KrYqNi3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINmG2YjYuSDYp9mE2KrYsNmD2LHYqSDYp9mE2KrZiiDZitmF2YPZhiDYo9mGINiq2KTYq9ixINi52YTZiSDYrdin2YTYqSDYp9mE2YXYrtio2LEg2KfZhNmF2LPYqtmC2YQg2KfZhNmF2LHYqtio2LcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn2KrYrdiv2YrYqyDYp9mE2KrYudix2YrZgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn2K3YsNmBINi52YbYtdixINin2YTYqtmH2YrYptipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ9iv2YrYqNmE2LPYqtmK2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ9mE2YjZhiDYrdin2YTYqSDYp9mE2YbYtNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ9it2KfZhNipINin2YTZhti02LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn2YXZg9ix2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ9in2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNit2K/YqyDYp9mE2K3ZgtmEINin2YTYr9mK2YbYp9mF2YrZg9mKINin2YTYqtmKINiq2K3Yr9ivINiq2LnYsdmK2YHYp9iqINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2LnZhNmJINij2YbZh9inINi62YrYsSDZhdiq2LLYp9mF2YbYqdiMINil2LDYpyDZg9in2YbYqiDYqtit2KrZiNmKINi52YTZiSDYrdmC2YjZhCDYr9mK2YbYp9mF2YrZg9mK2Kkg2YXYqti62YrYsdipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Kkg2KfZhNmF2LnYsdmI2LbYqSDZgdmKINi02KfYtNipINit2YLZhCDYpdiv2KfYsdipINiu2K/Zhdin2Kog2KrZg9mG2YjZhNmI2KzZitinINin2YTZhdi52YTZiNmF2KfYqiDZiNin2YTYp9iq2LXYp9mE2KfYqiDYp9mE2KXYttin2YHZiiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti42YfYsSDYp9mE2K3ZgtmI2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYqSDZgdmKINi02KfYtNipINin2YTZhti42LHYqSDYp9mE2LnYp9mF2Kkg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTYqtmKINiq2LjZh9ixINmB2Yog2LTYp9i02Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ9iq2YXZg9mK2YYg2YXZitiy2Kkg2KfZhNil2KzYsdin2KHYp9iqINin2YTZhdis2YXYudipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZhNmI2KfYrNmH2Kkg2KfZhNij2YXYp9mF2YrYqSDZhNmE2YjZg9mK2YQg2YTZhNi52YXZhCDYudmE2Ykg2KPZg9ir2LEg2YXZhiDYudmG2LXYsSDYqtmD2YjZitmGINmI2KfYrdivINmB2Yog2YPZhCDZhdix2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfYqtmF2YPZitmGINmF2YrYstipINin2YTYpdis2LHYp9ihINin2YTZhdis2YXYuSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmB2YLYtyDZhNmE2YXYrNmF2YjYudin2Kog2KfZhNmF2K/Ysdis2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ9mI2K3Yr9ipINin2YTYrdiv2Ksg2KfZhNmG2YXYt9mK2Kkg2YTYqti52YrZitmGINit2KfZhNipINin2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhtmKINi52YTZiSDYsdin2KjYtyDYqtiw2YPYsdipLdiq2YPZiNmK2YYt2LnZhti12LEt2KrZg9mI2YrZhi3Ysdin2KjYty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn2K3ZgtmI2YQg2YHZh9ix2LMg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhtiMINin2YTZhdiz2KrYrtiv2YXYqSDZhNmE2KjYrdirINi52YYg2KfZhNmG2LUg2KfZhNmD2KfZhdmELiDZitiq2YUg2KrYrtiy2YrZhiDYp9mE2K3ZgtmI2YQg2KPZiti22YvYp9iMINmI2YTZg9mG2YfYpyDZhNmK2LPYqiDYpdmE2LLYp9mF2YrYqSDZhNmE2YjYuNmK2YHYqSDYp9mE2LnYp9mF2KkuINmK2YXZg9mGINiq2LnYt9mK2YQg2KXYr9ix2KfYrCDYp9mE2YXYsdmB2YLYp9iqINi52YYg2LfYsdmK2YIg2KrYudmK2YrZhiDYp9mE2KXYr9iu2KfZhCDYpdmE2YkgMCDYo9mIINit2LDZgdmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn2KfZhNit2YLZiNmEINin2YTZhdiu2LLZhtipINmB2Yog2YHZh9ix2LMg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KrZiiDYqtmP2LPYqtiu2K/ZhSDZhNij2LTZitin2KEg2KPYrtix2Ykg2KXZhNmJINis2KfZhtioINi52YXZhNmK2KfYqiDYp9mE2KjYrdirINi52YYg2KfZhNmG2LUg2KfZhNmD2KfZhdmELiDZhNmE2YjYuNin2KbZgSDYp9mE2YPYp9mF2YTYqSDYrNmF2YrYuSDYp9mE2K3ZgtmI2YQg2KXZhNiy2KfZhdmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn2KrYs9is2YrZhCDYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2KkgR2VuZXJpY0ludGVyZmFjZSDZhNi32KjZgtipINmF2LPYqtiv2LnZiiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn2KrYs9is2YrZhCDYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2KkgR2VuZXJpY0ludGVyZmFjZSDZhNi32KjZgtipINmF2LPYqtiv2LnZiiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9iq2LPYrNmK2YQg2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipIEdlbmVyaWNJbnRlcmZhY2Ug2YTYt9io2YLYqSDZhdiz2KrYr9i52YogQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICfYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiBJVFNNSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ9mG2LjYsdipINi52KfZhdipINi52YTZiSDYudmG2LXYsSDYqtmD2YjZitmGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNit2KfYr9irJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitiq2LbZhdmGINit2KfZhNin2Kog2KfZhNmG2LTYsSDZgdmKINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNi52YXZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitiq2LbZhdmGINit2KfZhNin2Kog2KfZhNit2YjYp9iv2Ksg2YHZiiDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn2KfZhNit2K8g2KfZhNij2YLYtdmJINmE2LnYr9ivINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNiq2Yog2LPZitiq2YUg2LnYsdi22YfYpyDZgdmKINmG2KrZitis2Kkg2YfYsNmHINin2YTYudmF2YTZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9in2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNmE2KrYrdmC2YIg2YXZhiDYp9mE2YXYrNmF2YjYudipINin2YTZhdiz2KTZiNmE2Kkg2LnZhiDZgdim2Kkg2YXYpy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2Kkg2YTZhNiq2K3ZgtmCINmF2YYg2KfZhNmF2KzZhdmI2LnYqSDYp9mE2YXYs9ik2YjZhNipINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipINmE2KXZhti02KfYoSDYpdit2LXYp9im2YrYp9iqINi52YbYp9i12LEg2KrZg9mI2YrZhiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ9mI2K3Yr9ipINin2YTYp9iz2YUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ9mI2K3Yr9ipINin2YTYo9ix2YLYp9mFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9i52K/YryDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTYqtmKINiz2YrYqtmFINi52LHYttmH2Kcg2YHZiiDZg9mEINi12YHYrdipINmF2YYg2YbYqtin2KbYrCDYp9mE2KjYrdirINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9i52K/YryDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTYqtmKINiz2YrYqtmFINi52LHYttmH2Kcg2YHZiiDZg9mEINi12YHYrdipINmF2YYg2YbYqtin2KbYrCDYp9mE2KjYrdirINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ9in2YTZg9in2KbZhtin2Kog2KfZhNiq2Yog2YrYrNioINin2YTYqNit2Ksg2LnZhtmH2KfYjCDZiNi52K/YryDYp9mE2KXYr9iu2KfZhNin2Kog2YjYp9mE2LPZhdin2Kog2KfZhNiq2Yog2YrYrNioINil2LjZh9in2LHZh9inLiDZitis2Kgg2KrYrtiy2YrZhiDYs9mF2KfYqiBDb25maWdJdGVtINio2LTZg9mEINi12LHZititINi52KjYsSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfZhti42LHYqSDYudin2YXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNmF2LnZhNmF2KfYqiDYp9mE2K7Yp9i12Kkg2KjZgdim2KfYqiDZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mF2LnZhNmF2KfYqiDZhdix2LTYrdin2Kog2KfZhNij2LnZhdiv2Kkg2YHZiiDYp9mE2YbYuNix2Kkg2KfZhNi52KfZhdipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNi12LrZitixLiDZitix2KzZiSDZhdmE2KfYrdi42Kk6INiq2LnZitmK2YYgXCfZhti02LdcJyDYpdmE2YkgMCDYs9mK2YXZhti5INin2YTZiNmD2YTYp9ihINmB2YLYtyDZhdmGINiq2K3YsdmK2LEg2KXYudiv2KfYr9in2Kog2YfYsNmHINin2YTZhdis2YXZiNi52Kkg2YHZiiDYqtmB2LbZitmE2KfYqtmH2YUg2KfZhNi02K7YtdmK2KnYjCDZiNmE2YPZhtmHINiz2YrYs9mF2K0g2YTZhNmF2LPYpNmI2YTZitmGINio2KrYrdix2YrYsSDYpdi52K/Yp9iv2KfYqiDZhdiz2KrYrtiv2YUg2KLYrtixINmG2YrYp9io2KnZiyDYudmGINmF2LPYqtiu2K/ZhSDYotiu2LEuINin2LPYqtiu2K/ZhSBcJ1ByZWZlcmVuY2VHcm91cFwnINmE2YTYqtit2YPZhSDZgdmKINin2YTZhdmG2LfZgtipINin2YTYqtmKINmK2KzYqCDYo9mGINiq2LjZh9ixINmB2YrZh9inINmH2LDZhyDYp9mE2KXYudiv2KfYr9in2Kog2YHZiiDZiNin2KzZh9ipINin2YTZhdiz2KrYrtiv2YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmE2YjZhiDYrdin2YTYp9iqINin2YTZhti02LEg2YHZiiDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmE2K3Yp9mE2KfYqiDYp9mE2YbYtNixINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfYp9mE2YXYudmE2YXYp9iqINin2YTYrtin2LXYqSDYqNij2YXYq9mE2Kkg2YXYrNmF2YjYudin2Kog2KfZhNij2LDZiNmG2KfYqiDYp9mE2K7Yp9i12Kkg2KjYs9mF2KfYqiDYp9mE2YPYqtin2YTZiNisINin2YTYudin2YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmI2K3Yr9ipINin2YTYp9iz2YUg2KfZhNmG2YXYt9mK2Kkg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINin2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNmE2LHZgtmFINmE2YHYptin2Kog2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZgdi22YrZhNin2Kog2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINin2YTYtdmB2K3Yp9iqICjYp9mE2KrZiiDYqti42YfYsSDZgdmK2YfYpyDYudmG2KfYtdixINin2YTYqtmD2YjZitmGKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINin2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LfYsdmK2YLYqSDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmE2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmE2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNmF2KzZhdmI2LnYqSDYo9iv2YjYp9iqINmC2KfZhNioINiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhdi52YTZhdin2Kog2YXYtNi62YQg2KfZhNil2LXYr9in2LEg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ9mF2KzZhdmI2LnYqSDYp9mE2KXYsNmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2KXYrNix2KfYoSDYpdix2YHYp9mCINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYudix2LYg2LTYrNix2Kkg2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2KrZg9io2YrYsSDYudmG2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYpdi22KfZgdipINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYudmG2KfYtdixINiq2YPZiNmK2YYgSVRTTSDYp9mE2YXYrNmF2LnYqSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYqtit2LHZitixINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYudmG2LXYsSDYqtmD2YjZitmGINmF2K3ZgdmI2LjYp9iqIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZhNmE2LfYqNin2LnYqSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn2KfZhNin2YXYqtmK2KfYstin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNit2LDZgSDYudmG2KfYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ9i52YbYp9i12LEg2KrZg9mI2YrZhiDYp9mE2KjYrdirLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn2YLZhSDYqNiq2LnZitmK2YYg2K3Yp9mE2Kkg2KfZhNit2KfYr9irINmE2YXYrtio2LEg2KzZhtin2KbZiiDYqtmE2YLYp9im2YrYp9mLINi52YbYryDYsdio2Lcg2KrYsNmD2LHYqSDYqNmF2K7YqNixINis2YbYp9im2YouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrZgtmI2YUg2KjYqti52YrZitmGINit2KfZhNipINin2YTZhti02LEg2YHZiiDYp9mE2LTYp9i02Kkg2KfZhNmF2KzZhdi52Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitmC2YjZhSDYqNiq2LnZitmK2YYg2K3Yp9mE2Kkg2KfZhNit2KfYr9irINmB2Yog2KfZhNi02KfYtNipINin2YTZhdis2YXYudipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNiu2KfYtSDYqNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi32YvYpyDZgdmKINin2YTZgtin2KbZhdipINmK2LPZhditINio2LHYqNi3INi52YbYtdixINiq2YPZiNmK2YYg2YXYuSDZg9in2KbZhiDYotiu2LEg2YHZiiDYudix2LYg2KrZg9io2YrYsSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9il2LjZh9in2LEg2LHYp9io2Lcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNmE2YjYtdmI2YQg2KXZhNmJINmF2K3ZgdmI2LjYp9iqINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YbYuNix2Kkg2LnYp9mF2Kkg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi32YvYpyDZgdmKINin2YTZgtin2KbZhdipINmE2YTZiNi12YjZhCDYpdmE2Ykg2YXYrdmB2YjYuNin2Kog2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YPYqNmK2LEg2KfZhNiu2KfYtSDYqNmHINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYudix2LYg2LHYp9io2LfYp9mLINmB2Yog2KfZhNmC2KfYptmF2Kkg2YTYrdiw2YEg2LnZhti12LEg2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZg9io2YrYsS/Yp9mE2KrYtdi62YrYsSDYp9mE2K7Yp9i1INio2Ycg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ9il2LjZh9in2LEg2LHYp9io2Lcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNi52LHYtiDYsdmI2KfYqNi3INi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YPYt9ix2YrZgtipINi52LHYtiDYp9mE2LTYrNix2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KXYuNmH2KfYsSDYp9ix2KrYqNin2Lcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNiq2YPYsdin2LEg2LnZhti12LEg2KrZg9mI2YrZhiDZgdmKINmG2LjYsdipINi52KfZhdipINi52YTZiSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYtyDZgdmKINin2YTZgtin2KbZhdipINmE2KrZg9ix2KfYsSDYudmG2LXYsSDYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmD2KjZitixINin2YTYrtin2LUg2KjZhyDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYudix2LYg2LHYp9io2LfYp9mLINmB2Yog2KfZhNmC2KfYptmF2Kkg2YTYqtit2LHZitixINi52YbYtdixINiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YPYqNmK2LEv2KfZhNiq2LXYutmK2LEg2KfZhNiu2KfYtSDYqNmHINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYpdi42YfYp9ixINix2KfYqNi3INmB2Yog2KfZhNmC2KfYptmF2Kkg2YTZhNix2KzZiNi5INmB2Yog2LnYsdi2INiq2YPYqNmK2LEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYt9mL2Kcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNi32KjYp9i52Kkg2LnZhti12LEg2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZg9io2YrYsS/Yp9mE2KrYtdi62YrYsSDYp9mE2K7Yp9i1INio2Ycg2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYt9in2Ysg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNiq2YPYqNmK2LEg2LnZhti12LEg2KrZg9mI2YrZhiDZgdmKINmG2LjYsdipINi52KfZhdipINi52YTZiSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDZhdit2YHZiNi42KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGICjYqtix2KrZitioINi52YPYs9mKKSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfYp9mE2YHYptipINin2YTYp9mB2KrYsdin2LbZitipINin2YTYqtmKINiq2LjZh9ix2Iwg2KXYsNinINmE2YUg2YrYqtmFINiq2K3Yr9mK2K8g2KPZiiDZgdim2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfZhdi52LHZkdmBINi52YbYtdixINin2YTYqtmD2YjZitmG2Iwg2LnZhNmJINiz2KjZitmEINin2YTZhdir2KfZhCBDb25maWdJdGVtI9iMIE15Q29uZmlnSXRlbSMuINin2YTYp9mB2KrYsdin2LbZiiDZh9mIIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn2YrZgtmI2YUg2KjYqti02LrZitmEINmF2LPYqtiv2LnZiiBDb25maWdJdGVtRmV0Y2gg2KrZhNmC2KfYptmK2YvYpy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn2KrYudio2YrYsSDYs9mE2LPZhNipINin2YTYpdi12K/Yp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ9mI2K3Yr9ipINiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn2YXYtNi62YQg2KfZhNil2LXYr9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9mF2Kcg2KXYsNinINmD2KfZhiDZitmF2YPZhiDYqtis2YbYqCDYqtmG2YHZitiwIENvbmZpZ0l0ZW1BQ0wg2LnZhiDYt9ix2YrZgiDYp9mE2KrYrdmC2YIg2YXZhiDYqtio2LnZitin2Kog2KfZhNit2YLZiNmEINin2YTZhdiu2LLZhtipINmF2KTZgtiq2YvYpy4g2YrZhdmD2YYg2KPZhiDZitik2K/ZiiDYsNmE2YMg2KXZhNmJINiq2K3Ys9mK2YYg2KPZiNmC2KfYqiDYqtit2YXZitmEINin2YTZhtmF2KfYsNis2Iwg2YjZhNmD2YYg2YrYrNioINiq2LnYt9mK2YTZh9iMINil2LDYpyDZg9in2YYg2LPZitiq2YUg2KfYs9iq2K7Yr9in2YUg2YjYrdiv2KfYqiBBQ0xNb2R1bGVzINmE2YAgSVRTTUNvbmZpZ29uZmlnSXRlbS0g2YggRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ9mF2Kcg2YfZiiDYp9mE2YXYudmE2YjZhdin2Kog2KfZhNi52KfZhdipINin2YTYqtmKINiq2LjZh9ixINmB2Yog2KfZhNi52YbZiNin2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn2KfZhNmB2KbYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfYudin2YTZhdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn2YXYpyDYqNi52K8g2KfZhNil2YbYqtin2KzZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfZhdinINmC2KjZhCDYp9mE2KXZhtis2KfYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn2YXZhtiq2KzYqSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcuNSDYqNmI2LXYqSAoNDQuNDUg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEg2KjZiNi12KkgKDUzLjM0INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LjI1INio2YjYtdipICg2Ni42OCDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLjUg2KjZiNi12KkgKDgwLjAxINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ9it2KfZhdmEIDE5INio2YjYtdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMS43NSDYqNmI2LXYqSAoNC40NSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1INio2YjYtdipICg4OC45INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ9ix2YEgMjEg2KjZiNi12KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOC41INio2YjYtdipICg5Ny43OSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICfYsdmBIDIzINio2YjYtdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNiDYqNmI2LXYqSAoNjAwINmF2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiDYqNmI2LXYqSAoMTA2LjY4INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0Ny4yNSDYqNmI2LXYqSAoMTIwLjAyINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLjUg2KjZiNi12KkgKDguODkg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIuNSDYqNmI2LXYqSAoMTMzLjM1INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEuNSDYqNmI2LXYqSAoODAwINmF2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Ny43NSDYqNmI2LXYqSAoMTQ2LjY4INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUuNCDYqNmI2LXYqSAoOTAwINmF2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyDYqNmI2LXYqSAoMTYwLjAyINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjQg2KjZiNi12KkgKDEwMDAg2YXZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LjI1INio2YjYtdipICgxNzMuMzUg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNS4yNSDYqNmI2LXYqSAoMTMuMzQg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMuNSDYqNmI2LXYqSAoMTg2LjY5INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zINio2YjYtdipICgxMTAwINmF2YUpOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzguNzUg2KjZiNi12KkgKDIwMC4wMiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4yINio2YjYtdipICgxMjAwINmF2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCDYqNmI2LXYqSAoMjEzLjM2INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcg2KjZiNi12KfYqiAoMTcuNzgg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOC43NSDYqNmI2LXYqSAoMjIuMjMg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAuNSDYqNmI2LXYqSAoMjYuNjcg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLjI1INio2YjYtdipICgzMS4xMiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQg2KjZiNi12KkgKDM1LjU2INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNS43NSDYqNmI2LXYqSAoNDAuMDEg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfYp9mE2YXYrdin2LPYqNipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAn2KrYrti12YrYtSDYp9mE2LnZhtmI2KfZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn2KfZhNmF2K/ZitixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ9mH2KfYqtmBINiq2YbYp9i42LHZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2KzZh9in2LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfYs9i52Kkg2KfZhNio2LfYp9ix2YrYqSAo2KLZhyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn2YbZiNi5INin2YTYqNi32KfYsdmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfYp9mE2KjZhtin2KEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9mI2KfYrNmH2Kkg2KfZhNit2KfZgdmE2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ9mI2K3Yr9ipINin2YTZhdi52KfZhNis2Kkg2KfZhNmF2LHZg9iy2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICfZgdim2Kkg2YjYrdiv2Kkg2KfZhNmF2LnYp9mE2KzYqSDYp9mE2YXYsdmD2LLZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICfYp9mE2LPYudipICjYutmK2LrYp9io2KfZitiqKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ9in2YTYs9i52Kkg2YTZg9mEINio2LfYp9mC2Kkg2LHYs9mI2YXYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTYqNi32KfZgtipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn2YLYp9ix2KYg2KfZhNio2LfYp9mC2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNio2LfYp9mC2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ9i02YfYp9iv2KfYqiDYp9mE2LnZhdmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn2KjYsdmG2KfZhdisINin2YTYudmF2YrZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfZgdim2Kkg2KfZhNi52YXZitmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ9i52YLYp9ix2Kgg2KfZhNiz2KfYudipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfYs9ix2LnYqSDYp9mE2LPYp9i52KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9i02YfYp9iv2KfYqiDYqtmI2YLZiti5INin2YTYsdmF2YjYsiDYp9mE2YXYtNmB2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn2YfYp9iq2YEg2KfZhNmF2KTYqtmF2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICfYp9mE2KfYqtmB2KfZgtmK2Kkg2KfZhNin2LPYqti02KfYsdmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ9in2KrYtdmEINio2YbYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAn2KfYqti12YQg2KjYp9mE2YXZiNiy2LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfYpdiv2KfYsdipINin2YTYrdin2YjZitin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICfYp9mE2LnZgtivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNi52YLYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ9mB2KrYsdipINin2YTYudmC2K8g2YXZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICfZgdiq2LHYqSDYp9mE2LnZgtivINit2KrZiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfZh9in2KrZgSDZhNin2LPZhNmD2YogKNmH2KfYqtmBIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ9mI2K3Yr9ipINin2YTYqtmD2YTZgdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAn2LnYr9ivINin2YTYqtix2KfYrtmK2LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ9iq2KfYsdmK2K4g2KfZhNil2YbYtNin2KEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ9ix2YEg2YXYrti12LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1Ag2YXYrdis2YjYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAn2K7Yp9iv2YUg2K7ZiNin2K/ZhSBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ9iq2KfYsdmK2K4g2KfZhNmB2KfYqtmI2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAn2KrYp9ix2YrYriDYp9mE2LfZhNioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfYqtin2LHZitiuINin2YTYttmF2KfZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfYqtin2LHZitiuINin2YTYpdi12K/Yp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfYs9i32K0g2KfZhNmF2YPYqtioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAn2YXZhtmB2LAg2KfZhNi52LHYtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9i02YfYp9iv2KfYqiDYqtmI2YLZiti5INin2YTZhdiz2KrZhtiv2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ9ix2YEgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAn2LTZh9in2K/Yp9iqINin2YTYqNix2YrYryDYp9mE2KXZhNmD2KrYsdmI2YbZiiAo2LTZh9in2K/Yp9iqIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn2LnZgtivINin2YTYudmF2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfYudmG2YjYp9mGIElQINin2YTZhtmH2KfYptmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAn2YbZh9in2YrYqSDYp9mE2K/YudmFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn2KrYp9ix2YrYriDYp9mG2KrZh9in2KEg2KfZhNi12YTYp9it2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn2YXYrdix2YMg2KPZgtix2KfYtSDYtdmE2KjYqSDYrtin2LHYrNmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn2KzYr9in2LEg2KfZhNit2YXYp9mK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICfYp9mE2KjYsdin2YXYrCDYp9mE2KvYp9io2KrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ9iq2K7YstmK2YYg2KfZhNi32KfZgtipINmB2Yog2K/ZiNmE2KfYqCDYp9mE2YXZiNin2LLZhtipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn2LnYp9mF2YQg2KfZhNi02YPZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn2KfYqtmB2KfZgtmK2Kkg2KfZhNin2YXYqtmK2KfYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9io2LHZhtin2YXYrCDZhdis2KfZhtmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ9mF2LnZhNmI2YXYp9iqINi52KfZhdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn2KjYt9in2YLYp9iqINin2YTYsdiz2YjZhdin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ9io2LfYp9mC2Kkg2KfZhNix2LPZiNmF2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ9in2YTYo9is2YfYstipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn2YbZhdmI2LDYrCDYp9mE2KPYrNmH2LLYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICfZiNiy2YYg2KfZhNij2KzZh9iy2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ9iz2YXYp9i52Kkg2KfZhNix2KPYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ9io2LHZiNiq2YjZg9mI2YQgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn2KXYr9in2LHYqSDYp9mE2YfZiNmK2Kkg2YjYp9mE2YjYtdmI2YQgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ9ix2YLZhSDYp9mE2YXYrtiy2YjZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTZgdin2KrZiNix2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfZhNmI2K3YqSDYp9mE2YXZgdin2KrZititJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ9i02KfYtNipIExDRCAo2LTYp9i02Kkg2KfZhNi52LHYtiDYp9mE2KjZhNmI2LHZitipINin2YTYs9in2KbZhNipKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAn2LTYp9i02KkgTEVEICjYp9mE2LXZhdin2YUg2KfZhNir2YbYp9im2Yog2KfZhNio2KfYudirINmE2YTYttmI2KEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ9in2YTZh9in2KrZgSDYp9mE2KPYsdi22YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn2YPZhdio2YrZiNiq2LEg2YXYrdmF2YjZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ9iu2Lcg2KfZhNi52LHYtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ9in2YTYt9io2YLYqSAxOiDYp9mE2LfYqNmC2Kkg2KfZhNmB2YrYstmK2KfYptmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn2KfZhNi32KjZgtipIDI6INi32KjZgtipINin2LHYqtio2KfYtyDYp9mE2KjZitin2YbYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfYp9mE2LfYqNmC2KkgMzog2LfYqNmC2Kkg2KfZhNi02KjZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ9in2YTYt9io2YLYqSAzOiDYt9io2YLYqSDYp9mE2LTYqNmD2KkgKNin2YTYtNio2YPYqSDYp9mE2YHYp9im2YLYqSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn2KfZhNi32KjZgtipIDQ6INi32KjZgtipINin2YTZhtmC2YQgNDog2LfYqNmC2Kkg2KfZhNmG2YLZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn2KfZhNi32KjZgtipIDU6INi32KjZgtipINin2YTYrNmE2LPYqSA1OiDYt9io2YLYqSDYp9mE2KzZhNiz2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAn2KfZhNi32KjZgtipIDY6INi32KjZgtipINin2YTYudix2LYg2KfZhNiq2YLYr9mK2YXZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ9in2YTYt9io2YLYqSA3OiDYt9io2YLYqSDYp9mE2KrYt9io2YrZgtin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn2LnZgtivINin2YTYpdmK2KzYp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAn2KfYqtmB2KfZgtmK2Kkg2KfZhNiq2LHYrtmK2LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ9mF2YHYqtin2K0g2KfZhNiq2LHYrtmK2LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn2YbZiNi5INin2YTYqtix2K7Ziti1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICfZgdiq2LHYqSDYp9mE2KrYsdiu2YrYtSDZhdmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAn2YHYqtix2Kkg2KfZhNiq2LHYrtmK2LUg2K3YqtmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICfYqNi32KfYsdmK2Kkg2YTZitir2YrZiNmFINmB2YjYs9mB2KfYqiDYp9mE2K3Yr9mK2K8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfYqNi32KfYsdmK2Kkg2YTZitir2YrZiNmFINij2YrZiNmGICjZhNmK2KvZitmI2YUg2KPZitmI2YYpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn2KfYqtmB2KfZgtmK2Kkg2KfZhNmC2LHYtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn2KrZgti5INmB2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn2K7YtyDYp9mE2LfZiNmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn2KfZhNi02LHZg9ipINin2YTZhdi12YbYudipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfYs9i52Kkg2KfZhNiq2K3ZhdmK2YQg2KfZhNmC2LXZiNmJIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICfYp9mE2LDYp9mD2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2LDYp9mD2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn2LHZgSDYtdi62YrYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTZh9in2KrZgSDYp9mE2YXYrdmF2YjZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfZhdmI2KjYp9mK2YQv2YXYttmF2ZHZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9in2YTYt9ix2KfYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ9mI2LXZgSDYp9mE2LfYsdin2LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn2K/ZgtipINin2YTYtNin2LTYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfYrdis2YUg2KfZhNi02KfYtNipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn2KfZhNmB2KPYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn2KfZhNi02KjZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ9mF2LnZhNmI2YXYp9iqINin2YTYtNio2YPYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn2YXYudmE2YjZhdin2Kog2KfZhNi02KjZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfYt9io2YLYqSDYp9mE2LTYqNmD2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfYqNi32KfYsdmK2Kkg2KfZhNmG2YrZg9mEINmI2KfZhNmD2KfYr9mF2YrZiNmFIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ9io2LfYp9ix2YrYqSDZh9mK2K/YsdmK2K8g2KfZhNmG2YrZg9mELdin2YTZhdi52K/ZhiAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn2KfYqtmB2KfZgtmK2Kkg2LnYr9mFINin2YTYpdmB2LXYp9itIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn2K/Zgdiq2LEg2KfZhNmF2YTYp9it2LjYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAn2LnYr9ivINmI2K3Yr9in2Kog2KfZhNmF2LnYp9mE2KzYqSDYp9mE2YXYsdmD2LLZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ9i52K/YryDZiNit2K/Yp9iqINiw2KfZg9ix2Kkg2KfZhNmI2LXZiNmEINin2YTYudi02YjYp9im2YogKFJBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn2LnYr9ivINio2LfYp9mC2KfYqiDYp9mE2LHYs9mI2YXYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICfYtNin2LTYqSBPTEVEICjYp9mE2LXZhdin2YUg2KfZhNir2YbYp9im2Yog2KfZhNio2KfYudirINmE2YTYttmI2KEg2KfZhNi52LbZiNmKKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfYqtmD2KfZhNmK2YEg2KfZhNiq2LTYutmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTYt9mE2KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfYo9iu2LHZiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn2KfZhNmF2K7Ysdis2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICfYsdmC2YUg2KfZhNiq2LnYsdmK2YEg2KfZhNi02K7YtdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn2LHZgtmFINin2YTYqti52LHZitmBINin2YTYtNiu2LXZiiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ9in2KrZgdin2YLZitipINin2YTYtNix2KfZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTZh9in2KrZgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn2YbZiNi5INin2YTZh9in2KrZgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ9in2YTZhtmI2Ykg2KfZhNmF2KfYr9mK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfYqtmI2LXZitmEINin2YTYt9in2YLYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ9iq2YUg2LTYsdin2KTZh9inINmF2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ9i52YXZgiDYp9mE2K3Yp9mF2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICfZiNit2K/Yp9iqINin2YTYrdin2YXZhCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ9in2YTYutix2YHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ9io2LfYp9mC2KkgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAn2LTZh9in2K/Yp9iqIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfYudmC2K8g2KfZhNio2YrYuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfZh9in2KrZgSDZiti52YXZhCDYqNin2YTYo9mC2YXYp9ixINin2YTYtdmG2KfYudmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn2KjYt9in2LHZitipINit2YXYtiDYp9mE2LHYtdin2LUg2KfZhNmF2K7YqtmI2YXYqSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ9in2YTYsdmC2YUg2KfZhNiq2LPZhNiz2YTZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfYqNix2YXYrNmK2KfYqiDYp9mE2K7Yp9iv2YUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfYp9iq2YHYp9mC2YrYqSDYp9mE2K7Yr9mF2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfYqNi32KfZgtipINin2YTYrtiv2YXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNmF2YLYqNizJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn2KfZhNio2LHZhdis2YrYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn2YXZg9io2LHYp9iqINin2YTYtdmI2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn2YLZitin2LPZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn2KjYr9ihINi52YbZiNin2YYgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ9in2YTYqtiu2LLZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn2YLYs9mFINin2YTYqtiu2LLZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn2LTYsdmD2Kkg2YHYsdi52YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn2KfZhNmF2YTYrti1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn2KfZhNi52YXZitmEINin2YTYsdmC2YrZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn2KfZhNiu2YrZiNi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn2KfZhNi12KfYudmC2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ9il2KzZhdin2YTZiiDYsNin2YPYsdipINin2YTZiNi12YjZhCDYp9mE2LnYtNmI2KfYptmKINmE2KjYt9in2YLYqSDYp9mE2LHYs9mI2YXYp9iqIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfYpdis2YXYp9mE2Yog2LDYp9mD2LHYqSDYp9mE2YjYtdmI2YQg2KfZhNi52LTZiNin2KbZiiAo2KzZitis2KfYqNin2YrYqiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ9i02KfYtNipINiq2LnZhdmEINio2KfZhNmE2YXYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ9in2YTYqNix2KwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ9mF2YjYsti5IFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ9iz2YXYp9i52Kkg2LHYo9izINin2YTZiNin2YLYuSDYp9mE2KfZgdiq2LHYp9i22YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICfZgdmK2LHYqti02YjYp9mE2YTZitmG2YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ9mH2KfYqtmBINi12YjYqtmKINi52KjYsSDYqNix2YjYqtmI2YPZiNmEINin2YTYpdmG2KrYsdmG2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ9mD2KfZhdmK2LHYpyDYp9mE2YjZitioJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/bg_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmJnX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQntCx0YnQuCDQtNCw0L3QvdC4INC30LAg0YDQsNCx0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfQndCw0YHRgtGA0L7QudC60Lgg0LfQsCDQstGF0L7QtNGP0YnQuCDQtNCw0L3QvdC4INC30LAg0LfQsNGP0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC30LAg0LjQt9GF0L7QtNGP0YnQuNGC0LUg0LTQsNC90L3QuCDQt9CwINC+0YLQs9C+0LLQvtGAJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRgtC1INC10LTQuNC90LjRhtC4IENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzRj9C90LAg0L3QsCDQtNC10YTQuNC90LjRhtC40Y/RgtCwINC90LAg0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzRj9C90LAg0L3QsCDQtNC10YTQuNC90LjRhtC40Y/RgtCwINC90LAg0YDQvtC70Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn0J/QsNC60LXRgtC4INC+0YIg0LrQu9Cw0YHQvtCy0LUgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn0KLRg9C6INC80L7QttC10YLQtSDQtNCwINC40LzQv9C+0YDRgtC40YDQsNGC0LUg0L/QsNC60LXRgtC4INC+0YIg0LrQu9Cw0YHQvtCy0LUgUmVhZHkySW1wb3J0LCDQutC+0LjRgtC+INC/0L7QutCw0LfQstCw0YIg0L3QsNC5LdC+0LHQuNGH0LDQudC90LjRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLiDQnNC+0LvRjywg0L7QsdGK0YDQvdC10YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9C1INC80L7QttC1INC00LAg0YHQtSDQvdCw0LvQvtC20Lgg0LTQvtC/0YrQu9C90LjRgtC10LvQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAn0JDQutGC0YPQsNC70LjQt9C40YDQsNC90LUg0L3QsCDRgdGK0YnQtdGB0YLQstGD0LLQsNGJ0Lgg0YHRgtGA0YPQutGC0YPRgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0JjQvNC/0L7RgNGC0LjRgNCw0L3QtSDQvdCwINC/0LDQutC10YLQuCDQvtGCINC60LvQsNGB0L7QstC1IFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAn0JrQu9Cw0YEg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ9Cg0L7Qu9GPINC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9Ck0LjQu9GC0YrRgCDQt9CwINC60LvQsNGB0L7QstC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LrQu9Cw0YEg0L7RgiDRgdC/0LjRgdGK0LrQsCwg0LfQsCDQtNCwINGB0YrQt9C00LDQtNC10YLQtSDQvdC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9Ca0LvQsNGBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAn0JPRgNGD0L/QvtCy0L4g0LTQtdC50YHRgtCy0LjQtSDQvdCwIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfQodGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ9Cb0LjQvdC6INC60YrQvCDQtNGA0YPQsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn0J3QtdCy0LDQu9C40LTQtdC9INC90L7QvNC10YAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ9Cd0L7QvNC10YDRitGCINC90LAg0LTRgNGD0LMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLCDRgSDQutC+0LnRgtC+INC00LAg0YHQtSDRgdCy0YrRgNC20LXRgtC1Lic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9Cd0LDQuNGB0YLQuNC90LAg0LvQuCDQuNGB0LrQsNGC0LUg0LTQsCDQuNC30YLRgNC40LXRgtC1INGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0JjQvNC10YLQviDQvdCwINGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn0JjQvNC10YLQviDQstC10YfQtSDRgdC1INC40LfQv9C+0LvQt9Cy0LAg0L7RgiDQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuCDRgdGK0YEg0YHQu9C10LTQvdC40Y8g0J3QvtC80LXRgCjQsCk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvdCwINCy0LXRgNGB0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Cd0L7QvNC10YAg0L3QsCDQstC10YDRgdC40Y/RgtCwINC90LAg0YLQvtC30Lgg0LXQu9C10LzQtdC90YIg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn0J3QvtC80LXRgNGK0YIg0L3QsCDQstC10YDRgdC40Y/RgtCwINCy0LXRh9C1INGB0LUg0LjQt9C/0L7Qu9C30LLQsCDQvtGCINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDRgdGK0YEg0YHQu9C10LTQvdC40Y8g0L3QvtC80LXRgCjQuCk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfQodGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0JjRgdGC0L7RgNC40Y8g0L3QsCDQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YI6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0YrQtNGK0YDQttCw0L3QuNC1INC90LAg0LjRgdGC0L7RgNC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfQktGA0LXQvNC1INC90LAg0YHRitC30LTQsNCy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ9Cj0LLQtdC70LjRh9C10L0g0LjQt9Cz0LvQtdC0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4INC90LAg0YHRgtGA0LDQvdC40YbQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0J3QtSDRgdCwINC90LDQvNC10YDQtdC90Lgg0LTQsNC90L3QuCDQt9CwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0YLQvtC30Lgg0LXQu9C10LzQtdC90YIg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn0KHRgtCw0YDRgtC40YDQsNC50YLQtSDQotGK0YDRgdC10L3QtSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ9CU0YrRgNCy0L7QstC40LTQtdC9INC40LfQs9C70LXQtCDQt9CwIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfQndC40LLQviDQvdCwINC00YrQu9Cx0L7Rh9C40L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ9Cj0LLQtdC70LjRh9Cw0LLQsNC90LUv0LjQt9C60LvRjtGH0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAn0JzQsNC60YHQuNC80LDQu9C90L7RgtC+INC90LjQstC+INC90LAg0LLRgNGK0LfQutC40YLQtSDQtSDQtNC+0YHRgtC40LPQvdCw0YLQviDQt9CwIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ci0LXQutGD0YnQviDRgdGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KLQtdC60YPRidC+INGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfQn9C+0YHQu9C10LTQvdCwINC/0YDQvtC80Y/QvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9Cf0L7RgdC70LXQtNC90L4g0L/RgNC+0LzQtdC90LXQvSDQvtGCJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn0JLQsNGI0LjRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ9Ci0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfQqdC1INCx0YrQtNCw0YIg0LjQvNC/0L7RgNGC0LjRgNCw0L3QuCDRgdC70LXQtNC90LjRgtC1INC60LvQsNGB0L7QstC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9Cp0LUg0LHRitC00LDRgiDQuNC80L/QvtGA0YLQuNGA0LDQvdC4INGB0LvQtdC00L3QuNGC0LUg0YDQvtC70LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn0J7QsdGK0YDQvdC10YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9C1INGJ0LUg0LHRitC00LDRgiDRgdGK0LfQtNCw0LTQtdC90Lgg0Lgg0YHRitC+0YLQstC10YLQvdC40YLQtSDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwINC4INC60LvQsNGB0L7QstC1IEdlbmVyYWxDYXRhbG9nINC4INC90Y/QvNCwINC00LAg0LjQvNCwINCw0LLRgtC+0LzQsNGC0LjRh9C90L4g0L/RgNC10LzQsNGF0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn0JjRgdC60LDRgtC1INC70Lgg0LTQsCDQv9GA0L7QtNGK0LvQttC40YLQtT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn0J3Rg9C20LTQsNC10YLQtSDRgdC1INC+0YIg0L/RgNC40LzQtdGA0L3QuCDQutC70LDRgdC+0LLQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn0JTQtdGE0LjQvdC40YbQuNGP0YLQsCDQvdC1INC1INCy0LDQu9C40LTQtdC9INGF0LXRiCDQvdCwIFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn0J/RgNC10LPQu9C10LQ6IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LUg0LTQsNC00LXQvSBJRCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfQmNC80LDRgtC1INC90YPQttC00LAg0L7RgiDQv9C+0L3QtSDQtdC00LjQvSDQuNC30LHRgNCw0L0g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ9Cd0Y/QvNCw0YLQtSDQtNC+0YHRgtGK0L8g0LfQsCDQt9Cw0L/QuNGBINC00L4g0YLQvtC30Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn0J3QtSDQtSDQtNC10YTQuNC90LjRgNCw0L3QsCDQtNC10YTQuNC90LjRhtC40Y8g0LfQsCDQutC70LDRgSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuNGP0YIg0LXQu9C10LzQtdC90YIgIiVzIiDQvdC1INC1INC90LDQvNC10YDQtdC9INCyINCx0LDQt9Cw0YLQsCDQtNCw0L3QvdC4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ9Cd0LUg0LzQvtC20LDRhSDQtNCwINC40LfRgtGA0LjRjyBJRCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuNGPINC10LvQtdC80LXQvdGCICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAn0J3QtSDQtSDQvdCw0LzQtdGA0LXQvdCwINCy0LXRgNGB0LjRjyDQt9CwIElEINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfQndC1INC1INC00LDQtNC10L0g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIsINC00YPQsdC70LjRgNCw0L0g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC90LAg0LrQu9Cw0YEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfQndGP0LzQsCDQtNC+0YHRgtGK0L8hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC/0L7QutCw0LbQtSDRhdGA0L7QvdC+0LvQvtCz0LjRjywg0L3QtSDQtSDQtNCw0LTQtdC9IElEINC90LAg0LXQu9C10LzQtdC90YIg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC/0L7QutCw0LbQtSDQuNGB0YLQvtGA0LjRjywg0L3QtSDRgdCwINC00LDQtNC10L3QuCDQv9GA0LDQstCwINC30LAg0LTQvtGB0YLRitC/ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn0J3QvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfQndC+0LLQsCDQstC10YDRgdC40Y8gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSDQtSDQsNC60YLRg9Cw0LvQuNC30LjRgNCw0L3QviAo0L3QvtCy0L49JXMsINGB0YLQsNGA0L49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC90YbQuNC00LXQvdGC0LAg0LUg0LDQutGC0YPQsNC70LjQt9C40YDQsNC90L4gKNC90L7QstC+PSVzLCDRgdGC0LDRgNC+PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiAoSUQ9JXMpINC1INC40LfRgtGA0LjRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ9CU0L7QsdCw0LLQtdC90LAg0LUg0LLRgNGK0LfQutCwINC60YrQvCAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ9CS0YDRitC30LrQsNGC0LAg0LrRitC8ICVzICh0eXBlPSVzKSDQtSDQuNC30YLRgNC40YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn0JTQtdGE0LjQvdC40YbQuNGP0YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQtSDQsNC60YLRg9Cw0LvQuNC30LjRgNCw0L3QsCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0JjQvNC10YLQviDQtSDQsNC60YLRg9Cw0LvQuNC30LjRgNCw0L3QviAo0L3QvtCy0L49JXMsINGB0YLQsNGA0L49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn0JDRgtGA0LjQsdGD0YLRitGCICVzINC1INCw0LrRgtGD0LDQu9C40LfQuNGA0LDQvSDQvtGCIOKAniVz4oCcINC90LAg4oCeJXPigJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn0JLQtdGA0YHQuNGPICVzINC1INC40LfRgtGA0LjRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LUg0LTQsNC00LXQvSBJRCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQuNC70LggSUQg0L3QsCDQstC10YDRgdC40Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC/0L7QutCw0LbQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIsINC90LUg0YHQsCDQtNCw0LTQtdC90Lgg0L/RgNCw0LLQsCDQt9CwINC00L7RgdGC0YrQvyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdJRCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiAlcyDQvdC1INC1INC90LDQvNC10YDQtdC9INCyINCx0LDQt9Cw0YLQsCDQtNCw0L3QvdC4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfQvtGC0L/QtdGH0LDRgtCw0L3QviDQvtGCICVzINCyICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfQn9GA0LXQv9GA0LDRgtC60LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfQndC10LLQsNC70LjQtNC10L0g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsCDQutC70LDRgSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfQndC1INC1INC00LDQtNC10L0g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsCDQutC70LDRgSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfQndGP0LzQsCDQtNCw0LTQtdC90Lgg0L/RgNCw0LLQsCDQt9CwINC00L7RgdGC0YrQvyDQt9CwINGC0L7Qt9C4INC60LvQsNGBISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn0JHQtdC3INGA0LXQt9GD0LvRgtCw0YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn0KDQtdC30YPQu9GC0LDRgtC4INC+0YIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfQndC1INC80L7QttC1INC00LAg0YHQtSDQv9C+0LrQsNC20LUg0LXQu9C10LzQtdC90YIsINC90LUg0YHQsCDQtNCw0LTQtdC90Lgg0L/RgNCw0LLQsCDQt9CwINC00L7RgdGC0YrQvyDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAn0J3QtSDQtSDQvdCw0LzQtdGA0LXQvSDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ9Cd0LUg0YHQsCDQvdCw0LzQtdGA0LXQvdC4INCy0LXRgNGB0LjQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfQvtC/0LXRgNCw0YLQuNCy0LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn0LLQvdC40LzQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ9C40L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtdGC0L4g0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCDQt9CwINGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9Cd0Y/QvNCwINGA0LDQt9GA0LXRiNC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ9Ck0LjQu9GC0YrRgNGK0YIg0LUg0L3QtdCy0LDQu9C40LTQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn0J3QtdCy0LDQu9C40LTQvdC4INC/0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGC0YrRgNGB0LXQvdC1ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ9Cf0L7QutCw0LfQsNC90Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40LfQv9C+0LvQt9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LXQutGD0Ykg0YLQuNC/INGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn0JzQtdC20LTRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdC90LjRjyDQvdCwINC60LvQsNGB0LAg0LfQsCDQtdC70LXQvNC10L3RgtCwINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JjQt9Cx0LXRgNC10YLQtSDQtdC00LjQvSDQuNC70Lgg0L/QvtCy0LXRh9C1INC60LvQsNGB0L7QstC1LCDQt9CwINC00LAg0L7Qs9GA0LDQvdC40YfQuNGC0LUg0LjQt9Cx0LjRgNCw0LXQvNC40YLQtSDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdC90LjRjyDQvdCwINC60LvQsNGB0LAg0LfQsCDQtdC70LXQvNC10L3RgtCwINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ9CY0LfQsdC10YDQtdGC0LUg0LXQtNC40L0g0LjQu9C4INC/0L7QstC10YfQtSDQutC70LDRgdC+0LLQtSwg0LfQsCDQtNCwINC+0LPRgNCw0L3QuNGH0LjRgtC1INC40LfQsdC40YDQsNC10LzQuNGC0LUg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfQlNC40L3QsNC80LjRh9C10L0gKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfQodGC0LDRgtC40YfQtdC9ICjQstC10YDRgdC40Y8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ9Ci0LjQvyDQv9GA0LXQv9GA0LDRgtC60LAg0LrRitC8INCy0YDRitC30LrQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn0JTQsNC70Lgg0YLQsNC30Lgg0LLRgNGK0LfQutCwINGB0LUg0L7RgtC90LDRgdGPINC30LAgQ29uZmlnSXRlbSDQuNC70Lgg0LfQsCDRgdGC0LDRgtC40YfQvdCw0YLQsCDQstC10YDRgdC40Y8g0L3QsCDQvtCx0LXQutGC0LAsINC60YrQvCDQutC+0LnRgtC+INGB0LUg0L/RgNC10L/RgNCw0YnQsC4g0JjQt9GH0LjRgdC70Y/QstCw0L3QtdGC0L4g0L3QsCDRgtC10LrRg9GJ0L7RgtC+INGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCDRgdC1INC40LfQstGK0YDRiNCy0LAg0YHQsNC80L4g0LfQsCDQtNC40L3QsNC80LjRh9C90Lgg0LLRgNGK0LfQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LDRgtGA0LjQsdGD0YLQsCwg0L/QviDQutC+0LnRgtC+INGJ0LUg0YHQtSDRgtGK0YDRgdGP0YIg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfQkdCw0LfQvtCy0LDRgtCwINGB0YLRgNGD0LrRgtGD0YDQsCDQvdC1INC1INCy0LDQu9C40LTQvdCwLiDQnNC+0LvRjywg0L/RgNC10LTQvtGB0YLQsNCy0LXRgtC1INGF0LXRiCDRgSDQtNCw0L3QvdC4INCy0YrQsiDRhNC+0YDQvNCw0YIgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfQmNC30LjRgdC60LLQsCDRgdC1INC90LjQt9GK0YIgWUFNTCDQtNCwINC30LDQv9C+0YfQstCwINGBIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC40LfRh9C40YHRgtC4INGC0LDQsdC70LjRhtCw0YLQsCBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfQndC1INCx0Y/RhdCwINC+0YLQutGA0LjRgtC4INC/0L7QtNGF0L7QtNGP0YnQuCDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0J3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0LLQvNGK0LrQvdC1INCyINGC0LDQsdC70LjRhtCw0YLQsCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9CS0LzRitC60L3QsNGC0LggMCDRgNC10LTQsCDQsiDRgtCw0LHQu9C40YbQsNGC0LAgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvQtdC9INCx0YDQvtC5INC90LAg0LXQtNC40L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAn0JLQtdGA0YHQuNGPINCg0LXQtNC40YbQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICfQk9GA0LXRiNC60LAg0L/RgNC4INGB0LjQvdGF0YDQvtC90LjQt9C40YDQsNC90LXRgtC+INC90LAg0LTQtdGE0LjQvdC40YbQuNC40YLQtS4g0JzQvtC70Y8sINC/0YDQvtCy0LXRgNC10YLQtSDQtNC90LXQstC90LjQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ9CY0LzQsNGC0LUg0LTQtdGE0LjQvdC40YbQuNC4INC90LAgSVRTTUNvbmZpZ0l0ZW0sINC60L7QuNGC0L4g0L3QtSDRgdCwINGB0LjQvdGF0YDQvtC90LjQt9C40YDQsNC90LguINCc0L7Qu9GPLCDQstC90LXQtNGA0LXRgtC1INC/0YDQvtC80LXQvdC40YLQtSDQsiDQtNC40L3QsNC80LjRh9C90LjRgtC1INC/0L7Qu9C10YLQsCDQvdCwINCy0LDRiNC40Y8gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfQmNC30YLQtdC60LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Cf0L7QtNC00YDRitC20LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9Cf0LjQu9C+0YIt0LLQvtC00LDRhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn0J/Qu9Cw0L3QuNGA0LDQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfQoNC10LzQvtC90YIv0JLRitC30YHRgtCw0L3QvtCy0Y/QstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn0JjQt9C70Y/Qt9GK0Lsg0L7RgiDRg9C/0L7RgtGA0LXQsdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9Cf0YDQtdCz0LvQtdC20LTQsNC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfQotC10YHRgi/QmtCw0YfQtdGB0YLQstC10L0g0LrQvtC90YLRgNC+0LsnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ9Cf0YDQtdCz0LvQtdC0INC4INC/0L7RgtCy0YrRgNC20LTQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICfQmNC80L/QvtGA0YLQuNGA0LDQvdC1INC90LAg0LrQu9Cw0YHQvtCy0LUv0YDQvtC70Lgg0Lgg0YHQstGK0YDQt9Cw0L3QuNGC0LUg0YEg0YLRj9GFINC/0L7Qu9C10YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ9Cf0L4g0LLRgNC10LzQtSDQvdCwINC40LzQv9C+0YDRgtC40YDQsNC90LXRgtC+INC90LAg0LrQu9Cw0YHQsCDQtSDQstGK0LfQvdC40LrQvdCw0LvQsCDQs9GA0LXRiNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDQodC60YDQuNGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtINC/0L7QutCw0LfQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9Cf0L7Qt9Cy0L7Qu9GP0LLQsCDRgNCw0LfRiNC40YDQtdC90Lgg0YPRgdC70L7QstC40Y8g0LfQsCDRgtGK0YDRgdC10L3QtSDQv9GA0Lgg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4g0KEg0YLQsNC30Lgg0YTRg9C90LrRhtC40Y8g0LzQvtC20LXRgtC1INC00LAg0YLRitGA0YHQuNGC0LUg0L3QsNC/0YDQuNC80LXRgCDQuNC80LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQsCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0YEg0YLQsNC60LjQstCwINGD0YHQu9C+0LLQuNGPINC60LDRgtC+ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQn9C+0LfQstC+0LvRj9Cy0LAg0YDQsNC30YjQuNGA0LXQvdC4INGD0YHQu9C+0LLQuNGPINC30LAg0YLRitGA0YHQtdC90LUg0LIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQuCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQutC70LjQtdC90YLQsC4g0KEg0YLQsNC30Lgg0YTRg9C90LrRhtC40Y8g0LzQvtC20LXRgtC1INC00LAg0YLRitGA0YHQuNGC0LUg0L3QsNC/0YDQuNC80LXRgCDQuNC80LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQsCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0YEg0YLQsNC60LjQstCwINGD0YHQu9C+0LLQuNGPINC60LDRgtC+ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfQl9Cw0YfQuNGB0LvQtdC90LggS0UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnS0Ug0LfQsNGH0LjRgdC70LXQvdC4INC90LAg0LrQvtC80L/QsNC90LjRj9GC0LAg0LrQu9C40LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn0JrQlSwg0LfQsNGH0LjRgdC70LXQvdC4INC90LAg0L/QvtGC0YDQtdCx0LjRgtC10LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ9Cd0LDRgdGC0YDQvtC50LrQsCDQvdCwIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9Cf0YDQvtCy0LXRgNGP0LLQsNC50YLQtSDQt9CwINGD0L3QuNC60LDQu9C90L4g0LjQvNC1INGB0LDQvNC+INCyINGA0LDQvNC60LjRgtC1INC90LAg0LXQtNC40L0g0Lgg0YHRitGJINC60LvQsNGBINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCICjigJ7QutC70LDRgeKAnCkg0LjQu9C4INCz0LvQvtCx0LDQu9C90L4gKOKAntCz0LvQvtCx0LDQu9C10L3igJwpLCDQutC+0LXRgtC+INC+0LfQvdCw0YfQsNCy0LAsINGH0LUg0LLRgdC10LrQuCDRgdGK0YnQtdGB0YLQstGD0LLQsNGJINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDRgdC1INCy0LfQtdC80LAg0L/RgNC10LTQstC40LQsINC60L7Qs9Cw0YLQviDRgdC1INGC0YrRgNGB0Y/RgiDQtNGD0LHQu9C40LrQsNGC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfQmNC30LHQtdGA0LXRgtC1INC80L7QtNGD0Lsg0LfQsCDQvdCw0LvQsNCz0LDQvdC1INC90LAg0YHRhdC10LzQsCDQt9CwINC40LzQtdC90YPQstCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LzQvtC00YPQuyDQt9CwINC90LDQu9Cw0LPQsNC90LUg0L3QsCDRgdGF0LXQvNCwINC90LAg0L3QvtC80LXRgNCw0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAn0JjQt9Cx0LXRgNC10YLQtSDQvNC+0LTRg9C7LCDQutC+0LnRgtC+INC00LAg0L3QsNC70LDQs9CwINGB0YXQtdC80LAg0YEg0L3QuNC3INC+0YIg0LLQtdGA0YHQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LDRgtGA0LjQsdGD0YLQuCwg0LrQvtC40YLQviDQtNCwINC30LDQtNC10LnRgdGC0LLQsNGCINGB0YrQt9C00LDQstCw0L3QtdGC0L4g0L3QsCDQvdC+0LLQsCDQstC10YDRgdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LrQsNGC0LXQs9C+0YDQuNC4LCDQutC+0LjRgtC+INC00LAg0L/RgNC40YHQstC+0LjRgtC1INC90LAg0YLQvtC30Lgg0LrQu9Cw0YEg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAn0KTQuNC70YLRgNC4INC30LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7Qu9C+0L3QsNGC0LAg0LfQsCBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn0JrQvtC70L7QvdC4LCDQutC+0LjRgtC+INC80L7Qs9Cw0YIg0LTQsCDRgdC1INGE0LjQu9GC0YDQuNGA0LDRgiDQsiDQv9GA0LXQs9C70LXQtNCwINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLiDQl9Cw0LHQtdC70LXQttC60LA6INCg0LDQt9GA0LXRiNC10L3QuCDRgdCwINGB0LDQvNC+INCw0YLRgNC40LHRg9GC0Lgg0L3QsCDQtdC70LXQvNC10L3RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQuCDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn0JTQvtCx0LDQstGP0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDRgdGK0LHQuNGC0LjQtSDQt9CwINC60L7QvdGE0LjQs9GD0YDQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YIsINC60L7QudGC0L4g0L/QvtC30LLQvtC70Y/QstCwINC30LDQv9C40YHQstCw0L3QtSDQsiDRhdGA0L7QvdC+0LvQvtCz0LjRjyDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINGB0YrQsdC40YLQuNGPINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLCDQutC+0LnRgtC+INCw0LrRgtGD0LDQu9C40LfQuNGA0LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC00L4g0YLQtdC60YPRidCw0YLQsCDQuNC8INC00LXRhNC40L3QuNGG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LjRgNCw0LnRgtC1INGF0YDQvtC90L7Qu9C+0LPQuNGP0YLQsCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfQn9C10YfQsNGCINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQuNGA0LDQvdC1INC90LAg0LzQsNGJ0LDQsdCwINC90LAg0LXQu9C10LzQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfQmNC30LPQu9C10LQg0L3QsCDQtNGK0YDQstC+0YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICfQktC10YDRgdC40Y8g0L3QsCDQtdC70LXQvNC10L3RgtCwIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0L7RgiDRgdC70LXQtNC90LjRgtC1INC60LvQsNGB0L7QstC1INC90Y/QvNCwINC00LAg0YHQtSDRgdGK0YXRgNCw0L3Rj9Cy0LDRgiDQvdCwINGB0YrRgNCy0YrRgNCwIEVsYXN0aWNzZWFyY2guINCX0LAg0LTQsCDQv9GA0LjQu9C+0LbQuNGC0LUg0YLQvtCy0LAg0LrRitC8INGB0YrRidC10YHRgtCy0YPQstCw0YnQuCBDSSwg0LzQuNCz0YDQsNGG0LjRj9GC0LAg0L3QsCBDSSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INGB0YLQsNGA0YLQuNGA0LAg0YfRgNC10Lcg0LrQvtC90LfQvtC70LDRgtCwLCDRgdC70LXQtCDQutCw0YLQviDQv9GA0L7QvNC10L3QuNGC0LUg0YLQsNC30Lgg0L7Qv9GG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0YHRitGBINGB0LvQtdC00L3QuNGC0LUg0YHRitGB0YLQvtGP0L3QuNGPINC90LAg0LLQvdC10LTRgNGP0LLQsNC90LUg0L3Rj9C80LAg0LTQsCDRgdC1INGB0YrRhdGA0LDQvdGP0LLQsNGCINC90LAg0YHRitGA0LLRitGA0LAgRWxhc3RpY3NlYXJjaC4g0JfQsCDQtNCwINC/0YDQuNC70L7QttC40YLQtSDRgtC+0LLQsCDQutGK0Lwg0YHRitGJ0LXRgdGC0LLRg9Cy0LDRidC4IENJLCDQvNC40LPRgNCw0YbQuNGP0YLQsCDQvdCwIENJINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0YHRgtCw0YDRgtC40YDQsCDRh9GA0LXQtyDQutC+0L3Qt9C+0LvQsNGC0LAsINGB0LvQtdC0INC60LDRgtC+INC/0YDQvtC80LXQvdC40YLQtSDRgtCw0LfQuCDQvtC/0YbQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfQm9C40LzQuNGCINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfQm9C40LzQuNGCINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC90LAg0YHRgtGA0LDQvdC40YbQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ9CR0LDQt9CwINC00LDQvdC90Lgg0LfQsCDRg9C/0YDQsNCy0LvQtdC90LjQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfQk9GA0YPQv9C+0LIg0LzQvtC00YPQuyDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQodGK0LfQtNCw0LLQsNC50YLQtSDQuCDRg9C/0YDQsNCy0LvRj9Cy0LDQudGC0LUg0LTQtdGE0LjQvdC40YbQuNC40YLQtSDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ9Ch0YrQt9C00LDQstCwINCx0LjQu9C10YLQuCDQt9CwIENvbmZpZ0l0ZW1zINCyINC+0L/RgNC10LTQtdC70LXQvdC4INC80L7QvNC10L3RgtC4INC+0YIg0LLRgNC10LzQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn0JrQu9C40LXQvdGC0LjRgtC1INC80L7Qs9Cw0YIg0LTQsCDQstC40LbQtNCw0YIg0LjRgdGC0L7RgNC40YfQtdGB0LrQuCDQstC10YDRgdC40Lgg0L3QsCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn0JrQu9C40LXQvdGC0LjRgtC1INC40LzQsNGCINCy0YrQt9C80L7QttC90L7RgdGCINGA0YrRh9C90L4g0LTQsCDQv9GA0LXQstC60LvRjtGH0LLQsNGCINC80LXQttC00YMg0LjRgdGC0L7RgNC40YfQtdGB0LrQuNGC0LUg0LLQtdGA0YHQuNC4INC90LAgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn0JTQsNC90L3QuCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSwg0LrQvtC40YLQviDQtNCwINGB0LUg0LjQt9C/0L7Qu9C30LLQsNGCINCyINCw0YLRgNC40LHRg9GC0LAg0LfQsCDQtdC60YDQsNC90LAg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLiDQn9GA0LjQvNC10YA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn0JTQsNC90L3QuCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSwg0LrQvtC40YLQviDQtNCwINGB0LUg0LjQt9C/0L7Qu9C30LLQsNGCINCyINCw0YLRgNC40LHRg9GC0LAg0LfQsCDQtdC60YDQsNC90LAg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLiDQn9GA0LjQvNC10YA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCw0LnRgtC1INC00LXQudGB0YLQstC40Y8sINC/0YDQuCDQutC+0LjRgtC+INC1INC90LDQu9C40YfQtdC9INCx0YPRgtC+0L0g0LfQsCDQvdCw0YHRgtGA0L7QudC60Lgg0LIg0L/RgNC40YHQv9C+0YHQvtCx0LvQtdC90LjQtdGC0L4g0LfQsCDRgdCy0YrRgNC30LDQvdC4INC+0LHQtdC60YLQuCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDQnNC+0LvRjywg0L7QsdGK0YDQvdC10YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9C1INGC0LXQt9C4INC00LXQudGB0YLQstC40Y8g0YLRgNGP0LHQstCwINC00LAg0YHQsCDRgNC10LPQuNGB0YLRgNC40YDQsNC70Lgg0YHQu9C10LTQvdC40YLQtSBKUyDQuCBDU1Mg0YTQsNC50LvQvtCy0LU6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzINC4IENvcmUuQWdlbnQgLkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCw0L3QtSDQvdCwINGB0YXQtdC80LAg0L3QsCBUZW1wbGF0ZTo6VG9vbGtpdCDQt9CwINC90LjQt9C+0LLQtSDQvdCwINCy0LXRgNGB0LjQuC4g0JjQt9C/0L7Qu9C30LLQsCDRgdC1INGB0LDQvNC+INCw0LrQviDQvNC+0LTRg9C70YrRgiBWZXJzaW9uIFN0cmluZyBNb2R1bGUg0LUg0LfQsNC00LDQtNC10L0g0L3QsCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCw0LnRgtC1INC90LDQsdC+0YAg0L7RgiDRg9GB0LvQvtCy0LjRjywg0L/RgNC4INC60L7QuNGC0L4g0L3QsCDQutC70LjQtdC90YLQsCDRgdC1INGA0LDQt9GA0LXRiNCw0LLQsCDQtNCwINCy0LjQttC00LAg0LTQsNC00LXQvSDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuINCj0YHQu9C+0LLQuNGP0YLQsCDQvNC+0LPQsNGCINC/0L4g0LbQtdC70LDQvdC40LUg0LTQsCDQsdGK0LTQsNGCINC+0LPRgNCw0L3QuNGH0LXQvdC4INC00L4g0L7Qv9GA0LXQtNC10LvQtdC90Lgg0LPRgNGD0L/QuCDQutC70LjQtdC90YLQuC4g0JjQvNC10YLQviDQtSDQtdC00LjQvdGB0YLQstC10L3QuNGP0YIg0LfQsNC00YrQu9C20LjRgtC10LvQtdC9INCw0YLRgNC40LHRg9GCLiDQkNC60L4g0L3QtSDRgdCwINC30LDQtNCw0LTQtdC90Lgg0LTRgNGD0LPQuCDQvtC/0YbQuNC4LCDQstGB0LjRh9C60Lgg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0YnQtSDQsdGK0LTQsNGCINCy0LjQtNC40LzQuCDQsiDRgtCw0LfQuCDQutCw0YLQtdCz0L7RgNC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC90LXQvtCx0YXQvtC00LjQvNC40YLQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC40LfRgtGA0LjQstCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC90LAgSVRTTSDRgSDQv9C+0LzQvtGJ0YLQsCDQvdCwINC+0LHRidC40Y8g0LjQvdGC0LXRgNGE0LXQudGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQvdC10L7QsdGF0L7QtNC40LzQuNGC0LUg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQv9C+0LvRg9GH0LDQstCw0L3QtSDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0Lgg0YEg0L/QvtC80L7RidGC0LAg0L3QsCDQvtCx0YnQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L3QtdC+0LHRhdC+0LTQuNC80LjRgtC1INGA0LDQt9GA0LXRiNC10L3QuNGPINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4INGBINC/0L7QvNC+0YnRgtCwINC90LAg0L7QsdGJ0LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCX0LDQtNGK0LvQttC40YLQtdC70L3QuCDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC30LDQtNCw0LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwIElUU00g0YEg0L/QvtC80L7RidGC0LAg0L3QsCDQvtCx0YnQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQvNC+0LTRg9C7INC30LAg0L/RgNC10LPQu9C10LQsINC30LAg0LTQsCDQv9C+0LrQsNC20LUg0LzQsNC70YrQuiDQuNC30LPQu9C10LQg0L3QsCDRgdC/0LjRgdGK0Log0YEg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LTQsNC70Lgg0LXRgtC40LrQtdGC0LjRgtC1INC30LAg0YLQuNC/0LAg0L3QsCDQstGA0YrQt9C60LDRgtCwINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQstGK0LIg0LLRgNGK0LfQutC40YLQtSDQvdCwINCy0YrQt9C70LjRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDRgNC10LPRg9C70Y/RgNC90Lgg0LjQt9GA0LDQt9C4INC40L3QtNC40LLQuNC00YPQsNC70L3QviDQt9CwINCy0YHQtdC60Lgg0LrQu9Cw0YEg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIsINC30LAg0LTQsCDQv9GA0L7QstC10YDQuCDQuNC80LXRgtC+INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0Lgg0LTQsCDQv9C+0LrQsNC20LUg0YHRitC+0YLQstC10YLQvdC40YLQtSDRgdGK0L7QsdGJ0LXQvdC40Y8g0LfQsCDQs9GA0LXRiNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvdCw0LvQuNGH0L3QuNGC0LUg0LrQvtC70L7QvdC4INC90LAgQ0kg0LIg0L/RgNC10LPQu9C10LTQsCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINC60LvQsNGB0LAgQ0kuINCS0YHQtdC60Lgg0LfQsNC/0LjRgSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INGB0YrRgdGC0L7QuCDQvtGCINC40LzQtSDQvdCwINC60LvQsNGBINC4INC80LDRgdC40LIg0L7RgiDQvdCw0LvQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0LfQsCDRgdGK0L7RgtCy0LXRgtC90LjRjyDQutC70LDRgS4g0JfQsNC/0LjRgdC40YLQtSDQt9CwINC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0YLRgNGP0LHQstCwINC00LAg0L7RgtCz0L7QstCw0YDRj9GCINC90LAg0YHRhdC10LzQsNGC0LAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LDRgtGA0LjQsdGD0YLQsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC30LAg0YHQvtGA0YLQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LDRgtGA0LjQsdGD0YLQsCDQvdCwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC30LAg0YHQvtGA0YLQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQutC70LjQtdC90YLRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQsNGC0YDQuNCx0YPRgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LfQsCDRgdC+0YDRgtC40YDQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0YDQtdC30YPQu9GC0LDRgtCwINC+0YIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCDRgtCw0LfQuCDQvtC/0LXRgNCw0YbQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDRgNC10LTQsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuINCd0LDQs9C+0YDQtTog0L3QsNC5LdGB0YLQsNGA0LjRj9GCINC+0YLQs9C+0YDQtS4g0J3QsNC00L7Qu9GDOiDQvdCw0Lkt0L3QvtCy0LjRj9GCINC+0YLQs9C+0YDQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0YDQtdC00LAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0YDQtdC30YPQu9GC0LDRgtCwINC+0YIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQutC70LjQtdC90YLQsC4g0J3QsNCz0L7RgNC1OiDQvdCw0Lkt0YHRgtCw0YDQuNGP0YIg0L7RgtCz0L7RgNC1LiDQndCw0LTQvtC70YM6INC90LDQuS3QvdC+0LLQuNGP0YIg0L7RgtCz0L7RgNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQutC+0LvQvtC90LjRgtC1INC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LCDQutC+0LjRgtC+INGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQvdCwIENJINCyINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINCyINC30LDQstC40YHQuNC80L7RgdGCINC+0YIg0LrQu9Cw0YHQsCDQvdCwIENJLiDQktGB0LXQutC4INC30LDQv9C40YEg0YLRgNGP0LHQstCwINC00LAg0YHQtSDRgdGK0YHRgtC+0Lgg0L7RgiDQuNC80LUg0L3QsCDQutC70LDRgSDQuCDQvNCw0YHQuNCyINC+0YIg0L3QsNC70LjRh9C90LjRgtC1INC/0L7Qu9C10YLQsCDQt9CwINGB0YrQvtGC0LLQtdGC0L3QuNGPINC60LvQsNGBLiDQl9Cw0L/QuNGB0LjRgtC1INC30LAg0LTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCDRgtGA0Y/QsdCy0LAg0LTQsCDQvtGC0LPQvtCy0LDRgNGP0YIg0L3QsCDRgdGF0LXQvNCw0YLQsCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICfQntC/0YDQtdC00LXQu9GPINC00YrQu9Cx0L7Rh9C40L3QsNGC0LAg0L3QsCDQvtGC0L3QvtGI0LXQvdC40Y/RgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LCDQutC+0LjRgtC+INGJ0LUg0YHQtSDQv9C+0LrQsNC30LLQsNGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC/0L7QutCw0LfQsNC90LjRjyDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQsNGC0YDQuNCx0YPRgiDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LfQsCDQtdC60YDQsNC90LAg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LrQsNC30LDQvdC40Y8g0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0LDRgtGA0LjQsdGD0YIg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC30LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4g0J/RgNC40LzQtdGAOiAiS2V5IiAo0JrQu9GO0YcpINGC0YDRj9Cx0LLQsCDQtNCwINGB0YrQtNGK0YDQttCwINC40LzQtdGC0L4g0L3QsCDQtNC40L3QsNC80LjRh9C90L7RgtC+INC/0L7Qu9C1INCyINGC0L7Qt9C4INGB0LvRg9GH0LDQuSAiWCIsICJDb250ZW50IiAo0KHRitC00YrRgNC20LDQvdC40LUpINGC0YDRj9Cx0LLQsCDQtNCwINGB0YrQtNGK0YDQttCwINGB0YLQvtC50L3QvtGB0YLRgtCwINC90LAg0LTQuNC90LDQvNC40YfQvdC+0YLQviDQv9C+0LvQtSDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINGC0LjQv9CwINC90LAg0LTQuNC90LDQvNC40YfQvdC+0YLQviDQv9C+0LvQtSwgVGV4dCAo0KLQtdC60YHRgik6ICJhIHRleHQiICjRgtC10LrRgdGCKSwgRHJvcGRvd24gKNC/0LDQtNCw0YnQvik6ICIxIiAoMSksIERhdGUvVGltZSAo0JTQsNGC0LAv0YfQsNGBKTogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcg0Lgg0LjQu9C4IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PdGB0LXQtNC80LjRhtCwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD3Qn9GA0LXQtNC4OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LTQvtCx0LXQutGC0LAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0L3QsCDQutC70LDRgdCwIOKAnklUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGC4oCcLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvdCw0LvQuNGH0L3QuNGC0LUg0LrQvtC70L7QvdC4INC90LAgQ0kg0LIg0L/RgNC10LPQu9C10LTQsCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINC60LvQsNGB0LAgQ0kuINCS0YHQtdC60Lgg0LfQsNC/0LjRgSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INGB0YrRgdGC0L7QuCDQvtGCINC40LzQtSDQvdCwINC60LvQsNGBINC4INC80LDRgdC40LIg0L7RgiDQvdCw0LvQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0LfQsCDRgdGK0L7RgtCy0LXRgtC90LjRjyDQutC70LDRgS4g0JfQsNC/0LjRgdC40YLQtSDQt9CwINC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0YLRgNGP0LHQstCwINC00LAg0L7RgtCz0L7QstCw0YDRj9GCINC90LAg0YHRhdC10LzQsNGC0LAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQstC40YHQvtGH0LjQvdCw0YLQsCDQvdCwINC60L7QvNC/0L7QvdC10L3RgtCwINC90LAg0YDQtdC00LDQutGC0L7RgNCwINC30LAg0LHQvtCz0LDRgiDRgtC10LrRgdGCINC30LAg0YLQvtC30Lgg0LXQutGA0LDQvS4g0JLRitCy0LXQtNC10YLQtSDRh9C40YHQu9C+ICjQv9C40LrRgdC10LvQuCkg0LjQu9C4INC/0YDQvtGG0LXQvdGC0L3QsCDRgdGC0L7QudC90L7RgdGCICjQvtGC0L3QvtGB0LjRgtC10LvQvdCwKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQsdGA0L7RjyDQvdCwINGA0LXQtNC+0LLQtdGC0LUg0LfQsCDRgNC10LTQsNC60YLQvtGA0LAg0L3QsCDQmtCVINC00LXRhNC40L3QuNGG0LjQuCDQsiDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNGB0LrQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDRgNC10LTQsCDQvdCwINC40L3RhtC40LTQtdC90YLQvdC40YLQtSDRgdGK0YHRgtC+0Y/QvdC40Y8g0L7RgiDQstC40YHQvtC60L4gKNC90LDQv9GALiDQutGA0LjRgtC40YfQvdC+KSDQtNC+INC90LjRgdC60L4gKNC90LDQv9GALiDRhNGD0L3QutGG0LjQvtC90LDQu9C90L4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0YHRitC+0YLQstC10YLQvdC40YLQtSDRgdGK0YHRgtC+0Y/QvdC40Y8g0L3QsCDQstC90LXQtNGA0Y/QstCw0L3QtSwg0L/RgNC4INC60L7QuNGC0L4g0YHQstGK0YDQt9Cw0L3QuNGC0LUg0LHQuNC70LXRgtC4INC80L7Qs9Cw0YIg0LTQsCDQv9C+0LLQu9C40Y/Rj9GCINC90LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNC10YLQviDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNC10YLQviDQt9CwINGC0YrRgNGB0LXQvdC1INCyINC10LrRgNCw0L3QsCDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YIg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y8g0L3QsCDQsNCz0LXQvdGC0LAgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC+0LPRgNCw0L3QuNGH0LXQvdC40LXRgtC+INC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC+0LPRgNCw0L3QuNGH0LXQvdC40LXRgtC+INC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LrQsNC30LDQvdC40YLQtSDQutC+0LvQvtC90Lgg0L7RgiDQmtCVINCyINC60L7QvNC/0LvQtdC60YHQvdC40Y8g0LjQt9Cz0LvQtdC0INC90LAg0YLQsNCx0LvQuNGG0LDRgtCwINC30LAg0LLRgNGK0LfQutC4INC30LAg0LLRgdC40YfQutC4INC60LvQsNGB0L7QstC1INCa0JUuINCQ0LrQviDQvdGP0LzQsCDQt9Cw0L/QuNGBLCDRgdC1INC/0L7QutCw0LfQstCw0YIg0LrQvtC70L7QvdC40YLQtSDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/QvtC60LDQt9Cw0L3QuNGC0LUg0LrQvtC70L7QvdC4INC+0YIg0JrQlSDQsiDRgdC70L7QttC90LjRjyDQuNC30LPQu9C10LQg0L3QsCDRgtCw0LHQu9C40YbQsNGC0LAg0YEg0LLRgNGK0LfQutC4LCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINC60LvQsNGB0LAg0L3QsCDQmtCVLiDQktGB0LXQutC4INC30LDQv9C40YEg0YLRgNGP0LHQstCwINC00LAg0LjQvNCwINC/0YDQtdGE0LjQutGBINGBINC40LzQtdGC0L4g0L3QsCDQutC70LDRgdCwINC4INC00LLQvtC50L3QviDQtNCy0L7QtdGC0L7Rh9C40LUgKNGCLtC1LiDQutC+0LzQv9GO0YLRitGAIDo6KS4g0JjQvNCwINC90Y/QutC+0LvQutC+INCa0JUt0LDRgtGA0LjQsdGD0YLQsCwg0LrQvtC40YLQviDRgdCwINC+0LHRidC4INC30LAg0LLRgdC40YfQutC4INCa0JUgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCX0LAg0LTQsCDRgdC1INC/0L7QutCw0LbQsNGCINC+0YLQtNC10LvQvdC4INCa0JUt0LDRgtGA0LjQsdGD0YLQuCwg0LrQsNC60YLQviDRgdCwINC00LXRhNC40L3QuNGA0LDQvdC4INCyINCa0JUt0LTQtdGE0LjQvdC40YbQuNGP0YLQsCwg0YLRgNGP0LHQstCwINC00LAg0YHQtSDQuNC30L/QvtC70LfQstCwINGB0LvQtdC00L3QsNGC0LAg0YHRhdC10LzQsCAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHQsCBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQkNC60L4g0L3Rj9C80LAg0LfQsNC/0LjRgSDQt9CwINCa0JUg0LrQu9Cw0YEsINGC0L7Qs9Cw0LLQsCDRgdC1INC/0L7QutCw0LfQstCw0YIg0LrQvtC70L7QvdC40YLQtSDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC60L7QuCDQtdC70LXQvNC10L3RgtC4INGB0LAg0LTQvtGB0YLRitC/0L3QuCDQt9CwICLQlNC10LnRgdGC0LLQuNC1IiDQsiDRgtGA0LXRgtC+0YLQviDQvdC40LLQviDQvdCwINGB0YLRgNGD0LrRgtGD0YDQsNGC0LAgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQutC+0Lgg0LXQu9C10LzQtdC90YLQuCDRgdCwINC90LDQu9C40YfQvdC4INCyINC/0YrRgNCy0L7RgtC+INC90LjQstC+INC90LAg0YHRgtGA0YPQutGC0YPRgNCw0YLQsCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQutC+0Lgg0LXQu9C10LzQtdC90YLQuCDRgdCwINC90LDQu9C40YfQvdC4INCy0YrQsiDQstGC0L7RgNC+0YLQviDQvdC40LLQviDQvdCwINGB0YLRgNGD0LrRgtGD0YDQsNGC0LAgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LrQvtC5INGC0LjQvyDQstGA0YrQt9C60LAgKNC90LDQt9C+0LLQsNC9INC+0YIg0LPQu9C10LTQvdCwINGC0L7Rh9C60LAg0L3QsCDQsdC40LvQtdGC0LApINC80L7QttC1INC00LAg0L/QvtCy0LvQuNGP0LUg0L3QsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0YHQstGK0YDQt9Cw0L0g0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC60L7QuSDRgtC40L8g0LHQuNC70LXRgiDQvNC+0LbQtSDQtNCwINC/0L7QstC70LjRj9C1INC90LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINGB0LLRitGA0LfQsNC9INCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn0JDQutGC0YPQsNC70LjQt9Cw0YbQuNGPINC90LAg0L7Qv9GA0LXQtNC10LvQtdC90LjQtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9CY0LfRgtGA0LjQstCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGCINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ9Cm0LLRj9GCINC30LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40LfQv9C+0LvQt9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtSDQvdCwINCy0L3QtdC00YDRj9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ9Cd0LDQv9GA0LDQstC4INC60L7Qv9C40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0YHRitCx0LjRgtC40Y8g0YEg0LTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCwg0LrQvtC50YLQviDQvNCw0YDQutC40YDQsCDQtNC10YTQuNC90LjRhtC40LjRgtC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC60LDRgtC+INC90LXRgdC40L3RhdGA0L7QvdC40LfQuNGA0LDQvdC4LCDQsNC60L4g0YHRitC00YrRgNC20LDRidC40YLQtSDQs9C4INC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0YHQtSDQv9GA0L7QvNC10L3Rj9GCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCwg0L/QvtC60LDQt9Cw0L3QuCDQsiDQtdC60YDQsNC90LAg0LfQsCDQtNC+0L/RitC70L3QuNGC0LXQu9C90Lgg0L/QvtC70LXRgtCwINC90LAgSVRTTSDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCwg0L/QvtC60LDQt9Cw0L3QuCDQsiDQtdC60YDQsNC90LAg0LfQsCDQv9GA0LXQs9C70LXQtCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQutC70LjQtdC90YLRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAsINC/0L7QutCw0LfQsNC90Lgg0LIg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn0KDQsNC30YDQtdGI0LDQstCwINGE0YPQvdC60YbQuNGP0YLQsCDQt9CwINCz0YDRg9C/0L7QstC+INC00LXQudGB0YLQstC40LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LfQsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsCDQtNCwINGA0LDQsdC+0YLQuCDQstGK0YDRhdGDINC/0L7QstC10YfQtSDQvtGCINC10LTQuNC9INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQvdCw0LLQtdC00L3RitC2Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn0JDQutGC0LjQstC40YDQsCDRhNGD0L3QutGG0LjRj9GC0LAg0LfQsCDQs9GA0YPQv9C+0LLQviDQtNC10LnRgdGC0LLQuNC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINGB0LDQvNC+INC30LAg0LjQt9Cx0YDQvtC10L3QuNGC0LUg0LPRgNGD0L/QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQvdCwINGB0YrQsdC40YLQuNC1INC30LAg0LfQsNC00LDQstCw0L3QtSDQt9CwINGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQt9CwINCy0YDRitC30LrQsCDQt9CwINCx0LjQu9C10YIt0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICfQn9C+0LvQtdGC0LAg0L7RgiDQuNC90LTQtdC60YHQsCDQvdCwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLCDQuNC30L/QvtC70LfQstCw0L3QuCDQt9CwINC/0YrQu9C90L7RgtC10LrRgdGC0L7QstC+INGC0YrRgNGB0LXQvdC1LiDQn9C+0LvQtdGC0LDRgtCwINGB0YrRidC+INGB0LUg0YHRitGF0YDQsNC90Y/QstCw0YIsINC90L4g0L3QtSDRgdCwINC30LDQtNGK0LvQttC40YLQtdC70L3QuCDQt9CwINGG0Y/Qu9C+0YHRgtC90LDRgtCwINGE0YPQvdC60YbQuNC+0L3QsNC70L3QvtGB0YIuINCS0LrQu9GO0YfQstCw0L3QtdGC0L4g0L3QsCDQv9GA0LjQutCw0YfQtdC90Lgg0YTQsNC50LvQvtCy0LUg0LzQvtC20LUg0LTQsCDQsdGK0LTQtSDQt9Cw0LHRgNCw0L3QtdC90L4g0YfRgNC10Lcg0LfQsNC00LDQstCw0L3QtSDQvdCwINGB0YLQvtC50L3QvtGB0YIgMCDQuNC70Lgg0LjQt9GC0YDQuNCy0LDQvdC1INC90LAg0LfQsNC/0LjRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn0J/QvtC70LXRgtCwLCDRgdGK0YXRgNCw0L3Rj9Cy0LDQvdC4INCyINC40L3QtNC10LrRgdCwINC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINC60L7QuNGC0L4g0YHQtSDQuNC30L/QvtC70LfQstCw0YIg0LfQsCDQtNGA0YPQs9C4INGG0LXQu9C4LCDQvtGB0LLQtdC9INC30LAg0L/RitC70L3QvtGC0LXQutGB0YLQvtCy0L4g0YLRitGA0YHQtdC90LUuINCX0LAg0L/RitC70L3QsNGC0LAg0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+0YHRgiDQstGB0LjRh9C60Lgg0L/QvtC70LXRgtCwINGB0LAg0LfQsNC00YrQu9C20LjRgtC10LvQvdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LjRgNCw0L3QtSDQvdCwINC80L7QtNGD0LsgR2VuZXJpY0ludGVyZmFjZSDQt9CwINGB0LvQvtGPINC30LAg0LjQt9Cy0LjQutCy0LDQvdC1INC90LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LjRgNCw0L3QtSDQvdCwINC80L7QtNGD0LsgR2VuZXJpY0ludGVyZmFjZSDQt9CwINGB0LvQvtGPINC30LAg0LjQt9Cy0LjQutCy0LDQvdC1INC90LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNC40YDQsNC90LUg0L3QsCDQvNC+0LTRg9C7IEdlbmVyaWNJbnRlcmZhY2Ug0LfQsCDRgdC70L7RjyDQt9CwINC40LfQstC40LrQstCw0L3QtSDQvdCwIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAn0J/RgNC10LPQu9C10LQg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC60LvRjtGH0LLQsCDRgdGK0YHRgtC+0Y/QvdC40Y8g0L3QsCDQstC90LXQtNGA0Y/QstCw0L3QtSDQsiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQutC70LjQtdC90YLRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQstCwINGB0YrRgdGC0L7Rj9C90LjRjyDQvdCwINC40L3RhtC40LTQtdC90YLQuCDQsiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70LXQvSDQsdGA0L7QuSDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCwg0LrQvtC40YLQviDQtNCwINCx0YrQtNCw0YIg0L/QvtC60LDQt9Cw0L3QuCDQsiDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtCw0LfQuCDQvtC/0LXRgNCw0YbQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDQv9GA0L7QstC10YDQutCwINC90LAg0LPRgNGD0L/QsNGC0LAsINC+0YLQs9C+0LLQsNGA0Y/RidCwINC30LAg0LTQsNC00LXQvSDQutC70LDRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINCz0YDRg9C/0LDRgtCwLCDQvtGC0LPQvtCy0L7RgNC90LAg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn0JzQvtC00YPQuyDQt9CwINCz0LXQvdC10YDQuNGA0LDQvdC1INC90LAg0YHRgtCw0YLQuNGB0YLQuNGH0LXRgdC60Lgg0LTQsNC90L3QuCDQt9CwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ9CY0LzQtSDQvdCwINC80L7QtNGD0LvQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn0J3QvtC80LXRgCDQvdCwINC80L7QtNGD0LvQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdGA0L7QuSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCwg0LrQvtC40YLQviDQtNCwINGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQvdCwINCy0YHRj9C60LAg0YHRgtGA0LDQvdC40YbQsCDQvtGCINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHRgNC+0Lkg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINC60L7QuNGC0L4g0LTQsCDRgdC1INC/0L7QutCw0LfQstCw0YIg0L3QsCDQstGB0Y/QutCwINGB0YLRgNCw0L3QuNGG0LAg0L3QsCDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtGK0YDRgdC10L3QtdGC0L4g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn0J7QsdC10LrRgtC4LCDQutC+0LjRgtC+INC00LAg0YHQtSDRgtGK0YDRgdGP0YIsINC60L7Qu9C60L4g0LfQsNC/0LjRgdC4INC4INC60L7QuCDQsNGC0YDQuNCx0YPRgtC4INC00LAg0YHQtSDQv9C+0LrQsNC30LLQsNGCLiDQkNGC0YDQuNCx0YPRgtC40YLQtSDQvdCwIENvbmZpZ0l0ZW0g0YLRgNGP0LHQstCwINC40LfRgNC40YfQvdC+INC00LAg0YHQtSDRgdGK0YXRgNCw0L3Rj9Cy0LDRgiDRh9GA0LXQtyBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfQn9GA0LXQs9C70LXQtC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC60LDRgtC10LPQvtGA0LjQuNGC0LUg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0L3QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRj9GC0LAg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRhNC40LvRgtGA0LjRgtC1INC90LAg0LrQvtC70L7QvdC40YLQtSDQsiDQv9GA0LXQs9C70LXQtNCwINC90LAg0LzQsNC70LrQuNGPINC10LvQtdC80LXQvdGCINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4g0JzQvtC70Y8sINC+0LHRitGA0L3QtdGC0LUg0LLQvdC40LzQsNC90LjQtTog0LfQsNC00LDQstCw0L3QtdGC0L4g0L3QsCDRgdGC0L7QudC90L7RgdGCICLQkNC60YLQuNCy0LXQvSIg0L3QsCAwINGJ0LUg0L/QvtC/0YDQtdGH0Lgg0YHQsNC80L4g0L3QsCDQsNCz0LXQvdGC0LjRgtC1INC00LAg0YDQtdC00LDQutGC0LjRgNCw0YIg0L3QsNGB0YLRgNC+0LnQutC40YLQtSDQvdCwINGC0LDQt9C4INCz0YDRg9C/0LAg0LIg0LvQuNGH0L3QuNGC0LUg0YHQuCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRjywg0L3QviDQstGB0LUg0L/QsNC6INGJ0LUg0L/QvtC30LLQvtC70Lgg0L3QsCDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNC40YLQtSDQtNCwINGA0LXQtNCw0LrRgtC40YDQsNGCINC90LDRgdGC0YDQvtC50LrQuNGC0LUg0L7RgiDQuNC80LXRgtC+INC90LAg0LTRgNGD0LMg0L/QvtGC0YDQtdCx0LjRgtC10LsuINCY0LfQv9C+0LvQt9Cy0LDQudGC0LUgXCdQcmVmZXJlbmNlR3JvdXBcJyAo0JPRgNGD0L/QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRjyksINC30LAg0LTQsCDQutC+0L3RgtGA0L7Qu9C40YDQsNGC0LUg0LIg0LrQvtGPINC+0LHQu9Cw0YHRgiDQvdCwINC/0L7RgtGA0LXQsdC40YLQtdC70YHQutC40Y8g0LjQvdGC0LXRgNGE0LXQudGBINC00LAg0YHQtSDQv9C+0LrQsNC30LLQsNGCINGC0LXQt9C4INC90LDRgdGC0YDQvtC50LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0LjRgtC1INC30LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40LfQv9C+0LvQt9Cy0LDQvdC1INGB0LUg0L7RhtCy0LXRgtGP0LLQsNGCINCyINC40LfQs9C70LXQtNCwINGBINC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGPINC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRitGB0YLQvtGP0L3QuNGP0YLQsCDQvdCwINC40LfQv9C+0LvQt9Cy0LDQvdC1INCyINC40LfQs9C70LXQtNCwINGBINC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGPINC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC/0YDQuNC80LXRgNC90LjRgtC1INGA0LDQt9GA0LXRiNC40YLQtdC70L3QuCDQs9GA0YPQv9C4INC+0YIg0LDRgtGA0LjQsdGD0YLQuNGC0LUg0L3QsCDQvtCx0YnQuNGPINC60LDRgtCw0LvQvtCzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC80L7QtNGD0LvQsCDQvdCwINC40LzQtdC90LDRgtCwINC30LAg0LrQu9Cw0YHQvtCy0LXRgtC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40LfQs9C70LXQtNCwINC90LAg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y/RgtCwINC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQvNC+0LTRg9C70LAg0LfQsCDQvdC+0LzQtdGA0LAg0L3QsCDQutC70LDRgdC+0LLQtdGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0L3QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRj9GC0LAg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtGA0LDQvdC40YbQuNGC0LUgKNCyINC60L7QuNGC0L4g0YHQtSDQv9C+0LrQsNC30LLQsNGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuNGC0LUg0LXQu9C10LzQtdC90YLQuCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC80L7QtNGD0LvQsCDQt9CwINC90LjQtyDQvtGCINCy0LXRgNGB0LjQuCDQt9CwINC60LvQsNGB0L7QstC10YLQtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC30LPQu9C10LTQsCDQt9CwINC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGPINC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LzQvtC00YPQu9CwINC90LAg0L3QsNCx0L7RgNCwINC+0YIg0LjQvdGB0YLRgNGD0LzQtdC90YLQuCDQt9CwINGI0LDQsdC70L7QvdC4INC30LAg0L3QuNC3INC+0YIg0LLQtdGA0YHQuNC4INC30LAg0LrQu9Cw0YHQvtCy0LXRgtC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40LfQs9C70LXQtNCwINC90LAg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y/RgtCwINC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC30LDQtNC10LnRgdGC0LLQsNC90LUg0L3QsCDQstC10YDRgdC40Y/RgtCwINC30LAg0LrQu9Cw0YHQvtCy0LXRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40LfQs9C70LXQtNCwINC30LAg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9CwINGA0LDQt9GA0LXRiNC10L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC00LXQudGB0YLQstC40LXRgtC+INC30LAg0L/RgNC40LrQsNGH0LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwIElUU00g0LIg0LrQu9C40LXQvdGC0YHQutC40Y8g0LjQvdGC0LXRgNGE0LXQudGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INGA0LDQt9GA0LXRiNC10L3QuNGPINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0YEg0LTRitGA0LLQvtCy0LjQtNC90LjRjyDQuNC30LPQu9C10LQg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDQv9GA0LDQstCwINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0LfQsCDQvNCw0YnQsNCx0LjRgNCw0L3QtSDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINC00L7QsdCw0LLRj9C90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDRgSDQtdC70LXQvNC10L3RgtC40YLQtSDQt9CwINCz0YDRg9C/0L7QstCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRjyDQvdCwIElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINGA0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YXRgNC+0L3QvtC70L7Qs9C40Y/RgtCwINC90LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINC/0LXRh9Cw0YIg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30YLRgNC40LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfQotGK0YDRgdC10L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn0JfQsNC00LDQudGC0LUg0LDQstGC0L7QvNCw0YLQuNGH0L3QviDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQvdGG0LjQtNC10L3RgiDQvdCwINCa0JUsINC60L7Qs9Cw0YLQviDQsdC40LvQtdGC0YrRgiDQtSDRgdCy0YrRgNC30LDQvSDRgSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LLQsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0LIg0LPRgNGD0L/QvtCy0LjRjyDQtdC60YDQsNC9INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0LfQsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQt9CwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQstCwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC90YbQuNC00LXQvdGC0LAg0LIg0LPRgNGD0L/QvtCy0LjRjyDQtdC60YDQsNC9INC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+LCDQutC+0LXRgtC+INC/0L7Qt9Cy0L7Qu9GP0LLQsCDRgdCy0YrRgNC30LLQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0YEg0LTRgNGD0LMg0L7QsdC10LrRgiDQsiDQuNC30LPQu9C10LTQsCDQt9CwINC80LDRidCw0LHQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC00L7RgdGC0YrQvyDQtNC+INGF0YDQvtC90L7Qu9C+0LPQuNGP0YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvtCx0YnQuNGPINC/0YDQtdCz0LvQtdC0INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC00L7RgdGC0YrQvyDQtNC+INGF0YDQvtC90L7Qu9C+0LPQuNGP0YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDQvNCw0YnQsNCx0LjRgNCw0L0g0LjQt9Cz0LvQtdC0INC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC40LfRgtGA0LjQstCw0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDRg9Cy0LXQu9C40YfQtdC9INC40LfQs9C70LXQtCDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC/0L7QutCw0LfQstCw0L3QtSDQvdCwINCy0YDRitC30LrQuNGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LrQsNGC0L4g0LTRitGA0LLQvtCy0LjQtNC10L0g0LjQt9Cz0LvQtdC0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDQtNGD0LHQu9C40YDQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L/RgNC4INC/0YDQtdCz0LvQtdC00LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0LTRg9Cx0LvQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC90LXQs9C+0LLQuNGPINC80LDRidCw0LHQuNGA0LDQvSDQuNC30LPQu9C10LQg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDRgNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC90LXQs9C+0LLQuNGPINC80LDRidCw0LHQuNGA0LDQvSDQuNC30LPQu9C10LQg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDQstGA0YrRidCw0L3QtSDQsiDQuNC30LPQu9C10LTQsCDQt9CwINC80LDRidCw0LHQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0L7RgtC/0LXRh9Cw0YLQstCw0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDQvNCw0YnQsNCx0LjRgNCw0L0g0LjQt9Cz0LvQtdC0INC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINGD0LLQtdC70LjRh9Cw0LLQsNC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDRhdGA0L7QvdC+0LvQvtCz0LjRj9GC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiAo0LIg0L7QsdGA0LDRgtC10L0g0YDQtdC0KSDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LCDQutC+0Y/RgtC+INGB0LUg0L/QvtC60LDQt9Cy0LAsINCw0LrQviDQvdC1INC1INC40LfQsdGA0LDQvdCwINGC0LDQutCw0LLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ9CY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0YrRgiDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgiwg0L3QsNC/0YAuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDQn9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQtSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ9CX0LDQtNC10LnRgdGC0LLQsCDQsNCy0YLQvtC80LDRgtC40YfQvdC+INC40LfQstC40LrQstCw0L3QtdGC0L4g0L3QsCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9CS0LXRgNGB0LjRjyDQodGC0YDQuNC90LMg0LjQt9GA0LDQt9GP0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn0JLQtdGA0YHQuNGPINCh0YLRgNGD0L3QtdC9INC80L7QtNGD0LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn0JLQtdGA0YHQuNGPIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9CU0LDQu9C4INC40LfQv9GK0LvQvdC10L3QuNC10YLQviDQvdCwIENvbmZpZ0l0ZW1BQ0wg0LzQvtC20LUg0LTQsCDQsdGK0LTQtSDQuNC30LHQtdCz0L3QsNGC0L4g0YfRgNC10Lcg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC60LXRiNC40YDQsNC90LjRgtC1INC30LDQstC40YHQuNC80L7RgdGC0Lgg0L3QsCDQv9C+0LvQtdGC0LDRgtCwLiDQotC+0LLQsCDQvNC+0LbQtSDQtNCwINC/0L7QtNC+0LHRgNC4INCy0YDQtdC80LXRgtC+INC30LAg0LfQsNGA0LXQttC00LDQvdC1INC90LAg0YTQvtGA0LzRg9C70Y/RgNC40YLQtSwg0L3QviDRgtGA0Y/QsdCy0LAg0LTQsCDQsdGK0LTQtSDQtNC10LDQutGC0LjQstC40YDQsNC90L4sINCw0LrQviBBQ0xNb2R1bGVzINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0LjQt9C/0L7Qu9C30LLQsNGCINC30LAgSVRTTUNvbmZpZ0l0ZW0tINC4IEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfQmtC+0Y8g0L7QsdGJ0LAg0LjQvdGE0L7RgNC80LDRhtC40Y8g0LUg0L/QvtC60LDQt9Cw0L3QsCDQsiDQt9Cw0LPQu9Cw0LLQuNC10YLQvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfQutC70LDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfQs9C70L7QsdCw0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn0L/QvtGB0YLQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfQv9GA0LXQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1INC40L3Rh9CwICg0NCw0NSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSDQuNC90YfQsCAoNTMsMzQg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUg0LjQvdGH0LAgKDY2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSDQuNC90YfQsCAoODAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkt0LjQvdGH0L7QsiDRgdGC0LXQu9Cw0LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1INC40L3Rh9CwICg0LDQ1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUg0LjQvdGH0LAgKDg4LDkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEt0LjQvdGH0L7QsiDQsdCw0LPQsNC20L3QuNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSDQuNC90YfQsCAoOTcsNzkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMt0LjQvdGH0L7QstCwINGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYg0LjQvdGH0LAgKDYwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIg0LjQvdGH0LAgKDEwNiw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUg0LjQvdGH0LAgKDEyMCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1INC40L3Rh9CwICg4LDg5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUg0LjQvdGH0LAgKDEzMywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUg0LjQvdGH0LAgKDgwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUg0LjQvdGH0LAgKDE0Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQg0LjQvdGH0LAgKDkwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMg0LjQvdGH0LAgKDE2MCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0INC40L3Rh9CwICgxMDAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSDQuNC90YfQsCAoMTczLDM1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUg0LjQvdGH0LAgKDEzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUg0LjQvdGH0LAgKDE4Niw2OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyDQuNC90YfQsCAoMTEwMCDQvNC8KTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1INC40L3Rh9CwICgyMDAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiDQuNC90YfQsCAoMTIwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQg0LjQvdGH0LAgKDIxMywzNiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3INC40L3Rh9CwICgxNyw3OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1INC40L3Rh9CwICgyMiwyMyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1INC40L3Rh9CwICgyNiw2NyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUg0LjQvdGH0LAgKDMxLDEyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCDQuNC90YfQsCAoMzUsNTYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1INC40L3Rh9CwICg0MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ9Ch0YfQtdGC0L7QstC+0LTRgdGC0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ9Cg0LDQt9C/0YDQtdC00LXQu9C10L3QuNC1INC90LAg0LDQtNGA0LXRgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfQkNC90LDQu9C+0LPQvtCyINGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAn0KLQuNC/INC90LAg0YPRgNC10LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ9Ca0LDQv9Cw0YbQuNGC0LXRgiDQvdCwINCx0LDRgtC10YDQuNGP0YLQsCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ9Ci0LjQvyDQsdCw0YLQtdGA0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9Ch0LPRgNCw0LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn0JjQvdGC0LXRgNGE0LXQudGBINC90LAg0YjQuNC90LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfQn9GA0L7RhtC10YHQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ9Ca0LvQsNGBINC90LAg0L/RgNC+0YbQtdGB0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICfQmtCw0L/QsNGG0LjRgtC10YIgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ9Ca0LDQv9Cw0YbQuNGC0LXRgiDQvdCwINCz0YDQsNGE0LjRh9C90LAg0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0L3QsCDQutCw0YDRgtCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ9Cn0LXRgtC10YYg0L3QsCDQutCw0YDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ9Ci0LjQvyDQutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfQmtC70LjQtdC90YLRgdC60Lgg0YHQtdGA0YLQuNGE0LjQutCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfQmtC70LjQtdC90YLRgdC60Lgg0YHQvtGE0YLRg9C10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC90LAg0LrQu9C40LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn0KfQsNGB0L7QstC90LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn0KHQutC+0YDQvtGB0YIg0L3QsCDRh9Cw0YHQvtCy0L3QuNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Lgg0LfQsCDQv9C+0LTQv9C40YHQstCw0L3QtSDQvdCwINC60L7QtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn0JrQvtC90YTQtdGA0LXQvdGC0LXQvSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINC60L7QvdGB0YPQu9GC0LjRgNCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn0KHQstGK0YDQttC10YLQtSDRgdC1INGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfQodCy0YrRgNC20LXRgtC1INGB0LUg0YEg0LTQuNGB0YLRgNC40LHRg9GC0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0L3QsCDQutC+0L3RgtC10LnQvdC10YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ9CU0L7Qs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfQktC40LQg0L3QsCDQtNC+0LPQvtCy0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn0KHRgNC+0Log0L3QsCDQtNC+0LPQvtCy0L7RgNCwINC+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAn0KHRgNC+0Log0L3QsCDQtNC+0LPQvtCy0L7RgNCwINC00L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn0JHQtdC30LbQuNGH0LXQvSDRgtC10LvQtdGE0L7QvSAoREVDVCDRgtC10LvQtdGE0L7QvSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn0KDQsNC30YXQvtC00L3QsCDQtdC00LjQvdC40YbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ9CR0YDQvtC5INC90LAg0LvQuNGG0LXQvdC30LjRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfQlNCw0YLQsCDQvdCwINGB0YrQt9C00LDQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn0J/QvtGC0YDQtdCx0LjRgtC10LvRgdC60Lgg0YHRgtC10LvQsNC2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQINCX0LDQv9Cw0LfQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy3RgdGK0YDQstGK0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ9CU0LDRgtCwINC90LAg0YTQsNC60YLRg9GA0LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfQlNCw0YLQsCDQvdCwINC/0L7RgNGK0YfQutCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAn0JTQsNGC0LAg0L3QsCDQuNC30LTQsNCy0LDQvdC1INC90LAg0LPQsNGA0LDQvdGG0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn0JTQsNGC0LAg0L3QsCDQuNC30LTQsNCy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfQndCw0YHRgtC+0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtC4INC30LAg0L/QvtC00L/QuNGB0LLQsNC90LUg0L3QsCDQtNC+0LrRg9C80LXQvdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Lgg0LfQsCDQtdC70LXQutGC0YDQvtC90L3QsCDQv9C+0YnQsCAoUy9NSU1FINGB0LXRgNGC0LjRhNC40LrQsNGC0LgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ9Ci0YDRg9C00L7QsiDQtNC+0LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ9Ca0YDQsNC10L0gSVAg0LDQtNGA0LXRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ9Ca0YDQsNC5INC90LAg0L/QvtC00LrRgNC10L/QsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfQlNCw0YLQsCDQvdCwINC40LfRgtC40YfQsNC90LUg0L3QsCDQstCw0LvQuNC00L3QvtGB0YLRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICfQktGK0L3RiNC10L0g0YLQstGK0YDQtCDQtNC40YHQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ9CX0LDRidC40YLQvdCwINGB0YLQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICfQpNGK0YDQvNGD0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ9Ch0YrRhdGA0LDQvdC10L3QuNC1INC90LAg0LXQvdC10YDQs9C40Y8g0YfRgNC10Lcg0LzQsNGF0L7QstC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICfQpNCw0LrRgtC+0YAg0L3QsCDRhNC+0YDQvNCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0YTRgNCw0L3Rh9Cw0LnQtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9CR0LXQt9C/0LvQsNGC0L3QviDRgNCw0LfQv9GA0L7RgdGC0YDQsNC90Y/QstCw0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn0J7QsdGJ0LAg0LjQvdGE0L7RgNC80LDRhtC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfQk9GA0LDRhNC40YfQvdC4INC60LDRgNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ9CT0YDQsNGE0LjRh9C90LAg0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ9Cl0LDRgNC00YPQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn0JzQvtC00LXQuyDQvdCwINGF0LDRgNC00YPQtdGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn0KLQtdCz0LvQviDQvdCwINGF0LDRgNC00YPQtdGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ9Ch0LvRg9GI0LDQu9C60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDQv9GA0L7RgtC+0LrQvtC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC90LAg0LjQtNC10L3RgtC40YfQvdC+0YHRgtGC0LAg0Lgg0LTQvtGB0YLRitC/0LAgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ9CY0L3QstC10L3RgtCw0YDQtdC9INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0L3QsCDRhNCw0LrRgtGD0YDQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfQmtC70LDQstC40LDRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qg0LzQvtC90LjRgtC+0YAgKNC00LjRgdC/0LvQtdC5INGBINGC0LXRh9C90Lgg0LrRgNC40YHRgtCw0LvQuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCDQvNC+0L3QuNGC0L7RgCAo0YHQstC10YLQu9C+0LjQt9C70YrRh9Cy0LDRiSDQtNC40L7QtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn0KHRgtCw0YbQuNC+0L3QsNGA0LXQvSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfQn9GA0LXQvdC+0YHQuNC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn0JPQtdC+0LPRgNCw0YTRgdC60LAg0YjQuNGA0LjQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn0KHQu9C+0LkgMTog0KTQuNC30LjRh9C10YHQutC4INGB0LvQvtC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ9Ch0LvQvtC5IDI6INCh0LvQvtC5INC30LAg0LLRgNGK0LfQutCwINGBINC00LDQvdC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ9Ch0LvQvtC5IDM6INCc0YDQtdC20L7QsiDRgdC70L7QuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfQodC70L7QuSAzOiDQnNGA0LXQttC+0LIg0YHQu9C+0LkgKNGB0YPQv9C10YDQvNGA0LXQttCwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICfQodC70L7QuSA0OiDQotGA0LDQvdGB0L/QvtGA0YLQtdC9INGB0LvQvtC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfQodC70L7QuSA1OiDQodC70L7QuSDQvdCwINGB0LXRgdC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ9Ch0LvQvtC5IDY6INCh0LvQvtC5INC90LAg0L/RgNC10LTRgdGC0LDQstGP0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ9Ch0LvQvtC5IDc6INCh0LvQvtC5INC90LAg0L/RgNC40LvQvtC20LXQvdC40LXRgtC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINC70LjQt9C40L3Qsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINC70LjRhtC10L3Qtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAn0JrQu9GO0Ycg0LfQsCDQu9C40YbQtdC90LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn0JLQuNC0INC70LjRhtC10L3Qtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn0J/QtdGA0LjQvtC0INC90LAg0LvQuNGG0LXQvdC30LAg0L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ9Ch0YDQvtC6INC90LAg0LvQuNGG0LXQvdC30LAg0LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn0JHQsNGC0LXRgNC40Y8g0L7RgiDQu9C40YLQuNC10LLQvi3QttC10LvQtdC30LXQvSDRhNC+0YHRhNCw0YIgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfQm9C40YLQuNC10LLQvi3QudC+0L3QvdCwIChMaS1pb24pINCx0LDRgtC10YDQuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0LfQsNC10LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ9Cd0LDQvNC40YDQsCDRgdC1INCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ9CU0YrQu9C20LjQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn0J/RgNC+0LjQt9Cy0L7QtNC40YLQtdC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfQnNCw0LrRgdC40LzQsNC70LXQvSDQutCw0L/QsNGG0LjRgtC10YIg0L3QsCDQvdCw0YLQvtCy0LDRgNCy0LDQvdC1IChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICfQn9Cw0LzQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn0KLQuNC/INC/0LDQvNC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn0JzQvtCx0LjQu9C10L0g0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfQnNC+0LHQuNC70L3QuC/QstCz0YDQsNC00LXQvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn0JzQvtC00LXQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ9Ce0L/QuNGB0LDQvdC40LUg0L3QsCDQvNC+0LTQtdC70LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn0KDQtdC30L7Qu9GO0YbQuNGPINC90LAg0LzQvtC90LjRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfQoNCw0LfQvNC10YAg0L3QsCDQvNC+0L3QuNGC0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn0JzQuNGI0LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn0JzRgNC10LbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRjyDQt9CwINC80YDQtdC20LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRjyDQt9CwINC80YDQtdC20LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfQnNGA0LXQttC+0LLQviDQvdC40LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ9Cd0LjQutC10Lst0LrQsNC00LzQuNC10LLQsCAoTmlDZCkg0LHQsNGC0LXRgNC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfQndC40LrQtdC7LdC80LXRgtCw0LvRhdC40LTRgNC40LTQvdCwIChOaU1IKSDQsdCw0YLQtdGA0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDQvdC10YDQsNC30LrRgNC40LLQsNC90LUg0L3QsCDQuNC90YTQvtGA0LzQsNGG0LjRjyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ9CR0LXQu9C10LbQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICfQkdGA0L7QuSDQv9GA0L7RhtC10YHQvtGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAn0JHRgNC+0Lkg0LzQvtC00YPQu9C4IFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICfQkdGA0L7QuSDQs9GA0LDRhNC40YfQvdC4INC60LDRgNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQg0LzQvtC90LjRgtC+0YAgKNC+0YDQs9Cw0L3QuNGH0LXQvSDRgdCy0LXRgtC+0LjQt9C70YrRh9Cy0LDRiSDQtNC40L7QtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn0J7Qv9C10YDQsNGC0LjQstC90Lgg0YDQsNC30YXQvtC00LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvdCwINC/0L7RgNGK0YfQutCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ9CU0YDRg9Cz0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9CY0LfRhdC+0LTQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICfQn9CY0J0gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDQv9Cw0YDRgtC90YzQvtGA0YHRgtCy0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICfQotC10LvQtdGE0L7QvdC10L0g0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn0KLQuNC/INC90LAg0YLQtdC70LXRhNC+0L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ9Ck0LjQt9C40YfQtdGB0LrQuCDRj9C00YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ9CU0L7RgdGC0LDQstC60LAg0L3QsCDQtdC90LXRgNCz0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ9CX0LDQutGD0L/QtdC90L4g0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ9CU0YrQu9Cx0L7Rh9C40L3QsCDQvdCwINGB0YLQtdC70LDQttCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn0JXQtNC40L3QuNGG0Lgg0LfQsCDRgdGC0LXQu9Cw0LYgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfQodGC0LDRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSDQutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyDRgdC10YDRgtC40YTQuNC60LDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAn0JTQvtCz0L7QstC+0YAg0LfQsCDQv9GA0L7QtNCw0LbQsdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ9Ch0LDRgtC10LvQuNGC0LXQvSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICfQl9Cw0L/QtdGH0LDRgtCw0L3QsCDQvtC70L7QstC90L4t0LrQuNGB0LXQu9C40L3QvdCwINCx0LDRgtC10YDQuNGPIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn0KHQtdGA0LjQtdC9INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAn0KHQvtGE0YLRg9C10YAg0LfQsCDRgdGK0YDQstGK0YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINGD0YHQu9GD0LPQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ9Ch0LXRgNCy0LjQt9C10L0g0LXRgtC40LrQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ9Ci0LjQvyDQs9C90LXQt9C00L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICfQodC+0YTRgtGD0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ9CS0LjRgdC+0LrQvtCz0L7QstC+0YDQuNGC0LXQu9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9Ch0YLQsNC90LTQsNGA0YLQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICfQndCw0YfQsNC70LXQvSBJUCDQsNC00YDQtdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfQodGK0YXRgNCw0L3QtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ9Cg0LDQt9C00LXQuyDQt9CwINGB0YrRhdGA0LDQvdC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn0JTRitGJ0LXRgNC90L4g0LTRgNGD0LbQtdGB0YLQstC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfQoNC10LfRjtC80LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfQotGK0L3RitC6INC60LvQuNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn0J3QuNGI0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICfQntCx0YnQsCDQvtC/0LXRgNCw0YLQuNCy0L3QsCDQv9Cw0LzQtdGCINC90LAg0LPRgNCw0YTQuNGH0L3QsNGC0LAg0LrQsNGA0YLQsCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn0J7QsdGJ0L4gUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ9Cc0L7QvdC40YLQvtGAINGB0YrRgSDRgdC10L3Qt9C+0YDQtdC9INC10LrRgNCw0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICfQmtGD0LvQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCINC60L7QvdGG0LXQvdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ9Ch0LvRg9GI0LDQu9C60Lgg0LfQsCBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQINGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICfQo9C10LEg0LrQsNC80LXRgNCwJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/ca_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmNhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUmVhbG1lbnQgZGVzaXRqYSBlbGltaW5hciBhcXVlc3QgaW52b2NhZG9yPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1RlbXBzIGRlIGNyZWFjacOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRlIHpvb20nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdFeGVjdXRhciByZWNlcmNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyw6huY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdBdGVuY2nDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gdMOpIFBlcm3DrXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Jlc3VtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmbDrWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnRm9ybXVsYXJpIGRlIHJlc3VsdGF0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0Fjb3JkIGRlIE5pdmVsbCBkZSBTZXJ2ZWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ0VzdMOgbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/cs_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmNzX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdPYmVjbsOpIHByb3Zvem7DrSDDumRhamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ05hc3RhdmVuw60gcHJvIHDFmcOtY2hvesOtIGRhdGEgcG/FvmFkYXZrxa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdOYXN0YXZlbsOtIHBybyBvZGNob3rDrSBkYXRhIG9kcG92xJtkw60nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdTcHLDoXZhIEtvbmZpZ3VyYcSNbsOtY2ggUG9sb8W+ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdabcSbbmEgZGVmaW5pY2UgdMWZw61keSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnWm3Em25hIGRlZmluaWNlIHJvbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdTdmF6a3kgdMWZw61kIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1pkZSBtxa/FvmV0ZSBpbXBvcnRvdmF0IHN2YXpreSB0xZnDrWQgUmVhZHkySW1wb3J0LCBrdGVyw6kgcMWZZWRzdGF2dWrDrSBuYcWhZSBuZWpvYnZ5a2xlasWhw60gcG9sb8W+a3kga29uZmlndXJhY2UuIFZlem3Em3RlIHByb3PDrW0gbmEgdsSbZG9tw60sIMW+ZSBtxa/FvmUgYsO9dCB2ecW+YWRvdsOhbmEgZGFsxaHDrSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQWt0dWFsaXphY2Ugc3TDoXZhasOtY8OtY2ggc3ViamVrdMWvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0IHN2YXprxa8gdMWZw61kIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnVMWZw61kYSBwb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnUm9sZSBwb2xvxb5reSBrb25maWd1cmFjZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWcuIFBvbG/FvmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyIHBybyB0xZnDrWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0NoY2V0ZS1saSB2eXR2b8WZaXQgbm92b3UgcG9sb8W+a3Uga29uZmlndXJhY2UsIHZ5YmVydGUgemUgc2V6bmFtdSB0xZnDrWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ1TFmcOtZGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdIcm9tYWRuw6EgYWtjZSBJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ1N0YXYgTmFzYXplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhdiBJbmNpZGVudHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnT2RrYXogbmEgZGFsxaHDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmVzcHLDoXZuw6kgxI3DrXNsbyBrb25maWd1cmHEjW7DrSBwb2xvxb5reSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnxIzDrXNsbyBqaW7DqSBwb2xvxb5reSBrb25maWd1cmFjZSwgc2Uga3Rlcm91IHNlIG3DoSBwcm9wb2ppdC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdPcHJhdmR1IGNoY2V0ZSB0dXRvIHBvbG/Fvmt1IGtvbmZpZ3VyYWNlIG9kc3RyYW5pdD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSm3DqW5vIHTDqXRvIEtvbmZpZy4gUG9sb8W+a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07DoXpldiBqZSBqacW+IHBvdcW+w612w6FuIHBvbG/FvmtvdSBDb25maWdJdGVtcyBzIG7DoXNsZWR1asOtY8OtbSDEjcOtc2xlbSAoxI3DrXNseSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxIzDrXNsbyB2ZXJ6ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnxIzDrXNsbyB2ZXJ6ZSB0w6l0byBwb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ8SMw61zbG8gdmVyemUgamUgamnFviBwb3XFvml0byB2IHBvbG/FvmNlIENvbmZpZ0l0ZW1zIHMgbsOhc2xlZHVqw61jw61tIMSNw61zbGVtICjEjcOtc2x5KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXYgTmFzYXplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhdiBJbmNpZGVudHUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmllIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdPYnNhaCBoaXN0b3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRG9iYSB2eXR2b8WZZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQxZlpYmzDrcW+ZW7DrSB6b2JyYXplbsOtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ1BvbG/Fvmt5IGtvbmZpZ3VyYWNlIG5hIHN0csOhbmt1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZWJ5bGEgbmFsZXplbmEgxb7DoWRuw6EgZGF0YSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWeWJlcnRlIHR1dG8gcG9sb8W+a3Uga29uZmlndXJhY2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTcHVzdGl0IHZ5aGxlZMOhdsOhbsOtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnWm9icmF6ZW7DrSBzdHJvbXUgcHJvIHBvbG/Fvmt1IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfDmnJvdmXFiCBobG91Ymt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUMWZaWJsw63FvmVuw60vb2Rkw6FsZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdQcm8gQ29uZmlnSXRlbSBieWxvIGRvc2HFvmVubyBtYXhpbcOhbG7DrSDDunJvdm7EmyBvZGthesWvISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BvbG/FvmthIGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjZSBvIHBvbG/FvmNlIGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxuw60gU3RhdiBOYXNhemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxuw60gU3RhdiBJbmNpZGVudHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnUG9zbGVkbsOtIHptxJtuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdQb3NsZWRuw60gem3Em25hIG9kJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVmHFoWUgcG9sb8W+a3kgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnVnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0J1ZG91IGltcG9ydG92w6FueSBuw6FzbGVkdWrDrWPDrSB0xZnDrWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0J1ZG91IGltcG9ydG92w6FueSBuw6FzbGVkdWrDrWPDrSByb2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1bFoWltbsSbdGUgc2ksIMW+ZSBidWRvdSB2eXR2b8WZZW5hIHRha8OpIG9kcG92w61kYWrDrWPDrSBkeW5hbWlja8OhIHBvbGUgYSB0xZnDrWR5IEdlbmVyYWxDYXRhbG9nIGEgbmVkb2pkZSBrIGplamljaCBhdXRvbWF0aWNrw6ltdSBvZHN0cmFuxJtuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQ2hjZXRlIHBva3JhxI1vdmF0Pyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdQb3TFmWVidWpldGUgcMWZw61rbGFkb3bDqSB0xZnDrWR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmljZSBuZW7DrSBwbGF0bsO9IGhhc2ggWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQxZllaGxlZDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbsOtIHphZMOhbm8gxb7DoWRuw6kgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1BvdMWZZWJ1amV0ZSBhbGVzcG/FiCBqZWRudSB2eWJyYW5vdSBwb2xvxb5rdSBrb25maWd1cmFjZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdLIHTDqXRvIGtvbmZpZ3VyYcSNbsOtIHBvbG/FvmNlIG5lbcOhdGUgcHLDoXZvIHrDoXBpc3U6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdQcm8gdMWZw61kdSAlcyBuZWJ5bGEgZGVmaW5vdsOhbmEgxb7DoWRuw6EgZGVmaW5pY2UhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1cmHEjW7DrSBwb2xvxb5rYSAiJXMiIG5lYnlsYSB2IGRhdGFiw6F6aSBuYWxlemVuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdEZWZpbnVqZSBwb8SNZXQgxZnDoWRrxa8gZWRpdG9ydSBkZWZpbmljZSBDSSB2IHJvemhyYW7DrSBzcHLDoXZjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ1BybyBDb25maWdJdGVtSUQgJXMgbmVieWxhIG5hbGV6ZW5hIMW+w6FkbsOhIHZlcnplISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZW7DrSB1dmVkZW5vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgYW5pIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdQxZnDrXN0dXAgbmVuw60gdW1vxb5uxJtuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZWx6ZSB6b2JyYXppdCBoaXN0b3JpaSwgbmVuw60gemFkw6FubyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmVsemUgem9icmF6aXQgaGlzdG9yaWksIG5lanNvdSBkw6FuYSDFvsOhZG7DoSBwxZnDrXN0dXBvdsOhIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdsO9IHBydmVrIGtvbmZpZ3VyYWNlIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdsOhIHZlcnplIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF2IG5hc2F6ZW7DrSBha3R1YWxpem92w6FuIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdiBpbmNpZGVudHUgYWt0dWFsaXpvdsOhbiAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIG9kc3RyYW7Em24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdQxZlpZMOhbiBvZGtheiBuYSAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ09ka2F6IG5hICVzICh0eXBlPSVzKSBvZHN0cmFuxJtuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmljZSBwb2xvxb5reSBDb25maWdJdGVtIGFrdHVhbGl6b3bDoW5hIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOw6F6ZXYgYWt0dWFsaXpvdsOhbiAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dCAlcyBha3R1YWxpem92w6FuIHogIiVzIiBuYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnplICVzIG9kc3RyYW7Em25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05lbsOtIHV2ZWRlbm8gxb7DoWRuw6kgQ29uZmlnSXRlbUlEIGFuaSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbHplIHpvYnJheml0IHBvbG/Fvmt1IGtvbmZpZ3VyYWNlLCBuZWpzb3UgemFkw6FuYSDFvsOhZG7DoSBwxZnDrXN0dXBvdsOhIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbmVieWxvIHYgZGF0YWLDoXppIG5hbGV6ZW5vISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAndnl0acWhdMSbbm8gJXMgbmEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1BhcmFtZXRyeSBzdHLDoW5layAobmEga3RlcsO9Y2ggc2Ugem9icmF6dWrDrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuw60gdXZlZGVubyDFvsOhZG7DqSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ1BybyB0dXRvIHTFmcOtZHUgbmVqc291IGTDoW5hIMW+w6FkbsOhIHDFmcOtc3R1cG92w6EgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnxb3DoWRuw70gdsO9c2xlZGVrISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1bDvXNsZWRreSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmVsemUgem9icmF6aXQgcG9sb8W+a3UsIG5lanNvdSB6YWTDoW5hIMW+w6FkbsOhIHDFmcOtc3R1cG92w6EgcHLDoXZhIHBybyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdQb2xvxb5rYSBDb25maWdJdGVtIG5lYnlsYSBuYWxlemVuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTmVieWx5IG5hbGV6ZW55IMW+w6FkbsOpIHZlcnplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ3Byb3Zvem7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndmFyb3bDoW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ1ZlcnplICVzIG9kc3RyYW7Em25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF2IE5hc2F6ZW7DrSB0w6l0byBLb25maWcuIFBvbG/Fvmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhdiBJbmNpZGVudHUgdMOpdG8gS29uZmlnLiBQb2xvxb5reSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ8W9w6FkbsOpIHBvdm9sZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ciBqZSBuZXBsYXRuw70hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdIbGVkw6Fuw60gcGFyYW1zIGplIG5lcGxhdG7DqSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdab2JyYXplbsOpIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cCBzdGF2dSBuYXNhemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwIGFrdHXDoWxuw61obyBzdGF2dSBpbmNpZGVudHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWV6aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT21lemVuw60gdMWZw61keSBwcm8gcG9sb8W+a3Uga29uZmlndXJhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDvWLEm3JlbSBqZWRuw6kgbmVibyB2w61jZSB0xZnDrWQgb21lesOtdGUgdnliw61yYXRlbG7DqSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09tZXplbsOtIHTFmcOtZHkgcHJvIHBvbG/Fvmt1IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsO9YsSbcmVtIGplZG7DqSBuZWJvIHbDrWNlIHTFmcOtZCBvbWV6w610ZSB2eWLDrXJhdGVsbsOpIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWNrw6kgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKHZlcnplKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXAgb2RrYXp1IE9ka2F6b3bDoW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdaZGEgc2UgdGVudG8gb2RrYXogdnp0YWh1amUgbmEgQ29uZmlnSXRlbSBuZWJvIHN0YXRpY2tvdSB2ZXJ6aSBvZGthenVqw61jw61obyBvYmpla3R1LiBWw71wb8SNZXQgYWt0dcOhbG7DrWhvIHN0YXZ1IGluY2lkZW50dSBzZSBwcm92w6Fkw60gcG91emUgdSBkeW5hbWlja8O9Y2ggb2RrYXrFry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWeWJlcnRlIGF0cmlidXQsIHBvZGxlIGt0ZXLDqWhvIHNlIGJ1ZG91IGhsZWRhdCBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ1rDoWtsYWRuw60gc3RydWt0dXJhIG5lbsOtIHBsYXRuw6EuIFBvc2t5dG7Em3RlIGhhc2ggcyBkYXR5IHZlIGZvcm3DoXR1IFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnxZhldMSbemVjIFlBTUwgbXVzw60gemHEjcOtbmF0IHpuYWtlbSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOZXBvZGHFmWlsbyBzZSB2ecSNaXN0aXQgdGFidWxrdSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOZWJ5bGEgbmFsZXplbmEgxb7DoWRuw6EgcmVsZXZhbnRuw60gZHluYW1pY2vDoSBwb2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmVsemUgdmxvxb5pdCBkbyB0YWJ1bGt5IGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVmxvxb5lbm8gMCDFmcOhZGvFryBkbyB0YWJ1bGt5IGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXggcG/EjWV0IGplZG7DqSBQb2xvxb5reSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJ6ZSDFmGV0xJt6ZWMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnQ2h5YmEgcMWZaSBzeW5jaHJvbml6YWNpIGRlZmluaWMuIFprb250cm9sdWp0ZSBwcm9zw61tIHByb3Rva29sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ03DoXRlIGRlZmluaWNlIElUU01Db25maWdJdGVtLCBrdGVyw6kgbmVqc291IHN5bmNocm9uaXpvdsOhbnkuIE5hc2HEj3RlIHptxJtueSBkeW5hbWlja8O9Y2ggcG9sw60gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdQcm9wYWRudXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ8OaZHLFvmJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnxZjDrWTDrWPDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnTmFwbMOhbm92w6Fubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdPcHJhdmEvT2Jub3ZlbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdNaW1vIHByb3Zveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQxZllaGxlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9Lb250cm9sYSBrdmFsaXR5JzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQxZllaGxlZCBhIHBvdHZyemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0IHTFmcOtZC9yb2zDrSBhIGplamljaCBzb3V2aXNlasOtY8OtY2ggcG9sw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdQxZlpIGltcG9ydHUgdMWZw61keSBkb8WhbG8gayBjaHlixJsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa3J5dMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBWeW9icmF6ZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvsWIdWplIHJvesWhw63FmWVuw6kgcG9kbcOtbmt5IHZ5aGxlZMOhdsOhbsOtIHYga29uZmlndXJhxI1uw61jaCBwb2xvxb5rw6FjaCByb3pocmFuw60gYWdlbnRhLiBQb21vY8OtIHTDqXRvIGZ1bmtjZSBtxa/FvmV0ZSB2eWhsZWTDoXZhdCBuYXDFmS4gbsOhemV2IGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHMgcG9kbcOtbmthbWkgdHlwdSAiKCprZXkxKiYmKmtleTIqKSIgbmVibyAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Vtb8W+xYh1amUgcm96xaHDrcWZZW7DqSBwb2Rtw61ua3kgdnlobGVkw6F2w6Fuw60gdiBrb25maWd1cmHEjW7DrW0gdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsgdiB6w6FrYXpuaWNrw6ltIHJvemhyYW7DrS4gUG9tb2PDrSB0w6l0byBmdW5rY2UgbcWvxb5ldGUgdnlobGVkw6F2YXQgbmFwxZkuIG7DoXpldiBrb25maWd1cmHEjW7DrSBwb2xvxb5reSBzIHBvZG3DrW5rYW1pIHR5cHUgIigqa2V5MSomJiprZXkyKikiIG5lYm8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQxZlpxZlhemVuw6kgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0kgcMWZaWTEm2xlbsOpIHNwb2xlxI1ub3N0aSB6w6FrYXpuw61rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHDFmWnFmWF6ZW7DqSB1xb5pdmF0ZWxpIHrDoWthem7DrWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdOYXN0YXZlbsOtIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1prb250cm9sdWp0ZSBqZWRpbmXEjW7DvSBuw6F6ZXYgcG91emUgdiByw6FtY2kgc3Rlam7DqSB0xZnDrWR5IENvbmZpZ0l0ZW0gKCJjbGFzcyIpIG5lYm8gZ2xvYsOhbG7EmyAoImdsb2JhbCIpLCBjb8W+IHpuYW1lbsOhLCDFvmUgcMWZaSBobGVkw6Fuw60gZHVwbGljaXQgc2UgYmVyZSB2IMO6dmFodSBrYcW+ZMO9IGV4aXN0dWrDrWPDrSBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnWnZvbHRlIG1vZHVsIHBybyB2eW51Y2Vuw60gc2Now6ltYXR1IHBvam1lbm92w6Fuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWeWJlcnRlIG1vZHVsIHBybyB2eW51Y2Vuw60gxI3DrXNlbG7DqWhvIHNjaMOpbWF0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnWnZvbHRlIG1vZHVsIHBybyB2eW51Y2Vuw60gc2Now6ltYXR1IMWZZXTEm3pjZSB2ZXJ6w60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVnliZXJ0ZSBhdHJpYnV0eSwga3RlcsOpIHNwdXN0w60gdnl0dm/FmWVuw60gbm92w6kgdmVyemUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1Z5YmVydGUga2F0ZWdvcmllLCBrdGVyw6kgY2hjZXRlIHDFmWnFmWFkaXQgdMOpdG8gdMWZw61kxJsgcG9sb8W+ZWsga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJ5IHNsb3VwY292w71jaCBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHBybyBwxZllaGxlZCBwb2xvxb5layBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnU2xvdXBjZSwga3RlcsOpIGx6ZSBmaWx0cm92YXQgdiBwxZllaGxlZHUga29uZmlndXJhxI1uw61jaCBwb2xvxb5layByb3pocmFuw60gYWdlbnRhLiBQb3puw6Fta2E6IFBvdm9sZW55IGpzb3UgcG91emUgYXRyaWJ1dHkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layBhIGR5bmFtaWNrw6EgcG9sZSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnUG9sb8W+a3kga29uZmlndXJhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ1DFmWlkw6Fuw60gcG9sb8W+a3kga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnw5pwcmF2YSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCB1ZMOhbG9zdMOtIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLCBrdGVyw70gdW1vxb7FiHVqZSBwcm90b2tvbG92w6Fuw60gZG8gaGlzdG9yaWUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bCB1ZMOhbG9zdMOtIGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWssIGt0ZXLDvSBha3R1YWxpenVqZSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSBwb2RsZSBqZWppY2ggYWt0dcOhbG7DrSBkZWZpbmljZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0b3JpZSBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnVGlzayBrb25maWd1cmHEjW7DrSBwb2xvxb5reS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdQxZlpYmzDrcW+ZW7DrSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdTdHJvbW92w6kgem9icmF6ZW7DrSBwb2xvxb5layBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdWZXJ6ZSBwb2xvxb5reSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ1BvbG/Fvmt5IENvbmZpZ0l0ZW1zIG7DoXNsZWR1asOtY8OtY2ggdMWZw61kIG5lYnVkb3UgbmEgc2VydmVydSBFbGFzdGljc2VhcmNoIHVsb8W+ZW55LiBDaGNldGUtbGkgdHV0byBtb8W+bm9zdCBwb3XFvsOtdCBuYSBleGlzdHVqw61jw60gQ0ksIGplIHTFmWViYSBwbyB6bcSbbsSbIHTDqXRvIG1vxb5ub3N0aSBzcHVzdGl0IG1pZ3JhY2kgQ0kgcHJvc3TFmWVkbmljdHbDrW0ga29uem9seS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnUG9sb8W+a3kgQ29uZmlnSXRlbXMgcyBuw6FzbGVkdWrDrWPDrW1pIHN0YXZ5IG5hc2F6ZW7DrSBuZWJ1ZG91IG5hIHNlcnZlcnUgRWxhc3RpY3NlYXJjaCB1bG/FvmVueS4gQ2hjZXRlLWxpIHR1dG8gbW/Fvm5vc3QgcG91xb7DrXQgbmEgZXhpc3R1asOtY8OtIENJLCBqZSB0xZllYmEgcG8gem3Em27EmyB0w6l0byBtb8W+bm9zdGkgc3B1c3RpdCBtaWdyYWNpIENJIHByb3N0xZllZG5pY3R2w61tIGtvbnpvbHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmFjZSBPbWV6ZW7DrSBwb2xvxb5layBuYSBzdHLDoW5rdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiw6F6ZSBwcm8gc3Byw6F2dSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0hyb21hZG7DvSBtb2R1bCBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJhxI1uw60gcG9sb8W+a2EgdnlobGVkw6F2w6Fuw60gYmFja2VuZG92w6lobyBzbcSbcm92YcSNZSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnVnl0dsOhxZlldCBhIHNwcmF2b3ZhdCBkZWZpbmljZSBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdWeXR2w6HFmcOtIHRpcHkgcHJvIHBvbG/Fvmt5IENvbmZpZ0l0ZW1zIHYgdXLEjWl0w71jaCDEjWFzb3bDvWNoIGJvZGVjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnWsOha2F6bsOtY2kgc2kgbW9ob3UgcHJvaGzDqWRub3V0IGhpc3Rvcmlja8OpIHZlcnplIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdaw6FrYXpuw61jaSBtYWrDrSBtb8W+bm9zdCBydcSNbsSbIHDFmWVww61uYXQgbWV6aSBoaXN0b3JpY2vDvW1pIHZlcnplbWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnVsO9Y2hvesOtIMO6ZGFqZSwga3RlcsOpIHNlIHBvdcW+aWrDrSBuYSBvYnJhem92Y2UgcHJvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLiBQxZnDrWtsYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnVsO9Y2hvesOtIMO6ZGFqZSwga3RlcsOpIHNlIHBvdcW+aWrDrSBuYSBvYnJhem92Y2UgcHJvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLiBQxZnDrWtsYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbnVqdGUgQWtjZSwgdSBrdGVyw71jaCBqZSB2ZSB3aWRnZXR1IHByb3BvamVuw71jaCBvYmpla3TFryBrIGRpc3BvemljaSB0bGHEjcOtdGtvIG5hc3RhdmVuw60gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVXBvem9yxYh1amVtZSwgxb5lIHR5dG8gQWtjZSBtdXPDrSBtw610IHphcmVnaXN0cm92YW7DqSBuw6FzbGVkdWrDrWPDrSBzb3Vib3J5IEpTIGEgQ1NTOiBVSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluaWNlIHNjaMOpbWF0dSBzYWR5IFRlbXBsYXRlOjpUb29sa2l0IHBybyDFmWV0xJt6Y2UgdmVyesOtLiBQb3XFvsOtdsOhIHNlIHBvdXplIHYgcMWZw61wYWTEmywgxb5lIGplIG1vZHVsIFZlcnNpb24gU3RyaW5nIG5hc3RhdmVuIG5hIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmludWp0ZSBzYWR1IHBvZG3DrW5laywgemEga3RlcsO9Y2ggamUgesOha2F6bsOta292aSBwb3ZvbGVubyB6b2JyYXppdCBwb2xvxb5rdSBrb25maWd1cmFjZS4gUG9kbcOtbmt5IGx6ZSB2b2xpdGVsbsSbIG9tZXppdCBuYSB1csSNaXTDqSBza3VwaW55IHrDoWthem7DrWvFry4gSmVkaW7DvW0gcG92aW5uw71tIGF0cmlidXRlbSBqZSBuw6F6ZXYuIFBva3VkIG5lanNvdSB6YWTDoW55IMW+w6FkbsOpIGRhbMWhw60gbW/Fvm5vc3RpLCBidWRvdSB2IGRhbsOpIGthdGVnb3JpaSB2aWRpdGVsbsOpIHbFoWVjaG55IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBrIG9kc3RyYcWIb3bDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHBvbW9jw60gb2JlY27DqWhvIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIFBvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHrDrXNrw6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTSBwb21vY8OtIG9iZWNuw6lobyByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIGsgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTSBwb21vY8OtIG9iZWNuw6lobyByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIGsgbmFzdGF2ZW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHBvbW9jw60gb2JlY27DqWhvIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW51amUgbW9kdWwgcMWZZWhsZWR1IHBybyB6b2JyYXplbsOtIG1hbMOpaG8gem9icmF6ZW7DrSBzZXpuYW11IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ1VyxI11amUsIHpkYSBzZSB2IHByb3BvamVuw60gdXpsxa8gbXVzw60gem9icmF6b3ZhdCBwb3Bpc2t5IHR5cHUgcHJvcG9qZW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmludWplIHJlZ3Vsw6FybsOtIHbDvXJhenkgamVkbm90bGl2xJsgcHJvIGthxb5kb3UgdMWZw61kdSBDb25maWdJdGVtIHBybyBrb250cm9sdSBuw6F6dnUgQ29uZmlnSXRlbSBhIHpvYnJhemVuw60gcMWZw61zbHXFoW7DvWNoIGNoeWJvdsO9Y2ggenByw6F2Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmludWplIGRvc3R1cG7DqSBzbG91cGNlIENJIHYgcMWZZWhsZWR1IHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOhdmlzbG9zdGkgbmEgdMWZw61kxJsgQ0kuIEthxb5kw6EgcG9sb8W+a2Egc2UgbXVzw60gc2tsw6FkYXQgeiBuw6F6dnUgdMWZw61keSBhIHBvbGUgZG9zdHVwbsO9Y2ggcG9sw60gcHJvIHDFmcOtc2x1xaFub3UgdMWZw61kdS4gUG9sb8W+a3kgZHluYW1pY2vDvWNoIHBvbMOtIG11c8OtIHJlc3Bla3RvdmF0IHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSBhdHJpYnV0IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIHBybyB0xZnDrWTEm27DrSBwb2xvxb5layBrb25maWd1cmFjZSB2ZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgdsO9Y2hvesOtIGF0cmlidXQgcG9sb8W+a3kga29uZmlndXJhY2UgcHJvIHTFmcOtZMSbbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHZlIHbDvXNsZWRrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSBhdHJpYnV0IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIHBybyB0xZnDrWTEm27DrSBwb2xvxb5layBrb25maWd1cmFjZSB2ZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdMOpdG8gb3BlcmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSBwb8WZYWTDrSBwb2xvxb5layBrb25maWd1cmFjZSB2ZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdiByb3pocmFuw60gYWdlbnRhLiBOYWhvcnU6IG5lanN0YXLFocOtIG5haG/FmWUuIERvbMWvOiBuZWpub3bEm2rFocOtIG5haG/FmWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gcG/FmWFkw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdmUgdsO9c2xlZGt1IHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uIE5haG9ydTogbmVqc3RhcsWhw60gbmFob8WZZS4gRG9sxa86IG5lam5vdsSbasWhw60gbmFob8WZZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSB6b2JyYXplbsOpIHNsb3VwY2UgQ0kgdiBwxZllaGxlZHUgcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6w6F2aXNsb3N0aSBuYSB0xZnDrWTEmyBDSS4gS2HFvmTDoSBwb2xvxb5rYSBzZSBtdXPDrSBza2zDoWRhdCB6IG7DoXp2dSB0xZnDrWR5IGEgcG9sZSBkb3N0dXBuw71jaCBwb2zDrSBwcm8gcMWZw61zbHXFoW5vdSB0xZnDrWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzw60gcmVzcGVrdG92YXQgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbnVqZSB2w71jaG96w60gaGxvdWJrdSB2enRhaMWvLCBrdGVyw6kgc2UgbWFqw60gem9icmF6aXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSB6b2JyYXplbsO9IGF0cmlidXQgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgcHJvIG9icmF6b3ZrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSB6b2JyYXplbsO9IGF0cmlidXQgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgcHJvIG9icmF6b3ZrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZS4gUMWZw61rbGFkOiAiS2V5IiBtdXPDrSBtw610IG7DoXpldiBkeW5hbWlja8OpaG8gcG9sZSB2IHRvbXRvIHDFmcOtcGFkxJsgIlgiLCAiQ29udGVudCIgbXVzw60gbcOtdCBob2Rub3R1IGR5bmFtaWNrw6lobyBwb2xlIHYgesOhdmlzbG9zdGkgbmEgdHlwdSBkeW5hbWlja8OpaG8gcG9sZSwgVGV4dDogImEgdGV4dCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYSBuZWJvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXTDvWRlbjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9UMWZZWQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gcG9kb2JqZWt0IHTFmcOtZHkgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgZG9zdHVwbsOpIHNsb3VwY2UgQ0kgdiBwxZllaGxlZHUgcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6w6F2aXNsb3N0aSBuYSB0xZnDrWTEmyBDSS4gS2HFvmTDoSBwb2xvxb5rYSBzZSBtdXPDrSBza2zDoWRhdCB6IG7DoXp2dSB0xZnDrWR5IGEgcG9sZSBkb3N0dXBuw71jaCBwb2zDrSBwcm8gcMWZw61zbHXFoW5vdSB0xZnDrWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzw60gcmVzcGVrdG92YXQgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w73FoWt1IGtvbXBvbmVudHkgdGV4dG92w6lobyBlZGl0b3J1IHBybyB0dXRvIG9icmF6b3ZrdS4gWmFkZWp0ZSDEjcOtc2xvIChwaXhlbHkpIG5lYm8gcHJvY2VudHXDoWxuw60gaG9kbm90dSAocmVsYXRpdm7DrSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxI1ldCDFmcOhZGvFryBlZGl0b3J1IGRlZmluaWNlIENJIHYgcm96aHJhbsOtIHNwcsOhdmNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8WZYWTDrSBpbmNpZGVudG7DrWNoIHN0YXbFryBvZCB2eXNva8OpaG8gKG5hcMWZLiBjcmljaXRhbCkgcG8gbsOtemvDvSAobmFwxZkuIGZ1bmN0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmludWplIHDFmcOtc2x1xaFuw6kgc3RhdnkgbmFzYXplbsOtLCB2ZSBrdGVyw71jaCBtb2hvdSBwcm9wb2plbsOpIHRpcHkgb3ZsaXZuaXQgc3RhdiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBvbWV6ZW7DrSB2eWhsZWTDoXbDoW7DrSBwcm8gb2JyYXpvdmt1IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgbGltaXQgdnlobGVkw6F2w6Fuw60gcHJvIG9icmF6b3ZrdSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIG9tZXplbsOtIHZ5aGxlZMOhdsOhbsOtIHBybyBvYnJhem92a3UgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBsaW1pdCB2eWhsZWTDoXbDoW7DrSBwcm8gb2JyYXpvdmt1IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmludWplIHpvYnJhemVuw6kgc2xvdXBjZSBDSSB2IGtvbXBsZXhuw61tIHpvYnJhemVuw60gdGFidWxreSBvZGthesWvIHBybyB2xaFlY2hueSB0xZnDrWR5IENJLiBQb2t1ZCBuZW7DrSBrIGRpc3BvemljaSDFvsOhZG7DoSBwb2xvxb5rYSwgem9icmF6w60gc2UgdsO9Y2hvesOtIHNsb3VwY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdGaWx0ciBwcm8gdMWZw61keSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0ZXLDqSBwb2xvxb5reSBqc291IGsgZGlzcG96aWNpIHBybyAiQWN0aW9uIiB2ZSB0xZlldMOtIMO6cm92bmkgc3RydWt0dXJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0ZXLDqSBwb2xvxb5reSBqc291IGsgZGlzcG96aWNpIHYgcHJ2bsOtIMO6cm92bmkgc3RydWt0dXJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdVcsSNdWplLCBrdGVyw6kgcG9sb8W+a3kganNvdSBrIGRpc3BvemljaSB2ZSBkcnVow6kgw7pyb3ZuaSBzdHJ1a3R1cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0ZXLDvSB0eXAgcHJvcG9qZW7DrSAocG9qbWVub3ZhbsO9IHogcG9obGVkdSB0aXB1KSBtxa/FvmUgb3ZsaXZuaXQgc3RhdiBwcm9wb2plbsOpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0ZXLDvSB0eXAgdGlwdSBtxa/FvmUgb3ZsaXZuaXQgc3RhdiBwcm9wb2plbsOpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FrdHVhbGl6YWNlIGRlZmluaWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdPZHN0cmFuxJtuw60gcG9sb8W+a3kga29uZmlndXJhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdCYXJ2YSBzdGF2dSBuYXNhemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2FjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIHVkw6Fsb3N0w60gZHluYW1pY2vDvWNoIHBvbMOtLCBrdGVyw70gb3puYcSNw60gZGVmaW5pY2UgcG9sb8W+ZWsga29uZmlndXJhY2UgamFrbyBuZXN5bmNocm9uaXpvdmFuw6ksIHBva3VkIHNlIHptxJtuw60gZHluYW1pY2vDoSBwb2xlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pY2vDoSBwb2xlIHpvYnJhemVuw6EgbmEgb2JyYXpvdmNlIGRvZGF0ZcSNbsO9Y2ggcG9sw60gSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWNrw6EgcG9sZSB6b2JyYXplbsOhIG5hIG9icmF6b3ZjZSBwxZllaGxlZHUga29uZmlndXJhxI1uw61jaCBwb2xvxb5layB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OhIHBvbGUgem9icmF6ZW7DoSBuYSBvYnJhem92Y2UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdQb3ZvbHVqZSBmdW5rY2kgaHJvbWFkbsOpIGFrY2Uga29uZmlndXJhxI1uw60gcG9sb8W+a3kgcHJvIGZyb250ZW5kIGFnZW50YSwgYWJ5IGJ5bG8gbW/Fvm7DqSBwcmFjb3ZhdCBzIHbDrWNlIG5lxb4gamVkbm91IGtvbmZpZ3VyYcSNbsOtIHBvbG/FvmtvdSBuYWplZG5vdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1Bvdm9sw60gZnVua2NpIGhyb21hZG7DqSBha2NlIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHBvdXplIHBybyB1dmVkZW7DqSBza3VwaW55Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCB1ZMOhbG9zdMOtIHBybyBuYXN0YXZlbsOtIGNvbmZpZ2l0ZW0tc3RhdHVzIG5hIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ1BvbGUgaW5kZXh1IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLCBrdGVyw6Egc2UgcG91xb7DrXZhasOtIHBybyBmdWxsdGV4dG92w6kgdnlobGVkw6F2w6Fuw60uIFBvbGUganNvdSByb3ZuxJvFviB1bG/FvmVuYSwgYWxlIHBybyBjZWxrb3ZvdSBmdW5rxI1ub3N0IG5lanNvdSBwb3Zpbm7DoS4gWmFocm51dMOtIHDFmcOtbG9oIGx6ZSB6YWvDoXphdCBuYXN0YXZlbsOtbSBwb2xvxb5reSBuYSBob2Rub3R1IDAgbmVibyBqZWrDrW0gb2RzdHJhbsSbbsOtbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1BvbGUgdWxvxb5lbsOhIHYgaW5kZXh1IHBvbG/FvmVrIGtvbmZpZ3VyYWNlLCBrdGVyw6Egc2Uga3JvbcSbIGZ1bGx0ZXh0b3bDqWhvIHZ5aGxlZMOhdsOhbsOtIHBvdcW+w612YWrDrSBpIGsgamluw71tIMO6xI1lbMWvbS4gUHJvIMO6cGxub3UgZnVua8SNbm9zdCBqc291IHbFoWVjaG5hIHBvbGUgcG92aW5uw6EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjZSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcm8gdnJzdHZ1IHZ5dm9sw6F2YcSNZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjZSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcm8gdnJzdHZ1IHZ5dm9sw6F2YcSNZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2UgbW9kdWx1IEdlbmVyaWNJbnRlcmZhY2UgcHJvIHZyc3R2dSB2eXZvbMOhdmHEjWUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQxZllaGxlZCBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHJudWplIHN0YXZ5IG5hc2F6ZW7DrSBkbyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWhybnVqZSBzdGF2eSBpbmNpZGVudMWvIGRvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltw6FsbsOtIHBvxI1ldCBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrLCBrdGVyw6kgc2Ugem9icmF6w60gdmUgdsO9c2xlZGt1IHTDqXRvIG9wZXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgcHJvIGtvbnRyb2x1IHNrdXBpbnkgb2Rwb3bEm2Ruw6kgemEgdMWZw61kdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCBwcm8ga29udHJvbHUgc2t1cGlueSBvZHBvdsSbZG7DqSB6YSBwb2xvxb5rdSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCBwcm8gZ2VuZXJvdsOhbsOtIHN0YXRpc3RpayBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ07DoXpldiBtb2R1bHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ8SMw61zZWxuw70gbW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/EjWV0IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWssIGt0ZXLDqSBzZSBtYWrDrSB6b2JyYXppdCBuYSBrYcW+ZMOpIHN0csOhbmNlIHbDvXNsZWRrdSB2eWhsZWTDoXbDoW7DrSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvxI1ldCBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrLCBrdGVyw6kgc2UgbWFqw60gem9icmF6aXQgbmEga2HFvmTDqSBzdHLDoW5jZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gdiB6w6FrYXpuaWNrw6ltIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0eSwga3RlcsOpIHNlIG1hasOtIHZ5aGxlZGF0LCBrb2xpayB6w6F6bmFtxa8gYSBrdGVyw6kgYXRyaWJ1dHkgc2UgbWFqw60gem9icmF6aXQuIEF0cmlidXR5IENvbmZpZ0l0ZW0gbXVzw60gYsO9dCBleHBsaWNpdG7EmyB1bG/FvmVueSBwcm9zdMWZZWRuaWN0dsOtbSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQxZllaGxlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBwcm8ga2F0ZWdvcmllIHTFmcOtZCBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHBybyBmaWx0cnkgc2xvdXBjxa8gcMWZZWhsZWR1IG1hbMO9Y2gga29uZmlndXJhxI1uw61jaCBwb2xvxb5lay4gVXBvem9ybsSbbsOtOiBOYXN0YXZlbsOtIGhvZG5vdHkgIkFrdGl2bsOtIiBuYSAwIHBvdXplIHphYnLDoW7DrSBhZ2VudMWvbSB1cHJhdm92YXQgbmFzdGF2ZW7DrSB0w6l0byBza3VwaW55IHYgamVqaWNoIG9zb2Juw61jaCBwcmVmZXJlbmPDrWNoLCBhbGUgc3Byw6F2Y8WvbSBzdMOhbGUgdW1vxb5uw60gdXByYXZvdmF0IG5hc3RhdmVuw60gam3DqW5lbSBqaW7DqWhvIHXFvml2YXRlbGUuIFBvbW9jw60gXCdQcmVmZXJlbmNlR3JvdXBcJyBtxa/FvmV0ZSDFmcOtZGl0LCB2ZSBrdGVyw6kgb2JsYXN0aSBzZSBtYWrDrSB0YXRvIG5hc3RhdmVuw60gdiB1xb5pdmF0ZWxza8OpbSByb3pocmFuw60gem9icmF6b3ZhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgcHJvIHN0YXZ5IG5hc2F6ZW7DrSBzZSB2eWJhcnbDrSB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBwcm8gc3RhdnkgbmFzYXplbsOtIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBza3VwaW55IHBybyBwxZnDrWtsYWQgb3Byw6F2bsSbbsOtIG9iZWNuw71jaCBhdHJpYnV0xa8ga2F0YWxvZ3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgbW9kdWx1IG7DoXp2xa8gcHJvIHTFmcOtZHkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG1vZHVsdSDEjcOtc2VsIHBybyB0xZnDrWR5IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHN0csOhbmVrIChuYSBrdGVyw71jaCBzZSB6b2JyYXp1asOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG1vZHVsdSDFmWV0xJt6Y2UgdmVyemUgcHJvIHTFmcOtZHkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBtb2R1bHUgxaFhYmxvbnkgxZlldMSbemNlIHZlcnplIHNhZHkgbsOhc3Ryb2rFryBwcm8gdMWZw61keSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBwcm8gc3BvdcWhdMSbxI0gdmVyemUgcHJvIHTFmcOtZHkgcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdTa3VwaW5hIG9wcsOhdm7Em27DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHBvdcW+aXTDrSBha2NlIHDFmWlwb2plbsOtIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwb2xvxb5reSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyBwb3XFvml0w60gb2JyYXpvdmt5IHBybyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyBwb3XFvml0w60gb2JyYXpvdmt5IHBybyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSB6b2JyYXplbsOtIHN0cm9tdSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSB6dsSbdMWhZW7DrSBwb2xvxb5reSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZGtheiBuYSAlcyAodHlwZT0lcykgb2RzdHJhbsSbbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyBwb3XFvml0w60gb2JyYXpvdmt5IHBvbG/Fvmt5IGhyb21hZG7DqSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwcm8gw7pwcmF2dSBwb2xvxb5reSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwb2xvxb5reSBrb25maWd1cmFjZSBoaXN0b3JpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHBvdcW+aXTDrSBvYnJhem92a3kgcyBwb2xvxb5rb3Uga29uZmlndXJhY2UgdGlza3UgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIGsgb2RzdHJhbsSbbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1Z5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXV0b21hdGlja8OpIG5hc3RhdmVuw60gc3RhdnUgaW5jaWRlbnR1IENJLCBrZHnFviBqZSB0aWtldCBwcm9wb2plbiBzIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hc3RhdsOtIHN0YXYgbmFzYXplbsOtIG5hIG9icmF6b3ZjZSBocm9tYWRuw6kgcG9sb8W+a3kga29uZmlndXJhY2Ugcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFzdGF2w60gc3RhdiB1ZMOhbG9zdGkgbmEgb2JyYXpvdmNlIGhyb21hZG7DqSBwb2xvxb5reSBrb25maWd1cmFjZSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UsIGt0ZXLDvSB1bW/FvsWIdWplIHByb3Bvaml0IGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt1IHMgamluw71tIG9iamVrdGVtIHYgem9icmF6ZW7DrSB6dsSbdMWhZW7DrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gcMWZw61zdHVwIGsgaGlzdG9yaWkga29uZmlndXJhxI1uw60gcG9sb8W+a3kgdiBwxZllaGxlZHUga29uZmlndXJhxI1uw61jaCBwb2xvxb5layByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IG5hYsOtZGNlIHBybyBwxZnDrXN0dXAgayBoaXN0b3JpaSBwb2xvxb5reSBrb25maWd1cmFjZSB2IHpvYnJhemVuw60gYWdlbnRhIHMgcMWZaWJsw63FvmVuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIG9kc3RyYW7Em27DrSBwb2xvxb5reSBrb25maWd1cmFjZSB2IGplasOtbSB6dsSbdMWhZW7DqW0gem9icmF6ZW7DrSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gem9icmF6ZW7DrSBvZGthesWvIG5hIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIHZlIHN0cm9tb3bDqW0gem9icmF6ZW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IG5hYsOtZGNlIHBybyBkdXBsaWtvdsOhbsOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHYgcMWZZWhsZWR1IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gZHVwbGlrb3bDoW7DrSBwb2xvxb5reSBrb25maWd1cmFjZSB2IHpvYnJhemVuw60gYWdlbnRhIHMgcMWZaWJsw63FvmVuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gw7pwcmF2dSBwb2xvxb5reSBrb25maWd1cmFjZSB2IHpvYnJhemVuw60gYWdlbnRhIHMgcMWZaWJsw63FvmVuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gbsOhdnJhdCB6cMSbdCBkbyB6b2JyYXplbsOtIHp2xJt0xaFlbsOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gdGlzayBrb25maWd1cmHEjW7DrSBwb2xvxb5reSB2IGplasOtbSB6dsSbdMWhZW7DqW0gem9icmF6ZW7DrSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIHDFmWlibMOtxb5lbsOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHYgcMWZZWhsZWR1IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gaGlzdG9yaWkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layAodiBvcGHEjW7DqW0gcG/FmWFkw60pIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnVsO9Y2hvesOtIGthdGVnb3JpZSwga3RlcsOhIHNlIHpvYnJhesOtLCBwb2t1ZCBuZW7DrSB2eWJyw6FuYSDFvsOhZG7DoS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa8OhdG9yIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5LCBuYXDFmS4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFbDvWNob3rDrSBqZSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpY2t5IHNwb3XFoXTDrSBpbnZva8OhdG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyemUgxZhldMSbemNvdsO9IHbDvXJheic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdNb2R1bCBWZXJzaW9uIFN0cmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdTcG91xaF0xJvEjSB2ZXJ6ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnWmRhIHNlIGx6ZSB2eWhub3V0IHByb3ZlZGVuw60gQ29uZmlnSXRlbUFDTCBrb250cm9sb3UgesOhdmlzbG9zdMOtIHBvbMOtIHVsb8W+ZW7DvWNoIHYgbWV6aXBhbcSbdGkuIFRvIG3Fr8W+ZSB6bGVwxaFpdCDEjWFzeSBuYcSNw610w6Fuw60gZm9ybXVsw6HFmcWvLCBhbGUgbXVzw60gdG8gYsO9dCB6YWvDoXrDoW5vLCBwb2t1ZCBzZSBtYWrDrSBwb3XFvsOtdmF0IEFDTE1vZHVseSBwcm8gdHlweSBJVFNNQ29uZmlnSXRlbS0gYSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnS3RlcsOpIG9iZWNuw6kgaW5mb3JtYWNlIGpzb3UgdXZlZGVueSB2IHrDoWhsYXbDrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICd0xZnDrWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2LDoWxuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGl2bsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwxZllZHByb2R1a8SNbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0aXZuw60nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcGFsY2UgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwYWxjxa8gKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBwYWxjZSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwYWxjZSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5cGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwYWxjZSAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwYWxjxa8gKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxcGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBwYWxjZSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzcGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwYWxjZSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcGFsY8WvICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwYWxjZSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IHBhbGNlICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBhbGNlICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwYWxjZSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgcGFsY2UgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBhbGNlICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwYWxjxa8gKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwYWxjZSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHBhbGNlICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcGFsY2UgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHBhbGNlICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBhbGNlICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IHBhbGNlICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcGFsY2UgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBwYWxjxa8gKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBwYWxjxa8gKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IHBhbGNlICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBwYWxjZSAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwYWxjZSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwYWxjxa8gKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgcGFsY2UgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ8OaxI1ldG5pY3R2w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdQxZlpZMSbbG92w6Fuw60gYWRyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1NwcsOhdmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ292w70gdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cCBzcG90xZllYmnEjWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdLYXBhY2l0YSBiYXRlcmllIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVHlwIGJhdGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCdWRvdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ1JvemhyYW7DrSBzYsSbcm5pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ1Byb2Nlc29yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ1TFmcOtZGEgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0YSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYWNpdGEgbmEgZ3JhZmlja291IGthcnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnxIzDrXNsbyBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ8SMdGXEjWthIGthcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1R5cCBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpZW50c2vDqSBjZXJ0aWZpa8OhdHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50c2vDvSBzb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLYXRlZ29yaWUga2xpZW50xa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnQ2xvY2tyYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgcHJvIHBvZGVwaXNvdsOhbsOtIGvDs2R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbsSNbsOtIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdTbWxvdXZhIG8gcG9yYWRlbnN0dsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IG5hIGRpc3RyaWJ1dG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ1NwcsOhdmEga29udGVqbmVyxa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdTbWxvdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUeXAgc21sb3V2eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0RvYmEgdHJ2w6Fuw60gc21sb3V2eSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdEb2JhIHRydsOhbsOtIHNtbG91dnkgZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQmV6ZHLDoXRvdsO9IHRlbGVmb24gKHRlbGVmb24gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnTsOha2xhZG92w6EgamVkbm90a2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdQb8SNZXQgbGljZW5jw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdHVtIHZ5dHZvxZllbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdWbGFzdG7DrSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgdnlocmF6ZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2ZXIgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXR1bSB2eXN0YXZlbsOtIGZha3R1cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdHVtIG9iamVkbsOhdmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXR1bSB6w6FydWt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdHVtIHZ5ZMOhbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdTdG9sbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgcHJvIHBvZGVwaXNvdsOhbsOtIGRva3VtZW50xa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbG92w6kgY2VydGlmaWvDoXR5IChjZXJ0aWZpa8OhdHkgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdQcmFjb3Zuw60gc21sb3V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0tvbmNvdsOhIElQIGFkcmVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1Vrb27EjWVuw60gcG9kcG9yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdHVtIHZ5cHLFoWVuw60gcGxhdG5vc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFeHRlcm7DrSBwZXZuw70gZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0Jyw6FuYSBmaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnU2tsYWRvdsOhbsOtIGVuZXJnaWUgdiBzZXRydmHEjW7DrWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybcOhdG92w70gZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuxaHDrXpvdsOhIHNtbG91dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdPYmVjbsOpIGluZm9ybWFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpY2vDqSBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlja8OhIGthcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBoYXJkd2FydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIbW90bm9zdCBoYXJkd2FydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnTsOhaGxhdm7DrSBzb3VwcmF2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3Rva29sIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1NwcsOhdmEgaWRlbnRpdCBhIHDFmcOtc3R1cHUgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudMOhcm7DrSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfEjMOtc2xvIGZha3R1cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbMOhdmVzbmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdG9yIExDRCAoZGlzcGxlaiB6IHRla3V0w71jaCBrcnlzdGFsxa8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoc3bEm3RlbG7DoSBkaW9kYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnUGV2bsOhIHRlbGVmb25uw60gbGlua2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTW9iaWxuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdaZW3Em3Bpc27DoSDFocOtxZlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ1Zyc3R2YSAxOiBGeXppY2vDoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnVnJzdHZhIDI6IFZyc3R2YSBkYXRvdsOpaG8gc3BvamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ1Zyc3R2YSAzOiBTw63FpW92w6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ1Zyc3R2YSAzOiBTw63FpW92w6EgdnJzdHZhIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnVnJzdHZhIDQ6IFRyYW5zcG9ydG7DrSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ1Zyc3R2YSA1OiBSZWxhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnVnJzdHZhIDY6IFByZXplbnRhxI1uw60gdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnVnJzdHZhIDc6IEFwbGlrYcSNbsOtIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdOw6FqZW1uw60gc21sb3V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2VuxI1uw60gc21sb3V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW7EjW7DrSBrbMOtxI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0RvYmEgcGxhdG5vc3RpIGxpY2VuY2Ugb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdEb2JhIHBsYXRub3N0aSBsaWNlbmNlIGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtLcW+ZWxlem8tZm9zZsOhdG92w6EgYmF0ZXJpZSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGhpdW0taW9udG92w6EgKExpLWlvbikgYmF0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ1NtbG91dmEgbyBwxa9qxI1jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTmFjaMOhesOtIHNlIHYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnWmVtxJtwaXNuw6EgZMOpbGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVsO9cm9iY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltw6FsbsOtIHphdMOtxb5pdGVsbm9zdCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnUGFtxJvFpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1R5cCBwYW3Em3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ8SMw61zbG8gbW9iaWxuw61obyB0ZWxlZm9udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbG7DrS92bG/FvmVuw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ1BvcGlzIG1vZGVsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSb3psacWhZW7DrSBtb25pdG9ydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdWZWxpa29zdCBtb25pdG9ydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ015xaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1PDrcWlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWFjZSBvIHPDrXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2UgbyBzw610aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnU8OtxaVvdsOhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2wta2FkbWlvdsOhIChOaUNkKSBiYXRlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlrbC1tZXRhbGh5ZHJpZG92w6EgKE5pTUgpIGJhdGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnRG9ob2RhIG8gbWzEjWVubGl2b3N0aSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnUG/EjWV0IHByb2Nlc29yxa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUG/EjWV0IG1vZHVsxa8gUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ1BvxI1ldCBncmFmaWNrw71jaCBrYXJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChvcmdhbmlja8OhIGRpb2RhIGVtaXR1asOtY8OtIHN2xJt0bG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ1Byb3Zvem7DrSBuw6FrbGFkeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdPYmplZG5hY8OtIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdKaW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVsO9c3R1cHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnRG9ob2RhIG8gcGFydG5lcnN0dsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbm7DrSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUeXAgdGVsZWZvbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXppY2vDoSBqw6FkcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdEb2TDoXZrYSBlbmVyZ2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnWmFrb3VwZW5vIHYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0hsb3Via2Egc3RvamFudSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1N0b2phbm92w6kgamVkbm90a3kgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdNw61zdG5vc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdLYXJ0YSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1Byb2Rlam7DrSBzbWxvdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsaXRuw60gdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdVemF2xZllbsOhIG9sb3bEm27DoSBiYXRlcmllIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU8OpcmlvdsOpIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyb3bDvSBzb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NtbG91dmEgbyBwb3NreXRvdsOhbsOtIHNsdcW+ZWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aXNuw60gxaF0w610ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwIHrDoXN1dmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnRS1tYWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnUmVwcm9kdWt0b3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdQb8SNw6F0ZcSNbsOtIElQIGFkcmVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnw5psb8W+acWhdMSbJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnw5psb8W+bsO9IG9kZMOtbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0RjZcWZaW7DoSBzcG9sZcSNbm9zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU291aHJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGVua8O9IGtsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVmzDoWtuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdDZWxrb3bDoSBwYW3Em8WlIFJBTSBncmFmaWNrw6kga2FydHkgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ0NlbGtvdsOhIHBhbcSbxaUgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0RvdHlrb3bDvSBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVsSbxb4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1JvemJvxI1vdmHEjSBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdOw6FobGF2bsOtIHNvdXByYXZhIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb24gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Vib3bDoSBrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/da_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmVsbGUgZHJpZnRzZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSW5kc3RpbGxpbmdlciBmb3IgaW5kZ8OlZW5kZSBmb3Jlc3DDuHJnc2Vsc2RhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdJbmRzdGlsbGluZ2VyIGZvciB1ZGfDpWVuZGUgc3ZhcmRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBzdHlyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnU2tpZnQga2xhc3NlZGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnw4ZuZHJpbmcgYWYgcm9sbGVkZWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0LWtsYXNzZWJ1bmR0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdIZXIga2FuIGR1IGltcG9ydGVyZSBSZWFkeTJJbXBvcnQta2xhc3NlYnVuZHRlciwgZGVyIHZpc2VyIHZvcmVzIG1lc3QgYWxtaW5kZWxpZ2Uga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuIEJlbcOmcmssIGF0IGRlciBrYW4gdsOmcmUgYmVob3YgZm9yIHlkZXJsaWdlcmUga29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnT3BkYXRlciBla3Npc3RlcmVuZGUgZW5oZWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGVyIFJlYWR5MkFkb3B0LWtsYXNzZWJ1bmR0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLb25maWctZWxlbWVudGtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnS29uZmlnLWVsZW1lbnRldHMgcm9sbGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnQ29uZmlnSXRlbUlEICVzIGZpbmRlcyBpa2tlIGkgZGF0YWJhc2VuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWw6ZsZyBlbiBrbGFzc2UgZnJhIGxpc3RlbiBmb3IgYXQgb3ByZXR0ZSBldCBueXQgQ29uZmlnIEl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3NlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEZXBsb3ltZW50IHRpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW5jaWRlbnQgdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0aWwgZW4gYW5kZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ1VneWxkaWd0IG51bW1lciBww6Uga29uZmlndXJhdGlvbnNlbGVtZW50ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bW1lcmV0IHDDpSBldCBhbmRldCBrb25maWd1cmF0aW9uc2VsZW1lbnQsIGRlciBza2FsIGxpbmtlcyB0aWwuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZXR0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnQ/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ05hdm5ldCBww6UgZGVubmUgQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05hdm5ldCBlciBhbGxlcmVkZSBpIGJydWcgYWYgQ29uZmlnSXRlbXMgbWVkIGbDuGxnZW5kZSBudW1tZXIoZSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbnNudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb25zbnVtbWVyIGZvciBkZXR0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uc251bW1lcmV0IGVyIGFsbGVyZWRlIGkgYnJ1ZyBhZiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcihlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RlcGxveW1lbnQgdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudCB0aWxzdGFuZCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaWsgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ09wcmV0dGVsc2VzdGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1pvb20tdmlzbmluZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdLb25maWd1cmVyIGVsZW1lbnRlciBwci4gc2lkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gZGF0YSBvbSBrb25maWd1cmF0aW9uc2VsZW1lbnRldCBmdW5kZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVsOmbGcgZGV0dGUga29uZmlndXJhdGlvbnNlbGVtZW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnS8O4ciBzw7hnbmluZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHRpbCBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnRHliZGVuaXZlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGluZC91ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYWtzLiBsaW5rbml2ZWF1IG7DpWV0IGZvciBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ3VyYXRpb25zZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBvbSBrb25maWd1cmF0aW9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdOdXbDpnJlbmRlIGRlcGxveW1lbnQgc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdOdXbDpnJlbmRlIEluY2lkZW50IHRpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1NpZHN0IMOmbmRyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnU2lkc3Qgw6ZuZHJldCBhZic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0RpbmUgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbS1zw7hnbmluZyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0bDuGxnZW5kZSBrbGFzc2VyIHZpbCBibGl2ZSBpbXBvcnRlcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0bDuGxnZW5kZSByb2xsZXIgdmlsIGJsaXZlIGltcG9ydGVyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnQmVtw6ZyaywgYXQgZGVyIG9nc8OlIG9wcmV0dGVzIHRpbHN2YXJlbmRlIGR5bmFtaXNrZSBmZWx0ZXIgb2cgR2VuZXJhbENhdGFsb2cta2xhc3Nlciwgb2cgYXQgZGVyIGlra2Ugc2tlciBub2dlbiBhdXRvbWF0aXNrIGZqZXJuZWxzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWaWwgZHUgZm9ydHPDpnR0ZT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnQnJ1ZyBmb3IgZWtzZW1wZWxrbGFzc2VyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uZW4gZXIgaWtrZSBlbiBneWxkaWcgWUFNTC1oYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdEZXIgZXIgaWtrZSBhbmdpdmV0IG5vZ2V0IENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdEdSBza2FsIGJydWdlIG1pbmRzdCDDqXQgdmFsZ3Qga29uZmlndXJhdGlvbnNlbGVtZW50ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0R1IGhhciBpa2tlIHNrcml2ZWFkZ2FuZyB0aWwgZGV0dGUga29uZmlndXJhdGlvbnNlbGVtZW50OiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnRGVyIGJsZXYgaWtrZSBkZWZpbmVyZXQgbm9nZW4gZGVmaW5pdGlvbiBmb3Iga2xhc3NlbiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZy1lbGVtZW50ZXQgIiVzIiBibGV2IGlra2UgZnVuZGV0IGkgZGF0YWJhc2VuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0RlZmluZXJlciBhbnRhbGxldCBhZiByw6Zra2VyIGZvciBDSS1kZWZpbml0aW9uc2VkaXRvcmVuIGkgYWRtaW5pc3RyYXRpb25zZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0luZ2VuIHZlcnNpb24gZnVuZGV0IGZvciBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0RlciBlciBpa2tlIGFuZ2l2ZXQgbm9nZXQgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBlbGxlciBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnRGVyIGdpdmVzIGluZ2VuIGFkZ2FuZyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnS2FuIGlra2UgdmlzZSBoaXN0b3JpaywgZGEgZGVyIGlra2UgZXIgYW5naXZldCBub2dldCBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGlra2UgdmlzZSBoaXN0b3JpaywgaW5nZW4gYWRnYW5nc3JldHRpZ2hlZGVyIGdpdmV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnl0IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTnkgdmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSW1wbGVtZW50ZXJpbmdzc3RhdHVzIG9wZGF0ZXJldCAobnk9JXMsIGdhbW1lbD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSMOmbmRlbHNlc3N0YXR1cyBvcGRhdGVyZXQgKG55PSVzLCBnYW1tZWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5rIHRpbCAlcyAodHlwZT0lcykgdGlsZsO4amV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5rIHRpbCAlcyAodHlwZT0lcykgc2xldHRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbS1kZWZpbml0aW9uIG9wZGF0ZXJldCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmF2biBvcGRhdGVyZXQgKG55dD0lcywgZ2FtbWVsdD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dCAlcyBvcGRhdGVyZXQgZnJhICIlcyIgdGlsICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvbiAlcyBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0RlciBlciBpa2tlIGFuZ2l2ZXQgbm9nZXQgQ29uZmlnSXRlbUlEIGVsbGVyIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGlra2UgdmlzZSBrb25maWd1cmF0aW9uc2VsZW1lbnQsIGluZ2VuIGFkZ2FuZ3NyZXR0aWdoZWRlciBnaXZldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgZmluZGVzIGlra2UgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdLb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICd1ZHNrcmV2ZXQgYWYgJXMgcMOlICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdVZ3lsZGlndCBrbGFzc2UtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnRGVyIGVyIGlra2UgYW5naXZldCBub2dldCBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0RlciBlciBpa2tlIGdpdmV0IGFkZ2FuZ3NyZXR0aWdoZWRlciB0aWwgZGVubmUga2xhc3NlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnSW50ZXQgcmVzdWx0YXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnU8O4Z2VyZXN1bHRhdGVyIGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnS2FuIGlra2UgdmlzZSBlbGVtZW50LCBpbmdlbiBhZGdhbmdzcmV0dGlnaGVkZXIgdGlsIENvbmZpZ0l0ZW0gZXIgZ2l2ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gaWtrZSBmdW5kZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0luZ2VuIHZlcnNpb25lciBmdW5kZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aW9uZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2FkdmFyc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaMOmbmRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZXBsb3ltZW50IHRpbHN0YW5kIGZvciBkZW5uZSBDb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0luY2lkZW50IHRpbHN0YW5kIGZvciBkZW5uZSBDb25maWcgSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0luZ2VuIHRpbGxhZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdGVyZXQgZXIgdWd5bGRpZ3QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdTw7hnZXBhcmFtZXRyZSB1Z3lsZGlnZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdWaXN0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGFmIHVkcnVsbmluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdOdXbDpnJlbmRlIGjDpm5kZWxzZXN0aWxzdGFuZCBUeXBlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lbGxlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlYmVncsOmbnNuaW5nZXIgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWw6ZsZyBlbiBlbGxlciBmbGVyZSBrbGFzc2VyIGZvciBhdCBiZWdyw6Zuc2UgdmFsZ2JhcmUga29uZmlndXJhdGlvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzZWJlZ3LDpm5zbmluZ2VyIGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDpmxnIGVuIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIGF0IGJlZ3LDpm5zZSB2YWxnYmFyZSBrb25maWd1cmF0aW9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaXNrIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGlzayAodmVyc2lvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVHlwZSBhZiBsaW5raGVudmlzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdPbSBkZXR0ZSBsaW5rIGfDpmxkZXIgZm9yIENvbmZpZ0l0ZW0gZWxsZXIgZGVuIHN0YXRpc2tlIHZlcnNpb24gYWYgZGV0IHJlZmVyZXJlbmRlIG9iamVrdC4gQmVyZWduaW5nIGFmIGFrdHVlbCBow6ZuZGVsc2VzdGlsc3RhbmQgdWRmw7hyZXMga3VuIHDDpSBkeW5hbWlza2UgbGlua3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnVsOmbGcgZGVuIGF0dHJpYnV0LCBzb20ga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgc2thbCBzw7hnZXMgZWZ0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0Jhc2lzc3RydWt0dXJlbiBlciBpa2tlIGd5bGRpZy4gQW5naXYgdmVubGlnc3QgZW4gaGFzaCBtZWQgZGF0YSBpIFlBTUwtZm9ybWF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0RldCBlciBuw7hkdmVuZGlndCBhdCBzdGFydGUgWUFNTC1zdHJlbmdlbiBtZWQgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnS3VubmUgaWtrZSByZW5zZSB0YWJlbGxlbiBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdEZXIgYmxldiBpa2tlIGZ1bmRldCBub2dlbiByZWxldmFudGUgZHluYW1pc2tlIGZlbHRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0t1bm5lIGlra2UgaW5kc8OmdHRlIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbmRzYXQgMCByw6Zra2VyIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltdW0gYW50YWwgYWYgZXQgZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9uc3N0cmVuZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdGZWpsIHZlZCBzeW5rcm9uaXNlcmluZyBhZiBkZWZpbml0aW9uZXJuZS4gVGplayB2ZW5saWdzdCBsb2dnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnRHUgaGFyIElUU01Db25maWdJdGVtLWRlZmluaXRpb25lciwgc29tIGlra2UgZXIgc3lua3JvbmlzZXJlZGUuIEltcGxlbWVudGVyIHZlbmxpZ3N0IGRpbmUgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pc2tlIGZlbHTDpm5kcmluZ2VyLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnVWRsw7hiZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdWZWRsaWdlaG9sZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmxhZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwZXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVyc2lvbmVyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnQW5tZWxkZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnT3ZlcnNpZ3Qgb2cgYmVrcsOmZnRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydCBhZiBrbGFzc2VyL3JvbGxlciBvZyBkZXJlcyByZWxhdGVyZWRlIGZlbHRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0RlciBvcHN0b2QgZW4gZmVqbCB1bmRlciBrbGFzc2VpbXBvcnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNranVsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gdmlzdCBww6UgYmlsbGVkZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGxhZGVyIHVkdmlkZWRlIHPDuGdlYmV0aW5nZWxzZXIgdmVkIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLiBNZWQgZGVubmUgZnVua3Rpb24ga2FuIGR1IGYuZWtzLiBzw7hnZSBlZnRlciBuYXZuZXQgcMOlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBtZWQgYmV0aW5nZWxzZXIgc29tICIoKmtleTEqJiYqa2V5MiopIiBlbGxlciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGxhZGVyIHVkdmlkZWRlIHPDuGdlYmV0aW5nZWxzZXIgaSBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4gTWVkIGRlbm5lIGZ1bmt0aW9uIGthbiBkdSBmLmVrcy4gc8O4Z2UgaSBuYXZuZXQgcMOlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBtZWQgYmV0aW5nZWxzZXIgc29tICIoKmtleTEqJiYqa2V5MiopIiBlbGxlciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1RpbGRlbHRlIENJXCdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSVwnZXIgdGlsZGVsdCBrdW5kZXZpcmtzb21oZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSVwnZXIgdGlsZGVsdCBrdW5kZWJydWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1pbmRzdGlsbGluZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdUamVrIGt1biBmb3IgZXQgdW5pa3QgbmF2biBpbmRlbiBmb3IgZGVuIHNhbW1lIENvbmZpZ0l0ZW0ta2xhc3NlIChcJ2NsYXNzXCcpIGVsbGVyIGdsb2JhbHQgKFwnZ2xvYmFsXCcpLCBodmlsa2V0IGJldHlkZXIsIGF0IGFsbGUgZWtzaXN0ZXJlbmRlIENvbmZpZ0l0ZW1zIHRhZ2VzIGkgYmV0cmFndG5pbmcsIG7DpXIgZGVyIGxlZGVzIGVmdGVyIGR1YmxldHRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1bDpmxnIGV0IG1vZHVsIHRpbCBhdCBow6VuZGjDpnZlIGV0IG5hdm5lc2tlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWw6ZsZyBldCBtb2R1bCB0aWwgYXQgaMOlbmRow6Z2ZSBldCBudW1tZXJza2VtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnVsOmbGcgZXQgbW9kdWwgdGlsIGF0IGjDpW5kaMOmdmUgZW4gdmVyc2lvbnNzdHJlbmdvcmRuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1bDpmxnIGRlIGF0dHJpYnV0dGVyLCBkZXIgc2thbCB1ZGzDuHNlIG9wcmV0dGVsc2VuIGFmIGVuIG55IHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1bDpmxnIGthdGVnb3JpZXIsIGRlciBza2FsIHRpbGRlbGVzIGRlbm5lIGtsYXNzZSBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdLb2xvbm5lLWtvbmZpZ3VyYXRpb25zZWxlbWVudGZpbHRyZSB0aWwgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbG9ubmVyLCBkZXIga2FuIGZpbHRyZXJlcyBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4gQmVtw6ZyazogS3VuIENvbmZpZyBJdGVtLWF0dHJpYnV0dGVyIG9nIGR5bmFtaXNrZSBmZWx0ZXIgKER5bmFtaWNGaWVsZF9OYW1lWCkgZXIgdGlsbGFkdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhdGlvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ1RpbGbDuGoga29uZmlnLWVsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnUmVkaWdlciBrb25maWd1cmF0aW9uc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0taMOmbmRlbHNlc21vZHVsLCBkZXIgbXVsaWdnw7hyIGxvZ25pbmcgdGlsIGhpc3RvcmlrIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdDb25maWcgaXRlbSBldmVudC1tb2R1bCwgZGVyIG9wZGF0ZXJlciBjb25maWcgaXRlbXMgdGlsIGRlcmVzIGFrdHVlbGxlIGRlZmluaXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXJlciBlbGVtZW50ZXRzIGhpc3RvcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdQcmludCBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdLb25maWd1cmVyIGVsZW1lbnR6b29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0tdHLDpnZpc25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIGkgZsO4bGdlbmRlIGtsYXNzZXIgdmlsIGlra2UgYmxpdmUgZ2VtdCBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJlbi4gRm9yIGF0IGFudmVuZGUgZGV0dGUgcMOlIGVrc2lzdGVyZW5kZSBDSVwnZXIgc2thbCBDSS1taWdyZXJpbmdlbiBrw7hyZXMgdmlhIGtvbnNvbGxlbiwgZWZ0ZXIgYXQgZGVubmUgaW5kc3RpbGxpbmcgZXIgw6ZuZHJldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgbWVkIGbDuGxnZW5kZSBpbXBsZW1lbnRlcmluZ3N0aWxzdGFuZGUgdmlsIGlra2UgYmxpdmUgZ2VtdCBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJlbi4gRm9yIGF0IGFudmVuZGUgZGV0dGUgcMOlIGVrc2lzdGVyZW5kZSBDSVwnZXIgc2thbCBDSS1taWdyZXJpbmdlbiBrw7hyZXMgdmlhIGtvbnNvbGxlbiwgZWZ0ZXIgYXQgZGVubmUgaW5kc3RpbGxpbmcgZXIgw6ZuZHJldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnR3LDpm5zZSBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmF0aW9uIEVsZW1lbnRncsOmbnNlIHByLiBzaWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWJhc2UgZm9yIGtvbmZpZ3VyYXRpb25zc3R5cmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBidWxrLW1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmF0aW9uc2VsZW1lbnQgc8O4ZyBiYWNrZW5kLXJvdXRlciBmb3IgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnT3ByZXQgb2cgYWRtaW5pc3RyZXIgZGVmaW5pdGlvbmVybmUgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnT3ByZXR0ZXIgYmlsbGV0dGVyIHRpbCBDb25maWdJdGVtcyBww6UgYmVzdGVtdGUgdGlkc3B1bmt0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0t1bmRlciBrYW4gc2UgaGlzdG9yaXNrZSBDSS12ZXJzaW9uZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0t1bmRlcm5lIGhhciBtdWxpZ2hlZCBmb3IgbWFudWVsdCBhdCBza2lmdGUgbWVsbGVtIGhpc3Rvcmlza2UgQ0ktdmVyc2lvbmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYXJkZGF0YSwgZGVyIHNrYWwgYnJ1Z2VzIHDDpSBhdHRyaWJ1dHRlbiBmb3Igc2vDpnJtYmlsbGVkZXQgdGlsIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLiBFa3NlbXBlbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEsIGRlciBza2FsIGJydWdlcyBww6UgYXR0cmlidXR0ZW4gZm9yIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4gRWtzZW1wZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmVyIGhhbmRsaW5nZXIsIGh2b3IgZW4gaW5kc3RpbGxpbmdza25hcCBlciB0aWxnw6ZuZ2VsaWcgaSBkZSBsaW5rZWRlIG9iamVrdGVycyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gQmVtw6ZyaywgYXQgZGlzc2UgaGFuZGxpbmdlciBza2FsIGhhdmUgcmVnaXN0cmVyZXQgZsO4bGdlbmRlIEpTLSBvZyBDU1MtZmlsZXI6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIG9nIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZXIgZXQgVGVtcGxhdGU6OlRvb2xraXQtc2tlbWEgdGlsIHZlcnNpb25zc3RyZW5nZS4gQnJ1Z2VzIGt1biwgaHZpcyBWZXJzaW9uIFN0cmluZyBNb2R1bGUgZXIgc2F0IHRpbCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmVyIGV0IHPDpnQgYmV0aW5nZWxzZXIsIHVuZGVyIGh2aWxrZSBlbiBrdW5kZSBoYXIgbG92IHRpbCBhdCBzZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQuIEJldGluZ2Vsc2VybmUga2FuIGV2ZW50dWVsdCBiZWdyw6Zuc2VzIHRpbCBiZXN0ZW10ZSBrdW5kZWdydXBwZXIuIE5hdm4gZXIgZGVuIGVuZXN0ZSBvYmxpZ2F0b3Jpc2tlIGF0dHJpYnV0LiBIdmlzIGRlciBpa2tlIGVyIGFuZ2l2ZXQgYW5kcmUgbXVsaWdoZWRlciwgdmlsIGFsbGUga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgdsOmcmUgc3lubGlnZSB1bmRlciBkZW4gcMOlZ8OmbGRlbmRlIGthdGVnb3JpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBzbGV0dGUgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciB2ZWQgaGrDpmxwIGFmIGRlbiBnZW5lcmlza2UgZ3LDpm5zZWZsYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBoZW50ZSBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHZlZCBoasOmbHAgYWYgZGVuIGdlbmVyaXNrZSBncsOmbnNlZmxhZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgbsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IHPDuGdlIGkgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciB2ZWQgaGrDpmxwIGFmIGRlbiBnZW5lcmlza2UgZ3LDpm5zZWZsYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBpbmRzdGlsbGUgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciB2ZWQgaGrDpmxwIGFmIGRlbiBnZW5lcmlza2UgZ3LDpm5zZWZsYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZXQgb3ZlcnNpZ3RzbW9kdWwgdGlsIGF0IHZpc2UgZGVuIGxpbGxlIHZpc25pbmcgYWYgZW4gbGlzdGUgb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBvbSBsaW5rdHlwZWV0aWtldHRlcm5lIHNrYWwgdmlzZXMgaSBub2RlZm9yYmluZGVsc2VybmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmVyZXIgcmVndWzDpnJlIHVkdHJ5ayBpbmRpdmlkdWVsdCBmb3IgaHZlciBDb25maWdJdGVtLWtsYXNzZSBmb3IgYXQga29udHJvbGxlcmUgQ29uZmlnSXRlbS1uYXZuZXQgb2cgZm9yIGF0IHZpc2UgdGlsc3ZhcmVuZGUgZmVqbG1lZGRlbGVsc2VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZSB0aWxnw6ZuZ2VsaWdlIGtvbG9ubmVyIG1lZCBDSVwnZXIgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgYWZow6ZuZ2lndCBhZiBDSS1rbGFzc2VuLiBIdmVyIHBvc3Qgc2thbCBiZXN0w6UgYWYgZXQga2xhc3NlbmF2biBvZyBldCBhcnJheSBhZiB0aWxnw6ZuZ2VsaWdlIGZlbHRlciBmb3IgZGVuIHRpbHN2YXJlbmRlIGtsYXNzZS4gRHluYW1pc2tlIGZlbHRpbmRnYW5nZSBza2FsIG92ZXJob2xkZSBza2VtYWV0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRrb25maWd1cmF0aW9uc2VsZW1lbnRhdHRyaWJ1dHRlbiBmb3Igc29ydGVyaW5nIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgc8O4Z2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZGtvbmZpZ3VyYXRpb25zZWxlbWVudGF0dHJpYnV0dGVuIGZvciBzb3J0ZXJpbmcgYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZGtvbmZpZ3VyYXRpb25zZWxlbWVudGF0dHJpYnV0dGVuIGZvciBzb3J0ZXJpbmcgYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXQgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGRlbm5lIGhhbmRsaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkcsOma2tlZsO4bGdlbiBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLiBPcDogw6ZsZHN0ZSDDuHZlcnN0LiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkcsOma2tlZsO4bGdlbiBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLiBPcDogw6ZsZHN0ZSDDuHZlcnN0LiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIGtvbG9ubmVyLCBkZXIgc29tIHN0YW5kYXJkIHZpc2VzIGZvciBDSVwnZXIgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIGFmaMOmbmdpZ3QgYWYgQ0kta2xhc3Nlbi4gSHZlciBwb3N0IHNrYWwgYmVzdMOlIGFmIGV0IGtsYXNzZW5hdm4gb2cgZXQgYXJyYXkgYWYgdGlsZ8OmbmdlbGlnZSBmZWx0ZXIgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2UuIER5bmFtaXNrZSBmZWx0aW5kZ2FuZ2Ugc2thbCBvdmVyaG9sZGUgc2tlbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmVyZXIgZGVuIHN0YW5kYXJkcmVsYXRpb25zZHliZGUsIGRlciBza2FsIHZpc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGVuIHZpc3RlIHN0YW5kYXJkYXR0cmlidXQgZm9yIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHDDpSBza8Omcm1lbiB0aWwgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGVuIHN0YW5kYXJkIHZpc3RlIHPDuGdlYXR0cmlidXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHDDpSBza8Omcm1lbiB0aWwgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuIEVrc2VtcGVsOiAiS2V5IiBza2FsIGhhdmUgbmF2bmV0IHDDpSBkZXQgZHluYW1pc2tlIGZlbHQsIGkgZGV0dGUgdGlsZsOmbGRlIFwnWFwnLCAiQ29udGVudCIgc2thbCBoYXZlIHbDpnJkaWVuIGFmIGRldCBkeW5hbWlza2UgZmVsdCBhZmjDpm5naWd0IGFmIGRlbiBkeW5hbWlza2UgZmVsdHR5cGUsIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgb2cgZWxsZXIgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkdW5kZXJvYmpla3RldCBpIGtsYXNzZW4gXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHRpbGfDpm5nZWxpZ2Uga29sb25uZXIgbWVkIENJXCdlciBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBhZmjDpm5naWd0IGFmIENJLWtsYXNzZW4uIEh2ZXIgcG9zdCBza2FsIGJlc3TDpSBhZiBldCBrbGFzc2VuYXZuIG9nIGV0IGFycmF5IGFmIHRpbGfDpm5nZWxpZ2UgZmVsdGVyIGZvciBkZW4gdGlsc3ZhcmVuZGUga2xhc3NlLiBEeW5hbWlza2UgZmVsdGluZGdhbmdlIHNrYWwgb3ZlcmhvbGRlIHNrZW1hZXQgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGjDuGpkZW4gZm9yIFJpY2ggVGV4dCBFZGl0b3Ita29tcG9uZW50ZW4gZm9yIGRlbm5lIHNrw6ZybS4gSW5kdGFzdCB0YWwgKHBpeGVscykgZWxsZXIgcHJvY2VudHbDpnJkaSAocmVsYXRpdikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBhbnRhbGxldCBhZiByw6Zra2VyIGZvciBDSS1kZWZpbml0aW9uc2VkaXRvcmVuIGkgYWRtaW5pc3RyYXRpb25zZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHLDpmtrZWbDuGxnZW4gYWYgaMOmbmRlbHNlc3RpbHN0YW5kZSBmcmEgaMO4aiAoZi5la3MuIGNyaWNpdGFsKSB0aWwgbGF2IChmLmVrcy4gZnVua3Rpb25lbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHJlbGV2YW50ZSBpbXBsZW1lbnRlcmluZ3N0aWxzdGFuZGUsIGh2b3IgdGlsa255dHRlZGUgdGlja2V0cyBrYW4gcMOldmlya2Ugc3RhdHVzIGZvciBldCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3IgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS1za8Omcm1lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnQ29uZmlnSXRlbSAoSUQ9JXMpIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZSB2aXN0ZSBrb2xvbm5lciBhZiBDSVwnZXIgaSBkZW4ga29tcGxla3NlIHZpc25pbmcgYWYgbGlua3RhYmVsbGVuLCBhZmjDpm5naWd0IGFmIENJLWtsYXNzZW4uIEh2ZXIgcG9zdCBza2FsIGluZGxlZGVzIG1lZCBrbGFzc2VucyBuYXZuIG9nIGRvYmJlbHQga29sb24gKGYuZWtzLiBDb21wdXRlcjo6KS4gRGVyIGVyIG5vZ2xlIGbDpSBDSS1hdHRyaWJ1dHRlciwgc29tIGVyIGbDpmxsZXMgZm9yIGFsbGUgQ0lcJ2VyIChla3NlbXBlbCBmb3Iga2xhc3NlbiBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gRm9yIGF0IHZpc2UgaW5kaXZpZHVlbGxlIENJLWF0dHJpYnV0dGVyIHNvbSBkZWZpbmVyZXQgaSBDSS1kZWZpbml0aW9uZW4gc2thbCBmw7hsZ2VuZGUgc2tlbWEgYnJ1Z2VzIChla3NlbXBlbCBmb3Iga2xhc3NlbiBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBIdmlzIGRlciBpa2tlIGVyIG5vZ2VuIHBvc3QgZm9yIGVuIENJLWtsYXNzZSwgdmlzZXMgc3RhbmRhcmRrb2xvbm5lcm5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciwgaHZpbGtlIGVsZW1lbnRlciBkZXIgZXIgdGlsZ8OmbmdlbGlnZSBmb3IgXCdIYW5kbGluZ1wnIHDDpSB0cmVkamUgbml2ZWF1IGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVyZXIsIGh2aWxrZSBlbGVtZW50ZXIgZGVyIGVyIHRpbGfDpm5nZWxpZ2UgcMOlIGbDuHJzdGUgbml2ZWF1IGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBodmlsa2UgZWxlbWVudGVyIGRlciBlciB0aWxnw6ZuZ2VsaWdlIHDDpSBhbmRldCBuaXZlYXUgaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVyZXIsIGh2aWxrZW4gdHlwZSBsaW5rIChuYXZuZ2l2ZXQgZnJhIHRpY2tldC1wZXJzcGVrdGl2ZXQpIGRlciBrYW4gcMOldmlya2Ugc3RhdHVzIGZvciBldCBsaW5rZXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBodmlsa2VuIHR5cGUgdGlja2V0IGRlciBrYW4gcMOldmlya2Ugc3RhdHVzIGZvciBldCBsaW5rZXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnT3BkYXRlcmluZyBhZiBkZWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdTbGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0ZhcnZlIHDDpSBpbXBsZW1lbnRlcmluZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnSMOmbmRlbHNlc21vZHVsIGZvciBkeW5hbWlza2UgZmVsdGVyLCBkZXIgbWFya2VyZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZGVmaW5pdGlvbmVyIHNvbSB1c3lua3JvbmlzZXJlZGUsIGh2aXMgZGUgaW5kZWhvbGRlciBkeW5hbWlza2UgZmVsdGVyLCBkZXIgw6ZuZHJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0ZXIsIGRlciB2aXNlcyBpIGRlbiBla3N0cmEgSVRTTS1mZWx0c2vDpnJtIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2UgZmVsdGVyLCBkZXIgdmlzZXMgaSBvdmVyc2lndHNza8Omcm1lbiBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBrdW5kZWdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0ZXIsIGRlciB2aXNlcyBpIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWt0aXZlcmVyIGZ1bmt0aW9uZW4gdGlsIG1hc3NlaGFuZGxpbmcgYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIHPDpSBhZ2VudGVucyBmcm9udGVuZCBrYW4gYXJiZWpkZSBww6UgbWVyZSBlbmQgw6l0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBhZCBnYW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUgcmVsZXZhbnRlIGltcGxlbWVudGVyaW5nc3RpbHN0YW5kZSwgaHZvciB0aWxrbnl0dGVkZSB0aWNrZXRzIGthbiBww6V2aXJrZSBzdGF0dXMgZm9yIGV0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdIw6ZuZGVsc2VzbW9kdWwgdGlsIGF0IHPDpnR0ZSBjb25maWdpdGVtLXN0YXR1cyBww6UgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnRmVsdGVyIGkga29uZmlndXJhdGlvbnNlbGVtZW50ZXRzIGluZGVrcywgZGVyIGJydWdlcyB0aWwgZnVsZHRla3N0c8O4Z25pbmcuIEZlbHRlciBnZW1tZXMgb2dzw6UsIG1lbiBlciBpa2tlIG9ibGlnYXRvcmlza2UgZm9yIGRlbiBvdmVyb3JkbmVkZSBmdW5rdGlvbmFsaXRldC4gSW5rbHVkZXJpbmcgYWYgdmVkaMOmZnRlZGUgZmlsZXIga2FuIGRlYWt0aXZlcmVzIHZlZCBhdCBzw6Z0dGUgcG9zdGVuIHRpbCAwIGVsbGVyIHNsZXR0ZSBkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdGZWx0ZXIgZ2VtdCBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBpbmRla3MsIHNvbSBicnVnZXMgdGlsIGFuZHJlIHRpbmcgZW5kIGZ1bGR0ZWtzdHPDuGduaW5nLiBGb3IgYXQgZsOlIGZ1bGQgZnVua3Rpb25hbGl0ZXQgZXIgYWxsZSBmZWx0ZXIgb2JsaWdhdG9yaXNrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYWYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCB0aWwgQ29uZmlnSXRlbUZldGNoLWludm9rYXRvcmxhZ2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhZiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIHRpbCBDb25maWdJdGVtRmV0Y2gtaW52b2thdG9ybGFnZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhZiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIHRpbCBDb25maWdJdGVtRmV0Y2gtaW52b2thdG9ybGFnZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ092ZXJzaWd0IG92ZXIgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdIw6ZuZGVsc2Vzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmVyIGltcGxlbWVudGVyaW5nc3RpbHN0YW5kZSBpIHPDuGduaW5nZW4gZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBrdW5kZWdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lua2x1ZGVyZXIgaMOmbmRlbHNlc3RpbHN0YW5kZSBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudC1zw7hnbmluZ2VuIGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYWtzaW1hbHQgYW50YWwga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIGRlciBza2FsIHZpc2VzIGkgcmVzdWx0YXRldCBhZiBkZW5uZSBoYW5kbGluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB0aWwgYXQga29udHJvbGxlcmUgZGVuIGdydXBwZSwgZGVyIGVyIGFuc3ZhcmxpZyBmb3IgZW4ga2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHRpbCBhdCBrb250cm9sbGVyZSBkZW4gZ3J1cHBlLCBkZXIgZXIgYW5zdmFybGlnIGZvciBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgdGlsIGF0IGdlbmVyZXJlIHN0YXRpc3RpayBvdmVyIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmF2biBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtbWVybW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW50YWwga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIGRlciBza2FsIHZpc2VzIHDDpSBodmVyIHNpZGUgYWYgZXQgc8O4Z2VyZXN1bHRhdCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW50YWwga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIGRlciBza2FsIHZpc2VzIHDDpSBodmVyIHNpZGUgYWYgZXQgc8O4Z2VyZXN1bHRhdCBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0ZXIsIGRlciBza2FsIHPDuGdlcyBlZnRlciwgaHZvciBtYW5nZSBwb3N0ZXIgb2cgaHZpbGtlIGF0dHJpYnV0dGVyLCBkZXIgc2thbCB2aXNlcy4gQ29uZmlnSXRlbS1hdHRyaWJ1dHRlciBza2FsIGVrc3BsaWNpdCBnZW1tZXMgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJibGlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciBrYXRlZ29yaWVybmUgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIGtvbG9ubmVmaWx0cmVuZSBpIG92ZXJzaWd0ZW4gb3ZlciBzbcOlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLiBCZW3DpnJrOiBIdmlzIFwnQWt0aXZcJyBzw6Z0dGVzIHRpbCAwLCBmb3JoaW5kcmVyIGRldCBrdW4gYWdlbnRlciBpIGF0IHJlZGlnZXJlIGluZHN0aWxsaW5nZXJuZSBmb3IgZGVubmUgZ3J1cHBlIGkgZGVyZXMgcGVyc29ubGlnZSBwcsOmZmVyZW5jZXIsIG1lbiBkZXQgZ2l2ZXIgc3RhZGlnIGFkbWluaXN0cmF0b3JlciBtdWxpZ2hlZCBmb3IgYXQgcmVkaWdlcmUgaW5kc3RpbGxpbmdlcm5lIHDDpSBlbiBhbmRlbiBicnVnZXJzIHZlZ25lLiBCcnVnIFwnUHJlZmVyZW5jZUdyb3VwXCcgdGlsIGF0IHN0eXJlLCBpIGh2aWxrZXQgb21yw6VkZSBkaXNzZSBpbmRzdGlsbGluZ2VyIHNrYWwgdmlzZXMgaSBicnVnZXJncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdWRydWxuaW5nc3RpbHN0YW5kZW5lcyBmYXJ2ZSBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdWRydWxuaW5nc3RpbHN0YW5kZSBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIGVrc2VtcGxlcm5lIHDDpSB0aWxsYWRlbHNlc2dydXBwZXIgZm9yIGRlIGdlbmVyZWxsZSBrYXRhbG9nYXR0cmlidXR0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHRpbCBuYXZuZW1vZHVsZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBhZiBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIG51bW1lcm1vZHVsZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciBzaWRlcm5lIChodm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVybmUgdmlzZXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIHZlcnNpb25zc3RyZW5nbW9kdWxldCBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50a2xhc3NlciBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciB2ZXJzaW9uc3VkbMO4c2VyZW4gZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW5zIHByw6ZmZXJlbmNldmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdUaWxsYWRlbHNlc2dydXBwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyB2ZWRow6ZmdG5pbmdzaGFuZGxpbmcgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2UgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRza8Omcm1lbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgdGlsIHPDuGduaW5nIGVmdGVyIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCBtZWQgdHLDpnZpc25pbmcgYWYgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHpvb21za8Omcm1lbiBmb3IgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgVGlsZsO4aiBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IG1lZCBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYnVsayBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IFJlZGlnZXIgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnQgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCBtZWQgaGlzdG9yaWsgZm9yIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgVWRza3JpdiBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ07DuGR2ZW5kaWdlIHJldHRpZ2hlZGVyIGZvciBhdCBzbGV0dGUga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnU8O4ZyBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnSW5kc3RpbCBhdXRvbWF0aXNrIGjDpm5kZWxzZXNzdGF0dXMgZm9yIGVuIENJLCBuw6VyIGVuIHRpY2tldCBlciBsaW5rZXQgdGlsIGVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luZHN0aWxsZXIgaW1wbGVtZW50ZXJpbmdzdGlsc3RhbmRlbiBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBidWxrc2vDpnJtIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmRzdGlsbGVyIGjDpm5kZWxzZXN0aWxzdGFuZGVuIGkga29uZmlndXJhdGlvbnNlbGVtZW50ZXRzIGJ1bGtza8Omcm0gaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiwgZGVyIGfDuHIgZGV0IG11bGlndCBhdCBmb3JiaW5kZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgbWVkIGV0IGFuZGV0IG9iamVrdCBpIHpvb212aXNuaW5nZW4gYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXQgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiBmb3IgYXQgZsOlIGFkZ2FuZyB0aWwgaGlzdG9yaWtrZW4gZm9yIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiBmb3IgYXQgZsOlIGFkZ2FuZyB0aWwgaGlzdG9yaWtrZW4gZm9yIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbnMgem9vbXZpc25pbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiB0aWwgYXQgc2xldHRlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYWYgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiBmb3IgYXQgdmlzZSBsaW5rcyB0aWwga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgc29tIGVuIHRyw6Z2aXNuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IGR1cGxpa2VyZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IGR1cGxpa2VyZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSB6b29tdmlzbmluZ2VuIGFmIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIHJlZGlnZXJpbmcgYWYgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgYWdlbnRncsOmbnNlZmxhZGVucyB6b29tdmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IGfDpSB0aWxiYWdlIGkgem9vbXZpc25pbmdlbiBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRldCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIHRpbCBhdCB1ZHNrcml2ZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSBhZ2VudGdyw6Zuc2VmbGFkZW5zIHpvb212aXNuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IHpvb21lIGluZCBww6UgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgb3ZlcnNpZ3RlbiBvdmVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBrb25maWd1cmF0aW9uc2VsZW1lbnRldHMgaGlzdG9yaWsgKGkgb212ZW5kdCByw6Zra2Vmw7hsZ2UpIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdTdGFuZGFyZGthdGVnb3JpZW4sIHNvbSB2aXNlcywgaHZpcyBpbmdlbiBlciB2YWxndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3JlbiBmb3IgZXQga29uZmlndXJhdGlvbnNlbGVtZW50LCBmLmVrcy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFN0YW5kYXJkIGVyIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVWRsw7hzZXIgYXV0b21hdGlzayBDb25maWdJdGVtRmV0Y2ggaW52b2tlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvbiBTdHJpbmctdWR0cnlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIHVkbMO4c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdPbSB1ZGbDuHJlbHNlbiBhZiBDb25maWdJdGVtQUNMIGthbiB1bmRnw6VzIHZlZCBhdCB0amVra2UgY2FjaGVsYWdyZWRlIGZlbHRhZmjDpm5naWdoZWRlci4gRGV0dGUga2FuIGZvcmJlZHJlIGluZGzDpnNuaW5nc3RpZGVuIGZvciBmb3JtdWxhcmVyLCBtZW4gc2thbCBkZWFrdGl2ZXJlcywgaHZpcyBBQ0xNb2R1bGVzIHNrYWwgYnJ1Z2VzIHRpbCBJVFNNQ29uZmlnSXRlbS0gb2cgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0h2aWxrZSBnZW5lcmVsbGUgb3BseXNuaW5nZXIgdmlzZXMgaSBvdmVyc2tyaWZ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdEZXRhbGplciBvbSB2ZXJzaW9uIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdGl2JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiA0NCw0NSBjbSAoMTcsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDUzLDM0IGNtICgyMSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDY2LDY4IGNtICgyNiwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogODAsMDEgY20gKDMxLDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS10b21tZXIgcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDg4LDkgY20gKDM1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgdG9tbWVyIHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgdG9tbWVyICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMgdG9tbWVyIHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgdG9tbWVyICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiAxMDYsNjggY20gKDQyIHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHRvbW1lciAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogOCw4OSBjbSAoMyw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogMTMzLDM1IGNtICg1Miw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHRvbW1lciAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogMTQ2LDY4IGNtICg1Nyw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCB0b21tZXIgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDE2MCwwMiBjbSAoNjMgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHRvbW1lciAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDE3MywzNSBjbSAoNjgsMjUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiAxMywzNCBjbSAoNSwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgdG9tbWVyICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHRvbW1lciAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiB0b21tZXIgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCB0b21tZXIgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogMTcsNzggY20gKDcgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDMxLDEyIGNtICgxMiwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAzNSw1NiBjbSAoMTQgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdSZWduc2thYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ1RpbGRlbGluZyBhZiBhZHJlc3Nlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2cgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cGUgYXBwYXJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcmlrYXBhY2l0ZXQgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdCYXR0ZXJpdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J5Z25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1cy1ncsOmbnNlZmxhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUta2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0ZXQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thcGFjaXRldCBwci4gZ3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0tvcnRudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLb3J0bMOmc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0tvcnR0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGllbnQtY2VydGlmaWthdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0tsaWVudHNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0t1bmRla2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnVXJmcmVrdmVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVXJldHMgaGFzdGlnaGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb2Rlc2lnbmVyaW5nc2NlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29uZmVyZW5jZXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdLb25zdWxlbnRhZnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0tvbnRha3QgZGlzdHJpYnV0w7hyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnSMOlbmR0ZXJpbmcgYWYgY29udGFpbmVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0tvbnRyYWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdLb250cmFrdHR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdLb250cmFrdHBlcmlvZGUgZnJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0tvbnRyYWt0cGVyaW9kZSBpbmR0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVHLDpWRsw7hzIHRlbGVmb24gKERFQ1QtdGVsZWZvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnT21rb3N0bmluZ3NlbmhlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0FudGFsIGxpY2Vuc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdPcHJldHRlbHNlc2RhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0JydWdlcmRlZmluZXJldCBzdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2ZXJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLXNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0byBmb3IgZmFrdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0byBmb3IgYmVzdGlsbGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0byBmb3IgZ2FyYW50aXN0aWxsZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRvIGZvciB1ZGdpdmVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50c2lnbmVyaW5nc2NlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0ktc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLW1haWwtY2VydGlmaWthdGVyIChTL01JTUUtY2VydGlmaWthdGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdBbnPDpnR0ZWxzZXNrb250cmFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ1NsdXQgSVAtYWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1NsdXQgbWVkIHN0w7h0dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdVZGzDuGJzZGF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRWtzdGVybiBoYXJkZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTdmluZ2hqdWwgdGlsIGVuZXJnaWxhZ3JpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2VhZnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdHZW5lcmVsIGluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnSGFyZHdhcmUtbW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnSGFyZHdhcmUtdsOmZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0hlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUC1wcm90b2tvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZXRzLSBvZyBhZGdhbmdzc3R5cmluZyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0Zha3R1cmFudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUYXN0YXR1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qtc2vDpnJtIChmbHlkZW5kZSBrcnlzdGFsc2vDpnJtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVELXNrw6ZybSAobHlzZW1pdHRlcmVuZGUgZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0Zhc3RuZXR0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0JyZWRkZWdyYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYWcgMTogRnlzaXNrIGxhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdMYWcgMjogRGF0YWxpbmstbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYWcgMzogTmV0dsOmcmtzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xhZyAzOiBOZXR2w6Zya3NsYWcgKHN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYWcgNDogVHJhbnNwb3J0bGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMYWcgNTogU2Vzc2lvbnNsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGFnIDY6IFByw6ZzZW50YXRpb25zbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGFnIDc6IEFwcGxpa2F0aW9uc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdMZWplYWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5zYWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbnNuw7hnbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW5zdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5zcGVyaW9kZSBmcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbnNwZXJpb2RlIGluZHRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS1qZXJuZm9zZmF0IChMaUZlUE80KS1iYXR0ZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRpdW0taW9uLWJhdHRlcmkgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMw6VuZWFmdGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnQmVsaWdnZW5kZSBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0zDpm5nZGVncmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnUHJvZHVjZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW1hbCBiZWxhc3RuaW5nc2thcGFjaXRldCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnSHVrb21tZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ0h1a29tbWVsc2VzdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9pbmRsZWpyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsYmVza3JpdmVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnU2vDpnJtZW5zIG9wbMO4c25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnU2vDpnJtc3TDuHJyZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ011cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0dsOmcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnTmV0dsOmcmtzaW5mbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb24gb20gbmV0dsOmcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ05ldHbDpnJrc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1jYWRtaXVtLWJhdHRlcmkgKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlra2VsLW1ldGFsaHlkcmlkLWJhdHRlcmkgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FmdGFsZSBvbSBoZW1tZWxpZ2hvbGRlbHNlIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90ZXNib2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdBbnRhbCBDUFVcJ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0FudGFsIFJBTS1tb2R1bGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0FudGFsIGdyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtc2vDpnJtIChvcmdhbmlzayBseXNlbWl0dGVyZW5kZSBkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnRHJpZnRzb21rb3N0bmluZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ0Jlc3RpbGxpbmdzbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQW5kZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1VkZ2FuZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOLUtPREUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyc2thYnNhZnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZm9ubnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9udHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0Z5c2lza2Uga2VybmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnU3Ryw7htZm9yc3luaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnS8O4YnQgcMOlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdTdGF0aXZldHMgZHliZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWNrLWVuaGVkZXIgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdWw6ZyZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1rb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUy1jZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdTYWxnc2tvbnRyYWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGl0dGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdGb3JzZWdsZXQgYmx5c3lyZWJhdHRlcmkgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXItc29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTZXJ2aWNlYWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmljZS10YWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnU3Rpa2tvbnRha3R0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdIw7hqdHRhbGVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQgSVAtYWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnT3BiZXZhcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ09wYmV2YXJpbmdzcGFydGl0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRGF0dGVyc2Vsc2thYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2FtbWVuZmF0bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1R5bmQga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdUcsOlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUb3JkZW5ib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdHcmFmaWtrb3J0ZXRzIHNhbWxlZGUgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gaSBhbHQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnQmVyw7hyaW5nc2bDuGxzb20gc2vDpnJtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVMOlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi1odWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1oZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/de_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGxnZW1laW5lIEJldHJpZWJzZGF0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0VpbnN0ZWxsdW5nZW4gZsO8ciBlaW5nZWhlbmRlIEFuZm9yZGVydW5nc2RhdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnRWluc3RlbGx1bmdlbiBmw7xyIGF1c2dlaGVuZGUgQW50d29ydGRhdGVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnQ29uZmlnSXRlbS1WZXJ3YWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnS2xhc3Nlbi1EZWZpbml0aW9uIMOkbmRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ1JvbGxlbmRlZmluaXRpb24gw6RuZGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1LbGFzc2VuYsO8bmRlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hpZXIga8O2bm5lbiBTaWUgUmVhZHkySW1wb3J0LUtsYXNzZW5iw7xuZGVsIGltcG9ydGllcmVuLCBkaWUgdW5zZXJlIGdlYnLDpHVjaGxpY2hzdGVuIEtvbmZpZ3VyYXRpb25zcHVua3RlIHplaWdlbi4gQml0dGUgYmVhY2h0ZW4gU2llLCBkYXNzIGVpbmlnZSB6dXPDpHR6bGljaGUgS29uZmlndXJhdGlvbmVuIGVyZm9yZGVybGljaCBzZWluIGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ1ZvcmhhbmRlbmUgRW50aXTDpHRlbiBha3R1YWxpc2llcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQtS2xhc3NlbmLDvG5kZWwgaW1wb3J0aWVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWdJdGVtLUtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0tUm9sbGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdGVyIGbDvHIgS2xhc3Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdXw6RobGVuIFNpZSBlaW5lIEtsYXNzZSBhdXMgZGVyIExpc3RlIGF1cyB1bSBlaW4gbmV1ZXMgQ29uZmlnIEl0ZW0genUgZXJzdGVsbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBTYW1tZWxha3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnVm9yZmFsbHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdadSBlaW5lbSBhbmRlcmVuIHZlcmtuw7xwZmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdVbmfDvGx0aWdlIENvbmZpZ3VyYXRpb24gSXRlbSBOdW1tZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0RpZSBOdW1tZXIgZGVzIHp1IHZlcmtuw7xwZmVuZGVuIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnV29sbGVuIFNpZSBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtIHdpcmtsaWNoIGzDtnNjaGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZXIgTmFtZSBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtZSB3aXJkIGJlcmVpdHMgdm9uIGRlbiBDb25maWd1cmF0aW9uIEl0ZW1zIG1pdCBkZW4gZm9sZ2VuZGVuIE51bW1lcm4gdmVyd2VuZGV0OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpb25zbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWZXJzaW9uc251bW1lciBkaWVzZXMgS29uZmlndXJhdGlvbnNlbGVtZW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0RpZSBWZXJzaW9uc251bW1lciB3aXJkIGJlcmVpdHMgdm9uIGRlbiBDb25maWdJdGVtcyBtaXQgZGVuIGZvbGdlbmRlbiBOdW1tZXJuIHZlcndlbmRldDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnVm9yZmFsbHN0YXR1cyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaWUgdm9uIENvbmZpZ3VyYXRpb24gSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnw4RuZGVydW5nc3ZlcmxhdWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0Vyc3RlbGx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ0RldGFpbGFuc2ljaHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtcyBwcm8gU2VpdGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tlaW5lIENvbmZpZyBJdGVtLURhdGVuIGdlZnVuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0NvbmZpZyBJdGVtIGF1c3fDpGhsZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTdWNoZSBhdXNmw7xocmVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgZsO8ciBDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1RpZWZlIEViZW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnVmVyZ3LDtsOfZXJuL1ZlcmtsZWluZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ01heGltYWxlIFZlcmtuw7xwZnVuZ3NlYmVuZSBmw7xyIENvbmZpZ0l0ZW0gZXJyZWljaHQhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdBa3R1ZWxsZXIgVmVyd2VuZHVuZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHVlbGxlciBWb3JmYWxsc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1p1bGV0enQgZ2XDpG5kZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1p1bGV0enQgZ2XDpG5kZXJ0IHZvbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0locmUgQ29uZmlnIEl0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZyBJdGVtLVN1Y2hlJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRGllIGZvbGdlbmRlbiBLbGFzc2VuIHdlcmRlIGltcG9ydGllcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRGllIGZvbGdlbmRlbiBSb2xsZW4gd2VyZGVuIGltcG9ydGllcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnQmVhY2h0ZW4gU2llLCBkYXNzIGF1Y2ggZW50c3ByZWNoZW5kZSBkeW5hbWlzY2hlIEZlbGRlciB1bmQgR2VuZXJhbENhdGFsb2ctS2xhc3NlbiBlcnN0ZWxsdCB3ZXJkZW4gdW5kIGVzIGtlaW5lIGF1dG9tYXRpc2NoZSBMw7ZzY2h1bmcgZ2lidC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdNw7ZjaHRlbiBTaWUgZm9ydGZhaHJlbj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnQmVuw7Z0aWdlIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uIGlzdCBrZWluIGfDvGx0aWdlcyBZQU1MLUhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnw5xiZXJzaWNodDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0tlaW5lIElEIGbDvHIgZGFzIENvbmZpZ3VyYXRpb24gSXRlbSBhbmdlZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnU2llIGJlbsO2dGlnZW4gd2VuaWdzdGVucyBlaW4gYXVzZ2V3w6RobHRlcyBDb25maWd1cmF0aW9uIEl0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnU2llIGhhYmVuIGtlaW5lIFNjaHJlaWItQmVyZWNodGlndW5nZW4gZsO8ciBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2VpbmUgRGVmaW5pdGlvbiBmw7xyIEtsYXNzZSAlcyBkZWZpbmllcnQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gIiVzIiBpbiBEYXRlbmJhbmsgbmljaHQgZ2VmdW5kZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnRXMgd2FyIG5pY2h0IG3DtmdsaWNoLCBkaWUgQ29uZmlndXJhdGlvbiBJdGVtLUlEICVzIHp1IGzDtnNjaGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnS2VpbmUgVmVyc2lvbiBmw7xyIENvbmZpZ3VyYXRpb24gSXRlbS1JRCAlcyBnZWZ1bmRlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUlELCBEdXBsaWthdHMtSUQgb2RlciBLbGFzc2VuLUlEIGFuZ2VnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0tlaW4gWnVncmlmZiBnZXfDpGhydCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnS2FubiBIaXN0b3JpZSBuaWNodCBhbnplaWdlbiwga2VpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUlEIMO8YmVybWl0dGVsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW5uIEhpc3RvcmllIG5pY2h0IGFuemVpZ2VuLCBrZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tSUQgw7xiZXJtaXR0ZWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmV1ZXMgQ29uZmlndXJhdGlvbiBJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05ldWUgVmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnVmVyd2VuZHVuZ3NzdGF0dXMgYWt0dWFsaXNpZXJ0IChuZXU9JXMsIGFsdD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnVm9yZmFsbHN0YXR1cyBha3R1YWxpc2llcnQgKG5ldT0lcywgYWx0PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBnZWzDtnNjaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdWZXJrbsO8cGZ1bmcgenUgJXMgKFR5cD0lcykgaGluenVnZWbDvGd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdWZXJrbsO8cGZ1bmcgenUgJXMgKFR5cD0lcykgZ2Vsw7ZzY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtLURlZmluaXRpb24gYWt0dWFsaXNpZXJ0IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYW1lIGFrdHVhbGlzaWVydCAobmV1PSVzLCBhbHQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXQgJXMgYWt0dWFsaXNpZXJ0IHZvbiAiJXMiIG5hY2ggIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIGdlbMO2c2NodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICdEYXRlaSAiJXMiIGhvY2hnZWxhZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnRGF0ZWkgIiVzIiBlbnRmZXJudCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0tlaW5lIENvbmZpZ3VyYXRpb24gSXRlbS1JRCBvZGVyIFZlcnNpb25zLUlEIGFuZ2VnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGthbm4gbmljaHQgYW5nZXplaWd0IHdlcmRlbiwga2VpbmUgWnVncmlmZnNyZWNodGUgdmVyZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtLUlEICVzIGluIERhdGVuYmFuayBuaWNodCBnZWZ1bmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2dlZHJ1Y2t0IHZvbiAlcyBhbSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbnonOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdVbmfDvGx0aWdlIEtsYXNzZW4tSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgS2xhc3Nlbi1JRCDDvGJlcm1pdHRlbHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnS2VpbmUgWnVncmlmZnNyZWNodGUgZsO8ciBkaWVzZSBLbGFzc2UgdmVyZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdLZWluIEVyZ2VibmlzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0NvbmZpZyBJdGVtLVN1Y2hlcmdlYm5pc3NlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdLYW5uIGRhcyBFbGVtZW50IG5pY2h0IGFuemVpZ2VuLCBrZWluZSBadWdyaWZmc3JlY2h0ZSBmw7xyIGRhcyBDb25maWdJdGVtIHZlcmdlYmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWcgSXRlbSBuaWNodCBnZWZ1bmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnS2VpbmUgVmVyc2lvbmVuIGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdXYXJudW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnVm9yZmFsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGVyIFZlcndlbmR1bmdzc3RhdHVzIGRpZXNlcyBDb25maWcgSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZXIgVm9yZmFsbHN0YXR1cyBkaWVzZXMgQ29uZmlnIEl0ZW1zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnS2VpbmUgQmVyZWNodGlndW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciB1bmfDvGx0aWchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdTdWNocGFyYW1ldGVyIHVuZ8O8bHRpZyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdBbmdlemVpZ3RlIENvbmZpZ3VyYXRpb24gSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVmVyd2VuZHVuZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnQWt0dWVsbGVyIFZvcmZhbGxzc3RhdHVzLVR5cCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdad2lzY2hlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlbmVpbnNjaHLDpG5rdW5nZW4gZsO8ciBkYXMgS29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1fDpGhsZW4gU2llIGVpbmUgb2RlciBtZWhyZXJlIEtsYXNzZW4gYXVzLCB1bSBkaWUgYXVzd8OkaGxiYXJlbiBDb25maWcgSXRlbXMgZWluenVzY2hyw6Rua2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdWZXJ3ZW5kdW5nc3N0YXR1cy1FaW5zY2hyw6Rua3VuZ2VuIGbDvHIgZGFzIENvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnRWluZW4gb2RlciBtZWhyZXJlIFZlcndlbmR1bmdzc3RhdHVzIGF1c3fDpGhsZW4gdW0gYXVzd8OkaGxiYXJlIENvbmZpZyBJdGVtcyBlaW56dXNjaHLDpG5rZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzY2ggKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNjaCAoVmVyc2lvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTGluay1SZWZlcmVuemllcnVuZ3NhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQW5nYWJlLCBvYiBzaWNoIGRpZXNlciBMaW5rIGF1ZiBkYXMgQ29uZmlnSXRlbSBvZGVyIGRpZSBzdGF0aXNjaGUgVmVyc2lvbiBkZXMgcmVmZXJlbnppZXJlbmRlbiBPYmpla3RzIGJlemllaHQuIERpZSBCZXJlY2hudW5nIGRlcyBha3R1ZWxsZW4gVm9yZmFsbHNzdGF0dXMgd2lyZCBudXIgYmVpIGR5bmFtaXNjaGVuIExpbmtzIGR1cmNoZ2Vmw7xocnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnV8OkaGxlbiBTaWUgZGFzIEF0dHJpYnV0IGF1cywgbmFjaCBkZW0gZGllIEtvbmZpZ3VyYXRpb25zZWxlbWVudGUgZHVyY2hzdWNodCB3ZXJkZW4gc29sbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICdTY2hsw7xzc2VsIGRlciBleHRlcm5lbiBRdWVsbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICdXw6RobGVuIFNpZSBkaWUgQW56ZWlnZWFydCBhdXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJ0FrdGl2aWVyZW4gU2llIGRpZXNlIE9wdGlvbiwgdW0gV2VydGUgYWxzIEJhdW0gYW56dXplaWdlbiwgZ3J1cHBpZXJ0IG5hY2ggQ29uZmlnSXRlbXMuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0Jhc2lzc3RydWt0dXIgaXN0IG5pY2h0IGfDvGx0aWcuIEJpdHRlIGdlYmVuIFNpZSBlaW5lbiBIYXNoIG1pdCBEYXRlbiBpbSBZQU1MLUZvcm1hdCBhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdEZXIgQmVnaW5uIGRlciBZQU1MLVplaWNoZW5rZXR0ZSBtaXQgXCctLS1cJyBpc3QgZXJmb3JkZXJsaWNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdEaWUgVGFiZWxsZSBjb25maWdpdGVtX2xpbmsga29ubnRlIG5pY2h0IGdlbMO2c2NodCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdFcyB3dXJkZW4ga2VpbmUgcmVsZXZhbnRlbiBkeW5hbWlzY2hlbiBGZWxkZXIgZ2VmdW5kZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdLb25udGUgbmljaHQgaW4gZGllIFRhYmVsbGUgY29uZmlnaXRlbV9saW5rIGVpbmdlZsO8Z3Qgd2VyZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcwIFplaWxlbiBpbiBkaWUgVGFiZWxsZSBjb25maWdpdGVtX2xpbmsgZWluZ2Vmw7xndCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXhpbWFsZSBBbnphaGwgZWluZXMgRWxlbWVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICdNYXhpbWFsZSBBbnphaGwgdm9uIEVsZW1lbnRlbiBlaW5lcyBEeW5hbWlzY2hlbiBGZWxkcyB2b20gVHlwIOKAnlNldOKAnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgZWluZXMgRWxlbWVudHMgaW5uZXJoYWxiIGVpbmVzIER5bmFtaXNjaGVuIEZlbGRzIHZvbSBUeXAgIlNldCInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9uIFN0cmluZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdGZWhsZXIgYmVpbSBTeW5jaHJvbmlzaWVyZW4gZGVyIERlZmluaXRpb25lbi4gQml0dGUgcHLDvGZlbiBTaWUgZGFzIFByb3Rva29sbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdTaWUgaGFiZW4gSVRTTUNvbmZpZ0l0ZW0tRGVmaW5pdGlvbmVuLCBkaWUgbmljaHQgc3luY2hyb25pc2llcnQgc2luZC4gQml0dGUgc3RlbGxlbiBTaWUgSWhyZSBkeW5hbWlzY2hlbiBJVFNNQ29uZmlnSXRlbS1GZWxkw6RuZGVydW5nZW4gYmVyZWl0Lic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnQWJnZWxhdWZlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0luIFdhcnR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdGJldHJpZWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ0dlcGxhbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnSW4gUmVwYXJhdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdBdcOfZXIgRGllbnN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1VudGVyIFJldmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RUyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnw5xiZXJibGljayB1bmQgQmVzdMOkdGlndW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydCB2b24gS2xhc3Nlbi9Sb2xsZW4gdW5kIGlocmVuIHp1Z2Vow7ZyaWdlbiBGZWxkZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnQmVpbSBLbGFzc2VuaW1wb3J0IGlzdCBlaW4gRmVobGVyIGF1ZmdldHJldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gVmVyc3RlY2t0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBBYmdlYmlsZGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJ0VpbmUgWnVvcmRudW5nIGRlciBpbnRlcm5lbiBGZWxkbmFtZW4sIGRpZSBpbiBkZW4gUHJvemVzc21hbmFnZW1lbnQgw5xiZXJnYW5nc2FrdGlvbmVuIENvbmZpZ0l0ZW1BZGQgdW5kIC1VcGRhdGUgdmVyd2VuZGV0IHdlcmRlbi4gRGllIFNjaGzDvHNzZWwgc2luZCBkaWUgTmFtZW4gZGVyIEZlbGRlciBpbm5lcmhhbGIgZGVyIFNldHMgbWl0IGRlbSBPYmpla3R0eXAg4oCeVGlja2V04oCcLCBkaWUgenVyIEVyc3RlbGx1bmcvQWt0dWFsaXNpZXJ1bmcgZGVyIENJcyBnZW51dHp0IHdlcmRlbi4gRGllIFdlcnRlIHNpbmQgZGllIE5hbWVuIGRlciBGZWxkZXIgaW5uZXJoYWxiIGRlciBTZXRzIG1pdCBkZW0gT2JqZWt0dHlwIOKAnklUU01Db25maWdJdGVt4oCcLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdFcm3DtmdsaWNodCBlcndlaXRlcnRlIFN1Y2hiZWRpbmd1bmdlbiBiZWkgZGVyIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNvYmpla3RlbiBpbiBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuIE1pdCBkaWVzZXIgRnVua3Rpb24ga8O2bm5lbiBTaWUgei4gQi4gZGVuIE5hbWVuIGRlcyBLb25maWd1cmF0aW9uc2VpbnRyYWdzIG1pdCBzb2xjaGVuIEJlZGluZ3VuZ2VuIHdpZSAiKCprZXkxKiYmKmtleTIqKSIgb2RlciAiKCprZXkxKnx8KmtleTIqKSIgc3VjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdFcm3DtmdsaWNodCBlcndlaXRlcnRlIFN1Y2hiZWRpbmd1bmdlbiBiZWkgZGVyIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNlaW50csOkZ2VuIGluIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlLiBNaXQgZGllc2VyIEZ1bmt0aW9uIGvDtm5uZW4gU2llIHouIEIuIGRlbiBOYW1lbiBlaW5lcyBLb25maWd1cmF0aW9uc2VpbnRyYWdzIG1pdCBCZWRpbmd1bmdlbiB3aWUgIigqa2V5MSomJiprZXkyKikiIG9kZXIgIigqa2V5MSp8fCprZXkyKikiIHN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnWnVnZXdpZXNlbmUgQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJ1p1IGVpbmVtIGJlc3RpbW10ZW4gWmVpdHB1bmt0IGVpbiBUaWNrZXQgZsO8ciBDb25maWdJdGVtcyBlcnN0ZWxsZW4sIHdlbm4gZGllIGtvbmZpZ3VyaWVydGVuIEFuZm9yZGVydW5nZW4gZXJmw7xsbHQgc2luZC4gRGVyIFplaXRwdW5rdCB3aXJkIGR1cmNoIGRlbiBXZXJ0IGRlcyB1bnRlciAiVGltZUNJS2V5IiBkZXMgQ29uZmlnSXRlbXMga29uZmlndXJpZXJ0ZW4gRHluYW1pc2NoZW4gRmVsZHMgdm9tIFR5cCAiRGF0dW0iIGJlc3RpbW10IHVuZCBkdXJjaCAiVGltZU1vZGlmaWVyIiBtb2RpZml6aWVydC4gTGV0enRlcmVyIGthbm4gZW50d2VkZXIgbnVyIGVpbmUgWmFobCBzZWluLCBvZGVyIGVpbiBWb3J6ZWljaGVuICgrLy0pLCBlaW5lIFphaGwgdW5kIGVpbmUgRWluaGVpdCAoZC9oL20pOiAiNyIgZW50c3ByaWNodCAiKzdkIi4gRGFzIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpcmQgdmVyd2VuZGV0LCB1bSBlcnN0ZWxsdGUgVGlja2V0cyB6dSBtYXJraWVyZW4gLSBlcyBtdXNzIGV4aXN0aWVyZW4uIERpZSBGbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+LCB3b2JlaSBYIHNvd29obCBOQU1FLCBhbHMgYXVjaCBOVU1CRVIgdW5kIERBVEUgc2VpbiBrYW5uLCB3ZXJkZW4gZHVyY2ggZGllIGVudHNwcmVjaGVuZGVuIFdlcnRlIGluICJUaWNrZXQtPlRleHQiIGVyc2V0enQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJ0F0dHJpYnV0ZSBmw7xyIGRpZSBMaXplbnp6w6RobHVuZywgd29iZWkg4oCeVG90YWxMaWNlbnNlc0RG4oCcLCDigJ5BdmFpbGFibGVMaWNlbnNlc0RG4oCcIHVuZCDigJ5MaWNlbnNlUmVmZXJlbmNlREbigJwgZGllIE5hbWVuIGRlciBkeW5hbWlzY2hlbiBGZWxkZXIgc2luZCwgZGllIHp1ciBOYWNodm9sbHppZWhiYXJrZWl0IGRlciB2ZXJibGVpYmVuZGVuIExpemVuemVuIHZlcndlbmRldCB3ZXJkZW4uIEZhbGxzIHZlcndlbmRldCwgd2VyZGVuIG51ciBkaWUgVmVyd2VuZHVuZ3NzdGF0dXMgaW4g4oCeVmFsaWREZXBsU3RhdGVz4oCcIGJlcsO8Y2tzaWNodGlndC4gV2VubiBlaW4gU2Nod2VsbHdlcnQgaW4g4oCeTWluaW11bUxpY2Vuc2Vz4oCcIGRlZmluaWVydCBpc3QsIHdpcmQgYXV0b21hdGlzY2ggZWluIFRpY2tldCBlcnN0ZWxsdCwgd2VubiB3ZW5pZ2VyIExpemVuemVuIHZlcmbDvGdiYXIgc2luZC4gRGF6dSBtdXNzIGRhcyBEeW5hbWlzY2hlIEZlbGQgdm9tIFR5cCAiS29udHJvbGxrw6RzdGNoZW4iIOKAnlRpY2tldC0+RHluYW1pY0ZpZWxk4oCcIGV4aXN0aWVyZW4uIERpZSBUYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gKHdvYmVpIFggc293b2hsIE5BTUUsIGFscyBhdWNoIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgb2RlciBMSUNFTlNFU19NSU4gc2VpbiBrYW5uKSB3ZXJkZW4gaW0g4oCeVGlja2V0LT5UZXh04oCcIGR1cmNoIGRpZSBlbnRzcHJlY2hlbmRlbiBXZXJ0ZSBlcnNldHp0OiBkZW4gQ29uZmlnIEl0ZW0gTmFtZW4sIGRpZSBOdW1tZXIsIGRpZSB2ZXJmw7xnYmFyZW4gTGl6ZW56ZW4gdW5kIGRpZSBtaW5pbWFsZSBBbnphaGwgYW4gdmVyZsO8Z2JhcmVuIExpemVuemVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ1p1bSBLdW5kZW4genVnZXdpZXNlbmUgQ29uZmlndXJhdGlvbnMgSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdadW0gS3VuZGVuYmVudXR6ZXIgenVnZXdpZXNlbmUgQ29uZmlndXJhdGlvbnMgSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREItRWluc3RlbGx1bmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUHLDvGZ0IE5hbWVuIGF1ZiBFaW5kZXV0aWdrZWl0IGlubmVyaGFsYiBkZXIgc2VsYmVuIENvbmZpZ3VyYXRpb24gSXRlbS1LbGFzc2Ugb2RlciBnbG9iYWwsIGQuaC4gZXMgd2VyZGVuIGFsbGUgQ29uZmlndXJhdGlvbiBJdGVtcyBqZWdsaWNoZXIgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZSBiZWkgZGVyIFByw7xmdW5nIGF1ZiBlaW5lbiBlaW5kZXV0aWdlbiBOYW1lbiBiZXLDvGNrc2ljaHRpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdXw6RobGVuIFNpZSBlaW4gTW9kdWwsIHVtIGVpbiBCZW5lbm51bmdzc2NoZW1hIHp1IGVyendpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1fDpGhsZW4gU2llIGVpbiBNb2R1bCwgdW0gZWluIE51bW1lcm5zY2hlbWEgenUgZXJ6d2luZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdXw6RobGVuIFNpZSBlaW4gTW9kdWwsIHVtIGVpbiBWZXJzaW9uc2tldHRlbnNjaGVtYSB6dSBlcnp3aW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnV8OkaGxlbiBTaWUgQXR0cmlidXRlLCB1bSBkaWUgRXJzdGVsbHVuZyBlaW5lciBuZXVlbiBWZXJzaW9uIGF1c3p1bMO2c2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdXw6RobGVuIFNpZSBLYXRlZ29yaWVuIGF1cywgZGllIFNpZSBkaWVzZXIgS29uZmlndXJhdGlvbnNlbGVtZW50a2xhc3NlIHp1b3JkbmVuIG3DtmNodGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnRmFyYmRlZmluaXRpb25lbiBmw7xyIGRpZSDDtmZmZW50bGljaGUgT2JlcmZsw6RjaGUgKC9wdWJsaWMucGwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdTcGFsdGVua29uZmlndXJhdGlvbnNmaWx0ZXIgZsO8ciBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnU3BhbHRlbiwgZGllIGluIGRlciBDb25maWcgSXRlbSDDnGJlcnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZSBnZWZpbHRlcnQgd2VyZGVuIGvDtm5uZW4uIEhpbndlaXM6IE51ciBDb25maWcgSXRlbSBBdHRyaWJ1dGUgdW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIHNpbmQgZXJsYXVidC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGhpbnp1ZsO8Z2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBiZWFyYmVpdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICdFcmVpZ25pc21vZHVsIHZvbiBDb25maWcgSXRlbXMsIGRhcyBkaWUgTGl6ZW56esOkaGx1bmcgZsO8ciBlaW4gYmVzdGltbXRlcyBDb25maWcgSXRlbSBha3RpdmllcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIEl0ZW0tRXZlbnQtTW9kdWwsIGRhcyBkaWUgUHJvdG9rb2xsaWVydW5nIGRlciBIaXN0b3JpZSBpbSBBZ2VudGVuLUludGVyZmFjZSBlcm3DtmdsaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnQ29uZmlnLUVsZW1lbnQtRXJlaWduaXNtb2R1bCwgZGFzIENvbmZpZy1FbGVtZW50ZSBhdWYgaWhyZSBha3R1ZWxsZSBEZWZpbml0aW9uIGFrdHVhbGlzaWVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tSGlzdG9yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBkcnVja2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1EZXRhaWxhbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0tU3RydWt0dXJhbnNpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBkZXIgZm9sZ2VuZGVuIEtsYXNzZW4gd2VyZGVuIG5pY2h0IGF1ZiBkZW0gRWxhc3RpY3NlYXJjaC1TZXJ2ZXIgZ2VzcGVpY2hlcnQuIFVtIGRpZXMgYXVmIGJlc3RlaGVuZGUgQ0lzIGFuenV3ZW5kZW4sIG11c3MgZGllIENJLU1pZ3JhdGlvbiDDvGJlciBkaWUgS29uc29sZSBhdXNnZWbDvGhydCB3ZXJkZW4sIG5hY2hkZW0gZGllc2UgT3B0aW9uIGdlw6RuZGVydCB3dXJkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgbWl0IGRlbiBmb2xnZW5kZW4gQmVyZWl0c3RlbGx1bmdzenVzdMOkbmRlbiB3ZXJkZW4gbmljaHQgYXVmIGRlbSBFbGFzdGljc2VhcmNoLVNlcnZlciBnZXNwZWljaGVydC4gVW0gZGllcyBhdWYgYmVzdGVoZW5kZSBDSXMgYW56dXdlbmRlbiwgbXVzcyBkaWUgQ0ktTWlncmF0aW9uIMO8YmVyIGRpZSBLb25zb2xlIGF1c2dlZsO8aHJ0IHdlcmRlbiwgbmFjaGRlbSBkaWVzZSBPcHRpb24gZ2XDpG5kZXJ0IHd1cmRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1MaW1pdCBwcm8gU2VpdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tU2FtbWVsYWt0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIEl0ZW0gU3VjaC1CYWNrZW5kIE5hdmlnYXRpb24gZGVzIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnS29uZmlndXJpZXJlIGRpZSBTcGFsdGVuLCBkaWUgaW0gS3VuZGVuaW50ZXJmYWNlIGbDvHIgZGllIEFuemVpZ2Ugdm9uIFp1Z3JpZmZzYmVkaW5ndW5nZW4gdmVyZsO8Z2JhciBzaW5kLCB3ZW5uIGRpZSBlbnRzcHJlY2hlbmRlbiBTcGFsdGVuIGbDvHIgWnVncmlmZnNiZWRpbmd1bmdlbiBuaWNodCBleHBsaXppdCBrb25maWd1cmllcnQgc2luZC4gRGllc2UgRWluc3RlbGx1bmcgZGllbnQgYWxzIFLDvGNrZmFsbG9wdGlvbiBmw7xyIGRpZSBhbmRlcmVuIEVpbnN0ZWxsdW5nZW4genUgZGVuIFNwYWx0ZW5laW5zdGVsbHVuZ2VuIGbDvHIgWnVncmlmZnNiZWRpbmd1bmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmllcmUgZGllIFNwYWx0ZW4sIGRpZSBpbiBkZXIgS3VuZGVub2JlcmZsw6RjaGUgaW4gZGVyIEFuc2ljaHQgZGVyIGVudHNwcmVjaGVuZGVuIEJlcmVjaHRpZ3VuZ3NiZWRpbmd1bmcgdmVyZsO8Z2JhciBzaW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0RpZSBEZWZpbml0aW9uZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbS1MaW1pdCBlcnN0ZWxsZW4gdW5kIHZlcndhbHRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdFcnpldWd0IFRpY2tldHMgZsO8ciBDb25maWdJdGVtcyB6dSBiZXN0aW1tdGVuIFplaXRwdW5rdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdLdW5kZW4ga8O2bm5lbiBoaXN0b3Jpc2NoZSBDSS1WZXJzaW9uZW4gZWluc2VoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0t1bmRlbiBoYWJlbiBkaWUgTcO2Z2xpY2hrZWl0LCBtYW51ZWxsIHp3aXNjaGVuIGhpc3RvcmlzY2hlbiBDSS1WZXJzaW9uZW4genUgd2VjaHNlbG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnU3RhbmRhcmRkYXRlbiwgZGllIGF1ZiBkZW0gQXR0cmlidXQgZsO8ciBkZW4gU3VjaGJpbGRzY2hpcm0gZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGUgdmVyd2VuZGV0IHdlcmRlbiBzb2xsZW4uIEJlaXNwaWVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYXJkZGF0ZW4sIGRpZSBmw7xyIGRhcyBBdHRyaWJ1dCBmw7xyIGRlbiBTdWNoYmlsZHNjaGlybSBmw7xyIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZSB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGxlbi4gQmVpc3BpZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmllcmVuIFNpZSBBY3Rpb25zLCBpbiBkZW5lbiBpbSBWZXJrbsO8cGZ0ZS1PYmpla3RlLVdpZGdldCBlaW4gRWluc3RlbGx1bmdlbi1Lbm9wZiB2ZXJmw7xnYmFyIHNlaW4gc29sbCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZsO8ciBkaWVzZSBBY3Rpb25zIGRpZSBmb2xnZW5kZW4gSlMtIHVuZCBDU1MtRGF0ZWllbiByZWdpc3RyaWVydCBzZWluIG3DvHNzZW46IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHVuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmllcnQgZWluIFRlbXBsYXRlOjpUb29sa2l0LVNjaGVtYSBmw7xyIFZlcnNpb25zc3RyaW5ncy4gV2lyZCBudXIgdmVyd2VuZGV0LCB3ZW5uIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBhdWYgVGVtcGxhdGVUb29sa2l0IGVpbmdlc3RlbGx0IGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaWVyZSBlaW5lIFJlaWhlIHZvbiBCZWRpbmd1bmdlbiwgdW50ZXIgZGVuZW4gZWluIENvbmZpZyBJdGVtIMO2ZmZlbnRsaWNoIHNpY2h0YmFyIGlzdC4gRGVyIE5hbWUgaXN0IGRhcyBlaW56aWdlIFBmbGljaHRhdHRyaWJ1dC4gV2VubiBrZWluZSB3ZWl0ZXJlbiBPcHRpb25lbiBhbmdlZ2ViZW4gc2luZCwgc2luZCBhbGxlIENvbmZpZyBJdGVtcyBpbiBkaWVzZXIgS2F0ZWdvcmllIHNpY2h0YmFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaWVyZW4gU2llIGVpbmUgUmVpaGUgdm9uIEJlZGluZ3VuZ2VuLCB1bnRlciBkZW5lbiBlaW4gS3VuZGUgZWluIEtvbmZpZ3VyYXRpb25zb2JqZWt0IHNlaGVuIGRhcmYuIERpZSBCZWRpbmd1bmdlbiBrw7ZubmVuIG9wdGlvbmFsIGF1ZiBiZXN0aW1tdGUgS3VuZGVuZ3J1cHBlbiBiZXNjaHLDpG5rdCB3ZXJkZW4uIERlciBOYW1lIGlzdCBkYXMgZWluemlnZSBvYmxpZ2F0b3Jpc2NoZSBBdHRyaWJ1dC4gV2VubiBrZWluZSBhbmRlcmVuIE9wdGlvbmVuIGFuZ2VnZWJlbiB3ZXJkZW4sIHNpbmQgYWxsZSBLb25maWd1cmF0aW9uc29iamVrdGUgdW50ZXIgZGllc2VyIEthdGVnb3JpZSBzaWNodGJhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYmVuw7Z0aWd0ZW4gQmVyZWNodGlndW5nZW4genVtIEzDtnNjaGVuIHZvbiBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbXMgZHVyY2ggZGFzIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBiZW7DtnRpZ3RlbiBCZXJlY2h0aWd1bmdlbiwgdW0gSVRTTS1Db25maWd1cmF0aW9uIEl0ZW1zIMO8YmVyIGRhcyBHZW5lcmljIEludGVyZmFjZSBhYnp1cnVmZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGJlbsO2dGlndGVuIEJlcmVjaHRpZ3VuZ2VuLCB1bSBuYWNoIElUU00tQ29uZmlndXJhdGlvbiBJdGVtcyBtaXQgZGVtIEdlbmVyaWMgSW50ZXJmYWNlIHp1IHN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgZXJmb3JkZXJsaWNoZW4gQmVyZWNodGlndW5nZW4genVtIEVpbnN0ZWxsZW4gdm9uIElUU00tS29uZmlndXJhdGlvbnNlbGVtZW50ZW4gw7xiZXIgZGllIGdlbmVyaXNjaGUgU2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyDDnGJlcnNpY2h0c21vZHVsIHVtIGRpZSAiS2xlaW4iLUFuc2ljaHQgZWluZXIgQ29uZmlndXJhdGlvbiBJdGVtcy1MaXN0ZSBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdMZWd0IGZlc3QsIG9iIGRpZSBCZXNjaHJpZnR1bmdlbiBkZXIgVmVyYmluZHVuZ3N0eXBlbiBpbiBkZW4gS25vdGVudmVyYmluZHVuZ2VuIGFuZ2V6ZWlndCB3ZXJkZW4gbcO8c3Nlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCByZWd1bMOkcmUgQXVzZHLDvGNrZSBpbmRpdmlkdWVsbCBmw7xyIGplZGVzIENvbmZpZ3VyYXRpb24gSXRlbSwgdW0gZGVuIE5hbWVuIGRlcyBDb25maWd1cmF0aW9uIEl0ZW0genUgw7xiZXJwcsO8ZmVuIHVuZCBlbnRzcHJlY2hlbmRlIEZlaGxlcm1lbGR1bmdlbiBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgdmVyZsO8Z2JhcmVuIFNwYWx0ZW4gZGVyIENJcyBpbiBkZXIgS29uZmlndXJhdGlvbnPDvGJlcnNpY2h0IGluIEFiaMOkbmdpZ2tlaXQgdm9uIGRlciBDSS1LbGFzc2UuIEplZGVyIEVpbnRyYWcgbXVzcyBhdXMgZWluZW0gS2xhc3Nlbm5hbWVuIHVuZCBlaW5lbSBBcnJheSB2b24gdmVyZsO8Z2JhcmVuIEZlbGRlcm4gZsO8ciBkaWUgZW50c3ByZWNoZW5kZSBLbGFzc2UgYmVzdGVoZW4uIER5bmFtaXNjaGUgRmVsZGVpbnRyw6RnZSBtw7xzc2VuIGRhcyBTY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSBlaW5oYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUtvbmZpZ3VyYXRpb25zYXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgS29uZmlndXJhdGlvbnNlcmdlYm5pc3NlcyBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUtvbmZpZ3VyYXRpb25zYXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgU3VjaGVyZ2Vibmlzc2VzIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlIG5hY2ggS29uZmlnLUVsZW1lbnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUtvbmZpZ3VyYXRpb25zYXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgS29uZmlndXJhdGlvbnMtU3VjaGVyZ2Vibmlzc2VzIGRpZXNlciBPcGVyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdMZWd0IGRpZSBTdGFuZGFyZHJlaWhlbmZvbGdlIGRlciBLb25maWd1cmF0aW9uc29iamVrdGUgaW4gZGVuIFN1Y2hlcmdlYm5pc3NlbiBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUgZmVzdC4gVXA6IMOkbHRlc3RlciBFaW50cmFnIG9iZW4uIE5hY2ggdW50ZW46IGRhcyBuZXVlc3RlIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkcmVpaGVuZm9sZ2UgZGVyIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZSBpbiBkZW4gU3VjaGVyZ2Vibmlzc2VuIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlLiBPYmVuOiDDpGx0ZXN0ZXIgRWludHJhZyBnYW56IG9iZW4uIFVudGVuOiBuZXVlc3RlIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIHN0YW5kYXJkbcOkw59pZyBhbmdlemVpZ3RlbiBTcGFsdGVuIGRlciBDSXMgaW4gZGVyIEtvbmZpZ3VyYXRpb25zw7xiZXJzaWNodCBpbiBBYmjDpG5naWdrZWl0IHZvbiBkZXIgQ0ktS2xhc3NlLiBKZWRlciBFaW50cmFnIG11c3MgYXVzIGVpbmVtIEtsYXNzZW5uYW1lbiB1bmQgZWluZW0gQXJyYXkgdm9uIHZlcmbDvGdiYXJlbiBGZWxkZXJuIGbDvHIgZGllIGVudHNwcmVjaGVuZGUgS2xhc3NlIGJlc3RlaGVuLiBEeW5hbWlzY2hlIEZlbGRlaW50csOkZ2UgbcO8c3NlbiBkYXMgU2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgZWluaGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdMZWd0IGRpZSBTdGFuZGFyZHRpZWZlIGRlciBCZXppZWh1bmdlbiBmZXN0LCBkaWUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgc3RhbmRhcmRtw6TDn2lnIGFuZ2V6ZWlndGUgU3VjaGF0dHJpYnV0IGbDvHIgZGllIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNvYmpla3Rlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgc3RhbmRhcmRtw6TDn2lnIGFuZ2V6ZWlndGUgU3VjaGF0dHJpYnV0IGbDvHIgZGllIFN1Y2htYXNrZSBkZXMgS29uZmlndXJhdGlvbnNvYmpla3RzLiBCZWlzcGllbDogIktleSIgbXVzcyBkZW4gTmFtZW4gZGVzIGR5bmFtaXNjaGVuIEZlbGRlcyBlbnRoYWx0ZW4sIGluIGRpZXNlbSBGYWxsIFwnWFwnLCAiQ29udGVudCIgbXVzcyBkZW4gV2VydCBkZXMgZHluYW1pc2NoZW4gRmVsZGVzIGVudGhhbHRlbiwgYWJow6RuZ2lnIHZvbSBUeXAgZGVzIGR5bmFtaXNjaGVuIEZlbGRlcywgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyB1bmQgb2RlciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLVVudGVyb2JqZWt0IGRlciBLbGFzc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSB2ZXJmw7xnYmFyZW4gU3BhbHRlbiBkZXIgQ0lzIGluIGRlciBLb25maWd1cmF0aW9uc8O8YmVyc2ljaHQgaW4gQWJow6RuZ2lna2VpdCB2b24gZGVyIENJLUtsYXNzZS4gSmVkZXIgRWludHJhZyBtdXNzIGF1cyBlaW5lbSBLbGFzc2VubmFtZW4gdW5kIGVpbmVtIEFycmF5IHZvbiB2ZXJmw7xnYmFyZW4gRmVsZGVybiBmw7xyIGRpZSBlbnRzcHJlY2hlbmRlIEtsYXNzZSBiZXN0ZWhlbi4gRHluYW1pc2NoZSBGZWxkZWludHLDpGdlIG3DvHNzZW4gZGFzIFNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lIGVpbmhhbHRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBIw7ZoZSBkZXIgUmljaFRleHQtRWRpdG9yIEtvbXBvbmVudGUuIEdlYmVuIFNpZSBlaW5lbiBaYWhsZW4tIChQaXhlbCkgb2RlciBQcm96ZW50d2VydCAocmVsYXRpdikgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgQW56YWhsIGRlciBaZWlsZW4gZsO8ciBkZW4gRWRpdG9yIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGVmaW5pdGlvbiBpbSBBZG1pbmlzdHJhdG9yLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBSZWloZW5mb2xnZSBkZXIgVm9yZmFsbHN0YXR1cyB2b24gaG9jaCAoYnNwdy4ga3JpdGlzY2gpIG5hY2ggbmllZHJpZyAoYnNwdy4gZnVua3Rpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IHJlbGV2YW50ZSBWZXJ3ZW5kdW5nc3N0YXR1cywgaW4gZGVuZW4gdmVya27DvHBmdGUgVGlja2V0cyBkZW4gU3RhdHVzIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgYmVlaW5mbHVzc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3VjaGxpbWl0IGbDvHIgZGllIElUU00gQ29uZmlndXJhdGlvbi1BbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3VjaGxpbWl0IGbDvHIgZGllIENvbmZpZ3VyYXRpb24gSXRlbXMtU3VjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdWNoZ3JlbnplIGbDvHIgZGVuIEJpbGRzY2hpcm0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdMZWd0IGRpZSBTdWNoZ3JlbnplIGbDvHIgZGVuIEJpbGRzY2hpcm0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBmZXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gaW4gZGVyIEtvbXBsZXhhbnNpY2h0IGRlciBWZXJrbsO8cGZ1bmdzdGFiZWxsZSBmw7xyIGFsbGUgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZW4uIFdlbm4gZXMga2VpbmVuIEVpbnRyYWcgZ2lidCwgd2VyZGVuIGRpZSBTdGFuZGFyZHNwYWx0ZW4gYW5nZXplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGluIGRlciBLb21wbGV4YW5zaWNodCBkZXIgVmVya27DvHBmdW5nc3RhYmVsbGUgYWJow6RuZ2lnIHZvbiBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZS4gRGVmaW5pZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGluIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tw5xiZXJzaWNodCBpbiBBYmjDpG5naWdrZWl0IHZvbiBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZS4gSmVkZW0gRWludHJhZyBtw7xzc2VuIGRlciBLbGFzc2VubmFtZSB1bmQgRG9wcGVscHVua3RlIHZvcmFuZ2VzdGVsbHQgd2VyZGVuICh6LkIuIENvbXB1dGVyOjo6KS4gRXMgZ2lidCBlaW5pZ2UgQ29uZmlndXJhdGlvbiBJdGVtLUF0dHJpYnV0ZSwgZGllIGFsbGVuIENvbmZpZ3VyYXRpb24gSXRlbXMgZ2VtZWluc2FtIHNpbmQgKEJlaXNwaWVsIGbDvHIgZGllIEtsYXNzZSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVW0gZWluemVsbmUgQ29uZmlndXJhdGlvbiBJdGVtLUF0dHJpYnV0ZSwgd2llIHNpZSBpbiBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLURlZmluaXRpb24gZGVmaW5pZXJ0IHNpbmQsIGRhcnp1c3RlbGxlbiwgbXVzcyBkYXMgZm9sZ2VuZGUgU2NoZW1hIHZlcndlbmRldCB3ZXJkZW4gKEJlaXNwaWVsIGbDvHIgZGllIEtsYXNzZSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpLYXBheml0w6R0OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6S2FwYXppdMOkdDo6MS4gV2VubiBlcyBrZWluZW4gRWludHJhZyBmw7xyIGVpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZSBnaWJ0LCB3ZXJkZW4gZGllIFN0YW5kYXJkc3BhbHRlbiBhbmdlemVpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgRWxlbWVudGUgaW4gZGVyIGRyaXR0ZW4gRWJlbmUgZGVyIElUU00gQ29uZmlnIEl0ZW0gQUNMLVN0cnVrdHVyIGbDvHIgIkFjdGlvbiIgdmVyZsO8Z2JhciBzaW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0xlZ3QgZmVzdCwgd2VsY2hlIEVsZW1lbnRlIGluIGRlciBlcnN0ZW4gRWJlbmUgZGVyIElUU00gQ29uZmlnIEl0ZW0gQUNMLVN0cnVrdHVyIHZlcmbDvGdiYXIgc2luZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgRWxlbWVudGUgaW4gZGVyIHp3ZWl0ZW4gRWJlbmUgZGVyIElUU00gQ29uZmlnIEl0ZW0gQUNMLVN0cnVrdHVyIHZlcmbDvGdiYXIgc2luZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgQXJ0IHZvbiBMaW5rIChhdXMgZGVyIFRpY2tldHBlcnNwZWt0aXZlIGJlbmFubnQpIGRlbiBTdGF0dXMgZWluZXMgdmVybGlua3RlbiBDSSBiZWVpbmZsdXNzZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllcnQsIHdlbGNoZXIgVHlwIHZvbiBUaWNrZXQgZGVuIFN0YXR1cyBlaW5lcyB2ZXJrbsO8cGZ0ZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBiZWVpbmZsdXNzZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBa3R1YWxpc2llcnVuZyBkZXIgRGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGzDtnNjaGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRmFyYmUgVmVyd2VuZHVuZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpemllcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRHluYW1pc2NoZXMgRmVsZC1FcmVpZ25pc21vZHVsLCBkYXMgS29uZmlndXJhdGlvbnNkZWZpbml0aW9uZW4gYWxzIG5pY2h0IG1laHIgc3luY2hyb24gbWFya2llcnQsIHdlbm4gc2ljaCBkaWUgZGFyaW4gZW50aGFsdGVuZW4gZHluYW1pc2NoZW4gRmVsZGVyIMOkbmRlcm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaWUgYW5nZXplaWd0ZW4gRHluYW1pc2NoZW4gRmVsZGVyIGluIGRlciBBbnNpY2h0ICJ6dXPDpHR6bGljaGUgSVRTTS1GZWxkZXIiIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlIEZlbGRlciwgZGllIGluIGRlciDDnGJlcnNpY2h0c21hc2tlIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNjaGUgRmVsZGVyLCBkaWUgaW4gZGVyIFN1Y2htYXNrZSBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUgZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGUgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWt0aXZpZXJ0IGRpZSBGdW5rdGlvbiAiU2FtbWVsYWt0aW9uIiBmw7xyIGRhcyBBZ2VudGVuLUZyb250ZW5kLCB1bSB6dXIgZ2xlaWNoZW4gWmVpdCBhbiBtZWhyZXJlbiBDb25maWd1cmF0aW9uIEl0ZW1zIGFyYmVpdGVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBa3RpdmllcnQgZGllIEZ1bmt0aW9uICJTYW1tZWxha3Rpb24iIG51ciBmw7xyIGRpZSBnZWxpc3RldGVuIEdydXBwZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0VpbiBFcmVpZ25pc21vZHVsIGRhcyBiZWltIFZlcmtuw7xwZmVuIHZvbiBUaWNrZXRzIG1pdCBDb25maWd1cmF0aW9uIEl0ZW1zIGRlbiBTdGF0dXMgZGVzIENvbmZpZ3VyYXRpb24gSXRlbXMgdmVyw6RuZGVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnRmVsZGVyIGRlcyBLb25maWd1cmF0aW9uc2VsZW1lbnRpbmRleCwgZGllIGbDvHIgZGllIFZvbGx0ZXh0c3VjaGUgdmVyd2VuZGV0IHdlcmRlbi4gRmVsZGVyIHdlcmRlbiBlYmVuZmFsbHMgZ2VzcGVpY2hlcnQsIHNpbmQgYWJlciBmw7xyIGRpZSBHZXNhbXRmdW5rdGlvbmFsaXTDpHQgbmljaHQgendpbmdlbmQgZXJmb3JkZXJsaWNoLiBEaWUgQXVmbmFobWUgdm9uIEFuaMOkbmdlbiBrYW5uIGRlYWt0aXZpZXJ0IHdlcmRlbiwgaW5kZW0gZGVyIEVpbnRyYWcgYXVmIDAgZ2VzZXR6dCBvZGVyIGdlbMO2c2NodCB3aXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnSW0gSW5kZXggZGVyIEtvbmZpZ3VyYXRpb25zZWxlbWVudGUgZ2VzcGVpY2hlcnRlIEZlbGRlciwgZGllIG5lYmVuIGRlciBWb2xsdGV4dHN1Y2hlIGF1Y2ggZsO8ciBhbmRlcmUgWndlY2tlIHZlcndlbmRldCB3ZXJkZW4uIEbDvHIgZGllIHZvbGxzdMOkbmRpZ2UgRnVua3Rpb25hbGl0w6R0IHNpbmQgYWxsZSBGZWxkZXIgb2JsaWdhdG9yaXNjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlLU1vZHVscmVnaXN0cmllcnVuZyBmw7xyIGRpZSBDb25maWdJdGVtRmV0Y2gtQXVmcnVmZXJzY2hpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtTW9kdWxyZWdpc3RyaWVydW5nIGbDvHIgZGllIENvbmZpZ0l0ZW1GZXRjaC1BdWZydWZlcnNjaGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtTW9kdWxyZWdpc3RyaWVydW5nIGbDvHIgZGllIENvbmZpZ0l0ZW1GZXRjaC1BdWZydWZlcnNjaGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnRWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00gQ29uZmlndXJhdGlvbiBJdGVtLcOcYmVyc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnVm9yZmFsbFp1c3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NjaGxpZcOfdCBCZXJlaXRzdGVsbHVuZ3N6dXN0w6RuZGUgaW4gZGllIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNlbGVtZW50ZW4gaW4gZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgZWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTY2hsaWXDn3QgVm9yZmFsbHN6dXN0w6RuZGUgaW4gZGllIEtvbmZpZ3VyYXRpb25zc3VjaGUgZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgZWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICdFdmVudC1Nb2R1bCB6dXIgTGl6ZW56esOkaGx1bmcgdm9uIENvbmZpZyBJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCBkZXIgS29uZmlndXJhdGlvbnNvYmpla3RlLCBkaWUgaW0gRXJnZWJuaXMgZGllc2VyIE9wZXJhdGlvbiBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB6dXIgw5xiZXJwcsO8ZnVuZyBkZXIgR3J1cHBlLCBkaWUgZsO8ciBlaW5lIEtsYXNzZSB2ZXJhbnR3b3J0bGljaCBpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwsIHVtIGRpZSBHcnVwcGUgenUgw7xiZXJwcsO8ZmVuLCBkaWUgZsO8ciBlaW4gQ29uZmlndXJhdGlvbiBJdGVtIHZlcmFudHdvcnRsaWNoIGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCB6dW0gR2VuZXJpZXJlbiB2b24gSVRTTS1Db25maWd1cmF0aW9uIEl0ZW0tU3RhdGlzdGlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtZSBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtbWVyIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuemFobCBkZXIgS29uZmlndXJhdGlvbnNwdW5rdGUsIGRpZSBhdWYgamVkZXIgU2VpdGUgZWluZXMgU3VjaGVyZ2Vibmlzc2VzIGluIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIGRlciBLb25maWd1cmF0aW9uc3B1bmt0ZSwgZGllIGF1ZiBqZWRlciBTZWl0ZSBlaW5lcyBTdWNoZXJnZWJuaXNzZXMgaW4gZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdGUsIG5hY2ggZGVuZW4gZ2VzdWNodCB3ZXJkZW4gc29sbCwgd2llIHZpZWxlIEVpbnRyw6RnZSB1bmQgd2VsY2hlIEF0dHJpYnV0ZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4gQ29uZmlnSXRlbS1BdHRyaWJ1dGUgbcO8c3NlbiBleHBsaXppdCDDvGJlciBFbGFzdGljc2VhcmNoIGdlc3BlaWNoZXJ0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnw5xiZXJzaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBLYXRlZ29yaWVuIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RrbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkaWUgU3BhbHRlbmZpbHRlciBkZXIga2xlaW5lbiBLb25maWd1cmF0aW9uc8O8YmVyc2ljaHQuIEJpdHRlIGJlYWNodGVuIFNpZTogV2VubiBTaWUgXCdBY3RpdmVcJyBhdWYgMCBzZXR6ZW4sIGvDtm5uZW4gQWdlbnRlbiBkaWUgRWluc3RlbGx1bmdlbiBkaWVzZXIgR3J1cHBlIG51ciBpbiBpaHJlbiBwZXJzw7ZubGljaGVuIFByw6RmZXJlbnplbiBiZWFyYmVpdGVuLCBBZG1pbmlzdHJhdG9yZW4ga8O2bm5lbiBqZWRvY2ggd2VpdGVyaGluIGRpZSBFaW5zdGVsbHVuZ2VuIGVpbmVzIGFuZGVyZW4gQmVudXR6ZXJzIGJlYXJiZWl0ZW4uIFZlcndlbmRlbiBTaWUgXCdQcmVmZXJlbmNlR3JvdXBcJywgdW0genUgc3RldWVybiwgaW4gd2VsY2hlbSBCZXJlaWNoIGRpZXNlIEVpbnN0ZWxsdW5nZW4gaW4gZGVyIEJlbnV0emVyb2JlcmZsw6RjaGUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pdGlvbiB2b24gRmFyYmVuIGbDvHIgVmVyd2VuZHVuZ3NzdGF0dXMgaW4gZGVuIHBlcnPDtm5saWNoZW4gRWluc3RlbGx1bmdlbiBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBWZXJ3ZW5kdW5nc3N0YXR1cyBpbiBkZW4gcGVyc8O2bmxpY2hlbiBFaW5zdGVsbHVuZ2VuIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkaWUgenVncmlmZnNiZXJlY2h0aWd0ZW4gQmVpc3BpZWxncnVwcGVuIGRlciBHZW5lcmFsIENhdGFsb2ctQXR0cmlidXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRhcyBOYW1lbnNtb2R1bCBmw7xyIEtvbmZpZ3VyYXRpb25zb2JqZWt0a2xhc3NlbiBpbiBkZXIgRWluc3RlbGx1bmdzYW5zaWNodCBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkYXMgTnVtbWVybm1vZHVsIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RrbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGllIFNlaXRlbiwgaW4gZGVuZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkYXMgVmVyc2lvbnNzdHJpbmdtb2R1bCBmw7xyIEtvbmZpZ3VyYXRpb25zb2JqZWt0a2xhc3NlbiBpbiBkZXIgRWluc3RlbGx1bmdzYW5zaWNodCBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGFzIFZlcnNpb25zdHJpbmctVGVtcGxhdGUtVG9vbGtpdC1Nb2R1bCBmw7xyIENvbmZpZy1JdGVtLUtsYXNzZW4gaW4gZGVyIEVpbnN0ZWxsdW5nc2Fuc2ljaHQgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkZW4gVmVyc2lvbnMtVHJpZ2dlciBmw7xyIENvbmZpZy1JdGVtLUtsYXNzZW4gaW4gZGVyIEVpbnN0ZWxsdW5nc2Fuc2ljaHQgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0JlcmVjaHRpZ3VuZ3NncnVwcGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuIGbDvHIgZGllIFZlcndlbmR1bmcgZGVyIElUU00tS29uZmlndXJhdGlvbnNvYmpla3QtQW5ow6RuZ2Vha3Rpb24gaW4gZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVyIEtvbmZpZ3VyYXRpb24gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UgbnV0emVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVyIFN1Y2hlIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4genVyIFZlcndlbmR1bmcgZGVzIElUU00tU3VjaGJpbGRzY2hpcm1zIGbDvHIgS29uZmlndXJhdGlvbnNlbGVtZW50ZSBpbiBkZXIgS3VuZGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuIGbDvHIgZGllIFZlcndlbmR1bmcgZGVyIElUU00tS29uZmlndXJhdGlvbnNiYXVtYW5zaWNodCBpbiBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBEZXRhaWxhbnNpY2h0IHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBBbnNpY2h0IHp1bSBIaW56dWbDvGdlbiB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZSBudXR6ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiB6dXIgVmVyd2VuZHVuZyBkZXMgSVRTTS1Lb25maWd1cmF0aW9uc2JpbGRzY2hpcm1zIGluIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVtIEJlYXJiZWl0ZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UgbnV0emVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBIaXN0b3JpZW4tQW5zaWNodCB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZSBudXR6ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBBbnNpY2h0IHp1bSBEcnVja2VuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gQ29uZmlndXJhdGlvbiBJdGVtcyBsw7ZzY2hlbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbXMgc3VjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU2V0dHp0IGRlbiBWb3JmYWxsc3RhdHVzIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgYXV0b21hdGlzY2gsIHdlbm4gZWluIFRpY2tldCBtaXQgZWluZW0gQ29uZmlndXJhdGlvbiBJdGVtIHZlcmtuw7xwZnQgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXR6dCBkZW4gVmVyd2VuZHVuZ3NzdGF0dXMgaW4gZGVyIEZ1bmt0aW9uICJTYW1tZWxha3Rpb24iIGbDvHIgQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0enQgZGVuIFZlcndlbmR1bmdzc3RhdHVzIGbDvHIgZGllIEZ1bmt0aW9uICJTYW1tZWxha3Rpb24iIGbDvHIgQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmUgVmVya27DvHBmdW5nIGltIE1lbsO8LCBkaWUgZXMgZXJsYXVidCBlaW4gQ29uZmlndXJhdGlvbiBJdGVtIG1pdCBlaW5lbSBhbmRlcmVuIE9iamVrdCBpbiBkZXIgRGV0YWlsYW5zaWNodCBkZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgenUgdmVya27DvHBmZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIENvbmZpZ3VyYXRpb24gSXRlbS3DnGJlcnNpY2h0IGRpZSBWZXJrbsO8cGZ1bmcgenVyIEhpc3RvcmllIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGV0YWlsYW5zaWNodCBkaWUgVmVya27DvHBmdW5nIHp1ciBIaXN0b3JpZSBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBEZXRhaWxhbnNpY2h0IGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZGllIFZlcmtuw7xwZnVuZyB6dW0gTMO2c2NoZW4gZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW0gTWVuw7wgYW4sIHVtIGRpZSBMaW5rcyB6dSBkZW4gS29uZmlndXJhdGlvbnNlbGVtZW50ZW4gaW4gZWluZXIgQmF1bWFuc2ljaHQgYW56dXplaWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBpbSBNZW7DvCBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLcOcYmVyc2ljaHQgZGllIFZlcmtuw7xwZnVuZyB6dW0gRHVwbGl6aWVyZW4gZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIERldGFpbGFuc2ljaHQgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkaWUgVmVya27DvHBmdW5nIHp1bSBEdXBsaXppZXJlbiBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIERldGFpbGFuc2ljaHQgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkaWUgVmVya27DvHBmdW5nIHp1bSBCZWFyYmVpdGVuIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBpbSBNZW7DvCBkZXIgRGV0YWlsYW5zaWNodCBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW0gZWluZSBWZXJrbsO8cGZ1bmcgenVtIFp1csO8Y2tnZWhlbiBhdWYgZGllIHZvcmhlcmlnZSBBbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBEZXRhaWxhbnNpY2h0IGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZGllIFZlcmtuw7xwZnVuZyB6dW0gRHJ1Y2tlbiBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmUgVmVya27DvHBmdW5nIGltIE1lbsO8IGRlciBBbnNpY2h0ICJDb25maWd1cmF0aW9uIEl0ZW0tw5xiZXJzaWNodCIsIHVtIHp1ciBEZXRhaWxhbnNpY2h0IGRlcyBDb25maWd1cmF0aW9uIEl0ZW1zIHp1IGdlbGFuZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBkaWUgQ29uZmlndXJhdGlvbiBJdGVtLUhpc3RvcmllICh1bWdla2VocnRlIFJlaWhlbmZvbGdlKSBpbSBBZ2VudGVuLUludGVyZmFjZSBhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnRGllIFN0YW5kYXJka2F0ZWdvcmllLCBkaWUgYW5nZXplaWd0IHdpcmQsIHdlbm4ga2VpbmUgS2F0ZWdvcmllIGF1c2dld8OkaGx0IGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0RlciBJZGVudGlmaWthdG9yIGbDvHIgZWluIENvbmZpZ3VyYXRpb24gSXRlbSwgYnNwdy4gIkNvbmZpZ0l0ZW0jIiAsICJNZWluQ29uZmlnSXRlbSMiLiBEZXIgU3RhbmRhcmQgaXN0ICJDb25maWdJdGVtIyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICdUaXRlbCBkZXIgw5xiZXJzaWNodCBkZXIgw7ZmZmVudGxpY2hlbiBPYmVyZmzDpGNoZSAoL3B1YmxpYy5wbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnVGl0ZWwgZGVyIFN1Y2hlIGRlciDDtmZmZW50bGljaGVuIE9iZXJmbMOkY2hlICgvcHVibGljLnBsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdMw7ZzdCBhdXRvbWF0aXNjaCBkZW4gQXVmcnVmIHZvbiBDb25maWdJdGVtRmV0Y2ggYXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9uIFN0cmluZy1BdXNkcnVjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uIFN0cmluZy1Nb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIEF1c2zDtnNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICdEZWZpbmllcnQsIG9iIEZlbGRlciBhdXRvbWF0aXNjaCBiZWbDvGxsdCAoMSksIHVuZCBvYiBhdXRvbWF0aXNjaCBiZWbDvGxsdGUgRmVsZGVyIGluIGRlbiBUaWNrZXRmb3JtdWxhcmVuIGF1c2dlYmxlbmRldCB3ZXJkZW4gc29sbGVuICgyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnT2IgZGllIEF1c2bDvGhydW5nIHZvbiBDb25maWdJdGVtQUNMIGR1cmNoIMOcYmVycHLDvGZ1bmcgdm9uIHp3aXNjaGVuZ2VzcGVpY2hlcnRlbiBGZWxkYWJow6RuZ2lna2VpdGVuIHZlcm1pZWRlbiB3ZXJkZW4ga2Fubi4gRGllcyBrYW5uIGRpZSBMYWRlemVpdGVuIHZvbiBGb3JtdWxhcmVuIHZlcmJlc3Nlcm4sIG11c3MgYWJlciBkZWFrdGl2aWVydCB3ZXJkZW4sIHdlbm4gQUNMTW9kdWxlIGbDvHIgSVRTTUNvbmZpZ0l0ZW0tIHVuZCBGb3JtLVJldHVyblR5cGVzIHZlcndlbmRldCB3ZXJkZW4gc29sbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnRGllIGFsbGdlbWVpbmVuIEluZm9ybWF0aW9uZW4gd2VyZGVuIGluIGRlciBLb3BmemVpbGUgYW5nZXplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ0tsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdHbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdQb3N0LXByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnUHJlLXByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnUHJvZHVrdGl2JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IFpvbGwgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBab2xsICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgWm9sbCAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBab2xsICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktWm9sbC1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBab2xsICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IFpvbGwgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLVpvbGwtR2VzdGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgWm9sbCAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLVpvbGwtR2VzdGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgWm9sbCAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgWm9sbCAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgWm9sbCAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IFpvbGwgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgWm9sbCAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgWm9sbCAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgWm9sbCAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgWm9sbCAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgWm9sbCAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IFpvbGwgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBab2xsICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgWm9sbCAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgWm9sbCAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBab2xsICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IFpvbGwgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBab2xsICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgWm9sbCAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IFpvbGwgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IFpvbGwgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IFpvbGwgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgWm9sbCAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBab2xsICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IFpvbGwgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICdBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0J1Y2hoYWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICdCdWNoaGFsdHVuZ3NpbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkcmVzc3p1d2Vpc3VuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnVmVyd2FsdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ2VzIFRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICdBcGFjaGUtTGl6ZW56JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnR2Vyw6R0ZXR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnQlNELUxpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcmlla2FwYXppdMOkdCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0Fra3UtVHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnR2Viw6R1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1cy1TY2huaXR0c3RlbGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJ0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLUtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXppdMOkdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYXppdMOkdCBwcm8gR3JhZmlra2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLYXJ0ZW5udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLYXJ0ZW5sZXNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLYXJ0ZSBUeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0t1bmRlbi1aZXJ0aWZpa2F0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLdW5kZW4tU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2xpZW50LUthdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdUYWt0cmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVGFrdGZyZXF1ZW56JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDb2RlIFNpZ25pbmctWmVydGlmaWthdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuenRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdCZXJhdHVuZ3N2ZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IFZlcnRyaWVic3BhcnRuZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdDb250YWluZXItVmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1ZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1ZlcnRyYWdzYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnVmVydHJhZ3NkYXVlciB2b20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnVmVydHJhZ3NkYXVlciBiaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnU2NobnVybG9zZXMgVGVsZWZvbiAoREVDVC1UZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLb3N0ZW50csOkZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnQW56YWhsIGRlciBMaXplbnplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRXJzdGVsbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJ0NyZWF0aXZlIENvbW1vbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdCZW51dHplcmRlZmluaWVydGVzIEdlc3RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2aWVydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLVNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0dW0gZGVyIFJlY2hudW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXR1bSBkZXIgQmVzdGVsbHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0dW0gZGVyIELDvHJnc2NoYWZ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdHVtIGRlciBWZXLDtmZmZW50bGljaHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnRG9rdW1lbnRlbnNpZ25hdHVyLVplcnRpZmlrYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICdFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0ktR2VzdGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1NYWlsLVplcnRpZmlrYXRlIChTL01JTUUtWmVydGlmaWthdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICdFaW5nZWJldHRldGUgU0lNIChlU0lNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQXJiZWl0c3ZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdFbmQtSVAtQWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0VuZGUgZGVyIFVudGVyc3TDvHR6dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVmVyZmFsbHNkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuZXMgRmVzdHBsYXR0ZW5sYXVmd2Vyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTY2h3dW5ncmFkLUVuZXJnaWVzcGVpY2hlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm1mYWt0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzZXZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnR1BMIChHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0FsbGdlbWVpbmUgSW5mb3JtYXRpb25lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpa2thcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlra2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0hhcmR3YXJlLU1vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIYXJkd2FyZSBHZXdpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdLb3BmaMO2cmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtUHJvdG9rb2xsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXTDpHRzLSB1bmQgWnVncmlmZnNtYW5hZ2VtZW50IChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRhcm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnUmVjaG51bmdzbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENELU1vbml0b3IgKEZsw7xzc2lna3Jpc3RhbGxhbnplaWdlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVELU1vbml0b3IgKExpY2h0IGVtaXR0aWVyZW5kZSBEaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnRmVzdG5ldHp0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0JyZWl0ZW5ncmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnU2NoaWNodCAxOiBQaHlzaWthbGlzY2hlIFNjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnU2NoaWNodCAyOiBEYXRlbnZlcmJpbmR1bmdzc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnU2NoaWNodCAzOiBOZXR6d2Vya3NjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnU2NoaWNodCAzOiBOZXR6d2Vya3NjaGljaHQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdTY2hpY2h0IDQ6IFRyYW5zcG9ydHNjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ1NjaGljaHQgNTogU2l0enVuZ3NzY2hpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ1NjaGljaHQgNjogUHLDpHNlbnRhdGlvbnNzY2hpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnU2NoaWNodCA3OiBBbndlbmR1bmdzc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdQYWNodHZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaXplbnp2ZXJlaW5iYXJ1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJ0xpemVuemFuemFobCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpemVuenNjaGzDvHNzZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGl6ZW56LVR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGl6ZW56emVpdHJhdW0gdm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGl6ZW56ZGF1ZXIgYmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtLUVpc2VuLVBob3NwaGF0LUFra3UgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLUlvbmVuLUFra3UgKExpLUlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdEYXJsZWhlbnN2ZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdBbmdlc2llZGVsdCBpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMw6RuZ2VuZ3JhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdIZXJzdGVsbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbWFsZSBUcmFnZsOkaGlna2VpdCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnU3BlaWNoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdTcGVpY2hlciBUeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnTWljcm8tU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnSGFuZHludW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWwvRWluZ2ViZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdCZXNjaHJlaWJ1bmcgZGVzIE1vZGVsbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvci1BdWZsw7ZzdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ01vbml0b3IgR3LDtsOfZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01hdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICdOYW5vLVNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0endlcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnTmV0endlcmstSW5mb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ05ldHp3ZXJrLUluZm9ybWF0aW9uZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ05ldHp3ZXJrc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1NZXRhbGxoeWRyaWQtQWtrdSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnVmVydHJhdWxpY2hrZWl0c3ZlcmVpbmJhcnVuZyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQW56YWhsIGRlciBDUFVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0FuemFobCBkZXIgUkFNLU1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdBbnphaGwgZGVyIEdyYWZpa2thcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC1Nb25pdG9yIChPcmdhbmlzY2hlIExldWNodGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdCZXRyaWVic2tvc3Rlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdCZXN0ZWxsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnU29uc3RpZ2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdBdXNnw6RuZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNjaGFmdHNhYmtvbW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICdVbmJlZnJpc3RldGUgTGl6ZW56ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnVGVsZWZvbiAvIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnUnVmbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9uIFR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ1BoeXNpa2FsaXNjaGUgS2VybmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdHJvbWxpZWZlcnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnUHVibGljIERvbWFpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdHZWthdWZ0IGJlaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFjay1UaWVmZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JlZ2FsZWluaGVpdGVuIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUmF1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1LYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtWmVydGlmaWthdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdLYXVmdmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpdGVudGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdWZXJzY2hsb3NzZW5lIEJsZWktU8OkdXJlLUJhdHRlcmllIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICdTaXR6cGxhdHpsaXplbnplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW5udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyLVNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnRGllbnN0bGVpc3R1bmdzdmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpY2UtVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJ1NoYXJld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ0J1Y2hzZSBUeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1JlZG5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQtSVAtQWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnU3RvcmFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1NwZWljaGVyLVBhcnRpdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICdBYm9ubmVtZW50LWJhc2llcnRlIExpemVuemVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdOaWVkZXJsYXNzdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdadXNhbW1lbmZhc3N1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUaGluIENsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVGhyZWFkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdHcmFmaWtrYXJ0ZW4tUkFNIGluc2dlc2FtdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIGluc2dlc2FtdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdUb3VjaHNjcmVlbi1Nb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVHVybSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLUh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSLUhlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICdWaXJ0dWVsbGVyIENsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLVRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnVm9sdW1lbmxpemVuemVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/el_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfOk861zr3Ouc66zqwgz4PPhM6/zrnPh861zq/OsSDOu861zrnPhM6/z4XPgc6zzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfOoc+FzrjOvM6vz4POtc65z4IgzrPOuc6xIM61zrnPg861z4HPh8+MzrzOtc69zrEgzrTOtc60zr/OvM6tzr3OsSDOsc6vz4TOt8+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ86hz4XOuM68zq/Pg861zrnPgiDOs865zrEgzrTOtc60zr/OvM6tzr3OsSDOtc6+zrXPgc+Hz4zOvM61zr3Ot8+CIM6xz4DOrM69z4TOt8+DzrfPgic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ86bzrXOuc+Ezr/Phc+BzrPOuc66z4wgz4PPjc+Dz4TOt868zrEgzrTOuc6xzrrOv868zrnPg8+Ezq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfOkc67zrvOsc6zzq4gzr/Pgc65z4POvM6/z40gzrrOu86sz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICfOkc67zrvOsc6zzq4gzr/Pgc65z4POvM6/z40gz4HPjM67zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ86Uzq3Pg868zrXPgiDOus67zqzPg861z4nOvSBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfOlc60z44gzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM61zrnPg86xzrPOrM6zzrXPhM61IM60zq3Pg868zrXPgiDOus67zqzPg861z4nOvSBSZWFkeTJJbXBvcnQgz4DOv8+FIM+AzrHPgc6/z4XPg865zqzOts6/z4XOvSDPhM6xIM+AzrnOvyDPg8+Fzr3Ot864zrnPg868zq3Ovc6xIM+Dz4TOv865z4fOtc6vzrEgz4HPhc64zrzOr8+DzrXPic69LiDOoM6xz4HOsc66zrHOu86/z43OvM61IM+DzrfOvM61zrnPjs+Dz4TOtSDPjM+EzrkgzrXOvc60zq3Ph861z4TOsc65IM69zrEgzrHPgM6xzrnPhM6/z43Ovc+EzrHOuSDOus6sz4DOv865zrXPgiDPgM+Bz4zPg864zrXPhM61z4Igz4HPhc64zrzOr8+DzrXOuc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfOlc69zrfOvM6tz4HPic+Dzrcgz4XPhs65z4PPhM6szrzOtc69z4nOvSDOv869z4TOv8+Ezq7PhM+Jzr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICfOlc65z4POsc6zz4nOs86uIM+AzrHOus6tz4TPic69IM66zrvOrM+DzrXPic69IFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ29uZmlnIEl0ZW0gQ2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ86hz4zOu86/z4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnzqPPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ86mzq/Ou8+Ez4HOvyDOs865zrEgz4TOrM6+zrXOuc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgzrzOuc6xIM66zrvOrM+DzrcgzrHPgM+MIM+EzrcgzrvOr8+Dz4TOsSDOs865zrEgzr3OsSDOtM63zrzOuc6/z4XPgc6zzq7Pg861z4TOtSDOrc69zrEgzr3Orc6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfOpM6szr7Otyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ86czrHOts65zrrOriDOtc69zq3Pgc6zzrXOuc6xIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnzprOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ86azrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnzqPPjc69zrTOtc+DzrzOv8+CIM+DzrUgzqzOu867zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ86czrcgzq3Os866z4XPgc6/z4IgzrHPgc65zrjOvM+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ86fIM6xz4HOuc64zrzPjM+CIM61zr3PjM+CIM6szrvOu86/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrzOtSDPhM6/IM6/z4DOv86vzr8gzrjOsSDPg8+Fzr3OtM61zrjOtc6vLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ86Uzq/Ous+Ez4XOvyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOpM6/IM+Mzr3Ov868zrEgzrHPhc+Ezr/PjSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ86kzr8gz4zOvc6/zrzOsSDPh8+BzrfPg865zrzOv8+Azr/Ouc61zq/PhM6xzrkgzq7OtM63IM6xz4DPjCDPhM6xIENvbmZpZ0l0ZW1zIM68zrUgz4TOv869IM6xzrrPjM67zr/Phc64zr8gzrHPgc65zrjOvM+MKC3Ov8+Fz4IpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM6tzrrOtM6/z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOkc+BzrnOuM68z4zPgiDOrc66zrTOv8+DzrfPgiDOsc+Fz4TOv8+NIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ86fIM6xz4HOuc64zrzPjM+CIM6tzrrOtM6/z4POt8+CIM+Hz4HOt8+DzrnOvM6/z4DOv865zrXOr8+EzrHOuSDOrs60zrcgzrHPgM+MIM+EzrEgQ29uZmlnSXRlbXMgzrzOtSDPhM6/zr0oz4TOv8+Fz4IpIM6xzrrPjM67zr/Phc64zr8oLc6/z4XPgikgzrHPgc65zrjOvM+MKC3Ov8+Fz4IpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnzprOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ86azrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ86Zz4PPhM6/z4HOuc66z4wgz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+COiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfOmc+Dz4TOv8+Bzq/OsSDOoM61z4HOuc61z4fPjM68zrXOvc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfOp8+Bz4zOvc6/z4IgzrTOt868zrnOv8+Fz4HOs86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfOoM+Bzr/Oss6/zrvOriDOts6/z4XOvCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgzqPPhM6/zrnPh861zq/OsSDOsc69zqwgz4POtc67zq/OtM6xJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfOlM61zr0gzrLPgc6tzrjOt866zrHOvSDOtM61zrTOv868zq3Ovc6xIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgzrHPhc+Ez4wgz4TOvyDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfOlc66z4TOrc67zrXPg863IM6xzr3Osc62zq7PhM63z4POt8+CJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgzrPOuc6xIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfOlc+Azq/PgM61zrTOvyDOss6szrjOv8+Fz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICfOnM61zrPOrc64z4XOvc+DzrcvzqPOvM6vzrrPgc+Fzr3Pg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ86Vz4DOr8+EzrXPhc6+zrcgzrzOrc6zzrnPg8+Ezr/PhSDOtc+AzrnPgM6tzrTOv8+FIM+Dz4XOvc60zq3Pg861z4nOvSDOs865zrEgz4TOvyBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ86jz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfOoM67zrfPgc6/z4bOv8+Bzq/Otc+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ86kz4HOrc+Hzr/Phc+DzrEgzrrOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnzqTPgc6tz4fOv8+Fz4POsSDOus6xz4TOrM+Dz4TOsc+Dzrcgz4PPhc68zrLOrM69z4TOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ86kzrXOu861z4XPhM6xzq/OsSDOsc67zrvOsc6zzq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnzqTOtc67zrXPhc+EzrHOr86xIM6xzrvOu86xzrPOriDOsc+Az4wnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICfOpM6xIENvbmZpZ0l0ZW1zIM+DzrHPgic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfOkc69zrHOts6uz4TOt8+DzrcgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ86YzrEgzrXOuc+DzrHPh864zr/Pjc69IM6/zrkgzrHOus+MzrvOv8+FzrjOtc+CIM66zrvOrM+DzrXOuc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ86YzrEgzrXOuc+DzrHPh864zr/Pjc69IM6/zrkgzrHOus+MzrvOv8+FzrjOv865IM+Bz4zOu86/zrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnzqPOt868zrXOuc+Oz4PPhM61IM+Mz4TOuSDOuM6xIM60zrfOvM65zr/Phc+BzrPOt864zr/Pjc69IM61z4DOr8+DzrfPgiDPhM6xIM6xzr3PhM6vz4PPhM6/zrnPh86xIM60z4XOvc6xzrzOuc66zqwgz4DOtc60zq/OsSDOus6xzrkgzr/OuSDOus67zqzPg861zrnPgiBHZW5lcmFsQ2F0YWxvZyDOus6xzrkgzrTOtc69IM+Fz4DOrM+Bz4fOtc65IM6xz4XPhM+MzrzOsc+EzrcgzrHPhs6xzq/Pgc61z4POty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfOmM6tzrvOtc+EzrUgzr3OsSDPgM+Bzr/Ph8+Jz4HOrs+DzrXPhM61Oyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfOp8+BzrXOuc6szrbOtc+Dz4TOtSBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnzp8gzr/Pgc65z4POvM+Mz4IgzrTOtc69IM61zq/Ovc6xzrkgzq3Os866z4XPgc6/z4IgzrrOsc+EzrHOus61z4HOvM6xz4TOuc+DzrzPjM+CIFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnzpXPgM65z4POus+Mz4DOt8+Dzrc6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzq3Ph861zrkgzrTOv864zrXOryBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnzqfPgc61zrnOrM62zrXPg8+EzrUgz4TOv8+FzrvOrM+HzrnPg8+Ezr/OvSDOrc69zrEgzrXPgM65zrvOtc6zzrzOrc69zr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ86UzrXOvSDOrc+HzrXPhM61IM+Az4HPjM+DzrLOsc+DzrcgzrXOs86zz4HOsc+Gzq7PgiDPg861IM6xz4XPhM+MIM+Ezr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+COiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnzpTOtc69IM6tz4fOtc65IM6/z4HOuc+Dz4TOtc6vIM6/z4HOuc+DzrzPjM+CIM6zzrnOsSDPhM63zr0gzrrOu86sz4POtyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ86kzr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CICIlcyIgzrTOtc69IM6yz4HOrc64zrfOus61IM+Dz4TOtyDOss6sz4POtyDOtM61zrTOv868zq3Ovc+Jzr0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnzpTOtc69IM68z4DPjM+BzrXPg861IM69zrEgzrTOuc6xzrPPgc6sz4jOtc65IM+Ezr8gY29uZmlnaXRlbSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ86UzrXOvSDOss+Bzq3OuM63zrrOtSDOrc66zrTOv8+DzrcgzrPOuc6xIM+Ezr8gQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzrTOr869zrXPhM6xzrkgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCDOriBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IM66zrHOvM6vzrEgz4DPgc+Mz4POss6xz4POtyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM68z4DOv8+BzrXOryDOvc6xIM61zrzPhs6xzr3Ouc+Dz4TOtc6vIM+Ezr8gzrnPg8+Ezr/Pgc65zrrPjCwgzrTOtc69IM60zq/Ovc61z4TOsc65IENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfOlM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrXOvM+GzrHOvc65z4PPhM61zq8gz4TOvyDOuc+Dz4TOv8+BzrnOus+MLCDOtM61zr0gzq3Ph86/z4XOvSDOtM6/zrjOtc6vIM60zrnOus6xzrnPjs68zrHPhM6xIM+Az4HPjM+DzrLOsc+DzrfPgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ86dzq3OvyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ86dzq3OsSDOrc66zrTOv8+DzrcgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM65z4Igzr/OvM6szrTOtc+CIM60zrnOus6xzrnPic68zqzPhM+Jzr0gz4TOv8+FIM+AzrHPgc6xzrTOtc6vzrPOvM6xz4TOv8+CIM+Ez4nOvSDOs861zr3Ouc66z47OvSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+Ozr0gzrrOsc+EzrHOu8+MzrPOv8+FLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfOlc69zrfOvM6tz4HPic+DzrcgzrrOsc+EzqzPg8+EzrHPg863z4Igz4DOtc+BzrnPg8+EzrHPhM65zrrOv8+NIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgzrTOuc6xzrPPgc6sz4bOt866zrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfOoM+Bzr/Pg8+Ezq3OuM63zrrOtSDPg8+Nzr3OtM61z4POvM6/z4Igz4DPgc6/z4IgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICfOlM65zrHOs8+BzrHPhs6uIM+Dz4XOvc60zq3Pg868zr/PhSDPgM+Bzr/PgiAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ86fIM6/z4HOuc+DzrzPjM+CIENvbmZpZ0l0ZW0gzrXOvc63zrzOtc+Bz47OuM63zrrOtSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnzozOvc6/zrzOsSDOtc69zrfOvM61z4HPic68zq3Ovc6/IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfOlM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrXOvM+GzrHOvc65z4PPhM61zq8gz4TOvyDPg8+Ezr/Ouc+HzrXOr86/LCDOtM61zr0gzq3Ph86/z4XOvSDOtM6/zrjOtc6vIM60zrnOus6xzrnPjs68zrHPhM6xIM+Az4HPjM+DzrLOsc+DzrfPgiDOs865zrEgz4TOvyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfOiM66zrTOv8+DzrcgJXMgzrTOuc6xzrPPgc6sz4bOt866zrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IENvbmZpZ0l0ZW1JRCDOriBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ86UzrXOvSDOvM+Azr/Pgc61zq8gzr3OsSDOtc68z4bOsc69zrnPg8+EzrXOryDPhM6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiwgzrTOtc69IM6tz4fOv8+Fzr0gzrTOv864zrXOryDOtM65zrrOsc65z47OvM6xz4TOsSDPgM+Bz4zPg86yzrHPg863z4IhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnzqTOvyBDb25maWdJdGVtSUQgJXMgzrTOtc69IM6yz4HOrc64zrfOus61IM+Dz4TOtyDOss6sz4POtyDOtM61zrTOv868zq3Ovc+Jzr0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfPhM+Fz4DPic68zq3Ovc6/IM6xz4DPjCAlcyDPg8+Ezr8gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ86czrcgzq3Os866z4XPgc6/IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc6/zr3PhM6xzrkgzrTOuc66zrHOuc+OzrzOsc+EzrEgz4DPgc+Mz4POss6xz4POt8+CIM6zzrnOsSDOsc+Fz4TOriDPhM63zr0gzrrOu86sz4POtyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ86azrHOvc6tzr3OsSDOsc+Azr/PhM6tzrvOtc+DzrzOsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfOkc+Azr/PhM61zrvOrc+DzrzOsc+EzrEgzrHOvc6xzrbOrs+EzrfPg863z4IgzrHOvc+EzrnOus61zrnOvM6tzr3Ov8+FIENvbmZpZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnzpTOtc69IM68z4DOv8+BzrXOryDOvc6xIM61zrzPhs6xzr3Ouc+Dz4TOtc6vIM+Ezr8gz4PPhM6/zrnPh861zq/OvywgzrTOtc69IM6tz4fOv8+Fzr0gzrTOv864zrXOryDOtM65zrrOsc65z47OvM6xz4TOsSDPgM+Bz4zPg86yzrHPg863z4IgzrPOuc6xIM+Ezr8gQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnzqTOvyBDb25maWdJdGVtIM60zrXOvSDOss+Bzq3OuM63zrrOtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnzpTOtc69IM6yz4HOrc64zrfOus6xzr0gzrXOus60z4zPg861zrnPgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfOu861zrnPhM6/z4XPgc6zzrnOus+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfPgM+Bzr/Otc65zrTOv8+Azr/Or863z4POtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ8+AzrXPgc65z4PPhM6xz4TOuc66z4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ86XIM66zrHPhM6sz4PPhM6xz4POtyDOsc69zqzPgM+Ez4XOvs63z4IgzrHPhc+Ezr/PjSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOlyDOus6xz4TOrM+Dz4TOsc+Dzrcgz4PPhc68zrLOrM69z4TOv8+CIM6xz4XPhM6/z40gz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnzpTOtc69IM+Fz4DOrM+Bz4fOtc65IM6szrTOtc65zrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnzqbOr867z4TPgc6/IM6szrrPhc+Bzr8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfOn865IM+AzrHPgc6xzrzOrc+Ez4HOv8+Fz4IgzrHOvc6xzrbOrs+EzrfPg863z4IgzrXOr869zrHOuSDOrM66z4XPgc61z4IhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnzpXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM66zrHPhM6sz4PPhM6xz4POt8+CIM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfOpM+Bzq3Ph86/zr0gz4DOtc+BzrnPg8+EzrHPhM65zrrPjCDOpM+Nz4DOv8+CIM66zrHPhM6sz4PPhM6xz4POt8+CJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ86czrXPhM6xzr7PjSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnzqDOtc+BzrnOv8+BzrnPg868zr/OryDOus67zqzPg863z4IgzrPOuc6xIM+Ezr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfOlc+AzrnOu86tzr7PhM61IM68zq/OsSDOriDPgM61z4HOuc+Dz4PPjM+EzrXPgc61z4IgzrrOu86sz4POtc65z4IgzrPOuc6xIM69zrEgz4DOtc+BzrnOv8+Bzq/Pg861z4TOtSDPhM6xIM61z4DOuc67zq3Ovs65zrzOsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ86gzrXPgc65zr/Pgc65z4POvM6/zq8gzrrOu86sz4POt8+CIM6zzrnOsSDPhM6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ86Vz4DOuc67zq3Ovs+EzrUgzrzOr86xIM6uIM+AzrXPgc65z4PPg8+Mz4TOtc+BzrXPgiDOus67zqzPg861zrnPgiDOs865zrEgzr3OsSDPgM61z4HOuc6/z4HOr8+DzrXPhM61IM+EzrEgzrXPgM65zrvOrc6+zrnOvM6xIM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ86Uz4XOvc6xzrzOuc66z4wgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKM6IzrrOtM6/z4POtyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOsc69zrHPhs6/z4HOrM+CIM+Dz4XOvc60zq3Pg868zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfOlc6szr0gzrHPhc+Ezq4gzrcgz4PPjc69zrTOtc+DzrcgzrnPg8+Hz43Otc65IM6zzrnOsSDPhM6/IENvbmZpZ0l0ZW0gzq4gz4TOtyDPg8+EzrHPhM65zrrOriDOrc66zrTOv8+Dzrcgz4TOv8+FIM6xzr3PhM65zrrOtc65zrzOrc69zr/PhSDOsc69zrHPhs6/z4HOrM+CLiDOnyDPhc+Azr/Ou86/zrPOuc+DzrzPjM+CIM+EzrfPgiDPhM+Bzq3Ph86/z4XPg86xz4IgzrrOsc+EzqzPg8+EzrHPg863z4Igz4PPhc68zrLOrM69z4TOv8+CIM61zrrPhM61zrvOtc6vz4TOsc65IM68z4zOvc6/IM+DzrUgzrTPhc69zrHOvM65zrrOrc+CIM+Dz4XOvc60zq3Pg861zrnPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfOlc+AzrnOu86tzr7PhM61IM+Ezr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOvM61IM6yzqzPg863IM+Ezr8gzr/PgM6/zq/OvyDOuM6xIM6zzq/Ovc61z4TOsc65IM63IM6xzr3Osc62zq7PhM63z4POtyDPhM+Jzr0gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ86XIM6yzrHPg865zrrOriDOtM6/zrzOriDOtM61zr0gzrXOr869zrHOuSDOrc6zzrrPhc+BzrcuIM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzrTPjs+Dz4TOtSDOrc69zrEgaGFzaCDOvM61IM60zrXOtM6/zrzOrc69zrEgz4POtSDOvM6/z4HPhs6uIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnzpHPgM6xzrnPhM61zq/PhM6xzrkgzrcgzq3Ovc6xz4HOvs63IM+EzrfPgiDPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqzPgiBZQU1MIM68zrUgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnzpTOtc69IM6uz4TOsc69IM60z4XOvc6xz4TOriDOtyDOtc66zrrOsc64zqzPgc65z4POtyDPhM6/z4Ugz4DOr869zrHOus6xIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ86UzrXOvSDOss+Bzq3OuM63zrrOsc69IM+Dz4fOtc+EzrnOus6sIM60z4XOvc6xzrzOuc66zqwgz4DOtc60zq/OsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ86UzrXOvSDOrs+EzrHOvSDOtM+Fzr3Osc+Ezq4gzrcgzrXOuc+DzrHOs8+JzrPOriDPg8+Ezr/OvSDPgM6vzr3Osc66zrEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICfOlc65z4POrs+HzrjOt8+DzrHOvSAwIM6zz4HOsc68zrzOrc+CIM+Dz4TOv869IM+Azq/Ovc6xzrrOsSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnzpzOrc6zzrnPg8+Ezr/PgiDOsc+BzrnOuM68z4zPgiDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnzqPPhc68zrLOv867zr/Pg861zrnPgc6sIM6tzrrOtM6/z4POt8+CJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ86jz4bOrM67zrzOsSDPg8+FzrPPh8+Bzr/Ovc65z4POvM6/z40gz4TPic69IM6/z4HOuc+DzrzPjs69LiDOlc67zq3Os86+z4TOtSDPhM6/IM6xz4HPh861zq/OvyDOus6xz4TOsc6zz4HOsc+Gzq7Pgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfOiM+HzrXPhM61IM6/z4HOuc+DzrzOv8+Nz4IgSVRTTUNvbmZpZ0l0ZW0gz4DOv8+FIM60zrXOvSDOtc6vzr3Osc65IM+Dz4XOs8+Hz4HOv869zrnPg868zq3Ovc6/zrkuIM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzrHOvc6xz4DPhM+Nzr7PhM61IM+EzrnPgiDOsc67zrvOsc6zzq3PgiDPhM+Jzr0gzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ86bzrXOuc+Ezr/Pjc+BzrPOt8+DzrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfOo8+Fzr3PhM6uz4HOt8+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfOoM65zrvPjM+Ezr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnzqDPgc6/zrPPgc6xzrzOvM6xz4TOuc+DzrzOrc69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnzpXPgM65z4POus61z4XOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnzqPPhc69z4TOsc6+zrnOv8+Nz4fOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ86Rzr3Osc+DzrrPjM+AzrfPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfOlM6/zrrOuc68zq4vUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ86Vz4DOuc+DzrrPjM+AzrfPg863IM66zrHOuSDOtc+AzrnOss61zrLOsc6vz4nPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ86VzrnPg86xzrPPic6zzq4gzrrOu86sz4POtc+Jzr0vz4HPjM67z4nOvSDOus6xzrkgz4TPic69IM+Dz4fOtc+EzrnOus+Ozr0gz4DOtc60zq/Pic69IM+Ezr/Phc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnzqDPgc6/zq3Ous+Fz4jOtSDPg8+GzqzOu868zrEgzrrOsc+Ezqwgz4TOt869IM61zrnPg86xzrPPic6zzq4gz4TOt8+CIM66zrvOrM+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIM6az4HPhc+Gz4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIM6VzrzPhs6xzr3Or862zrXPhM6xzrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ86Vz4DOuc+Ez4HOrc+AzrXOuSDOtc66z4TOtc+EzrHOvM6tzr3Otc+CIM+Dz4XOvc64zq7Ous61z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Az4HOrM66z4TOv8+BzrEuIM6czrUgzrHPhc+Ezq4gz4TOtyDOtM+Fzr3Osc+Ez4zPhM63z4TOsSDOvM+Azr/Pgc61zq/PhM61IM69zrEgzrHOvc6xzrbOt8+Ezq7Pg861z4TOtSDPgC7Phy4gz4TOvyDPjM69zr/OvM6xIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOvM61IM+Ezq3PhM6/zrnOv8+FIM61zq/OtM6/z4XPgiDPg8+Fzr3OuM6uzrrOtc+CIM+Mz4DPic+CICIoKmtleTEqJiYqa2V5MiopIiDOriAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ86Vz4DOuc+Ez4HOrc+AzrXOuSDOtc66z4TOtc+EzrHOvM6tzr3Otc+CIM+Dz4XOvc64zq7Ous61z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86xz4TPjs69LiDOnM61IM6xz4XPhM6uIM+EzrcgzrTPhc69zrHPhM+Mz4TOt8+EzrEgzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM6xzr3Osc62zrfPhM6uz4POtc+EzrUgz4Auz4cuIM+Ezr8gz4zOvc6/zrzOsSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrzOtSDPhM6tz4TOv865zr/PhSDOtc6vzrTOv8+Fz4Igz4PPhc69zrjOrs66zrXPgiDPjM+Az4nPgiAiKCprZXkxKiYmKmtleTIqKSIgzq4gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfOlc66z4fPic+BzrfOuM6tzr3PhM6xIENJcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSXMgz4DOv8+FIM6xzr3Osc+Ezq/OuM61zr3PhM6xzrkgz4PPhM63zr0gzrXPhM6xzrnPgc61zq/OsS3PgM61zrvOrM+EzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgz4DOv8+FIM6tz4fOv8+Fzr0gzrXOus+Hz4nPgc63zrjOtc6vIM+DzrUgz4fPgc6uz4PPhM63IM+AzrXOu86sz4TOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnzqHPhc64zrzOr8+DzrXOuc+CIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ86VzrvOrc6zzr7PhM61IM6zzrnOsSDOrc69zrEgzrzOv869zrHOtM65zrrPjCDPjM69zr/OvM6xIM68z4zOvc6/IM61zr3PhM+Mz4Igz4TOt8+CIM6vzrTOuc6xz4IgzrrOu86sz4POt8+CIENvbmZpZ0l0ZW0gKFwnY2xhc3NcJykgzq4gz4POtSDPgM6xzrPOus+Mz4POvM65zr8gzrXPgM6vz4DOtc60zr8gKFwnZ2xvYmFsXCcpLCDPgM+BzqzOs868zrEgz4DOv8+FIM+DzrfOvM6xzq/Ovc61zrkgz4zPhM65IM66zqzOuM61IM+Fz4DOrM+Bz4fOv869IENvbmZpZ0l0ZW0gzrvOsc68zrLOrM69zrXPhM6xzrkgz4XPgM+Mz4jOtyDOus6xz4TOrCDPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM6xzr3PhM65zrPPgc6sz4bPic69Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnzpXPgM65zrvOrc6+z4TOtSDOvM65zrEgzrXOvc+Mz4TOt8+EzrEgzrPOuc6xIM+EzrfOvSDOtc+AzrnOss6/zrvOriDOtc69z4zPgiDPg8+Hzq7OvM6xz4TOv8+CIM6/zr3Ov868zrHPhM6/zrTOv8+Dzq/Osc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnzpXPgM65zrvOrc6+z4TOtSDOvM65zrEgzrXOvc+Mz4TOt8+EzrEgzrPOuc6xIM+EzrfOvSDOtc+AzrnOss6/zrvOriDOtc69z4zPgiDOsc+BzrnOuM68zrfPhM65zrrOv8+NIM+Dz4XPg8+Ezq7OvM6xz4TOv8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfOlc+AzrnOu86tzr7PhM61IM68zrnOsSDOtc69z4zPhM63z4TOsSDOs865zrEgz4TOt869IM61z4DOuc6yzr/Ou86uIM61zr3PjM+CIM+Dz4fOrs68zrHPhM6/z4Igz4PPhc68zrLOv867zr/Pg861zrnPgc6sz4IgzrXOus60z4zPg861z4nOvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfOlc+AzrnOu86tzr7PhM61IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66zqwgzrPOuc6xIM69zrEgzrXOvc61z4HOs86/z4DOv865zq7Pg861z4TOtSDPhM63IM60zrfOvM65zr/Phc+BzrPOr86xIM68zrnOsc+CIM69zq3Osc+CIM6tzrrOtM6/z4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfOlc+AzrnOu86tzr7PhM61IM66zrHPhM63zrPOv8+Bzq/Otc+CIM6zzrnOsSDOvc6xIM6xzr3Osc64zq3Pg861z4TOtSDPg861IM6xz4XPhM6uIM+EzrfOvSDOus6xz4TOt86zzr/Pgc6vzrEgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnzqbOr867z4TPgc6xIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPg8+Ezq7Ou863z4IgzrPOuc6xIM+EzrfOvSDOlc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfOo8+Ezq7Ou861z4Igz4DOv8+FIM68z4DOv8+Bzr/Pjc69IM69zrEgz4bOuc67z4TPgc6xz4HOuc+Dz4TOv8+Nzr0gz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuIM6jzrfOvM61zq/Pic+Dzrc6IM6Vz4DOuc+Ez4HOrc+Azr/Ovc+EzrHOuSDOvM+Mzr3OvyDPhM6xIM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66zqwgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrrOsc65IM+EzrEgzrTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfOo8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ86gz4HOv8+DzrjOrs66zrcgz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnzpXPgM61zr7Otc+BzrPOsc+Dzq/OsSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOnM6/zr3OrM60zrEgz4PPhc68zrLOrM69z4TPic69IM+Dz4TOv865z4fOtc6vzr/PhSDPgc+NzrjOvM65z4POt8+CIM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Azr/PhSDOtc+AzrnPhM+Bzq3PgM61zrkgz4TOt869IM66zrHPhM6xzrPPgc6xz4bOriDPg8+Ezr8gzrnPg8+Ezr/Pgc65zrrPjCDPg8+EzrcgzrTOuc61z4DOsc+Gzq4gz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ86czr/Ovc6szrTOsSDPg8+FzrzOss6szr3PhM+Jzr0gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4DOv8+FIM61zr3Ot868zrXPgc+Ozr3Otc65IM+EzrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOv869IM+Ez4HOrc+Hzr/Ovc+EzrEgzr/Pgc65z4POvM+MIM+Ezr/Phc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ86Izr7Ov860zr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfOlc66z4TPjc+Az4nPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ86hz43OuM68zrnPg863IM62zr/Phc68IM6xzr3PhM65zrrOtc65zrzOrc69zr/PhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfOlM61zr3OtM+BzrnOus6uIM+Az4HOv86yzr/Ou86uIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSDOiM66zrTOv8+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnzqTOsSBDb25maWdJdGVtcyDPhM+Jzr0gzrHOus+MzrvOv8+FzrjPic69IM66zrvOrM+DzrXPic69IM60zrXOvSDOuM6xIM6xz4DOv864zrfOus61z43Ov869z4TOsc65IM+Dz4TOvyDOtM65zrHOus6/zrzOuc+Dz4TOriBFbGFzdGljc2VhcmNoLiDOk865zrEgzr3OsSDOtc+GzrHPgc68zr/Pg8+EzrXOryDOsc+Fz4TPjCDPg861IM+Fz4DOrM+Bz4fOv869z4TOsSBDSSwgzrcgzrzOtc+EzqzOss6xz4POtyBDSSDPgM+Bzq3PgM61zrkgzr3OsSDOtc66z4TOtc67zrXPg8+EzrXOryDOvM6tz4PPiSDPhM63z4IgzrrOv869z4PPjM67zrHPgiwgzrzOtc+Ezqwgz4TOt869IM6xzrvOu86xzrPOriDOsc+Fz4TOrs+CIM+EzrfPgiDOtc+AzrnOu86/zrPOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfOpM6xIENvbmZpZ0l0ZW1zIM68zrUgz4TOuc+CIM6xzrrPjM67zr/Phc64zrXPgiDOus6xz4TOsc+Dz4TOrM+DzrXOuc+CIM6xzr3OrM+Az4TPhc6+zrfPgiDOtM61zr0gzrjOsSDOsc+Azr/OuM63zrrOtc+Nzr/Ovc+EzrHOuSDPg8+Ezr8gzrTOuc6xzrrOv868zrnPg8+Ezq4gRWxhc3RpY3NlYXJjaC4gzpPOuc6xIM69zrEgzrXPhs6xz4HOvM6/z4PPhM61zq8gzrHPhc+Ez4wgz4POtSDPhc+AzqzPgc+Hzr/Ovc+EzrEgQ0lzLCDOtyDOvM61z4TOrM6yzrHPg863IENJIM+Az4HOrc+AzrXOuSDOvc6xIM61zrrPhM61zrvOtc+Dz4TOtc6vIM68zq3Pg8+JIM+EzrfPgiDOus6/zr3Pg8+MzrvOsc+CLCDOvM61z4TOrCDPhM63zr0gzrHOu867zrHOs86uIM6xz4XPhM6uz4Igz4TOt8+CIM61z4DOuc67zr/Os86uz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ86Mz4HOuc6/IM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfOjM+BzrnOvyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOsc69zqwgz4POtc67zq/OtM6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnzpLOrM+DzrcgzrTOtc60zr/OvM6tzr3Pic69IM60zrnOsc+HzrXOr8+BzrnPg863z4IgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ86jz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOvM6xzrbOuc66zq7PgiDOvM6/zr3OrM60zrHPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqPPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOv865z4fOtc6vzr8gzrHOvc6xzrbOrs+EzrfPg863z4IgYmFja2VuZCByb3V0ZXIgz4TOt8+CIM60zrnOsc+Dz43Ovc60zrXPg863z4Igz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ86UzrfOvM65zr/Phc+BzrPOr86xIM66zrHOuSDOtM65zrHPh861zq/Pgc65z4POtyDPhM+Jzr0gzr/Pgc65z4POvM+Ozr0gzrPOuc6xIM+EzrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ86UzrfOvM65zr/Phc+BzrPOtc6vIM61zrnPg865z4TOrs+BzrnOsSDOs865zrEgQ29uZmlnSXRlbXMgz4POtSDPg8+FzrPOus61zrrPgc65zrzOrc69zrEgz4fPgc6/zr3Ouc66zqwgz4POt868zrXOr86xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfOn865IM+AzrXOu86sz4TOtc+CIM68z4DOv8+Bzr/Pjc69IM69zrEgzrTOv8+Fzr0gzrnPg8+Ezr/Pgc65zrrOrc+CIM61zrrOtM+Mz4POtc65z4IgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ86fzrkgz4DOtc67zqzPhM61z4Igzq3Ph86/z4XOvSDPhM63IM60z4XOvc6xz4TPjM+EzrfPhM6xIM69zrEgzrXOvc6xzrvOu86sz4PPg86/zr3PhM6xzrkgz4fOtc65z4HOv866zq/Ovc63z4TOsSDOvM61z4TOsc6+z40gz4TPic69IM65z4PPhM6/z4HOuc66z47OvSDOtc66zrTPjM+DzrXPic69IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ86gz4HOv861z4DOuc67zrXOs868zq3Ovc6xIM60zrXOtM6/zrzOrc69zrEgz4DOv8+FIM64zrEgz4fPgc63z4POuc68zr/PgM6/zrnOv8+Nzr3PhM6xzrkgz4PPhM6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgzrPOuc6xIM+EzrfOvSDOv864z4zOvc63IM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLiDOoM6xz4HOrM60zrXOuc6zzrzOsTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfOoM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OsSDOtM61zrTOv868zq3Ovc6xIM+Azr/PhSDOuM6xIM+Hz4HOt8+DzrnOvM6/z4DOv865zr/Pjc69z4TOsc65IM+Dz4TOvyDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4gzqDOsc+BzqzOtM61zrnOs868zrE6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfOn8+BzrnPg868z4zPgiDOlc69zrXPgc6zzrXOuc+Ozr0gz4zPgM6/z4Ugzq3Ovc6xIM66zr/Phc68z4DOryDPgc+FzrjOvM6vz4POtc+Jzr0gzrXOr869zrHOuSDOtM65zrHOuM6tz4POuc68zr8gz4PPhM6/IHdpZGdldCDPhM+Jzr0gz4PPhc69zrTOtc60zrXOvM6tzr3Pic69IM6xzr3PhM65zrrOtc65zrzOrc69z4nOvSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDOo863zrzOtc65z47Pg8+EzrUgz4zPhM65IM6xz4XPhM6tz4Igzr/OuSDOlc69zq3Pgc6zzrXOuc61z4Igz4DPgc6tz4DOtc65IM69zrEgzq3Ph86/z4XOvSDOus6xz4TOsc+Hz4nPgc6vz4POtc65IM+EzrEgzrHOus+MzrvOv8+FzrjOsSDOsc+Bz4fOtc6vzrEgSlMgzrrOsc65IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgzrrOsc65IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ86fz4HOuc+DzrzPjM+CIM61zr3PjM+CIM+Dz4fOrs68zrHPhM6/z4IgVGVtcGxhdGU6OlRvb2xraXQgzrPOuc6xIM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrc+CIM6tzrrOtM6/z4POt8+CLiDOp8+BzrfPg865zrzOv8+Azr/Ouc61zq/PhM6xzrkgzrzPjM69zr8gzrHOvSDOtyDOtc69z4zPhM63z4TOsSBWZXJzaW9uIFN0cmluZyBNb2R1bGUgzq3Ph861zrkgzr/Pgc65z4PPhM61zq8gz4POtSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfOn8+Bzq/Pg8+EzrUgzq3Ovc6xIM+Dz43Ovc6/zrvOvyDPg8+Fzr3OuM63zrrPjs69IM+Fz4DPjCDPhM65z4Igzr/PgM6/zq/Otc+CIM61z4DOuc+Ez4HOrc+AzrXPhM6xzrkgz4POtSDOrc69zrHOvSDPgM61zrvOrM+Ezrcgzr3OsSDOtM61zrkgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4gzp/OuSDPg8+Fzr3OuM6uzrrOtc+CIM68z4DOv8+Bzr/Pjc69IM+Az4HOv86xzrnPgc61z4TOuc66zqwgzr3OsSDPgM61z4HOuc6/z4HOuc+Dz4TOv8+Nzr0gz4POtSDOv8+BzrnPg868zq3Ovc61z4Igzr/OvM6szrTOtc+CIM+AzrXOu86xz4TPjs69LiDOpM6/IM+Mzr3Ov868zrEgzrXOr869zrHOuSDPhM6/IM68z4zOvc6/IM+Fz4DOv8+Hz4HOtc+Jz4TOuc66z4wgz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjC4gzpXOrM69IM60zrXOvSDOtM6/zrjOv8+Nzr0gzqzOu867zrXPgiDOtc+AzrnOu86/zrPOrc+CLCDPjM67zrEgz4TOsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrjOsSDOtc6vzr3Osc65IM6/z4HOsc+Ezqwgz4PPhM6/IM+AzrvOsc6vz4POuc6/IM6xz4XPhM6uz4Igz4TOt8+CIM66zrHPhM63zrPOv8+Bzq/Osc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrEgzrHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDOtM65zrHOs8+BzrHPhs6uIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gzrzOtSDPh8+Bzq7Pg863IM+EzrfPgiDOs861zr3Ouc66zq7PgiDOtM65zrXPgM6xz4bOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrEgzrHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDOu86uz4jOtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM68zrUgz4fPgc6uz4POtyDPhM63z4IgzrPOtc69zrnOus6uz4IgzrTOuc61z4DOsc+Gzq7Pgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6xIM6xz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDOvM61IM+Hz4HOrs+Dzrcgz4TOt8+CIM6zzrXOvc65zrrOrs+CIM60zrnOtc+AzrHPhs6uz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOsSDOsc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM6/zr0gzrrOsc64zr/Pgc65z4POvM+MIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gzrzOtSDPh8+Bzq7Pg863IM+EzrfPgiDOs861zr3Ouc66zq7PgiDOtM65zrXPgM6xz4bOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfOn8+Bzq/Ots61zrkgzrzOuc6xIM61zr3PjM+EzrfPhM6xIM61z4DOuc+DzrrPjM+AzrfPg863z4IgzrPOuc6xIM+EzrfOvSDOtc68z4bOrM69zrnPg863IM+EzrfPgiDOvM65zrrPgc6uz4Igz4DPgc6/zrLOv867zq7PgiDOvM65zrHPgiDOu86vz4PPhM6xz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDOtc6szr0gzr/OuSDOtc+EzrnOus6tz4TOtc+CIM+Ez43PgM6/z4Ugz4PPhc69zrTOrc+DzrzOv8+FIM+Az4HOrc+AzrXOuSDOvc6xIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrnPgiDPg8+Fzr3OtM6tz4POtc65z4IgzrrPjM68zrLPic69Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnzp/Pgc6vzrbOtc65IM66zrHOvc6/zr3Ouc66zq3PgiDOtc66z4bPgc6sz4POtc65z4Igzr7Otc+Hz4nPgc65z4PPhM6sIM6zzrnOsSDOus6szrjOtSDOus67zqzPg863IENvbmZpZ0l0ZW0gzrPOuc6xIM+Ezr/OvSDOrc67zrXOs8+Hzr8gz4TOv8+FIM6/zr3PjM68zrHPhM6/z4Igz4TOv8+FIENvbmZpZ0l0ZW0gzrrOsc65IM+EzrfOvSDOtc68z4bOrM69zrnPg863IM+Ez4nOvSDOsc69z4TOr8+Dz4TOv865z4fPic69IM68zrfOvc+FzrzOrM+Ez4nOvSDPg8+GzqzOu868zrHPhM6/z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDOtM65zrHOuM6tz4POuc68zrXPgiDPg8+Ezq7Ou861z4Igz4TPic69IENJIM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM6xzr3OrM67zr/Os86xIM68zrUgz4TOt869IM66zrHPhM63zrPOv8+Bzq/OsSBDSS4gzprOrM64zrUgzrrOsc+EzrHPh8+Oz4HOt8+Dzrcgz4DPgc6tz4DOtc65IM69zrEgzrHPgM6/z4TOtc67zrXOr8+EzrHOuSDOsc+Az4wgzq3Ovc6xIM+Mzr3Ov868zrEgzrrOu86sz4POt8+CIM66zrHOuSDOrc69zrHOvSDPgM6vzr3Osc66zrEgzrTOuc6xzrjOrc+DzrnOvM+Jzr0gz4DOtc60zq/Pic69IM6zzrnOsSDPhM63zr0gzrHOvc+Ezq/Pg8+Ezr/Ouc+HzrcgzrrOu86sz4POty4gzp/OuSDOus6xz4TOsc+Hz4nPgc6vz4POtc65z4IgzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSDPgM+Bzq3PgM61zrkgzr3OsSDPhM63z4HOv8+Nzr0gz4TOvyDPg8+Hzq7OvM6xIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM+Dz4TOv865z4fOtc6vzr8gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gzrPOuc6xIM+EzrfOvSDPhM6xzr7Ouc69z4zOvM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOv8+FIM6xz4DOv8+EzrXOu86tz4POvM6xz4TOv8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM63z4IgzrTOuc6xz4PPjc69zrTOtc+DzrfPgiDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDPg8+Ezr/Ouc+HzrXOr86/IM+AzrHPgc6xzrzOrc+Ez4HPic69IM6zzrnOsSDPhM63zr0gz4TOsc6+zrnOvc+MzrzOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Ezr/PhSDOsc+Azr/PhM61zrvOrc+DzrzOsc+Ezr/PgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgz4PPhM6/zrnPh861zq/OvyDPgM6xz4HOsc68zq3PhM+Bz4nOvSDOs865zrEgz4TOt869IM+EzrHOvs65zr3PjM68zrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM6/z4UgzrHPgM6/z4TOtc67zq3Pg868zrHPhM6/z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM6xz4XPhM6uz4Igz4TOt8+CIM67zrXOuc+Ezr/Phc+BzrPOr86xz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOt869IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc63IM+DzrXOuc+Bzqwgz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Dz4TOvyDOsc+Azr/PhM6tzrvOtc+DzrzOsSDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOt8+CIM60zrnOsc+Dz43Ovc60zrXPg863z4Igz4DPgc6szrrPhM6/z4HOsS4gVXA6IM+Ezr8gz4DOsc67zrHOuc+Mz4TOtc+Bzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLiDOms6sz4TPiTogz4TOvyDPhM61zrvOtc+Fz4TOsc6vzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrfOvSDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OtyDPg861zrnPgc6sIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPg8+Ezr8gzrHPgM6/z4TOrc67zrXPg868zrEgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86sz4TOty4gzqDOrM69z4k6IM+Ezr8gz4DOsc67zrHOuc+Mz4TOtc+Bzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLiDOms6sz4TPiTogz4TOvyDPhM61zrvOtc+Fz4TOsc6vzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3Otc+CIM61zrzPhs6xzr3Ouc62z4zOvM61zr3Otc+CIM+Dz4TOrs67zrXPgiDPhM+Jzr0gQ0kgz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrHOvc6szrvOv86zzrEgzrzOtSDPhM63zr0gzrrOsc+EzrfOs86/z4HOr86xIENJLiDOms6szrjOtSDOus6xz4TOsc+Hz47Pgc63z4POtyDPgM+Bzq3PgM61zrkgzr3OsSDOsc+Azr/PhM61zrvOtc6vz4TOsc65IM6xz4DPjCDOrc69zrEgz4zOvc6/zrzOsSDOus67zqzPg863z4IgzrrOsc65IM6tzr3Osc69IM+Azq/Ovc6xzrrOsSDOtM65zrHOuM6tz4POuc68z4nOvSDPgM61zrTOr8+Jzr0gzrPOuc6xIM+EzrfOvSDOsc69z4TOr8+Dz4TOv865z4fOtyDOus67zqzPg863LiDOn865IM66zrHPhM6xz4fPic+Bzq7Pg861zrnPgiDOtM+Fzr3Osc68zrnOus+Ozr0gz4DOtc60zq/Pic69IM+Az4HOrc+AzrXOuSDOvc6xIM+EzrfPgc6/z43OvSDPhM6/IM+Dz4fOrs68zrEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zr8gzrLOrM64zr/PgiDPg8+Hzq3Pg861z4nOvSDPgM6/z4UgzrjOsSDOtc68z4bOsc69zq/Ots61z4TOsc65Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDOtc68z4bOsc69zrnOts+MzrzOtc69zr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOs865zrEgz4TOt869IM6/zrjPjM69zrcgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDOtc68z4bOsc69zrnOts+MzrzOtc69zr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOs865zrEgz4TOt869IM6/zrjPjM69zrcgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuIM6gzrHPgc6szrTOtc65zrPOvM6xOiAiS2V5IiDPgM+Bzq3PgM61zrkgzr3OsSDOrc+HzrXOuSDPhM6/IM+Mzr3Ov868zrEgz4TOv8+FIM60z4XOvc6xzrzOuc66zr/PjSDPgM61zrTOr86/z4Ugz4PPhM63zr0gz4DPgc6/zrrOtc65zrzOrc69zrcgz4DOtc+Bzq/PgM+Ez4nPg863IFwnWFwnLCAiQ29udGVudCIgz4DPgc6tz4DOtc65IM69zrEgzq3Ph861zrkgz4TOt869IM+EzrnOvM6uIM+Ezr/PhSDOtM+Fzr3Osc68zrnOus6/z40gz4DOtc60zq/Ov8+FIM6xzr3OrM67zr/Os86xIM68zrUgz4TOv869IM+Ez43PgM6/IM+Ezr/PhSDOtM+Fzr3Osc68zrnOus6/z40gz4DOtc60zq/Ov8+FLCBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0LSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDEtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjYtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwLCBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwLSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwLSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTMtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxLCBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjYtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjMtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OS0gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5LFwnIM66zrHOuSDOriBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICfOn8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDPhc+Azr/Osc69z4TOuc66zrXOr868zrXOvc6/IM+EzrfPgiDOus67zqzPg863z4IgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDOtM65zrHOuM6tz4POuc68zrXPgiDPg8+Ezq7Ou861z4Igz4TPic69IENJIM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM6xzr3OrM67zr/Os86xIM68zrUgz4TOt869IM66zrHPhM63zrPOv8+Bzq/OsSBDSS4gzprOrM64zrUgzrrOsc+EzrHPh8+Oz4HOt8+Dzrcgz4DPgc6tz4DOtc65IM69zrEgzrHPgM6/z4TOtc67zrXOr8+EzrHOuSDOsc+Az4wgzq3Ovc6xIM+Mzr3Ov868zrEgzrrOu86sz4POt8+CIM66zrHOuSDOrc69zrHOvSDPgM6vzr3Osc66zrEgzrTOuc6xzrjOrc+DzrnOvM+Jzr0gz4DOtc60zq/Pic69IM6zzrnOsSDPhM63zr0gzrHOvc+Ezq/Pg8+Ezr/Ouc+HzrcgzrrOu86sz4POty4gzp/OuSDOus6xz4TOsc+Hz4nPgc6vz4POtc65z4IgzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSDPgM+Bzq3PgM61zrkgzr3OsSDPhM63z4HOv8+Nzr0gz4TOvyDPg8+Hzq7OvM6xIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Nz4jOv8+CIM6zzrnOsSDPhM6/IM+Dz4TOv865z4fOtc6vzr8gz4TOv8+FIM61z4DOtc6+zrXPgc6zzrHPg8+Ezq4gz4DOu86/z43Pg865zr/PhSDOus61zrnOvM6tzr3Ov8+FIM6zzrnOsSDOsc+Fz4TOriDPhM63zr0gzr/OuM+Mzr3Oty4gzpXOuc+DzqzOs861z4TOtSDOsc+BzrnOuM68z4wgKHBpeGVscykgzq4gz4DOv8+Dzr/Pg8+EzrnOsc6vzrEgz4TOuc68zq4gKM+Dz4fOtc+EzrnOus6uKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr/OvSDOsc+BzrnOuM68z4wgz4TPic69IM6zz4HOsc68zrzPjs69IM6zzrnOsSDPhM6/zr0gzrXPgM61zr7Otc+BzrPOsc+Dz4TOriDOv8+BzrnPg868zr/PjSBDSSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDOtM65zrHPh861zq/Pgc65z4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOtyDPg861zrnPgc6sIM+Ez4nOvSDOus6xz4TOsc+Dz4TOrM+DzrXPic69IM+Dz4XOvM6yzqzOvc+Ez4nOvSDOsc+Az4wgz4XPiM63zrvOriAoz4Auz4cuIM66z4HOr8+DzrnOvM63KSDOrc+Jz4Igz4fOsc68zrfOu86uICjPgC7Phy4gzrvOtc65z4TOv8+Fz4HOs865zrrOrikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDPg8+HzrXPhM65zrrOrc+CIM66zrHPhM6xz4PPhM6sz4POtc65z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Mz4DOv8+FIM+EzrEgz4PPhc69zrTOtc60zrXOvM6tzr3OsSDOtc65z4POuc+Ezq7Pgc65zrEgzrzPgM6/z4HOv8+Nzr0gzr3OsSDOtc+AzrfPgc61zqzPg86/z4XOvSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM61zr3PjM+CIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOuc+CIM61zrzPhs6xzr3Ouc62z4zOvM61zr3Otc+CIM+Dz4TOrs67zrXPgiDPhM+Jzr0gQ0kgz4PPhM63zr0gz4DOv867z43PgM67zr/Ous63IM+Az4HOv86yzr/Ou86uIM+Ezr/PhSDPgM6vzr3Osc66zrEgz4PPhc69zrTOrc+DzrXPic69IM6zzrnOsSDPjM67zrXPgiDPhM65z4IgzrrOsc+EzrfOs86/z4HOr861z4IgQ0kuIM6VzqzOvSDOtM61zr0gz4XPgM6sz4HPh861zrkgzrrOsc+EzrHPh8+Oz4HOuc+DzrcsIM+Ez4zPhM61IM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDOv865IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc61z4Igz4PPhM6uzrvOtc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDOtc68z4bOsc69zrnOts+MzrzOtc69zrXPgiDPg8+Ezq7Ou861z4Igz4TPic69IENJIM+Dz4TOt869IM+Azr/Ou8+Nz4DOu86/zrrOtyDPgM+Bzr/Oss6/zrvOriDPhM6/z4Ugz4DOr869zrHOus6xIM+Dz4XOvc60zq3Pg868z4nOvSwgzrHOvc6szrvOv86zzrEgzrzOtSDPhM63zr0gzrrOsc+EzrfOs86/z4HOr86xIENJLiDOms6szrjOtSDOtc6zzrPPgc6xz4bOriDPgM+Bzq3PgM61zrkgzr3OsSDOrc+HzrXOuSDPic+CIM+Az4HPjM64zrXOvM6xIM+Ezr8gz4zOvc6/zrzOsSDPhM63z4IgzrrOu86sz4POt8+CIM66zrHOuSDOtM65z4DOu86tz4IgzqzOvc+JIM66zrHOuSDOus6sz4TPiSDPhM61zrvOtc6vzrEgKM+ALs+HLiBDb21wdXRlcjo6OikuIM6lz4DOrM+Bz4fOv8+Fzr0gzrzOtc+BzrnOus6sIENJLUF0dHJpYnV0ZXMgz4DOv8+FIM61zq/Ovc6xzrkgzrrOv865zr3OrCDOs865zrEgz4zOu86xIM+EzrEgQ0kgKM+AzrHPgc6szrTOtc65zrPOvM6xIM6zzrnOsSDPhM63zr0gzrrOu86sz4POtyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gzpPOuc6xIM69zrEgzrXOvM+GzrHOvc65z4PPhM6/z43OvSDOvM61zrzOv869z4nOvM6tzr3OsSBDSS1BdHRyaWJ1dGVzIM+Mz4DPic+CIM6/z4HOr862zr/Ovc+EzrHOuSDPg8+Ezr/OvSBDSS1EZWZpbml0aW9uLCDPgM+Bzq3PgM61zrkgzr3OsSDPh8+BzrfPg865zrzOv8+Azr/Ouc63zrjOtc6vIM+Ezr8gzrHOus+MzrvOv8+FzrjOvyDPg8+Hzq7OvM6xICjPgM6xz4HOrM60zrXOuc6zzrzOsSDOs865zrEgz4TOt869IM66zrvOrM+DzrcgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gzpXOrM69IM60zrXOvSDPhc+AzqzPgc+HzrXOuSDOus6xz4TOsc+Hz47Pgc63z4POtyDOs865zrEgzrzOuc6xIM66zrvOrM+DzrcgQ0ksIM+Ez4zPhM61IM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDOv865IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc61z4Igz4PPhM6uzrvOtc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPgM6/zrnOsSDPg8+Ezr/Ouc+HzrXOr86xIM61zq/Ovc6xzrkgzrTOuc6xzrjOrc+DzrnOvM6xIM6zzrnOsSAizpTPgc6sz4POtyIgz4PPhM6/IM+Ez4HOr8+Ezr8gzrXPgM6vz4DOtc60zr8gz4TOt8+CIM60zr/OvM6uz4IgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Azr/Ouc6xIM+Dz4TOv865z4fOtc6vzrEgzrXOr869zrHOuSDOtM65zrHOuM6tz4POuc68zrEgz4PPhM6/IM+Az4HPjs+Ezr8gzrXPgM6vz4DOtc60zr8gz4TOt8+CIM60zr/OvM6uz4IgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPgM6/zrnOsSDPg8+Ezr/Ouc+HzrXOr86xIM61zq/Ovc6xzrkgzrTOuc6xzrjOrc+DzrnOvM6xIM+Dz4TOvyDOtM61z43PhM61z4HOvyDOtc+Azq/PgM61zrTOvyDPhM63z4IgzrTOv868zq7PgiBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Azr/Ouc6/z4Igz4TPjc+Azr/PgiDPg8+Nzr3OtM61z4POt8+CICjOvM61IM+Mzr3Ov868zrEgzrHPgM+MIM+EzrfOvSDOv8+Az4TOuc66zq4gzrPPic69zq/OsSDPhM6/z4UgzrXOuc+DzrnPhM63z4HOr86/z4UpIM68z4DOv8+BzrXOryDOvc6xIM61z4DOt8+BzrXOrM+DzrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM61zr3PjM+CIM+Dz4XOvc60zrXOtM61zrzOrc69zr/PhSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4DOv865zr/PgiDPhM+Nz4DOv8+CIM61zrnPg865z4TOt8+Bzq/Ov8+FIM68z4DOv8+BzrXOryDOvc6xIM61z4DOt8+BzrXOrM+DzrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM61zr3PjM+CIM+Dz4XOvc60zrXOtM61zrzOrc69zr/PhSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICfOlc69zrfOvM6tz4HPic+Dzrcgzr/Pgc65z4POvM6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ86UzrnOsc6zz4HOsc+Gzq4gz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfOp8+Bz47OvM6xIM66zrHPhM6sz4PPhM6xz4POt8+CIM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnzpTOuc+AzrvPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ86czr/Ovc6szrTOsSDPg8+FzrzOss6szr3PhM+Jzr0gzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSDPgM6/z4UgzrXPgM65z4POt868zrHOr869zrXOuSDPhM6/z4XPgiDOv8+BzrnPg868zr/Pjc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Jz4IgzrzOtyDPg8+FzrPPh8+Bzr/Ovc65z4POvM6tzr3Ov8+Fz4IsIM61zqzOvSDOsc67zrvOrM6+zr/Phc69IM+EzrEgzrTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIM+Azr/PhSDPgM61z4HOuc6tz4fOv8+Fzr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlM+Fzr3Osc68zrnOus6sIM+AzrXOtM6vzrEgz4DOv8+FIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrfOvSDOv864z4zOvc63IM+Az4HPjM+DzrjOtc+Ez4nOvSDPgM61zrTOr8+Jzr0gSVRTTSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIM+Azr/PhSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4PPhM63zr0gzr/OuM+Mzr3OtyDOtc+AzrnPg866z4zPgM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86sz4TOty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIM+Azr/PhSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4PPhM63zr0gzr/OuM+Mzr3OtyDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnzpXOvc61z4HOs86/z4DOv865zrXOryDPhM63IM60z4XOvc6xz4TPjM+EzrfPhM6xIM68zrHOts65zrrOrs+CIM60z4HOrM+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOs865zrEgz4TOvyBmcm9udGVuZCDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsSDPjs+Dz4TOtSDOvc6xIM61z4HOs86szrbOtc+EzrHOuSDPg861IM+AzrXPgc65z4PPg8+Mz4TOtc+BzrEgzrHPgM+MIM6tzr3OsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOsc+Fz4TPjM+Hz4HOv869zrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfOlyDOus6xz4TOrM+Dz4TOsc+DzrcgzrHOvc6sz4DPhM+Fzr7Ot8+CIM6xz4XPhM6/z40gz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ86Vzr3PjM+EzrfPhM6xIM+Dz4XOvM6yzqzOvc+Ezr/PgiDOs865zrEgzr3OsSDOv8+Bzq/Pg861z4TOtSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4Ugz4DOsc+BzrHOvM61z4TPgc6/z4DOv86vzrfPg863z4Igz4PPhM6/IM+Dz43Ovc60zrXPg868zr8gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnzqDOtc60zq/OsSDPhM6/z4UgzrXPhc+BzrXPhM63z4HOr86/z4Ugz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IsIM+Azr/PhSDPh8+BzrfPg865zrzOv8+Azr/Ouc6/z43Ovc+EzrHOuSDOs865zrEgz4TOt869IM6xzr3Osc62zq7PhM63z4POtyDPgM67zq7Pgc6/z4XPgiDOus61zrnOvM6tzr3Ov8+FLiDOpM6xIM+AzrXOtM6vzrEgzrHPgM6/zrjOt866zrXPjc6/zr3PhM6xzrkgzrXPgM6vz4POt8+CLCDOsc67zrvOrCDOtM61zr0gzrXOr869zrHOuSDPhc+Azr/Ph8+BzrXPic+EzrnOus6sIM6zzrnOsSDPhM63IM+Dz4XOvc6/zrvOuc66zq4gzrvOtc65z4TOv8+Fz4HOs865zrrPjM+EzrfPhM6xLiDOlyDPg8+FzrzPgM61z4HOr867zrfPiM63IM+Ez4nOvSDPg8+Fzr3Ot868zrzOrc69z4nOvSDOvM+Azr/Pgc61zq8gzr3OsSDOsc+AzrXOvc61z4HOs86/z4DOv865zrfOuM61zq8gzrjOrc+Ezr/Ovc+EzrHPgiDPhM63zr0gzrrOsc+EzrHPh8+Oz4HOt8+Dzrcgz4POtSAwIM6uIM60zrnOsc6zz4HOrM+Gzr/Ovc+EzqzPgiDPhM63zr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICfOoM61zrTOr86xIM+Azr/PhSDOsc+Azr/OuM63zrrOtc+Nzr/Ovc+EzrHOuSDPg8+Ezr8gzrXPhc+BzrXPhM6uz4HOuc6/IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM66zrHOuSDPh8+BzrfPg865zrzOv8+Azr/Ouc6/z43Ovc+EzrHOuSDOs865zrEgzqzOu867zrEgz4DPgc6szrPOvM6xz4TOsSDOtc66z4TPjM+CIM6xz4DPjCDPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+AzrvOrs+Bzr/Phc+CIM66zrXOuc68zq3Ovc6/z4UuIM6TzrnOsSDPhM63zr0gz4DOu86uz4HOtyDOu861zrnPhM6/z4XPgc6zzrnOus+Mz4TOt8+EzrEgz4zOu86xIM+EzrEgz4DOtc60zq/OsSDOtc6vzr3Osc65IM+Fz4DOv8+Hz4HOtc+Jz4TOuc66zqwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnzpXOs86zz4HOsc+Gzq4gzrzOv869zqzOtM6xz4IgR2VuZXJpY0ludGVyZmFjZSDOs865zrEgz4TOvyDOtc+Azq/PgM61zrTOvyDOtc+AzrnOus6xzrvOv8+NzrzOtc69zr/PhSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnzpXOs86zz4HOsc+Gzq4gzrzOv869zqzOtM6xz4IgR2VuZXJpY0ludGVyZmFjZSDOs865zrEgz4TOvyDOtc+Azq/PgM61zrTOvyDOtc+AzrnOus6xzrvOv8+NzrzOtc69zr/PhSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ86VzrPOs8+BzrHPhs6uIM68zr/Ovc6szrTOsc+CIEdlbmVyaWNJbnRlcmZhY2UgzrPOuc6xIM+Ezr8gzrXPgM6vz4DOtc60zr8gzrXPgM65zrrOsc67zr/Pjc68zrXOvc6/z4UgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICfOlc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4HPhc64zrzOr8+DzrXPic69IElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOtc+BzrnOu86xzrzOss6szr3Otc65IM66zrHPhM6xz4PPhM6sz4POtc65z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Dz4TOt869IM6xzr3Osc62zq7PhM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM61zrvOrM+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrXPgc65zrvOsc68zrLOrM69zrXOuSDOus6xz4TOsc+Dz4TOrM+DzrXOuc+CIM+Dz4XOvM6yzqzOvc+Ez4nOvSDPg8+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfOnM6tzrPOuc+Dz4TOv8+CIM6xz4HOuc64zrzPjM+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Azr/PhSDOuM6xIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+Ezr8gzrHPgM6/z4TOrc67zrXPg868zrEgzrHPhc+Ezq7PgiDPhM63z4IgzrvOtc65z4TOv8+Fz4HOs86vzrHPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfOlc69z4zPhM63z4TOsSDOs865zrEgz4TOv869IM6tzrvOtc6zz4fOvyDPhM63z4Igzr/OvM6szrTOsc+CIM+Azr/PhSDOtc6vzr3Osc65IM+Fz4DOtc+NzrjPhc69zrcgzrPOuc6xIM68zrnOsSDPhM6szr7Oty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfOlc69z4zPhM63z4TOsSDOs865zrEgz4TOv869IM6tzrvOtc6zz4fOvyDPhM63z4Igzr/OvM6szrTOsc+CIM+Azr/PhSDOtc6vzr3Osc65IM+Fz4DOtc+NzrjPhc69zrcgzrPOuc6xIM6tzr3OsSDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnzpXOvc+Mz4TOt8+EzrEgzrPOuc6xIM+EzrcgzrTOt868zrnOv8+Fz4HOs86vzrEgz4PPhM6xz4TOuc+Dz4TOuc66z47OvSDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ86Mzr3Ov868zrEgzpXOvc+Mz4TOt8+EzrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ86Vzr3PjM+EzrfPhM6xIM6xz4HOuc64zrzOv8+NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4HOuc64zrzPjM+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Azr/PhSDOuM6xIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg861IM66zqzOuM61IM+DzrXOu86vzrTOsSDOtc69z4zPgiDOsc+Azr/PhM61zrvOrc+DzrzOsc+Ezr/PgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgc65zrjOvM+Mz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4DOv8+FIM64zrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+DzrUgzrrOrM64zrUgz4POtc67zq/OtM6xIM61zr3PjM+CIM6xz4DOv8+EzrXOu86tz4POvM6xz4TOv8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM61zrvOrM+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ86Rzr3PhM65zrrOtc6vzrzOtc69zrEgzrPOuc6xIM+EzrEgzr/PgM6/zq/OsSDOuM6xIM6zzq/Ovc61zrkgzrHOvc6xzrbOrs+EzrfPg863LCDPgM+Mz4POtc+CIM66zrHPhM6xz4fPic+Bzq7Pg861zrnPgiDOus6xzrkgz4DOv865zrEgz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrOrCDOuM6xIM61zrzPhs6xzr3Ouc+Dz4TOv8+Nzr0uIM6kzrEgz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrOrCBDb25maWdJdGVtIM+Az4HOrc+AzrXOuSDOvc6xIM6xz4DOv864zrfOus61z43Ov869z4TOsc65IM+BzrfPhM6sIM68zq3Pg8+JIM+Ezr/PhSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfOlc+AzrnPg866z4zPgM63z4POty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM65z4IgzrrOsc+EzrfOs86/z4HOr861z4Igz4TPic69IM66zrvOrM+DzrXPic69IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrEgz4bOr867z4TPgc6xIM+Dz4TOrs67zrfPgiDPhM63z4IgzrXPgM65z4POus+Mz4DOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrzOuc66z4HOrs+CIM60zrnOsc68z4zPgc+Gz4nPg863z4IuIM6jzrfOvM61zq/Pic+Dzrc6IM63IM+Bz43OuM68zrnPg863IFwnQWN0aXZlXCcgz4POtSAwIM64zrEgzrXOvM+Azr/OtM6vz4POtc65IM68z4zOvc6/IM+Ezr/Phc+CIM+Az4HOrM66z4TOv8+BzrXPgiDOvc6xIM61z4DOtc6+zrXPgc6zzqzOts6/zr3PhM6xzrkgz4TOuc+CIM+Bz4XOuM68zq/Pg861zrnPgiDOsc+Fz4TOrs+CIM+EzrfPgiDOv868zqzOtM6xz4Igz4PPhM65z4Igz4DPgc6/z4PPic+AzrnOus6tz4Igz4TOv8+Fz4Igz4DPgc6/z4TOuc68zq7Pg861zrnPgiwgzrHOu867zqwgzrjOsSDOtc+AzrnPhM+Bzq3PiM61zrkgz4PPhM6/z4XPgiDOtM65zrHPh861zrnPgc65z4PPhM6tz4Igzr3OsSDOtc+AzrXOvs61z4HOs86szrbOv869z4TOsc65IM+EzrnPgiDPgc+FzrjOvM6vz4POtc65z4IgzrPOuc6xIM67zr/Os86xz4HOuc6xz4POvM+MIM6szrvOu86/z4Ugz4fPgc6uz4PPhM63LiDOp8+BzrfPg865zrzOv8+Azr/Ouc6uz4PPhM61IM+Ezr8gXCdQcmVmZXJlbmNlR3JvdXBcJyDOs865zrEgzr3OsSDOtc67zq3Os86+zrXPhM61IM+DzrUgz4DOv865zrEgz4DOtc+BzrnOv8+Hzq4gzrjOsSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgzrHPhc+Ezq3PgiDOv865IM+Bz4XOuM68zq/Pg861zrnPgiDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPh8+Bzq7Pg8+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+Ezr8gz4fPgc+OzrzOsSDPhM+Jzr0gzrrOsc+EzrHPg8+EzqzPg861z4nOvSDOsc69zqzPgM+Ez4XOvs63z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOuc+CIM66zrHPhM6xz4PPhM6sz4POtc65z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM65z4Igzr/OvM6szrTOtc+CIM60zrnOus6xzrnPic68zqzPhM+Jzr0gz4TOv8+FIM+AzrHPgc6xzrTOtc6vzrPOvM6xz4TOv8+CIM+Ez4nOvSDOs861zr3Ouc66z47OvSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+Ozr0gzrrOsc+EzrHOu8+MzrPOv8+FLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM63IM68zr/Ovc6szrTOsSDOv869z4zOvM6xz4TOv8+CIM6zzrnOsSDPhM65z4IgzrrOu86sz4POtc65z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrcgzrzOv869zqzOtM6xIM6xz4HOuc64zrzOv8+NIM6zzrnOsSDPhM65z4IgzrrOu86sz4POtc65z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOuc+CIM+DzrXOu86vzrTOtc+CICjPg8+EzrnPgiDOv8+Azr/Or861z4IgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+EzrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrcgzrzOv869zqzOtM6xIM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrM+CIM6tzrrOtM6/z4POt8+CIM6zzrnOsSDPhM65z4IgzrrOu86sz4POtc65z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOt869IM61zr3PjM+EzrfPhM6xIM61z4HOs86xzrvOtc65zr/OuM6uzrrOt8+CIM+Az4HOv8+Ez43PgM6/z4Ugz4PPhc68zrLOv867zr/Pg861zrnPgc6sz4Igzq3Ous60zr/Pg863z4IgzrPOuc6xIM+EzrnPgiDOus67zqzPg861zrnPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDPgM+Bzr/PhM65zrzOrs+DzrXPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOt869IM61zr3Otc+BzrPOv8+Azr/Or863z4POtyDOrc66zrTOv8+DzrfPgiDOs865zrEgz4TOuc+CIM66zrvOrM+DzrXOuc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnzp/OvM6szrTOsSDOsc60zrXOuc+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM61zr3Orc+BzrPOtc65zrHPgiDPgM+Bzr/Pg86sz4HPhM63z4POt8+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+EzrcgzrTOuc61z4DOsc+Gzq4gz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM60zrXOvc60z4HOuc66zq7PgiDPgM+Bzr/Oss6/zrvOrs+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM68zrXOs86tzrjPhc69z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM63IM60zrnOtc+AzrHPhs6uIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM+Az4HOv8+DzrjOrs66zrfPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiDOvM6xzrbOuc66z47OvSDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiDOtc+AzrXOvs61z4HOs86xz4POr86xz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+EzrcgzrTOuc61z4DOsc+Gzq4gz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM65z4PPhM6/z4HOuc66zr/PjSBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM+Az4HOv869z4zOvM65zrEgzrPOuc6xIM+EzrcgzrTOuc6xzrPPgc6xz4bOriDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4HPhc64zrzOr8+DzrXPic69Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ86Rzr3Osc62zq7PhM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ86fz4HOr8+Dz4TOtSDOsc+Fz4TPjM68zrHPhM6xIM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+Dzrcgz4PPhc68zrLOrM69z4TOv8+CIM61zr3PjM+CIENJIM+Mz4TOsc69IM6tzr3OsSBUaWNrZXQgz4PPhc69zrTOrc61z4TOsc65IM68zrUgzq3Ovc6xIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86fz4HOr862zrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgiDPg8+EzrfOvSDOv864z4zOvc63IM68zrHOts65zrrOrs+CIM+Az4HOv86yzr/Ou86uz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOsc+Dz43Ovc60zrXPg863z4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86fz4HOr862zrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM+Dz4XOvM6yzqzOvc+Ezr/PgiDPg8+EzrfOvSDOv864z4zOvc63IM68zrHOts65zrrOrs+CIM+Az4HOv86yzr/Ou86uz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfPgM+Bzr/PgM6xz4HOsc6zz4nOs865zrrOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPgM+Bz4zPg86yzrHPg863IM+Dz4TOvyDOuc+Dz4TOv8+BzrnOus+MIM61zr3PjM+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Ezr/PhSDPgM61z4HOuc6yzqzOu867zr/Ovc+Ezr/PgiDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4DPgc+Mz4POss6xz4POtyDPg8+Ezr8gzrnPg8+Ezr/Pgc65zrrPjCDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDOvM61zrPOrc64z4XOvc+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOtyDOtM65zrHOs8+BzrHPhs6uIM61zr3PjM+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM68zrXOs86tzrjPhc69z4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnzpXOvM+GzrHOvc6vzrbOtc65IM6tzr3Osc69IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM68zrXOvc6/z40gzrPOuc6xIM+EzrfOvSDOtc68z4bOrM69zrnPg863IM+Ez4nOvSDPg8+Fzr3OtM6tz4POvM+Jzr0gz4TPic69IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Jz4IgzrTOtc69zrTPgc65zrrOriDPgM+Bzr/Oss6/zrvOri4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM6xzr3PhM65zrPPgc6xz4bOriDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDOtc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpXOvM+GzrHOvc6vzrbOtc65IM6tzr3Osc69IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM68zrXOvc6/z40gzrPOuc6xIM+EzrfOvSDOsc69z4TOuc6zz4HOsc+Gzq4gzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM61z4DOtc6+zrXPgc6zzrHPg86vzrEgzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgzr3OsSDOtc+AzrnPg8+Ez4HOrc+IzrXPhM61IM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM68zrXOs86tzrjPhc69z4POt8+CIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM61zrrPhM+Nz4DPic+DzrcgzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpXOvM+GzrHOvc6vzrbOtc65IM6tzr3Osc69IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM68zrXOvc6/z40gzrPOuc6xIM68zrXOs86tzrjPhc69z4POtyDPg861IM6tzr3OsSDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDPhM6/IM65z4PPhM6/z4HOuc66z4wgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgKM6xzr3PhM6vz4PPhM+Bzr/Phs63IM+DzrXOuc+BzqwpIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfOlyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OtyDOus6xz4TOt86zzr/Pgc6vzrEgz4DOv8+FIM61zrzPhs6xzr3Or862zrXPhM6xzrksIM61zqzOvSDOtM61zr0gzq3Ph861zrkgzrXPgM65zrvOtc6zzrXOryDOus6xzrzOr86xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnzqTOvyDOsc69zrHOs869z4nPgc65z4PPhM65zrrPjCDOs865zrEgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiwgz4Auz4cuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDOlyDPgM+Bzr/Otc+AzrnOu86/zrPOriDOtc6vzr3Osc65IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnzqDPgc6/zrrOsc67zrXOryDOsc+Fz4TPjM68zrHPhM6xIM+EzrfOvSDOtc+Azq/Ous67zrfPg863IENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnzojOus60zr/Pg863IFN0cmluZyBFeHByZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ86IzrrOtM6/z4POtyBTdHJpbmcgTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ86jzrrOsc69zrTOrM67zrcgzq3Ous60zr/Pg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ86VzqzOvSDOtyDOtc66z4TOrc67zrXPg863IM+Ezr/PhSBDb25maWdJdGVtQUNMIM68z4DOv8+BzrXOryDOvc6xIM6xz4DOv8+GzrXPhc+HzrjOtc6vIM68zrUgz4TOv869IM6tzrvOtc6zz4fOvyDPhM+Jzr0gzrXOvs6xz4HPhM6uz4POtc+Jzr0gz4TPic69IM+AzrXOtM6vz4nOvSDPgM6/z4Ugzq3Ph86/z4XOvSDOsc+Azr/OuM63zrrOtc+Fz4TOtc6vIM+Dz4TOt869IM+Az4HOv8+Dz4nPgc65zr3OriDOvM69zq7OvM63LiDOkc+Fz4TPjCDOvM+Azr/Pgc61zq8gzr3OsSDOss61zrvPhM65z47Pg861zrkgz4TOv8+Fz4Igz4fPgc+Mzr3Ov8+Fz4Igz4bPjM+Bz4TPic+DzrfPgiDPhM+Jzr0gz4bOv8+BzrzPjs69LCDOsc67zrvOrCDPgM+Bzq3PgM61zrkgzr3OsSDOsc+AzrXOvc61z4HOs86/z4DOv865zrfOuM61zq8sIM61zqzOvSDPgM+Bz4zOus61zrnPhM6xzrkgzr3OsSDPh8+BzrfPg865zrzOv8+Azr/Ouc63zrjOv8+Nzr0gQUNMTW9kdWxlcyDOs865zrEgSVRTTUNvbmZpZ0l0ZW0tIM66zrHOuSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnzqDOv865zrXPgiDOs861zr3Ouc66zq3PgiDPgM67zrfPgc6/z4bOv8+Bzq/Otc+CIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrfOvSDOtc+AzrnOus61z4bOsc67zq/OtM6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ866zrHPhM63zrPOv8+Bzq/OsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfPgM6xzrPOus+Mz4POvM65zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfOvM61z4TOsc+AzrHPgc6xzrPPic6zzrnOus6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfPgM+Bzr/PgM6xz4HOsc6zz4nOs865zrrOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnz4DOsc+BzrHOs8+JzrPOuc66z4wnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDQ0LDQ1IGNtICgxNyw1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgzq/Ovc+Ez4POtc+CICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiA4MCwwMSBjbSAoMzEsNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ86hzqzPhs65IDE5IM65zr3PhM+Dz47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDg4LDkgY20gKDM1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnzqHOrM+GzrkgMjEgzrnOvc+Ez4PPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSDOr869z4TPg861z4IgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICfOoc6sz4bOuSAyMyDOuc69z4TPg8+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IM6vzr3PhM+DzrXPgiAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgzq/Ovc+Ez4POtc+CICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSDOr869z4TPg861z4IgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgzq/Ovc+Ez4POtc+CICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSDOr869z4TPg861z4IgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IM6vzr3PhM+DzrXPgiAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgzq/Ovc+Ez4POtc+CICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiAxNjAsMDIgY20gKDYzIM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCDOr869z4TPg861z4IgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyDOr869z4TPg861z4IgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgzq/Ovc+Ez4POtc+CICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgzq/Ovc+Ez4POtc+CICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgzq/Ovc+Ez4POtc+CICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnzpvOv86zzrnPg8+EzrnOus6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnzprOsc+EzrHOvc6/zrzOriDOtM65zrXPhc64z43Ovc+DzrXPic69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfOlM65zrHPh861zrnPgc65z4PPhM6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnzpHOvc6xzrvOv86zzrnOus+MIM+EzrfOu86tz4bPic69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM+Dz4XPg866zrXPhc6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfOp8+Jz4HOt8+EzrnOus+Mz4TOt8+EzrEgzrzPgM6xz4TOsc+Bzq/Osc+CIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOvM+AzrHPhM6xz4HOr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfOms+Ezq/Pgc65zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ86UzrnOsc+Dz43Ovc60zrXPg863IM60zrnOsc+NzrvOv8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnzprOsc+EzrfOs86/z4HOr86xIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnzqfPic+BzrfPhM65zrrPjM+EzrfPhM6xIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICfOp8+Jz4HOt8+EzrnOus+Mz4TOt8+EzrEgzrHOvc6sIM66zqzPgc+EzrEgzrPPgc6xz4bOuc66z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM66zqzPgc+EzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ86Rzr3Osc6zzr3Pjs+Dz4TOt8+CIM66zrHPgc+Ez47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM66zqzPgc+EzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnzqDOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgz4DOtc67zrHPhM+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnzpvOv86zzrnPg868zrnOus+MIM+AzrXOu86sz4TOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfOms6xz4TOt86zzr/Pgc6vzrEgz4DOtc67zqzPhM63JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ86hz4XOuM68z4zPgiDPgc6/zrvOv86zzrnOv8+NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfOpM6xz4fPjc+EzrfPhM6xIM+Bzr/Ou86/zrPOuc6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ86gzrnPg8+Ezr/PgM6/zrnOt8+EzrnOus6sIM+Fz4DOv86zz4HOsc+Gzq7PgiDOus+OzrTOuc66zrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ86kzrfOu86tz4bPic69zr8gz4PPhc69zrTOuc6sz4POus61z4jOt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnzqPPhc68zrLOv8+FzrvOtc+Fz4TOuc66zq4gz4PPhc68z4bPic69zq/OsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnzpXPgM65zrrOv865zr3Pic69zq/OsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnzpXPgM65zrrOv865zr3Pic69zq7Pg8+EzrUgzrzOtSDPhM6/zr0gzrTOuc6xzr3Ov868zq3OsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ86UzrnOsc+HzrXOr8+BzrnPg863IM61zrzPgM6/z4HOtc+FzrzOsc+Ezr/Ous65zrLPic+Ezq/Pic69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnzqPPjc68zrLOsc+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ86kz43PgM6/z4Igz4PPjc68zrLOsc+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ86gzrXPgc6vzr/OtM6/z4Igz4PPjc68zrLOsc+DzrfPgiDOsc+Az4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnzqDOtc+Bzq/Ov860zr/PgiDPg8+NzrzOss6xz4POt8+CIM6tz4nPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfOkc+Dz43Pgc68zrHPhM6/IM+EzrfOu86tz4bPic69zr8gKM+EzrfOu86tz4bPic69zr8gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnzpzOv869zqzOtM6xIM66z4zPg8+Ezr/Phc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnzpHPgc65zrjOvM+Mz4IgzrHOtM61zrnPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfOl868zrXPgc6/zrzOt869zq/OsSDOtM63zrzOuc6/z4XPgc6zzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICfOoM+Bzr/Pg86xz4HOvM6/z4POvM6tzr3OvyDPgc6sz4bOuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDOms+BzrHPhM63zrzOrc69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1TZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ86XzrzOtc+Bzr/OvM63zr3Or86xIM+Ezr/PhSDPhM65zrzOv867zr/Os86vzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnzpfOvM61z4HOv868zrfOvc6vzrEgz4DOsc+BzrHOs86zzrXOu86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnzpfOvM61z4HOv868zrfOvc6vzrEgz4fOv8+Bzq7Os863z4POt8+CIM61zrPOs8+NzrfPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnzpfOvM61z4HOv868zrfOvc6vzrEgzrrPhc66zrvOv8+Gzr/Pgc6vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnzpXPgM65z4TPgc6xz4DOrc62zrnOsSDOtc+AzrnPhs6szr3Otc65zrEgzrXPgc6zzrHPg86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnzqDOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgz4XPgM6/zrPPgc6xz4bOrs+CIM61zrPOs8+BzqzPhs+Jzr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICfOoc6sz4bOuSBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfOoM65z4PPhM6/z4DOv865zrfPhM65zrrOrCDOt867zrXOus+Ez4HOv869zrnOus6/z40gz4TOsc+Hz4XOtM+Bzr/OvM61zq/Ov8+FICjPgM65z4PPhM6/z4DOv865zrfPhM65zrrOrCBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ86jz43OvM6yzrHPg863IM61z4HOs86xz4POr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfOlM65zrXPjc64z4XOvc+DzrcgSVAgz4TOrc67zr/Phc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnzqTOrc67zr/PgiDPhM63z4Igz4PPhM6uz4HOuc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ86XzrzOtc+Bzr/OvM63zr3Or86xIM67zq7Ovs63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ86Vzr7Pic+EzrXPgc65zrrPjM+CIM+DzrrOu863z4HPjM+CIM60zq/Pg866zr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ86kzrXOr8+Hzr/PgiDPgM+Bzr/Pg8+EzrHPg86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnzpHPgM6/zrjOrs66zrXPhc+DzrcgzrXOvc6tz4HOs861zrnOsc+CIM68zrUgzrnPgM+EzqzOvM61zr3OvyDPhM+Bzr/Ph8+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnzqDOsc+BzqzOs86/zr3PhM6xz4IgzrzOv8+Bz4bOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfOo8+FzrzPhs+Jzr3Or86xIEZyYW5jaGlzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ86TzrXOvc65zrrOrc+CIM+AzrvOt8+Bzr/Phs6/z4HOr861z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfOms6sz4HPhM61z4IgzrPPgc6xz4bOuc66z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnzprOrM+Bz4TOsSDOs8+BzrHPhs65zrrPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnzqXOu865zrrPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ86czr/Ovc+Ezq3Ou86/IM+FzrvOuc66zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICfOks6sz4HOv8+CIM+FzrvOuc66zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnzpHOus6/z4XPg8+EzrnOus6sJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnzqDPgc+Jz4TPjM66zr/Ou867zr8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnzpTOuc6xz4fOtc6vz4HOuc+Dzrcgz4TOsc+Fz4TPjM+EzrfPhM6xz4IgzrrOsc65IM+Az4HPjM+DzrLOsc+DzrfPgiAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnzpHPgc65zrjOvM+Mz4IgzrHPgM6/zrPPgc6xz4bOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfOkc+BzrnOuM68z4zPgiDPhM65zrzOv867zr/Os86vzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ86gzrvOt866z4TPgc6/zrvPjM6zzrnOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICfOn864z4zOvc63IExDRCAozp/OuM+Mzr3OtyDPhc6zz4HPjs69IM66z4HPhc+Dz4TOrM67zrvPic69KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnzp/OuM+Mzr3OtyBMRUQgKM60zq/Ov860zr/PgiDOtc66z4DOv868z4DOrs+CIM+Gz4nPhM+Mz4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ86jz4TOsc64zrXPgc+MIM+EzrfOu86tz4bPic69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnzqbOv8+BzrfPhM+Mz4Igz4XPgM6/zrvOv86zzrnPg8+Ezq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ86TzrXPic6zz4HOsc+GzrnOus+MIM+AzrvOrM+Ezr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSAxOiDOps+Fz4POuc66z4wgz4PPhM+Bz47OvM6xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSAyOiDOo8+Ez4HPjs68zrEgzrbOtc+Nzr7Ot8+CIM60zrXOtM6/zrzOrc69z4nOvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDM6IM6jz4TPgc+OzrzOsSDOtM65zrrPhM+Nzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfOlc+Azq/PgM61zrTOvyAzOiDOlc+Azq/PgM61zrTOvyDOtM65zrrPhM+Nzr/PhSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSA0OiDOo8+Ez4HPjs68zrEgzrzOtc+EzrHPhs6/z4HOrM+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfOo8+Ez4HPjs68zrEgNTogzqPPhM+Bz47OvM6xIM+Dz4XOvc+MzrTOv8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSA2OiDOo8+Ez4HPjs68zrEgz4DOsc+Bzr/Phc+Dzq/Osc+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSA3OiDOo8+Ez4HPjs68zrEgzrXPhs6xz4HOvM6/zrPOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgzrzOr8+DzrjPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgzqzOtM61zrnOsc+CIM+Hz4HOrs+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnzprOu861zrnOtM6vIM6szrTOtc65zrHPgiDPh8+Bzq7Pg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOrM60zrXOuc6xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ86gzrXPgc6vzr/OtM6/z4IgzqzOtM61zrnOsc+CIM6xz4DPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ86gzrXPgc6vzr/OtM6/z4IgzqzOtM61zrnOsc+CIM68zq3Ph8+BzrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ86cz4DOsc+EzrHPgc6vzrEgz4bPic+Dz4bOv8+BzrnOus6/z40gz4POuc60zq7Pgc6/z4UgzrvOuc64zq/Ov8+FIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnzpzPgM6xz4TOsc+Bzq/OsSDOuc+Mzr3PhM+Jzr0gzrvOuc64zq/Ov8+FIChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnzqPPjc68zrLOsc+DzrcgzrTOsc69zrXOr86/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ86Sz4HOr8+DzrrOtc+EzrHOuSDPg8+EzrfOvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfOk861z4nOs8+BzrHPhs65zrrPjCDOvM6uzrrOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnzprOsc+EzrHPg866zrXPhc6xz4PPhM6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ86czq3Os865z4PPhM63IM+Hz4nPgc63z4TOuc66z4zPhM63z4TOsSDPhs6/z4HPhM6vzr/PhSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnzpzOvc6uzrzOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ86kz43PgM6/z4IgzrzOvc6uzrzOt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM66zrnOvc63z4TOv8+NIM+EzrfOu861z4bPjs69zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfOms65zr3Ot8+Ez4wvzrXOvc+Dz4nOvM6xz4TPic68zq3Ovc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnzpzOv869z4TOrc67zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICfOoM61z4HOuc6zz4HOsc+Gzq4gzrzOv869z4TOrc67zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfOkc69zqzOu8+Fz4POtyDOv864z4zOvc63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnzpzOrc6zzrXOuM6/z4Igzr/OuM+Mzr3Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnzqDOv869z4TOr866zrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ86Uzq/Ous+Ez4XOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfOoM67zrfPgc6/z4bOv8+Bzq/Otc+CIM60zrnOus+Ez43Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfOoM67zrfPgc6/z4bOv8+Bzq/Otc+CIM60zrnOus+Ez43Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfOlc+Azq/PgM61zrTOvyDOtM65zrrPhM+Nzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ86cz4DOsc+EzrHPgc6vzrEgzr3Ouc66zrXOu86vzr/PhS3Ous6xzrTOvM6vzr/PhSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfOnM+AzrHPhM6xz4HOr86xIM69zrnOus61zrvOr86/z4UtzrzOtc+EzrHOu867zrnOus6/z40gz4XOtM+BzrnOtM6vzr/PhSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnzqPPhc68z4bPic69zq/OsSDOvM63IM6xz4DOv866zqzOu8+Fz4jOt8+CIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnzqPOt868zrXOuc+JzrzOsc+EzqzPgc65zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICfOkc+BzrnOuM68z4zPgiBDUFVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ86Rz4HOuc64zrzPjM+CIM68zr/Ovc6szrTPic69IFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICfOkc+BzrnOuM68z4zPgiDOus6xz4HPhM+Ozr0gzrPPgc6xz4bOuc66z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnzp/OuM+Mzr3OtyBPTEVEICjOv8+BzrPOsc69zrnOus6uIM60zq/Ov860zr/PgiDOtc66z4DOv868z4DOrs+CIM+Gz4nPhM+Mz4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ86bzrXOuc+Ezr/Phc+BzrPOuc66z4wgzrrPjM+Dz4TOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM+AzrHPgc6xzrPOs861zrvOr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfOhs67zrvOsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnzojOvs6/zrTOv865JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgzrXPhM6xzrnPgc65zrrOrs+CIM+Dz4fOrc+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM+EzrfOu861z4bPjs69zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnzqTPjc+Azr/PgiDPhM63zrvOtc+Gz47Ovc6/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfOps+Fz4POuc66zr/OryDPgM+Fz4HOrs69zrXPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ86gzrHPgc6szrTOv8+DzrcgzrnPg8+Hz43Ov8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnzpHOs86/z4HOrM+Dz4TOt866zrUgz4PPhM6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICfOks6szrjOv8+CIM+BzrHPhs65zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ86czr/Ovc6szrTOtc+CIFJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfOlM+JzrzOrM+EzrnOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ86azqzPgc+EzrEgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnzqDOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ86jz43OvM6yzrHPg863IM+Az47Ou863z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ86Uzr/Pgc+Fz4bOv8+BzrnOus+MIM+EzrfOu86tz4bPic69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnzqPPhs+BzrHOs865z4POvM6tzr3OtyDOvM+AzrHPhM6xz4HOr86xIM68zr/Ou8+NzrLOtM6/z4Utzr/Ovs6tzr/PgiAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ86Rz43Ovs+Jzr0gzrHPgc65zrjOvM+Mz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnzpvOv86zzrnPg868zrnOus+MIM60zrnOsc66zr/OvM65z4PPhM6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnzqPPhc68z4bPic69zq/OsSDPgM6xz4HOv8+Hzq7PgiDPhc+AzrfPgc61z4POuc+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfOlc+EzrnOus6tz4TOsSDPhc+AzrfPgc61z4POr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnzqTPjc+Azr/PgiDPhc+Azr/OtM6/z4fOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnzpvOv86zzrnPg868zrnOus+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnzp/OvM65zrvOt8+Ezq3Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfOms6xzr3Ov869zrnOus6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICfOlM65zrXPjc64z4XOvc+DzrcgSVAgzq3Ovc6xz4HOvs63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ86Rz4DOv864zq7Ous61z4XPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnzpTOuc6xzrzOrc+BzrnPg868zrEgzrHPgM6/zrjOrs66zrXPhc+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ86Yz4XOs86xz4TPgc65zrrOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnzqDOtc+Bzq/Ou863z4jOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ86bzrXPgM+Ez4zPgiDPgM61zrvOrM+EzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnzp3Ors68zrHPhM6xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ86jz4XOvc6/zrvOuc66zq4gzrzOvc6uzrzOtyBSQU0gzrrOrM+Bz4TOsc+CIM6zz4HOsc+GzrnOus+Ozr0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ86jz4XOvc6/zrvOuc66zq4gzrzOvc6uzrzOtyBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnzp/OuM+Mzr3OtyDOsc+Gzq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ86gz43Pgc6zzr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnzpTOuc6xzr3Ov868zq3Osc+CIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ86RzrrOv8+Fz4PPhM65zrrOrCBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICfOpM63zrvOrc+Gz4nOvc6/IFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/en_CA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmFsIG9wZXJhdGlvbiBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NoYW5nZSByb2xlIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3IgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW5jaWRlbnQgc3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0byBhbm90aGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ05ldHdvcmsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaW9uIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGVwbG95bWVudCBTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50IFN0YXRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3J5IENvbnRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWm9vbSB2aWV3JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnUnVuIFNlYXJjaCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IGZvciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnRGVwdGggTGV2ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIEluL091dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdMYXN0IGNoYW5nZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGFzdCBjaGFuZ2VkIGJ5JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnWW91ciBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIFNlYXJjaCc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdObyBhY2Nlc3MgaXMgZ2l2ZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTmV3IHZlcnNpb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvbiAlcyBkZWxldGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ1N1Ym5ldCBNYXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3ByaW50ZWQgYnkgJXMgYXQgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBDbGFzc0lEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdObyBSZXN1bHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5vdCBmb3VuZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTm8gdmVyc2lvbnMgZm91bmQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ3dhcm5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gcGVybWlzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdTaG93biBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnRGVwbG95bWVudCBTdGF0ZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdCZXR3ZWVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWljIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdMaW5rIFJlZmVyZW5jaW5nIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lvbiBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5uZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYWlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRpcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gSGlkZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTaG93bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0Fzc2lnbmVkIENJcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIFNldHRpbmdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlnIGl0ZW0gYWRkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZyBpdGVtIGVkaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0NvbmZpZyBpdGVtIGhpc3RvcnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZyBpdGVtIHByaW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZyBpdGVtIHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBUcmVlIFZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0RlZmluaXRpb24gVXBkYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0RlcGxveW1lbnQgU3RhdGUgQ29sb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2F0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOYW1lIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtYmVyIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzaW9uIEdyb3VwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdTZWFyY2ggY29uZmlnIGl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGl2ZSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktaW5jaCBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS1pbmNoIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLWluY2ggUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLjYgaW5jaGVzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMS41IGluY2hlcyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUuNCBpbmNoZXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOS40IGluY2hlcyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zIGluY2hlcyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdBY2NvdW50aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRkcmVzcyBBbGxvY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZyBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0FwcGxpYW5jZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0JhdHRlcnkgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J1aWxkaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdCdXMgSW50ZXJmYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2l0eSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdDYXJkIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0NhcmQgUmVhZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0NhcmQgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2xpZW50IENlcnRpZmljYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdDbGllbnQgU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2xpZW50IGNhdGVnb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0Nsb2NrcmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnQ29uZmVyZW5jZSBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0NvbnN1bHRpbmcgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0IERpc3RyaWJ1dG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnQ29udGFpbmVyIE1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnQ29udHJhY3QgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0NvbnRyYWN0IHBlcmlvZCBmcm9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0NvbnRyYWN0IHBlcmlvZCB1bnRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnQ29zdCB1bml0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnQ291bnQgb2YgbGljZW5zZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0NyZWF0aW9uIERhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0N1c3RvbSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtU2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXRlIG9mIEludm9pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGUgb2YgT3JkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdGUgb2YgV2FycmFudHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0ZSBvZiByZWxlYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdFbXBsb3ltZW50IENvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRW5kIElQIEFkZHJlc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdFbmQgb2Ygc3VwcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0V4cGlyeSBEYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFeHRlcm5hbCBIYXJkIERyaXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybSBGYWN0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdHZW5lcmFsIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhcGhpY3MgQ2FyZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYXBoaWNzIGNhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0hhcmR3YXJlIE1vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0hhcmR3YXJlIFdlaWdodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnSGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIFByb3RvY29sJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50b3J5IE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnSW52b2ljZSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLZXlib2FyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnTGFuZGxpbmUgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYXllciAxOiBQaHlzaWNhbCBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdMZWFzZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbnNlIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5zZSBLZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW5zZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaWNlbnNlIHBlcmlvZCBmcm9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGljZW5zZSBwZXJpb2QgdW50aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMb2FuIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTG9jYXRlZCBpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdNYW51ZmFjdHVyZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWVtb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTWVtb3J5IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxlIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGUvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsIERlc2NyaXB0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3IgUmVzb2x1dGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yIFNpemUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNb3VzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0d29yayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdOZXR3b3JrIEluZm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ05ldHdvcmsgSW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ05ldHdvcmsgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTnVtYmVyIG9mIENQVXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ051bWJlciBvZiBncmFwaGljcyBjYXJkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdPcGVyYXRpbmcgY29zdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnT3JkZXIgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3RoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ091dHB1dHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNoaXAgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnUGhvbmUgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdQaG9uZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnUGh5c2ljYWwgQ29yZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdQb3dlciBEZWxpdmVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ1B1cmNoYXNlZCBhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFjayBEZXB0aCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JhY2sgVW5pdHMgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdSb29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIENhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIENlcnRpZmljYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1NhbGVzIENvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGl0ZSBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpYWxudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyIFNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU2VydmljZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNlIFRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdTb2NrZXQgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnU3BlYWtlcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTdGFydCBJUCBBZGRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdTdG9yYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnU3RvcmFnZSBQYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdTdWJzaWRpYXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTdW1tYXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGhpbiBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1RocmVhZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdUb3VjaHNjcmVlbiBNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG93ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiBIdWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/en_GB_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0dCX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmFsIG9wZXJhdGlvbiBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NoYW5nZSByb2xlIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3IgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRGVwbG95bWVudCBzdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaW5rIHRvIGFub3RoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbiBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RlcGxveW1lbnQgU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudCBTdGF0ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yeSBDb250ZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1pvb20gdmlldyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgSXRlbXMgcGVyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdSdW4gU2VhcmNoJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdEZXB0aCBMZXZlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ1pvb20gSW4vT3V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0xhc3QgY2hhbmdlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdMYXN0IGNoYW5nZWQgYnknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdZb3VyIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gU2VhcmNoJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdOZWVkIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdPdmVydmlldzogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05vIGFjY2VzcyBpcyBnaXZlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOZXcgdmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvbiAlcyBkZWxldGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdwcmludGVkIGJ5ICVzIGF0ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdJbnZhbGlkIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTm8gUmVzdWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5vdCBmb3VuZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTm8gdmVyc2lvbnMgZm91bmQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ3dhcm5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gUGVybWlzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdTaG93biBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnRGVwbG95bWVudCBTdGF0ZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdCZXR3ZWVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWljIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdMaW5rIFJlZmVyZW5jaW5nIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lvbiBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01haW50ZW5hbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5uZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYWlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRpcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gSGlkZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTaG93bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0Fzc2lnbmVkIENJcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIFNldHRpbmdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlnIGl0ZW0gYWRkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZyBpdGVtIGVkaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0NvbmZpZyBpdGVtIGhpc3RvcnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZyBpdGVtIHByaW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZyBpdGVtIHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBUcmVlIFZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnRGVmaW5pdGlvbiBVcGRhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdEZXBsb3ltZW50IFN0YXRlIENvbG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtZSBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWJlciBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2d1ZSBhdHRyaWJ1dGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzaW9uIEdyb3VwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uIFN0cmluZyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2lvbiBUcmlnZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3RpdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3RpdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3RpdmUnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LWluY2ggUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IGluY2hlcyAoODguOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtaW5jaCBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1pbmNoIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMy42IGluY2hlcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEuNSBpbmNoZXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LjQgaW5jaGVzICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMuMyBpbmNoZXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LjIgaW5jaGVzICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQWNjb3VudGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkZHJlc3MgQWxsb2NhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2cgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdBcHBsaWFuY2UgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdCYXR0ZXJ5IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCdWlsZGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzIEludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSBDbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpdHkgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnQ2FyZCBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdDYXJkIFJlYWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdDYXJkIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NsaWVudCBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnQ2xpZW50IFNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NsaWVudCBjYXRlZ29yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdDbG9ja3JhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0NvbmZlcmVuY2UgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdDb25zdWx0aW5nIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnQ29udGFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdCBEaXN0cmlidXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0NvbnRhaW5lciBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0NvbnRyYWN0IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdDb250cmFjdCBwZXJpb2QgZnJvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdDb250cmFjdCBwZXJpb2QgdW50aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0Nvc3QgdW5pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0NvdW50IG9mIGxpY2Vuc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdDcmVhdGlvbiBEYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdDdXN0b20gUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLVNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0ZSBvZiBJbnZvaWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRlIG9mIE9yZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRlIG9mIFdhcnJhbnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGUgb2YgcmVsZWFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnRW1wbG95bWVudCBDb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0VuZCBJUCBBZGRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRW5kIG9mIHN1cHBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdFeHBpcnkgRGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuYWwgSGFyZCBEcml2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm0gRmFjdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnR2VuZXJhbCBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYXBoaWNzIENhcmRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFwaGljcyBjYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdIYXJkd2FyZSBNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIYXJkd2FyZSBXZWlnaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0hlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCBQcm90b2NvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudG9yeSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0ludm9pY2UgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2V5Ym9hcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0xhbmRsaW5lIFBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYXllciAzOiBOZXR3b3JrIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xheWVyIDU6IFNlc3Npb24gTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTGVhc2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5zZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2Vuc2UgS2V5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpY2Vuc2UgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5zZSBwZXJpb2QgZnJvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2Vuc2UgcGVyaW9kIHVudGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnTG9hbiBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0xvY2F0ZWQgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnTWFudWZhY3R1cmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbW9yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ01lbW9yeSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsZSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxlL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbCBEZXNjcmlwdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9yIFJlc29sdXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvciBTaXplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ05ldHdvcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnTmV0d29yayBJbmZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdOZXR3b3JrIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOZXR3b3JrIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ051bWJlciBvZiBDUFVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ051bWJlciBvZiBSQU0gbW9kdWxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnT3BlcmF0aW5nIGNvc3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ09yZGVyIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ090aGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdPdXRwdXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJzaGlwIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1Bob25lIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnUGhvbmUgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ1BoeXNpY2FsIENvcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnUG93ZXIgRGVsaXZlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdQdXJjaGFzZWQgYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1JhY2sgRGVwdGgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWNrIFVuaXRzIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSBDYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdTYWxlcyBDb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpdGUgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWFsbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlciBTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NlcnZpY2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmljZSBUYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnU29ja2V0IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1NwZWFrZXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTdGFydCBJUCBBZGRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdTdG9yYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnU3RvcmFnZSBQYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdTdWJzaWRpYXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTdW1tYXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGhpbiBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1RocmVhZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdUb3VjaHNjcmVlbiBNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG93ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiBIdWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/es_CO_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0NPX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGUgY2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgRWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJvIHBvciBjbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnU2VsZWNjaW9uZSB1bmEgY2xhc2UgZGUgbGEgbGlzdGEgcGFyYSBjcmVhciB1biBudWV2byBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0FjY2nDs24gbWFzaXZhIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGVsIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdFbmxhY2UgYSBvdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIG5vIHbDoWxpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0VsIG7Dum1lcm8gZGUgb3RybyBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gZWwgcXVlIGVubGF6YXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUmVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIG5vbWJyZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbiBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTsO6bWVybyBkZSB2ZXJzacOzbiB5YSBlc3TDoSBlbiB1c28gcG9yIGVsIENvbmZpZ0l0ZW1zIGNvbiBlbCBzaWd1aWVudGUgbsO6bWVybyAocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpYSBkZSBDb25maWcgSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWEgQ29udGVuaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgRWxlbWVudG9zIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyBkYXRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNjaW9uZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRWplY3V0YXIgYsO6c3F1ZWRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWwgZGUgcHJvZnVuZGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdBY2VyY2FyL0FsZWphcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICfCoU5pdmVsIG3DoXhpbW8gZGUgZW5sYWNlcyBhbGNhbnphZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0RlbW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gYWN0dWFsIGRlbCBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gYWN0dWFsIGRlbCBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltbyBjYW1iaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnw5psdGltbyBjYW1iaW8gcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnU3VzIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGNsYXNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZSBpbXBvcnRhcsOhbiBsYXMgc2lndWllbnRlcyBmdW5jaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnVGVuZ2EgZW4gY3VlbnRhIHF1ZSB0YW1iacOpbiBzZSBjcmVhcsOhbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgeSBsYXMgY2xhc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRpZW50ZXMgeSBxdWUgbm8gc2UgZWxpbWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfCv1F1aWVyZXMgY29udGludWFyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfCoU5lY2VzaXRhIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkZWZpbmljacOzbiBubyBlcyB1biBoYXNoIFlBTUwgdsOhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdWaXNpw7NuIGdlbmVyYWw6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBpbmRpY2FkbyBuaW5nw7puIENvbmZpZ0l0ZW1JRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdOZWNlc2l0YSBhbCBtZW5vcyB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBzZWxlY2Npb25hZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTm8gdGllbmUgYWNjZXNvIGRlIGVzY3JpdHVyYSBhIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfCoU5vIHNlIGhhIGRlZmluaWRvIGxhIGNsYXNlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnRWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gIiVzIiBubyBzZSBlbmN1ZW50cmEgZW4gbGEgYmFzZSBkZSBkYXRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfCoU5vIHNlIGhhIHBvZGlkbyBib3JyYXIgZWwgY29uZmlnaXRlbSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ8KhTm8gc2UgaGEgZW5jb250cmFkbyBuaW5ndW5hIHZlcnNpw7NuIHBhcmEgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBpbmRpY2EgbmluZ8O6biBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0RlZmluZSBxdcOpIHRpcG8gZGUgdGlja2V0IHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIMKhbm8gc2UgZGEgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05vIHB1ZWRvIG1vc3RyYXIgZWwgaGlzdG9yaWFsLCBubyB0ZW5nbyBkZXJlY2hvcyBkZSBhY2Nlc28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOdWV2byBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOdWV2YSB2ZXJzacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUgYWN0dWFsaXphZG8gKG51ZXZvPSVzLCBhbnRpZ3VvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZGVsIGluY2lkZW50ZSBhY3R1YWxpemFkbyAobnVldm89JXMsIGFudGlndW89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGVsaW1pbmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0VubGFjZSBhICVzICh0eXBlPSVzKSBhw7FhZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnRW5sYWNlIGEgJXMgKHR5cGU9JXMpIGVsaW1pbmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pY2nDs24gZGUgQ29uZmlnSXRlbSBhY3R1YWxpemFkYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tYnJlIGFjdHVhbGl6YWRvIChudWV2bz0lcywgYW50aWd1bz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0byAlcyBhY3R1YWxpemFkbyBkZSAiJXMiIGEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzacOzbiAlcyBlbGltaW5hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaW5kaWNhIG5pbmfDum4gQ29uZmlnSXRlbUlEIG5pIFZlcnNpb25JRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgbm8gc2UgaGFuIGNvbmNlZGlkbyBkZXJlY2hvcyBkZSBhY2Nlc28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG5vIHNlIGVuY3VlbnRyYSBlbiBsYSBiYXNlIGRlIGRhdG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2ltcHJlc28gcG9yICVzIGVuICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnwqFDbGFzc0lEIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBpbmRpY2EgbmluZ8O6biBDbGFzc0lELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05vIHNlIGhhbiBjb25jZWRpZG8gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgZXN0YSBjbGFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ8KhU2luIHJlc3VsdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWd1cmFyIHJlc3VsdGFkb3MgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50bywgwqFubyBzZSBkYW4gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnwqFDb25maWdJdGVtIG5vIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2ZXJ0ZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBkZXNwbGllZ3VlIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gdGllbmUgcGVybWlzb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8KhRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOhbWV0cm9zIGRlIGLDunNxdWVkYSBpbnbDoWxpZG9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnRWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIGVzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0VzdGFkbyBhY3R1YWwgZGVsIGluY2lkZW50ZSBUaXBvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0VudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgY2xhc2UgcGFyYSBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW7DoW1pY28gKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdFc3TDoXRpY2EgKFZlcnNpw7NuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRlIHJlZmVyZW5jaWEgZGUgZW5sYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1NpIGVzdGUgZW5sYWNlIHNlIGFwbGljYSBhbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBvIGEgbGEgdmVyc2nDs24gZXN0w6F0aWNhIGRlbCBvYmpldG8gZGUgcmVmZXJlbmNpYS4gRWwgY8OhbGN1bG8gZGVsIGVzdGFkbyBhY3R1YWwgZGVsIGluY2lkZW50ZSBzw7NsbyBzZSByZWFsaXphIGVuIGxvcyBlbmxhY2VzIGRpbsOhbWljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWNjaW9uZSBlbCBhdHJpYnV0byBwb3IgZWwgcXVlIHNlIGJ1c2NhcsOhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdMYSBlc3RydWN0dXJhIGJhc2Ugbm8gZXMgdsOhbGlkYS4gUG9yIGZhdm9yLCBwcm9wb3JjaW9uZSB1biBoYXNoIGNvbiBkYXRvcyBlbiBmb3JtYXRvIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnRXMgbmVjZXNhcmlvIGNvbWVuemFyIGxhIGNhZGVuYSBZQU1MIGNvbiBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdObyBzZSBoYSBwb2RpZG8gcHVyZ2FyIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIGNhbXBvcyBkaW7DoW1pY29zIHJlbGV2YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdObyBzZSBoYSBwb2RpZG8gaW5zZXJ0YXIgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcnRhZGFzIDAgZmlsYXMgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ07Dum1lcm8gbcOheGltbyBkZSB1biBlbGVtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzacOzbiBDYWRlbmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3IgYWwgc2luY3Jvbml6YXIgbGFzIGRlZmluaWNpb25lcy4gUG9yIGZhdm9yLCBjb21wcnVlYmUgZWwgcmVnaXN0cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGllbmUgZGVmaW5pY2lvbmVzIGRlIElUU01Db25maWdJdGVtIHF1ZSBubyBlc3TDoW4gc2luY3Jvbml6YWRhcy4gRGVzcGxpZWd1ZSBsb3MgY2FtYmlvcyBlbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgZGUgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdDYWR1Y2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnRlbmltaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5pZmljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnQ29uc3VsdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1BydWViYXMvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Zpc2nDs24gZ2VuZXJhbCB5IGNvbmZpcm1hY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YXIgY2xhc2VzL3JvbGVzIHkgc3VzIGNhbXBvcyByZWxhY2lvbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdTZSBoYSBwcm9kdWNpZG8gdW4gZXJyb3IgZHVyYW50ZSBsYSBpbXBvcnRhY2nDs24gZGUgbGEgY2xhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBPY3VsdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIFNlIG11ZXN0cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGljaW9uZXMgZGUgYsO6c3F1ZWRhIGV4dGVuZGlkYXMgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBDb24gZXN0YSBmdW5jacOzbiBwdWVkZSBidXNjYXIsIHBvciBlamVtcGxvLCBlbCBub21icmUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGNvbmRpY2lvbmVzIGNvbW8gIigqY2xhdmUxKiYmKmNsYXZlMiopIiBvICIoKmNsYXZlMSp8fCpjbGF2ZTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgYW1wbGlhciBsYXMgY29uZGljaW9uZXMgZGUgYsO6c3F1ZWRhIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gZXN0ZSB0aXBvIGRlIGNvbmRpY2lvbmVzIGNvbW8gIigqY2xhdmUxKiYmKmNsYXZlMiopIiBvICIoKmNsYXZlMSp8fCpjbGF2ZTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0lDIGFzaWduYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdJQyBhc2lnbmFkb3MgYSBsYSBlbXByZXNhIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNpZ25hZG9zIGFsIHVzdWFyaW8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ29uZmlndXJhY2nDs24gZGUgbGEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQnVzY2EgdW4gbm9tYnJlIMO6bmljbyBzw7NsbyBkZW50cm8gZGUgbGEgbWlzbWEgY2xhc2UgZGUgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSBvIGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbG8gcXVlIHNpZ25pZmljYSBxdWUgY2FkYSBDb25maWdJdGVtIGV4aXN0ZW50ZSBzZSB0aWVuZSBlbiBjdWVudGEgYSBsYSBob3JhIGRlIGJ1c2NhciBkdXBsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBkZSBub21icmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBudW3DqXJpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgZGUgY2FkZW5hcyBkZSB2ZXJzaW9uZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnRWxpamEgYXRyaWJ1dG9zIHBhcmEgYWN0aXZhciBsYSBjcmVhY2nDs24gZGUgdW5hIG51ZXZhIHZlcnNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdFbGlqYSBsYXMgY2F0ZWdvcsOtYXMgcXVlIGRlc2VhIGFzaWduYXIgYSBlc3RhIGNsYXNlIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyb3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGNvbHVtbmEgcGFyYSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sdW1uYXMgcXVlIHNlIHB1ZWRlbiBmaWx0cmFyIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIE5vdGE6IFNvbG8gc2UgcGVybWl0ZW4gYXRyaWJ1dG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiB5IGNhbXBvcyBkaW7DoW1pY29zIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdFbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0NvbmZpZyBpdGVtIGFkZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0YXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBxdWUgcGVybWl0ZSBlbCByZWdpc3RybyBlbiBlbCBoaXN0b3JpYWwgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgYWN0dWFsaXphIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gYSBzdSBkZWZpbmljacOzbiBhY3R1YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaWFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ29uZmlnIGl0ZW0gcHJpbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlndXJhciB6b29tIGRlIGVsZW1lbnRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdWaXN0YSBlbiDDoXJib2wgZGUgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xvcyBDb25maWdJdGVtcyBkZSBsYXMgc2lndWllbnRlcyBjbGFzZXMgbm8gc2UgYWxtYWNlbmFyw6FuIGVuIGVsIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBlc3RvIGEgbG9zIENJcyBleGlzdGVudGVzLCBsYSBtaWdyYWNpw7NuIGRlbCBDSSB0aWVuZSBxdWUgc2VyIGVqZWN1dGFkYSBhIHRyYXbDqXMgZGUgbGEgY29uc29sYSwgZGVzcHXDqXMgZGUgY2FtYmlhciBlc3RhIG9wY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xvcyBDb25maWdJdGVtcyBjb24gbG9zIHNpZ3VpZW50ZXMgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIG5vIHNlIGFsbWFjZW5hcsOhbiBlbiBlbCBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgZXN0byBhIGxvcyBDSXMgZXhpc3RlbnRlcywgbGEgbWlncmFjacOzbiBkZWwgQ0kgdGllbmUgcXVlIHNlciBlamVjdXRhZGEgYSB0cmF2w6lzIGRlIGxhIGNvbnNvbGEsIGRlc3B1w6lzIGRlIGNhbWJpYXIgZXN0YSBvcGNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmFjacOzbiBFbGVtZW50byBMw61taXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmFjacOzbiBMw61taXRlIGRlIGVsZW1lbnRvcyBwb3IgcMOhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0Jhc2UgZGUgZGF0b3MgZGUgZ2VzdGnDs24gZGUgbGEgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNw7NkdWxvIG1hc2l2byBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGJ1c2NhciBlbnJ1dGFkb3IgYmFja2VuZCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlZSB5IGdlc3Rpb25lIGxhcyBkZWZpbmljaW9uZXMgZGUgbG9zIEVsZW1lbnRvcyBkZSBDb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmVhIFRpY2tldHMgcGFyYSBDb25maWdJdGVtcyBlbiBtb21lbnRvcyBlc3BlY8OtZmljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0xvcyBjbGllbnRlcyBwdWVkZW4gdmVyIGxhcyB2ZXJzaW9uZXMgaGlzdMOzcmljYXMgZGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0xvcyBjbGllbnRlcyB0aWVuZW4gbGEgcG9zaWJpbGlkYWQgZGUgY2FtYmlhciBtYW51YWxtZW50ZSBlbnRyZSB2ZXJzaW9uZXMgaGlzdMOzcmljYXMgZGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0b3MgcHJlZGV0ZXJtaW5hZG9zIHF1ZSBzZSB1dGlsaXphcsOhbiBlbiBlbCBhdHJpYnV0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uIEVqZW1wbG86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD1hw7FvO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9w5psdGltbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0b3MgcG9yIGRlZmVjdG8gYSB1dGlsaXphciBlbiBlbCBhdHJpYnV0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgY29uZmlnLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5hIGFjY2lvbmVzIGRvbmRlIHVuIGJvdMOzbiBkZSBjb25maWd1cmFjacOzbiBlc3TDqSBkaXNwb25pYmxlIGVuIGVsIHdpZGdldCBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZWpvIikuIFRlbmdhIGVuIGN1ZW50YSBxdWUgZXN0YXMgYWNjaW9uZXMgZGViZW4gaGFiZXIgcmVnaXN0cmFkbyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyBKUyB5IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgeSBDb3JlLkFnZW50IC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGVzcXVlbWEgVGVtcGxhdGU6OlRvb2xraXQgcGFyYSBjYWRlbmFzIGRlIHZlcnNpw7NuLiBTw7NsbyBzZSB1dGlsaXphIHNpIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBzZSBlc3RhYmxlY2UgZW4gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGNvbmp1bnRvIGRlIGNvbmRpY2lvbmVzIGJham8gbGFzIGN1YWxlcyB1biBjbGllbnRlIHB1ZWRlIHZlciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4gTGFzIGNvbmRpY2lvbmVzIHB1ZWRlbiByZXN0cmluZ2lyc2Ugb3BjaW9uYWxtZW50ZSBhIGRldGVybWluYWRvcyBncnVwb3MgZGUgY2xpZW50ZXMuIEVsIG5vbWJyZSBlcyBlbCDDum5pY28gYXRyaWJ1dG8gb2JsaWdhdG9yaW8uIFNpIG5vIHNlIGVzcGVjaWZpY2EgbmluZ3VuYSBvdHJhIG9wY2nDs24sIHRvZG9zIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2Vyw6FuIHZpc2libGVzIGVuIGVzYSBjYXRlZ29yw61hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJvcGllZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBvYnRlbmVyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIHV0aWxpemFuZG8gbGEgSW50ZXJmYXogR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyByZXF1ZXJpZG9zIHBhcmEgYnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIHV0aWxpemFuZG8gbGEgSW50ZXJmYXogR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyByZXF1ZXJpZG9zIHBhcmEgZXN0YWJsZWNlciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSB1dGlsaXphbmRvIGxhIEludGVyZmF6IEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgdmlzdGEgZ2VuZXJhbCBwYXJhIG1vc3RyYXIgbGEgdmlzdGEgcGVxdWXDsWEgZGUgdW5hIGxpc3RhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNpIGxhcyBldGlxdWV0YXMgZGUgdGlwbyBkZSBlbmxhY2UgZGViZW4gbW9zdHJhcnNlIGVuIGxhcyBjb25leGlvbmVzIGRlIGxvcyBub2Rvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBleHByZXNpb25lcyByZWd1bGFyZXMgaW5kaXZpZHVhbG1lbnRlIHBhcmEgY2FkYSBjbGFzZSBDb25maWdJdGVtIHBhcmEgY29tcHJvYmFyIGVsIG5vbWJyZSBDb25maWdJdGVtIHkgbW9zdHJhciBsb3MgbWVuc2FqZXMgZGUgZXJyb3IgY29ycmVzcG9uZGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRpc3BvbmlibGVzIGRlIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBmdW5jacOzbiBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc3RhciBkZSB1biBub21icmUgZGUgY2xhc2UgeSB1bmEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGVzdGEgb3BlcmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4gQXJyaWJhOiBlbCBtw6FzIGFudGlndW8gYXJyaWJhLiBBYmFqbzogZWwgbcOhcyByZWNpZW50ZSBhcnJpYmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0byBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlcGVuZGllbmRvIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zaXN0aXIgZW4gdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW4gYXJyYXkgZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgbGEgcHJvZnVuZGlkYWQgZGUgbGFzIHJlbGFjaW9uZXMgcXVlIHNlIG1vc3RyYXLDoW4gcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4gRWplbXBsbzogIkNsYXZlIiBkZWJlIHRlbmVyIGVsIG5vbWJyZSBkZWwgQ2FtcG8gRGluw6FtaWNvIGVuIGVzdGUgY2FzbyBcJ1hcJywgIkNvbnRlbmlkbyIgZGViZSB0ZW5lciBlbCB2YWxvciBkZWwgQ2FtcG8gRGluw6FtaWNvIGRlcGVuZGllbmRvIGRlbCB0aXBvIGRlIENhbXBvIERpbsOhbWljbywgVGV4dG86IFwnYSB0ZXh0XCcsIERlc3BsZWdhYmxlOiBcJzFcJywgRmVjaGEvSG9yYTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTZWNvbmQ9NTk7XCcgeSBvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzdWJvYmpldG8gcG9yIGRlZmVjdG8gZGUgbGEgY2xhc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnN0YXIgZGUgdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW5hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBhbHR1cmEgZGVsIGNvbXBvbmVudGUgZWRpdG9yIGRlIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgZXN0YSBwYW50YWxsYS4gSW50cm9kdXpjYSB1biBuw7ptZXJvIChww614ZWxlcykgbyB1biB2YWxvciBwb3JjZW50dWFsIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBuw7ptZXJvIGRlIGZpbGFzIGRlbCBlZGl0b3IgZGUgZGVmaW5pY2lvbmVzIENJIGVuIGxhIGludGVyZmF6IGRlIGFkbWluaXN0cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIGRlIGxvcyBlc3RhZG9zIGluY2lkZW50ZXMgZGUgYWx0byAocG9yIGVqZW1wbG8sIGNyaWNpdGFsKSBhIGJham8gKHBvciBlamVtcGxvLCBmdW5jaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIHJlbGV2YW50ZXMgZW4gbG9zIHF1ZSBsb3MgdGlja2V0cyB2aW5jdWxhZG9zIHB1ZWRlbiBhZmVjdGFyIGFsIGVzdGFkbyBkZSB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMgcGFyYSB0b2RhcyBsYXMgY2xhc2VzIGRlIENJLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBkZSBDSXMgZW4gbGEgdmlzdGEgY29tcGxlamEgZGUgbGEgdGFibGEgZGUgZW5sYWNlcywgZGVwZW5kaWVuZG8gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGxsZXZhciBjb21vIHByZWZpam8gZWwgbm9tYnJlIGRlIGxhIGNsYXNlIHkgZG9zIHB1bnRvcyBkb2JsZXMgKHBvciBlamVtcGxvLCBPcmRlbmFkb3I6OikuIEhheSBhbGd1bm9zIENJLUF0cmlidXRvcyBxdWUgc29uIGNvbXVuZXMgYSB0b2RvcyBsb3MgQ0lzIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBhcmEgbW9zdHJhciBsb3MgQXRyaWJ1dG9zLUNJIGluZGl2aWR1YWxlcyB0YWwgeSBjb21vIHNlIGRlZmluZW4gZW4gbGEgRGVmaW5pY2nDs24tQ0ksIHNlIGRlYmUgdXRpbGl6YXIgZWwgc2lndWllbnRlIGVzcXVlbWEgKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBPcmRlbmFkb3IpOiBPcmRlbmFkb3I6OkRpc2NvRHVybzo6MSwgT3JkZW5hZG9yOjpEaXNjb0R1cm86OjE6OkNhcGFjaWRhZDo6MSwgT3JkZW5hZG9yOjpEaXNjb0R1cm86OjIsIE9yZGVuYWRvcjo6RGlzY29EdXJvOjoyOjpDYXBhY2lkYWQ6OjEuIFNpIG5vIGhheSBuaW5ndW5hIGVudHJhZGEgcGFyYSB1bmEgY2xhc2UgQ0ksIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwb3IgZGVmZWN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIHBhcmEgIkFjY2nDs24iIGVuIGVsIHRlcmNlciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgcHJpbWVyIG5pdmVsIGRlIGxhIGVzdHJ1Y3R1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgc2VndW5kbyBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIGVubGFjZSAobm9tYnJhZG8gZGVzZGUgbGEgcGVyc3BlY3RpdmEgZGVsIHRpY2tldCkgcHVlZGUgYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kgZW5sYXphZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSB0aWNrZXQgcHVlZGUgYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kgdmluY3VsYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FjdHVhbGl6YWNpw7NuIGRlIGxhIGRlZmluaWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdCb3JyYXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSBDb2xvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBxdWUgbWFyY2EgbGFzIGRlZmluaWNpb25lcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyBubyBzaW5jcm9uaXphZGFzIHNpIGNhbWJpYW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIHF1ZSBjb250aWVuZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgY2FtcG9zIElUU00gYWRpY2lvbmFsZXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIHJlc3VtZW4gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgbW9zdHJhZGFzIGRlIGxvcyBDSXMgZW4gbGEgdmlzdGEgY29tcGxlamEgZGUgbGEgdGFibGEgZGUgZW5sYWNlcyBwYXJhIHRvZGFzIGxhcyBjbGFzZXMgZGUgQ0kuIFNpIG5vIGhheSBuaW5ndW5hIGVudHJhZGEsIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwb3IgZGVmZWN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FjdGl2YSBsYSBmdW5jacOzbiBkZSBhY2Npw7NuIG1hc2l2YSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc8OzbG8gcGFyYSBsb3MgZ3J1cG9zIGRlIGxhIGxpc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgcGFyYSBlc3RhYmxlY2VyIGNvbmZpZ2l0ZW0tc3RhdHVzIGVuIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkZWwgw61uZGljZSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24sIHV0aWxpemFkb3MgcGFyYSBsYSBiw7pzcXVlZGEgZGUgdGV4dG8gY29tcGxldG8uIExvcyBjYW1wb3MgdGFtYmnDqW4gc2UgYWxtYWNlbmFuLCBwZXJvIG5vIHNvbiBvYmxpZ2F0b3Jpb3MgcGFyYSBsYSBmdW5jaW9uYWxpZGFkIGdlbmVyYWwuIExhIGluY2x1c2nDs24gZGUgYW5leG9zIHB1ZWRlIGRlc2FjdGl2YXJzZSBwb25pZW5kbyBsYSBlbnRyYWRhIGEgMCBvIGJvcnLDoW5kb2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2FtcG9zIGFsbWFjZW5hZG9zIGVuIGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSB1dGlsaXphbiBwYXJhIG90cmFzIGNvc2FzIGFkZW3DoXMgZGUgbGFzIGLDunNxdWVkYXMgZGUgdGV4dG8gY29tcGxldG8uIFBhcmEgbGEgZnVuY2lvbmFsaWRhZCBjb21wbGV0YSB0b2RvcyBsb3MgY2FtcG9zIHNvbiBvYmxpZ2F0b3Jpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdSZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkb0luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGluY2lkZW5jaWFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCByZXN1bHRhZG8gZGUgZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSBjb21wcm9iYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW5hIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSBjb21wcm9iYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZXN0YWTDrXN0aWNhcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb21icmUgTcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTcOzZHVsbyBudW3DqXJpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIHNlIG1vc3RyYXLDoW4gZW4gY2FkYSBww6FnaW5hIGRlIHVuIHJlc3VsdGFkbyBkZSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIGRlYmVuIG1vc3RyYXJzZSBlbiBjYWRhIHDDoWdpbmEgZGUgdW4gcmVzdWx0YWRvIGRlIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZXRvcyBhIGJ1c2NhciwgY3XDoW50YXMgZW50cmFkYXMgeSBxdcOpIGF0cmlidXRvcyBtb3N0cmFyLiBMb3MgYXRyaWJ1dG9zIENvbmZpZ0l0ZW0gZGViZW4gYWxtYWNlbmFyc2UgZXhwbMOtY2l0YW1lbnRlIGEgdHJhdsOpcyBkZSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXNpw7NuIGdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBjYXRlZ29yw61hcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBmaWx0cm9zIGRlIGNvbHVtbmEgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcGVxdWXDsW9zLiBQb3IgZmF2b3IsIHRlbmdhIGVuIGN1ZW50YTogZXN0YWJsZWNlciBcJ0FjdGl2b1wnIGEgMCBzw7NsbyBldml0YXLDoSBxdWUgbG9zIGFnZW50ZXMgZWRpdGVuIGxvcyBhanVzdGVzIGRlIGVzdGUgZ3J1cG8gZW4gc3VzIHByZWZlcmVuY2lhcyBwZXJzb25hbGVzLCBwZXJvIHNlZ3VpcsOhIHBlcm1pdGllbmRvIGEgbG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0YXIgbG9zIGFqdXN0ZXMgZW4gbm9tYnJlIGRlIG90cm8gdXN1YXJpby4gVXRpbGljZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHBhcmEgY29udHJvbGFyIGVuIHF1w6kgw6FyZWEgZGViZW4gbW9zdHJhcnNlIGVzdG9zIGFqdXN0ZXMgZW4gbGEgaW50ZXJmYXogZGUgdXN1YXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGNvbG9yIGRlIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBncnVwb3MgZGUgcGVybWlzb3MgZGUgZWplbXBsbyBkZSBsb3MgYXRyaWJ1dG9zIGdlbmVyYWxlcyBkZWwgY2F0w6Fsb2dvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIGRlIG5vbWJyZXMgcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIG51bcOpcmljbyBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBww6FnaW5hcyAoZW4gbGFzIHF1ZSBzZSBtdWVzdHJhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgbcOzZHVsbyBkZWwga2l0IGRlIGhlcnJhbWllbnRhcyBkZSBwbGFudGlsbGFzIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBhY3RpdmFkb3IgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwbyBkZSBwZXJtaXNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBhY2Npw7NuIGRlIGFkanVudGFyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSB2aXN0YSBkZSDDoXJib2wgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGFtcGxpYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGHDsWFkaXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gbWFzaXZhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBlZGljacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZGVsIGhpc3RvcmlhbCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FsdGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdEaXNwb3NpdGl2byBkZSBjb3BpYSBkZSBzZWd1cmlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdCdXNjYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnRXN0YWJsZXpjYSBhdXRvbcOhdGljYW1lbnRlIGVsIGVzdGFkbyBkZSBpbmNpZGVuY2lhIGRlIHVuIENJIGN1YW5kbyBzZSB2aW5jdWxlIHVuIFRpY2tldCBhIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGUgZGVzcGxpZWd1ZSBlbiBsYSBwYW50YWxsYSBtYXNpdmEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBlbiBsYSBwYW50YWxsYSBtYXNpdmEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcXVlIHBlcm1pdGUgdmluY3VsYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIG90cm8gb2JqZXRvIGVuIGxhIHZpc3RhIGRlIHpvb20gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGFsIGhpc3RvcmlhbCBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIHN1IHZpc3RhIGFtcGxpYWRhIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlbGltaW5hciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBzdSB2aXN0YSBhbXBsaWFkYSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSB2aXN1YWxpemFyIGxvcyBlbmxhY2VzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyB1bmEgdmlzdGEgZW4gw6FyYm9sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBhbXBsaWFkYSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgdm9sdmVyIGF0csOhcyBlbiBsYSB2aXN0YSBkZSB6b29tIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFtcGxpYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSBlbCBoaXN0b3JpYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIChvcmRlbiBpbnZlcnNvKSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdMYSBjYXRlZ29yw61hIHBvciBkZWZlY3RvIHF1ZSBzZSBtdWVzdHJhLCBzaSBubyBzZSBzZWxlY2Npb25hIG5pbmd1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdFbCBpZGVudGlmaWNhZG9yIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLCBwb3IgZWplbXBsbyBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gUG9yIGRlZmVjdG8gZXMgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBY3RpdmEgYXV0b23DoXRpY2FtZW50ZSBlbCBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdFeHByZXNpw7NuIGRlIGNhZGVuYSBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdNw7NkdWxvIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnQWN0aXZhZG9yIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTaSBzZSBwdWVkZSBldml0YXIgbGEgZWplY3VjacOzbiBkZSBDb25maWdJdGVtQUNMIGNvbXByb2JhbmRvIGxhcyBkZXBlbmRlbmNpYXMgZGUgY2FtcG9zIGVuIGNhY2jDqS4gRXN0byBwdWVkZSBtZWpvcmFyIGxvcyB0aWVtcG9zIGRlIGNhcmdhIGRlIGxvcyBmb3JtdWxhcmlvcywgcGVybyBkZWJlIGRlc2FjdGl2YXJzZSBzaSBzZSB2YW4gYSB1dGlsaXphciBBQ0xNb2R1bGVzIHBhcmEgSVRTTUNvbmZpZ0l0ZW0tIHkgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1F1w6kgaW5mb3JtYWNpw7NuIGdlbmVyYWwgc2UgbXVlc3RyYSBlbiBsYSBjYWJlY2VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGl2byc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwdWxnYWRhcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHB1bGdhZGFzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcHVsZ2FkYXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgcHVsZ2FkYXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDE5IHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwdWxnYWRhcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnQ3JlbWFsbGVyYSBkZSAyMSBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDk3LDc5IGNtICgzOCw1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdFc3RhbnRlIGRlIDIzIHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwdWxnYWRhcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcHVsZ2FkYXMgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHB1bGdhZGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcHVsZ2FkYXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcHVsZ2FkYXMgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHB1bGdhZGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwdWxnYWRhcyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcHVsZ2FkYXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHB1bGdhZGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzEuMDAwIG1tICgzOSw0IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcHVsZ2FkYXMgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwdWxnYWRhcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcHVsZ2FkYXMgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcHVsZ2FkYXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcHVsZ2FkYXMgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwdWxnYWRhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHB1bGdhZGFzICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcHVsZ2FkYXMgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwdWxnYWRhcyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwdWxnYWRhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQXNpZ25hY2nDs24gZGUgZGlyZWNjaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVGVsw6lmb25vIGFuYWzDs2dpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUaXBvIGRlIGFwYXJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdDYXBhY2lkYWQgZGUgbGEgYmF0ZXLDrWEgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUaXBvIGRlIGJhdGVyw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnRWRpZmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmF6IGRlIGJ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NsYXNlIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpZGFkIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2lkYWQgcG9yIHRhcmpldGEgZ3LDoWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRhcmpldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdMZWN0b3IgZGUgdGFyamV0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVGlwbyBkZSB0YXJqZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NhdGVnb3LDrWEgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdSZWxvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVmVsb2NpZGFkIGRlIHJlbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgZmlybWEgZGUgY8OzZGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsw6lmb25vIGRlIGNvbmZlcmVuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBjb25zdWx0b3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ1DDs25nYXNlIGVuIGNvbnRhY3RvIGNvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdGFyIGNvbiBlbCBkaXN0cmlidWlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdHZXN0acOzbiBkZSBjb250ZW5lZG9yZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwbyBkZSBjb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlbCBjb250cmF0byBkZXNkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkZWwgY29udHJhdG8gaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVGVsw6lmb25vIGluYWzDoW1icmljbyAodGVsw6lmb25vIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaWRhZCBkZSBjb3N0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ1JlY3VlbnRvIGRlIGxpY2VuY2lhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRmVjaGEgZGUgY3JlYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdFc3RhbnRlcsOtYSBwZXJzb25hbGl6YWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2Vydmlkb3IgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGZWNoYSBkZSBsYSBmYWN0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdGZWNoYSBkZWwgcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdGZWNoYSBkZSBsYSBnYXJhbnTDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRmVjaGEgZGUgcHVibGljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdFc2NyaXRvcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgZmlybWEgZGUgZG9jdW1lbnRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ1JhY2sgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGNvcnJlbyBlbGVjdHLDs25pY28gKENlcnRpZmljYWRvcyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHRyYWJham8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdEaXJlY2Npw7NuIElQIGZpbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRmluIGRlIGxhIGF5dWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRmVjaGEgZGUgZXhwaXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Rpc2NvIGR1cm8gZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0NvcnRhZnVlZ29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdBbG1hY2VuYW1pZW50byBkZSBlbmVyZ8OtYSBtZWRpYW50ZSB2b2xhbnRlIGRlIGluZXJjaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWN0b3IgZGUgZm9ybWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgZnJhbnF1aWNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBnZW5lcmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnVGFyamV0YXMgZ3LDoWZpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdUYXJqZXRhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbG8gZGUgaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnUGVzbyBkZWwgaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0F1cmljdWxhcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xvIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0dlc3Rpw7NuIGRlIGlkZW50aWRhZGVzIHkgYWNjZXNvcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBpbnZlbnRhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGZhY3R1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEIChwYW50YWxsYSBkZSBjcmlzdGFsIGzDrXF1aWRvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBMRUQgKGRpb2RvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBmaWpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1BvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYXBhIDE6IENhcGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYXBhIDI6IENhcGEgZGUgZW5sYWNlIGRlIGRhdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIDM6IENhcGEgZGUgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYXBhIDQ6IENhcGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FwYSA1OiBDYXBhIGRlIHNlc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FwYSA2OiBDYXBhIGRlIHByZXNlbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYXBhIDc6IENhcGEgZGUgYXBsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgYXJyZW5kYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NsYXZlIGRlIGxpY2VuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2VuY2lhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIGxpdGlvIGZvc2ZhdG8gZGUgaGllcnJvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgaW9uZXMgZGUgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIHByw6lzdGFtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dWFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaWRhZCBkZSBjYXJnYSBtw6F4aW1hIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgbcOzdmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ03Ds3ZpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXBjacOzbiBkZWwgbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdWNpw7NuIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhbWHDsW8gZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdSYXTDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIGRlIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtY2FkbWlvIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtaGlkcnVybyBtZXTDoWxpY28gKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjdWVyZG8gZGUgY29uZmlkZW5jaWFsaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0N1YWRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTsO6bWVybyBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTsO6bWVybyBkZSBtw7NkdWxvcyBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3Jnw6FuaWNvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0Nvc3RlcyBkZSBleHBsb3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTYWxpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgYXNvY2lhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbMOpZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkZSB0ZWzDqWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdOw7pjbGVvcyBmw61zaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N1bWluaXN0cm8gZGUgZW5lcmfDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdDb21wcmFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZnVuZGlkYWQgZGUgbGEgZXN0YW50ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbmlkYWRlcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnSGFiaXRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdUYXJqZXRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdmVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsw6lmb25vIHBvciBzYXTDqWxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgcGxvbW8tw6FjaWRvIHNlbGxhZGEgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHNlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRlIHNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgc2VydmljaW9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpcXVldGEgZGUgc2VydmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVGlwbyBkZSBlbmNodWZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRhdm9jZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnRXN0w6FuZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdEaXJlY2Npw7NuIElQIGRlIGluaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnQWxtYWNlbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0aWNpw7NuIGRlIGFsbWFjZW5hbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSZXN1bWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50ZSBsaWdlcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0hpbG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCBkZSBsYSB0YXJqZXRhIGdyw6FmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciB0w6FjdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ycmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDYXNjb3MgZGUgUlYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsw6lmb25vIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0PDoW1hcmEgd2ViJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/es_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIEVsZW1lbnRvcyBkZSBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgZGVmaW5pY2nDs24gZGUgbGEgQ2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50byBkZSBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGFyYSBDbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnU2VsZWNjaW9uZSB1bmEgQ2xhc2UgZGUgbGEgbGlzdGEgcGFyYSBjcmVhciB1biBudWV2byBJdGVtIGRlIENvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQWNjacOzbiBNYXNpdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlbCBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnRW5sYXphciBjb24gb3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnwqFOw7ptZXJvIGRlIMONdGVtIGRlIENvbmZpZ3VyYWNpw7NuIG5vIHZhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnRWwgbsO6bWVybyBkZSBvdHJvIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBlbCBxdWUgdmluY3VsYXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRWwgbm9tYnJlIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0VsIG5vbWJyZSB5YSBlc3RhIGVuIHVzbyBwb3Igw410ZW1zIGRlIENvbmZpZ3VyYWNpw7NuIGNvbiBsb3Mgc2lndWllbnRlcyBuw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgdmVyc2nDs24geWEgZXN0w6EgZW4gdXNvIHBvciBlbCBDb25maWdJdGVtcyBjb24gZWwgc2lndWllbnRlIG7Dum1lcm8gKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIGxhIEltcGxlbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpYWwgZGVsIEVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZW5pZG8gZGVsIGhpc3RvcmlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRmVjaGEgZGUgQ3JlYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ0lzIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyBkYXRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNjaW9uZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRWplY3V0YXIgbGEgYsO6c3F1ZWRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWwgZGUgcHJvZnVuZGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdBY2VyY2FyL0FsZWphcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICfCoU5pdmVsIG3DoXhpbW8gZGUgZW5sYWNlcyBhbGNhbnphZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIEFjdHVhbCBkZSBsYSBJbXBsZW1lbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlIEFjdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1vIGNhbWJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdMYSDDumx0aW1hIHZleiBxdWUgc2UgbW9kaWZpY8OzIGZ1ZSBwb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTdXMgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBDb25maWdJdGVtJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2UgaW1wb3J0YXLDoW4gbGFzIHNpZ3VpZW50ZXMgY2xhc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGZ1bmNpb25lcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdUZW5nYSBlbiBjdWVudGEgcXVlIHRhbWJpw6luIHNlIGNyZWFyw6FuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyB5IGxhcyBjbGFzZXMgR2VuZXJhbENhdGFsb2cgY29ycmVzcG9uZGllbnRlcyB5IHF1ZSBubyBzZSBlbGltaW5hcsOhbiBhdXRvbcOhdGljYW1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ8K/RGVzZWEgcHJvY2VkZXI/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ8KhTmVjZXNpdGEgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0xhIGRlZmluaWNpw7NuIG5vIGVzIHVuIGhhc2ggWUFNTCB2w6FsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Jlc3VtZW46IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ8KhTmVjZXNpdGEgYWwgbWVub3MgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05vIHRpZW5lIHBlcm1pc28gZGUgZXNjcml0dXJhIHBhcmEgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnwqFOaW5ndW5hIGRlZmluaWNpw7NuIGZ1ZSBkZWZpbmlkYSBwYXJhIGNsYXNlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnwqFFbGVtZW50byBkZSBjb25maWd1cmFjacOzbiAiJXMiICBubyBzZSBlbmNvbnRyw7MgZW4gbGEgYmFzZSBkZSBkYXRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfCoU5vIGZ1ZSBwb3NpYmxlIGVsaW1pbmFyIGVsIGNvbmZpZ2l0ZW0gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfCoU5vIHNlIGVuY29udHLDsyBWZXJzacOzbiBwYXJhIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgbyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIGFjY2VzbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgbm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnVldm8gQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOdWV2YSB2ZXJzacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQWN0dWFsaXphZG8gZXN0YWRvIGRlIGRlc3BsaWVndWUgKG51ZXZvPSVzLCB2aWVqbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQWN0dWFsaXphZG8gZXN0YWRvIGRlIGluY2lkZW5jaWEgKG51ZXZvPSVzLHZpZWpvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdFbmxhY2UgYSAlcyAodGlwbz0lcykgYcOxYWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0VubGFjZSBhICVzICh0aXBvPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0FjdHVhbGl6YWRhIGRlZmluaWNpw7NuIGRlIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWJyZSBhY3R1YWxpemFkbyAobnVldm89JXMsdmllam89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dG8gJXMgYWN0dWFsaXphZG8gZGUgIiVzIiBhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2nDs24gJXMgZWxpbWluYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDb25maWdJdGVtSUQgbyBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ8KhTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ8KhQ29uZmlnSXRlbUlEICVzIG5vIHNlIGVuY29udHLDsyBlbiBsYSBiYXNlIGRlIGRhdG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnaW1wcmVzbyBwb3IgJXMgZW4gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfCoUNsYXNzSUQgbm8gZXMgdsOhbGlkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvIHBhcmEgZXN0YSBjbGFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ8KhU2luIHJlc3VsdGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmVzdWx0YWRvcyBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ8KhTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50bywgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnwqFDb25maWdJdGVtIG5vIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2ZXJ0ZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBpbXBsZW1lbnRhY2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnU2luIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8KhRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOhbWV0cm9zIGRlIGLDunNxdWVkYSBpbnbDoWxpZG9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnU2UgbXVlc3RyYW4gZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgZXN0YWRvIGRlIGltcGxlbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdFc3RhZG8gYWN0dWFsIGRlbCBUaXBvIGRlIGluY2lkZW50ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY2Npb25lcyBkZSBjbGFzZSBwYXJhIGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluw6FtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnRXN0w6F0aWNhIChWZXJzacOzbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVGlwbyBkZSByZWZlcmVuY2lhIGRlIGVubGFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTaSBlc3RlIGVubGFjZSBzZSBhcGxpY2EgYWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gbyBhIGxhIHZlcnNpw7NuIGVzdMOhdGljYSBkZWwgb2JqZXRvIGRlIHJlZmVyZW5jaWEuIEVsIGPDoWxjdWxvIGRlbCBlc3RhZG8gYWN0dWFsIGRlbCBpbmNpZGVudGUgc8OzbG8gc2UgcmVhbGl6YSBlbiBsb3MgZW5sYWNlcyBkaW7DoW1pY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjY2lvbmUgZWwgYXRyaWJ1dG8gcG9yIGVsIHF1ZSBzZSBidXNjYXLDoW4gbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgZXN0cnVjdHVyYSBiYXNlIG5vIGVzIHbDoWxpZGEuIFBvciBmYXZvciwgcHJvcG9yY2lvbmUgdW4gaGFzaCBjb24gZGF0b3MgZW4gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0VzIG5lY2VzYXJpbyBxdWUgbGEgY2FkZW5hIFlBTUwgY29taWVuY2UgcG9yIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05vIHNlIGhhIHBvZGlkbyBwdXJnYXIgbGEgdGFibGEgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTm8gc2UgaGFuIGVuY29udHJhZG8gY2FtcG9zIGRpbsOhbWljb3MgcmVsZXZhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05vIHNlIGhhIHBvZGlkbyBpbnNlcnRhciBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGFkYXMgMCBmaWxhcyBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVuIGVsZW1lbnRvICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzacOzbiBDYWRlbmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3IgYWwgc2luY3Jvbml6YXIgbGFzIGRlZmluaWNpb25lcy4gUG9yIGZhdm9yLCBjb21wcnVlYmUgZWwgcmVnaXN0cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGllbmUgZGVmaW5pY2lvbmVzIGRlIElUU01Db25maWdJdGVtIHF1ZSBubyBlc3TDoW4gc2luY3Jvbml6YWRhcy4gRGVzcGxpZWd1ZSBsb3MgY2FtYmlvcyBlbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgZGUgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnRlbmltaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5pZmljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpc2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnUHJ1ZWJhIC8gQ29udHJvbCBkZSBjYWxpZGFkJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWaXNpw7NuIGdlbmVyYWwgeSBjb25maXJtYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGFyIGNsYXNlcy9yb2xlcyB5IHN1cyBjYW1wb3MgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU2UgaGEgcHJvZHVjaWRvIHVuIGVycm9yIGR1cmFudGUgbGEgaW1wb3J0YWNpw7NuIGRlIGxhIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gT2N1bHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTZSBtdWVzdHJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBleHRlbmRpZGFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGFtcGxpYXIgbGFzIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIENvbiBlc3RhIGZ1bmNpw7NuIHB1ZWRlIGJ1c2NhciwgcG9yIGVqZW1wbG8sIGVsIG5vbWJyZSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVzdGUgdGlwbyBkZSBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdDSXMgYXNpZ25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NpcyBhc2lnbmFkb3MgYSBsYSBFbXByZXNhIGRlbCBDbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ2lzIGFzaWduYWRvcyBhbCB1c3VhcmlvIGRlbCBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDb25maWd1cmFjaW9uZXMgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQnVzcXVlIHVuIG5vbWJyZSDDum5pY28gc29sbyBkZW50cm8gZGUgbGEgbWlzbWEgY2xhc2UgZGUgQ29uZmlnSXRlbSAoXCdjbGFzZVwnKSBvIGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbG8gcXVlIHNpZ25pZmljYSBxdWUgY2FkYSBDb25maWdJdGVtIGV4aXN0ZW50ZSBzZSB0aWVuZSBlbiBjdWVudGEgY3VhbmRvIHNlIGJ1c2NhbiBkdXBsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBkZSBub21icmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBudW3DqXJpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgZGUgY2FkZW5hcyBkZSB2ZXJzaW9uZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnRWxpamEgYXRyaWJ1dG9zIHBhcmEgYWN0aXZhciBsYSBjcmVhY2nDs24gZGUgdW5hIG51ZXZhIHZlcnNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdFbGlqYSBsYXMgY2F0ZWdvcsOtYXMgcXVlIGRlc2VhIGFzaWduYXIgYSBlc3RhIGNsYXNlIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyb3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGNvbHVtbmEgcGFyYSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sdW1uYXMgcXVlIHNlIHB1ZWRlbiBmaWx0cmFyIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIE5vdGE6IFNvbG8gc2UgcGVybWl0ZW4gYXRyaWJ1dG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiB5IGNhbXBvcyBkaW7DoW1pY29zIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdFbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0HDsWFkaXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0YXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBoYWJpbGl0YSBlbCBhY2Nlc28gYSBsYSBoaXN0b3JpYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBhY3R1YWxpemEgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBhIHN1IGRlZmluaWNpw7NuIGFjdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0b3JpYWwgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdJbXByaW1pciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdEZXRhbGxleiBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdGEgZW4gw6FyYm9sIGRlIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMb3MgQ29uZmlnSXRlbXMgZGUgbGFzIHNpZ3VpZW50ZXMgY2xhc2VzIG5vIHNlIGFsbWFjZW5hcsOhbiBlbiBlbCBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgZXN0byBhIGxvcyBDSXMgZXhpc3RlbnRlcywgbGEgbWlncmFjacOzbiBkZWwgQ0kgdGllbmUgcXVlIHNlciBlamVjdXRhZGEgYSB0cmF2w6lzIGRlIGxhIGNvbnNvbGEsIGRlc3B1w6lzIGRlIGNhbWJpYXIgZXN0YSBvcGNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMb3MgQ29uZmlnSXRlbXMgY29uIGxvcyBzaWd1aWVudGVzIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSBubyBzZSBhbG1hY2VuYXLDoW4gZW4gZWwgc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGVzdG8gYSBsb3MgQ0lzIGV4aXN0ZW50ZXMsIGxhIG1pZ3JhY2nDs24gZGVsIENJIHRpZW5lIHF1ZSBzZXIgZWplY3V0YWRhIGEgdHJhdsOpcyBkZSBsYSBjb25zb2xhLCBkZXNwdcOpcyBkZSBjYW1iaWFyIGVzdGEgb3BjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTMOtbWl0ZSBkZSBFbGVtZW50b3MgZGUgQ29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0zDrW1pdGUgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcG9yIHDDoWdpbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdHZXN0acOzbiBkZSBsYSBDb25maWd1cmFjacOzbiBkZSBCYXNlcyBkZSBEYXRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGVsIG3Ds2R1bG8gbWFzaXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvdXRlciBiYWNrZW5kIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWEgeSBnZXN0aW9uYSBsYXMgZGVmaW5pY2lvbmVzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JlYSBUaWNrZXRzIHBhcmEgQ29uZmlnSXRlbXMgZW4gbW9tZW50b3MgZXNwZWPDrWZpY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdMb3MgY2xpZW50ZXMgcHVlZGVuIHZlciBsYXMgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMb3MgY2xpZW50ZXMgdGllbmVuIGxhIHBvc2liaWxpZGFkIGRlIGNhbWJpYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHByZWRldGVybWluYWRvcyBxdWUgc2UgdXRpbGl6YXLDoW4gZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9YcOxbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PcOabHRpbW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIGEgdXRpbGl6YXIgZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGNvbmZpZy4gRWplbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgQWNjaW9uZXMgZW4gbGFzIHF1ZSB1biBib3TDs24gZGUgY29uZmlndXJhY2nDs24gZXN0w6EgZGlzcG9uaWJsZSBlbiBlbCB3aWRnZXQgZGUgb2JqZXRvcyB2aW5jdWxhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFRlbmdhIGVuIGN1ZW50YSBxdWUgZXN0YXMgQWNjaW9uZXMgZGViZW4gaGFiZXIgcmVnaXN0cmFkbyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyBKUyB5IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgeSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmUgdW4gZXNxdWVtYSBUZW1wbGF0ZTo6VG9vbGtpdCBwYXJhIGNhZGVuYXMgZGUgdmVyc2nDs24uIFPDs2xvIHNlIHV0aWxpemEgc2kgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIHNlIGVzdGFibGVjZSBlbiBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgdW4gY29uanVudG8gZGUgY29uZGljaW9uZXMgYmFqbyBsYXMgY3VhbGVzIHVuIGNsaWVudGUgcHVlZGUgdmVyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLiBMYXMgY29uZGljaW9uZXMgcHVlZGVuIHJlc3RyaW5naXJzZSBvcGNpb25hbG1lbnRlIGEgZGV0ZXJtaW5hZG9zIGdydXBvcyBkZSBjbGllbnRlcy4gRWwgbm9tYnJlIGVzIGVsIMO6bmljbyBhdHJpYnV0byBvYmxpZ2F0b3Jpby4gU2kgbm8gc2UgZXNwZWNpZmljYSBuaW5ndW5hIG90cmEgb3BjacOzbiwgdG9kb3MgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzZXLDoW4gdmlzaWJsZXMgZW4gZXNhIGNhdGVnb3LDrWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBlbGltaW5hciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSBtZWRpYW50ZSBsYSBpbnRlcmZheiBnZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBvYnRlbmVyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIHV0aWxpemFuZG8gbGEgaW50ZXJmYXogZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgYnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIHV0aWxpemFuZG8gbGEgaW50ZXJmYXogZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyByZXF1ZXJpZG9zIHBhcmEgZXN0YWJsZWNlciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSB1dGlsaXphbmRvIGxhIEludGVyZmF6IEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgcmVzdW1lbiBwYXJhIG1vc3RyYXIgbGEgcGVxdWXDsWEgdmlzdGEgZGUgdW5hIGxpc3RhIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmUgc2kgbGFzIGV0aXF1ZXRhcyBkZSB0aXBvIGRlIGVubGFjZSBkZWJlbiBtb3N0cmFyc2UgZW4gbGFzIGNvbmV4aW9uZXMgZGUgbG9zIG5vZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lIGV4cHJlc2lvbmVzIHJlZ3VsYXJlcyBpbmRpdmlkdWFsbWVudGUgcGFyYSBjYWRhIGNsYXNlIENvbmZpZ0l0ZW0gcGFyYSB2ZXJpZmljYXIgZWwgbm9tYnJlIGRlIENvbmZpZ0l0ZW0geSBwYXJhIG1vc3RyYXIgbG9zIG1lbnNhamVzIGRlIGVycm9yIGNvcnJlc3BvbmRpZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnN0YXIgZGUgdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW5hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgcG9yIGRlZmVjdG8gZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZXBlbmRpZW5kbyBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc2lzdGlyIGVuIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuIGFycmF5IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lIGxhIHByb2Z1bmRpZGFkIGRlIGxhcyByZWxhY2lvbmVzIHF1ZSBzZSBtb3N0cmFyw6FuIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uIEVqZW1wbG86ICJDbGF2ZSIgZGViZSB0ZW5lciBlbCBub21icmUgZGVsIENhbXBvIERpbsOhbWljbyBlbiBlc3RlIGNhc28gXCdYXCcsICJDb250ZW5pZG8iIGRlYmUgdGVuZXIgZWwgdmFsb3IgZGVsIENhbXBvIERpbsOhbWljbyBkZXBlbmRpZW5kbyBkZWwgdGlwbyBkZSBDYW1wbyBEaW7DoW1pY28sIFRleHRvOiBcJ2EgdGV4dFwnLCBEZXNwbGVnYWJsZTogXCcxXCcsIEZlY2hhL0hvcmE6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U2Vjb25kPTU5O1wnIHkgbyBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmUgZWwgc3Vib2JqZXRvIHBvciBkZWZhdWx0IGRlIGxhIGNsYXNlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGlzcG9uaWJsZXMgZGUgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGZ1bmNpw7NuIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zdGFyIGRlIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmUgbGEgYWx0dXJhIGRlbCBjb21wb25lbnRlIGVkaXRvciBkZSB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGVzdGEgcGFudGFsbGEuIEludHJvZHV6Y2EgdW4gbsO6bWVybyAocMOteGVsZXMpIG8gdW4gdmFsb3IgcG9yY2VudHVhbCAocmVsYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgbsO6bWVybyBkZSBmaWxhcyBwYXJhIGVsIGVkaXRvciBkZSBkZWZpbmljaW9uZXMgZGUgQ0kgZW4gbGEgaW50ZXJmYXogZGUgYWRtaW5pc3RyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gZGUgbG9zIGVzdGFkb3MgZGUgaW5jaWRlbmNpYSBkZXNkZSBhbHRvIChwb3IgZWplbXBsbywgY3LDrXRpY28pIGEgYmFqbyAocG9yIGVqZW1wbG8sIGZ1bmNpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBlc3RhZG9zIGRlIGltcGxlbWVudGFjacOzbiByZWxldmFudGVzIGRvbmRlIGxvcyB0aWNrZXRzIHZpbmN1bGFkb3MgcHVlZGVuIGFmZWN0YXIgZWwgZXN0YWRvIGRlIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGUgQ0kgbW9zdHJhZGFzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIHbDrW5jdWxvcyBwYXJhIHRvZGFzIGxhcyBjbGFzZXMgZGUgQ0kuIFNpIG5vIGhheSBuaW5ndW5hIGVudHJhZGEsIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwcmVkZXRlcm1pbmFkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG9zIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMsIHNlZ8O6biBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgaXIgcHJlY2VkaWRhIGRlbCBub21icmUgZGUgbGEgY2xhc2UgeSBkb3MgcHVudG9zIGRvYmxlcyAoZXMgZGVjaXIsIGNvbXB1dGFkb3JhOiA6KS4gSGF5IGFsZ3Vub3MgYXRyaWJ1dG9zIGRlIENJIHF1ZSBzb24gY29tdW5lcyBhIHRvZG9zIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBDb21wdXRhZG9yYTogQ29tcHV0YWRvcmEgOjogTm9tYnJlLCBDb21wdXRhZG9yYSA6OiBDdXJEZXBsU3RhdGUsIENvbXB1dGFkb3JhIDo6IENyZWF0ZVRpbWUpLiBQYXJhIG1vc3RyYXIgbG9zIElDLUF0cmlidXRvcyBpbmRpdmlkdWFsZXMgZGVmaW5pZG9zIGVuIGxhIERlZmluaWNpw7NuLUNJLCBzZSBkZWJlIHV0aWxpemFyIGVsIHNpZ3VpZW50ZSBlc3F1ZW1hIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0YWRvcmEpOiBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDEsIENvbXB1dGFkb3JhIDo6IERpc2NvIER1cm8gOjogMSA6OiBDYXBhY2lkYWQgOjogMSwgQ29tcHV0YWRvcmEgOjogRGlzY28gRHVybyA6OiAyLCBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDIgOjogQ2FwYWNpZGFkIDo6IDEuIFNpIG5vIGhheSB1bmEgZW50cmFkYSBwYXJhIHVuYSBjbGFzZSBDSSwgc2UgbXVlc3RyYW4gbGFzIGNvbHVtbmFzIHByZWRldGVybWluYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIHBhcmEgIkFjY2nDs24iIGVuIGVsIHRlcmNlciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgcHJpbWVyIG5pdmVsIGRlIGxhIGVzdHJ1Y3R1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgc2VndW5kbyBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIGVubGFjZSAobm9tYnJhZG8gZGVzZGUgbGEgcGVyc3BlY3RpdmEgZGVsIHRpY2tldCkgcHVlZGUgYWZlY3RhciBlbCBlc3RhZG8gZGUgdW4gQ0kgdmluY3VsYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIHRpcG8gZGUgdGlja2V0IHB1ZWRlIGFmZWN0YXIgZWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBY3R1YWxpemFjacOzbiBkZSBsYSBkZWZpbmljacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRWxpbWluYXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb2xvciBkZWwgZXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIGRlIGNhbXBvcyBkaW7DoW1pY29zIHF1ZSBtYXJjYSBsYXMgZGVmaW5pY2lvbmVzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBjb21vIG5vIHNpbmNyb25pemFkYXMgc2kgY2FtYmlhbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgcXVlIGNvbnRpZW5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIHF1ZSBzZSBtdWVzdHJhbiBlbiBsYSBwYW50YWxsYSBkZSBjYW1wbyBJVFNNIGFkaWNpb25hbCBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdQZXJtaXRlIHF1ZSBsYSBjYXJhY3RlcsOtc3RpY2EgZGUgYWNjacOzbiBtYXNpdmEgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgbGEgaW50ZXJmYXogZGVsIGFnZW50ZSBmdW5jaW9uZSBlbiBtw6FzIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGEgbGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnSGFiaWxpdGEgbGEgY2FyYWN0ZXLDrXN0aWNhIGRlIGFjY2nDs24gbWFzaXZhIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBzb2xvIHBhcmEgbG9zIGdydXBvcyBlbnVtZXJhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgcGFyYSBjb25maWd1cmFyIGNvbmZpZ2l0ZW0tc3RhdHVzIGVuIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkZWwgw61uZGljZSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24sIHV0aWxpemFkb3MgcGFyYSBsYSBiw7pzcXVlZGEgZGUgdGV4dG8gY29tcGxldG8uIExvcyBjYW1wb3MgdGFtYmnDqW4gc2UgYWxtYWNlbmFuLCBwZXJvIG5vIHNvbiBvYmxpZ2F0b3Jpb3MgcGFyYSBsYSBmdW5jaW9uYWxpZGFkIGdlbmVyYWwuIExhIGluY2x1c2nDs24gZGUgYW5leG9zIHB1ZWRlIGRlc2FjdGl2YXJzZSBwb25pZW5kbyBsYSBlbnRyYWRhIGEgMCBvIGJvcnLDoW5kb2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2FtcG9zIGFsbWFjZW5hZG9zIGVuIGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSB1dGlsaXphbiBwYXJhIG90cmFzIGNvc2FzIGFkZW3DoXMgZGUgbGFzIGLDunNxdWVkYXMgZGUgdGV4dG8gY29tcGxldG8uIFBhcmEgbGEgZnVuY2lvbmFsaWRhZCBjb21wbGV0YSB0b2RvcyBsb3MgY2FtcG9zIHNvbiBvYmxpZ2F0b3Jpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdEZXNjcmlwY2nDs24gZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdFc3RhZG9JbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1eWUgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGluY2lkZW5jaWFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCByZXN1bHRhZG8gZGUgZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW5hIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZXN0YWTDrXN0aWNhcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tYnJlIE3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ03Ds2R1bG8gbnVtw6lyaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGNhZGEgcMOhZ2luYSBkZSB1biByZXN1bHRhZG8gZGUgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBkZWJlbiBtb3N0cmFyc2UgZW4gY2FkYSBww6FnaW5hIGRlIHVuIHJlc3VsdGFkbyBkZSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamV0b3MgYSBidXNjYXIsIGN1w6FudGFzIGVudHJhZGFzIHkgcXXDqSBhdHJpYnV0b3MgbW9zdHJhci4gTG9zIGF0cmlidXRvcyBDb25maWdJdGVtIGRlYmVuIGFsbWFjZW5hcnNlIGV4cGzDrWNpdGFtZW50ZSBhIHRyYXbDqXMgZGUgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgZ2VuZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbGFzIGNhdGVnb3LDrWFzIGRlIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIGZpbHRyb3MgZGUgY29sdW1uYSBkZSBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBwZXF1ZcOxb3MuIFBvciBmYXZvciwgdGVuZ2EgZW4gY3VlbnRhOiBlc3RhYmxlY2VyIFwnQWN0aXZvXCcgYSAwIHPDs2xvIGV2aXRhcsOhIHF1ZSBsb3MgYWdlbnRlcyBlZGl0ZW4gbG9zIGFqdXN0ZXMgZGUgZXN0ZSBncnVwbyBlbiBzdXMgcHJlZmVyZW5jaWFzIHBlcnNvbmFsZXMsIHBlcm8gc2VndWlyw6EgcGVybWl0aWVuZG8gYSBsb3MgYWRtaW5pc3RyYWRvcmVzIGVkaXRhciBsb3MgYWp1c3RlcyBlbiBub21icmUgZGUgb3RybyB1c3VhcmlvLiBVdGlsaWNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgcGFyYSBjb250cm9sYXIgZW4gcXXDqSDDoXJlYSBkZWJlbiBtb3N0cmFyc2UgZXN0b3MgYWp1c3RlcyBlbiBsYSBpbnRlcmZheiBkZSB1c3VhcmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xvcyBwYXLDoW1ldHJvcyBwYXJhIGxhIGltcGxlbWVudGFjacOzbiBpbmRpY2FuIGVsIGNvbG9yIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsb3MgZXN0YWRvcyBkZSBpbXBsZW1lbnRhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIHBlcm1pc29zIGRlIGVqZW1wbG8gZGUgbG9zIGF0cmlidXRvcyBkZWwgY2F0w6Fsb2dvIGdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBtw7NkdWxvIGRlIG5vbWJyZXMgZGUgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZWwgbcOzZHVsbyBudW3DqXJpY28gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsYXMgcMOhZ2luYXMgKGRvbmRlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIG3Ds2R1bG8gZGVsIGtpdCBkZSBoZXJyYW1pZW50YXMgZGUgcGxhbnRpbGxhcyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgYWN0aXZhZG9yIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3J1cG8gZGUgcGVybWlzb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgYWNjacOzbiBkZSBhZGp1bnRhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSB2aXN0YSBkZSDDoXJib2wgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBkZXRhbGxlIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXNhciBsYSB2ZW50YW5hIHBhcmEgYWdyZWdhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIG1hc2l2YSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXNhciBsYSB2ZW50YW5hIGRlIGVkaWNpw7NuIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBoaXN0b3JpYWwgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBpbXByZXNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsZWdpb3MgbmVjZXNhcmlvcyBwYXJhIGVsaW1pbmFyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnQnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0VzdGFibGV6Y2EgZWwgZXN0YWRvIGRlIGluY2lkZW50ZSBkZSB1biBDSSBhdXRvbcOhdGljYW1lbnRlIGN1YW5kbyB1biB0aWNrZXQgZXN0w6kgdmluY3VsYWRvIGEgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXN0YWJsZWNlIGVsIGVzdGFkbyBkZSBpbXBsZW1lbnRhY2nDs24gZW4gbGEgcGFudGFsbGEgbWFzaXZhIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBlbiBsYSBwYW50YWxsYSBtYXNpdmEgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSB2aW5jdWxhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gb3RybyBvYmpldG8sIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhbCBoaXN0b3JpYWwgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGEgbGEgaGlzdG9yaWEgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlbGltaW5hciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBzdSB2aXN0YSBhbXBsaWFkYSBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHZpc3VhbGl6YXIgbG9zIGVubGFjZXMgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBjb21vIHVuYSB2aXN0YSBlbiDDoXJib2wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBkZXNjcmlwY2nDs24gZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjaW9uIGVuIHN1IHZpc3RhIGRldGFsbGFkYSwgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gbGluayBlbiBlbCBtZW7DuiBwYXJhIGVkaXRhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjaW9uIGVuIHN1IHZpc3RhIGRldGFsbGFkYSwgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgdm9sdmVyIGEgbGEgdmlzdGEgZGUgem9vbSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2VyY2Fyc2UgYSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgbGEgaGlzdG9yaWEgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiAob3JkZW5hZG9zIGludmVyc2FtZW50ZSkgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTGEgY2F0ZWdvcsOtYSBwb3IgZGVmZWN0byBxdWUgc2UgbXVlc3RyYSwgc2kgbm8gc2Ugc2VsZWNjaW9uYSBuaW5ndW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgcG9yIGVqZW1wbG8uIENvbmZpZ0l0ZW0gIywgTXlDb25maWdJdGVtICMuIEVsIHZhbG9yIHBvciBkZWZlY3RvIGVzIENvbmZpZ0l0ZW0gIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjdGl2YSBhdXRvbcOhdGljYW1lbnRlIGVsIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc2nDs24gZGUgY2FkZW5hIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ03Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdBY3RpdmFkb3IgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NpIHNlIHB1ZWRlIGV2aXRhciBsYSBlamVjdWNpw7NuIGRlIENvbmZpZ0l0ZW1BQ0wgY29tcHJvYmFuZG8gbGFzIGRlcGVuZGVuY2lhcyBkZSBjYW1wb3MgZW4gY2FjaMOpLiBFc3RvIHB1ZWRlIG1lam9yYXIgbG9zIHRpZW1wb3MgZGUgY2FyZ2EgZGUgbG9zIGZvcm11bGFyaW9zLCBwZXJvIGRlYmUgZGVzYWN0aXZhcnNlIHNpIHNlIHZhbiBhIHV0aWxpemFyIEFDTE1vZHVsZXMgcGFyYSBJVFNNQ29uZmlnSXRlbS0geSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXXDqSBpbmZvcm1hY2nDs24gZ2VuZXJhbCBzZSBtdWVzdHJhIGVuIGxhIGNhYmVjZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aXZvJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHB1bGdhZGFzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgcHVsZ2FkYXMgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBwdWxnYWRhcyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwdWxnYWRhcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgZGUgMTkgcHVsZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHB1bGdhZGFzICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICdDcmVtYWxsZXJhIGRlIDIxIHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogOTcsNzkgY20gKDM4LDUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ0VzdGFudGUgZGUgMjMgcHVsZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHB1bGdhZGFzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwdWxnYWRhcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcHVsZ2FkYXMgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBwdWxnYWRhcyAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBwdWxnYWRhcyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcHVsZ2FkYXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHB1bGdhZGFzICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwdWxnYWRhcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcHVsZ2FkYXMgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMS4wMDAgbW0gKDM5LDQgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBwdWxnYWRhcyAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IHB1bGdhZGFzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBwdWxnYWRhcyAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwdWxnYWRhcyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBwdWxnYWRhcyAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHB1bGdhZGFzICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgcHVsZ2FkYXMgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBwdWxnYWRhcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDIyLDIzIGNtICg4LDc1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHB1bGdhZGFzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHB1bGdhZGFzICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdDb250YWJpbGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBc2lnbmFjacOzbiBkZSBkaXJlY2Npb25lcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWzDqWZvbm8gYW5hbMOzZ2ljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1RpcG8gZGUgYXBhcmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaWRhZCBkZSBsYSBiYXRlcsOtYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1RpcG8gZGUgYmF0ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdFZGlmaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYXogZGUgYnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ2xhc2UgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2lkYWQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaWRhZCBwb3IgdGFyamV0YSBncsOhZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdGFyamV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0xlY3RvciBkZSB0YXJqZXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUaXBvIGRlIHRhcmpldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcsOtYSBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ1JlbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdWZWxvY2lkYWQgZGUgcmVsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBmaXJtYSBkZSBjw7NkaWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWzDqWZvbm8gZGUgY29uZmVyZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIGNvbnN1bHRvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnUMOzbmdhc2UgZW4gY29udGFjdG8gY29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0YXIgY29uIGVsIGRpc3RyaWJ1aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGNvbnRlbmVkb3Jlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUaXBvIGRlIGNvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZGVsIGNvbnRyYXRvIGRlc2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1BlcsOtb2RvIGRlbCBjb250cmF0byBoYXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUZWzDqWZvbm8gaW5hbMOhbWJyaWNvICh0ZWzDqWZvbm8gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pZGFkIGRlIGNvc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnUmVjdWVudG8gZGUgbGljZW5jaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdGZWNoYSBkZSBjcmVhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0VzdGFudGVyw61hIHBlcnNvbmFsaXphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2aWRvciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0ZlY2hhIGRlIGxhIGZhY3R1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0ZlY2hhIGRlbCBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0ZlY2hhIGRlIGxhIGdhcmFudMOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdGZWNoYSBkZSBwdWJsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VzY3JpdG9yaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBmaXJtYSBkZSBkb2N1bWVudG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFjayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY29ycmVvIGVsZWN0csOzbmljbyAoQ2VydGlmaWNhZG9zIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdHJhYmFqbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0RpcmVjY2nDs24gSVAgZmluYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW4gZGUgbGEgYXl1ZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdGZWNoYSBkZSBleHBpcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzY28gZHVybyBleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnQ29ydGFmdWVnb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0FsbWFjZW5hbWllbnRvIGRlIGVuZXJnw61hIG1lZGlhbnRlIHZvbGFudGUgZGUgaW5lcmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhY3RvciBkZSBmb3JtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBmcmFucXVpY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGdlbmVyYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdUYXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1RhcmpldGEgZ3LDoWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsbyBkZSBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdQZXNvIGRlbCBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVyaWN1bGFyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbG8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGnDs24gZGUgaWRlbnRpZGFkZXMgeSBhY2Nlc29zIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGludmVudGFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgZmFjdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RlY2xhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKHBhbnRhbGxhIGRlIGNyaXN0YWwgbMOtcXVpZG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoZGlvZG8gZW1pc29yIGRlIGx1eiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsw6lmb25vIGZpam8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnT3JkZW5hZG9yIHBvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYXBhIDE6IENhcGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYXBhIDI6IENhcGEgZGUgZW5sYWNlIGRlIGRhdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIDM6IENhcGEgZGUgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYXBhIDQ6IENhcGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FwYSA1OiBDYXBhIGRlIHNlc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FwYSA2OiBDYXBhIGRlIHByZXNlbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYXBhIDc6IENhcGEgZGUgYXBsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgYXJyZW5kYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NsYXZlIGRlIGxpY2VuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2VuY2lhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIGxpdGlvIGZvc2ZhdG8gZGUgaGllcnJvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgaW9uZXMgZGUgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIHByw6lzdGFtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dWFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaWRhZCBkZSBjYXJnYSBtw6F4aW1hIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgbcOzdmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ03Ds3ZpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXBjacOzbiBkZWwgbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdWNpw7NuIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhbWHDsW8gZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdSYXTDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIGRlIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtY2FkbWlvIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtaGlkcnVybyBtZXTDoWxpY28gKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjdWVyZG8gZGUgY29uZmlkZW5jaWFsaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0N1YWRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTsO6bWVybyBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTsO6bWVybyBkZSBtw7NkdWxvcyBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3Jnw6FuaWNvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0Nvc3RlcyBkZSBleHBsb3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTYWxpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgYXNvY2lhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbMOpZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkZSB0ZWzDqWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdOw7pjbGVvcyBmw61zaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N1bWluaXN0cm8gZGUgZW5lcmfDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdDb21wcmFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZnVuZGlkYWQgZGUgbGEgZXN0YW50ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbmlkYWRlcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnSGFiaXRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdUYXJqZXRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdmVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsw6lmb25vIHBvciBzYXTDqWxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgcGxvbW8tw6FjaWRvIHNlbGxhZGEgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHNlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRlIHNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgc2VydmljaW9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpcXVldGEgZGUgc2VydmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVGlwbyBkZSBlbmNodWZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRhdm9jZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnRXN0w6FuZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdEaXJlY2Npw7NuIElQIGRlIGluaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnQWxtYWNlbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0aWNpw7NuIGRlIGFsbWFjZW5hbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSZXN1bWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50ZSBsaWdlcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0hpbG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCBkZSBsYSB0YXJqZXRhIGdyw6FmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciB0w6FjdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ycmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDYXNjb3MgZGUgUlYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsw6lmb25vIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0PDoW1hcmEgd2ViJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/es_MX_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGUgY2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWd1cmFyIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRybyBwb3IgY2xhc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjY2lvbmUgdW5hIGNsYXNlIGRlIGxhIGxpc3RhIHBhcmEgY3JlYXIgdW4gbnVldm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdBY2Npw7NuIG1hc2l2YSBkZSBJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0VubGFjZSBhIG90cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ8KhTsO6bWVybyBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBubyB2w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdFbCBuw7ptZXJvIGRlIG90cm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVsIHF1ZSBzZSB2YSBhIGVubGF6YXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnwr9SZWFsbWVudGUgcXVpZXJlIGVsaW1pbmFyIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIG5vbWJyZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdFbCBub21icmUgeWEgZXN0w6EgZW4gdXNvIHBvciBsb3MgQ29uZmlnSXRlbXMgY29uIGxvcyBzaWd1aWVudGVzIG7Dum1lcm9zOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgdmVyc2nDs24geWEgZXN0w6EgZW4gdXNvIHBvciBlbCBDb25maWdJdGVtcyBjb24gZWwgc2lndWllbnRlIG7Dum1lcm8gKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBJbmNpZGVudGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmlhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbmlkbyBkZSBsYSBoaXN0b3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXIgdGllbXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWd1cmFjacOzbiBkZSBlbGVtZW50b3MgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIGRhdG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY2Npb25lIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdDb3JyZXIgYsO6c3F1ZWRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWwgZGUgcHJvZnVuZGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdBY2VyY2FyL0FsZWphcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICfCoU5pdmVsIG3DoXhpbW8gZGUgZW5sYWNlcyBhbGNhbnphZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGFjdHVhbCBkZWwgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBJbmNpZGVudGUgQWN0dWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ8OabHRpbW8gY2FtYmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ01vZGlmaWNhZG8gcG9yIMO6bHRpbWEgdmV6IHBvcic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1N1cyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIENvbmZpZ0l0ZW0nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZSBpbXBvcnRhcsOhbiBsYXMgc2lndWllbnRlcyBjbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2UgaW1wb3J0YXLDoW4gbGFzIHNpZ3VpZW50ZXMgZnVuY2lvbmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1RlbmdhIGVuIGN1ZW50YSBxdWUgdGFtYmnDqW4gc2UgY3JlYXLDoW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIHkgbGFzIGNsYXNlcyBHZW5lcmFsQ2F0YWxvZyBjb3JyZXNwb25kaWVudGVzIHkgcXVlIG5vIHNlIGVsaW1pbmFyw6FuIGF1dG9tw6F0aWNhbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnwr9RdWllcmVzIGNvbnRpbnVhcj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnwqFOZWNlc2l0YSBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnTGEgZGVmaW5pY2nDs24gbm8gZXMgdW4gaGFzaCBZQU1MIHbDoWxpZG8uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnUmVzdW1lbjogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgZGEgbmluZ8O6biBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnwqFOZWNlc2l0YSBhbCBtZW5vcyB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBzZWxlY2Npb25hZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTm8gdGllbmUgYWNjZXNvIGRlIGVzY3JpdHVyYSBhIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfCoU5vIHNlIGhhIGRlZmluaWRvIGxhIGNsYXNlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnwqFFbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiAiJXMiIG5vIHNlIGVuY3VlbnRyYSBlbiBsYSBiYXNlIGRlIGRhdG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ8KhTm8gc2UgaGEgcG9kaWRvIGJvcnJhciBlbCBjb25maWdpdGVtIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnwqFObyBzZSBoYSBlbmNvbnRyYWRvIG5pbmd1bmEgdmVyc2nDs24gcGFyYSBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgdGllbmUgbmluZ8O6biBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgdGllbmUgYWNjZXNvISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgwqFubyBzZSB0aWVuZSBlbCBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIMKhbm8gc2UgdGllbmVuIGRlcmVjaG9zIGRlIGFjY2VzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ051ZXZvIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ051ZXZhIHZlcnNpw7NuIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSBhY3R1YWxpemFkbyAobnVldm89JXMsIGFudGlndW89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkZWwgaW5jaWRlbnRlIGFjdHVhbGl6YWRvIChudWV2bz0lcywgYW50aWd1bz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgYm9ycmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0VubGFjZSBhICVzICggdGlwbz0lcykgYcOxYWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0VubGFjZSBhICVzICggdGlwbz0lcykgYm9ycmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pY2nDs24gZGUgQ29uZmlnSXRlbSBhY3R1YWxpemFkYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tYnJlIGFjdHVhbGl6YWRvIChudWV2bz0lcywgYW50aWd1bz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0byAlcyBhY3R1YWxpemFkbyBkZSAiJXMiIGEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzacOzbiAlcyBib3JyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgdGllbmUgbmluZ8O6biBDb25maWdJdGVtSUQgbyBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIMKhbm8gc2UgdGllbmVuIGRlcmVjaG9zIGRlIGFjY2VzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfCoUNvbmZpZ0l0ZW1JRCAlcyBubyBzZSBlbmN1ZW50cmEgZW4gbGEgYmFzZSBkZSBkYXRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2ltcHJlc28gcG9yICVzIGVuICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnwqFDbGFzc0lEIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIHRpZW5lIG5pbmfDum4gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhbiBjb25jZWRpZG8gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgZXN0YSBjbGFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ8KhTm8gaGF5IHJlc3VsdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdSZXN1bHRhZG9zIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgZWxlbWVudG8sIMKhbm8gc2UgdGllbmVuIGRlcmVjaG9zIGRlIGFjY2VzbyBwYXJhIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ8KhQ29uZmlnSXRlbSBubyBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyB2ZXJzaW9uZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmFjaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2FkdmVydGVuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBlc3RhZG8gZGUgZGVzcGxpZWd1ZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRWwgZXN0YWRvIGRlbCBpbmNpZGVudGUgZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1NpbiBwZXJtaXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8KhRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOhbWV0cm9zIGRlIGLDunNxdWVkYSBpbnbDoWxpZG9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnRWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIEVzdGFkbyBkZSBEZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gYWN0dWFsIGRlbCBlc3RhZG8gZGVsIGluY2lkZW50ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY2Npb25lcyBkZSBjbGFzZSBwYXJhIGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluw6FtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnRXN0w6F0aWNhIChWZXJzacOzbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVGlwbyBkZSByZWZlcmVuY2lhIGRlIGVubGFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTaSBlc3RlIGVubGFjZSBzZSBhcGxpY2EgYWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gbyBhIGxhIHZlcnNpw7NuIGVzdMOhdGljYSBkZWwgb2JqZXRvIGRlIHJlZmVyZW5jaWEuIEVsIGPDoWxjdWxvIGRlbCBlc3RhZG8gYWN0dWFsIGRlbCBpbmNpZGVudGUgc8OzbG8gc2UgcmVhbGl6YSBlbiBsb3MgZW5sYWNlcyBkaW7DoW1pY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjY2lvbmUgZWwgYXRyaWJ1dG8gcG9yIGVsIHF1ZSBzZSBidXNjYXLDoW4gbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgZXN0cnVjdHVyYSBiYXNlIG5vIGVzIHbDoWxpZGEuIFBvciBmYXZvciwgcHJvcG9yY2lvbmUgdW4gaGFzaCBjb24gZGF0b3MgZW4gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0VzIG5lY2VzYXJpbyBxdWUgbGEgY2FkZW5hIFlBTUwgY29taWVuY2UgcG9yIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05vIHNlIGhhIHBvZGlkbyBwdXJnYXIgbGEgdGFibGEgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTm8gc2UgaGFuIGVuY29udHJhZG8gY2FtcG9zIGRpbsOhbWljb3MgcmVsZXZhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05vIHNlIGhhIHBvZGlkbyBpbnNlcnRhciBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGFkYXMgMCBmaWxhcyBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVuIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpw7NuIENhZGVuYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJvciBhbCBzaW5jcm9uaXphciBsYXMgZGVmaW5pY2lvbmVzLiBQb3IgZmF2b3IsIGNvbXBydWViZSBlbCByZWdpc3Ryby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdUaWVuZSBkZWZpbmljaW9uZXMgZGUgSVRTTUNvbmZpZ0l0ZW0gcXVlIG5vIGVzdMOhbiBzaW5jcm9uaXphZGFzLiBEZXNwbGllZ3VlIGxvcyBjYW1iaW9zIGVuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyBkZSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFudGVuaW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmlmaWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aXNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdQcnVlYmEvQ29udHJvbCBkZSBjYWxpZGFkJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWaXNpw7NuIGdlbmVyYWwgeSBjb25maXJtYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGFyIGNsYXNlcy9yb2xlcyB5IHN1cyBjYW1wb3MgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU2UgaGEgcHJvZHVjaWRvIHVuIGVycm9yIGR1cmFudGUgbGEgaW1wb3J0YWNpw7NuIGRlIGxhIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gT2N1bHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTZSBtdWVzdHJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBleHRlbmRpZGFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGFtcGxpYXIgbGFzIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIENvbiBlc3RhIGZ1bmNpw7NuIHB1ZWRlIGJ1c2NhciwgcG9yIGVqZW1wbG8sIGVsIG5vbWJyZSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVzdGUgdGlwbyBkZSBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdDSXMgYXNpZ25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJcyBhc2lnbmFkb3MgYSBsYSBlbXByZXNhIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNpZ25hZG9zIGFsIHVzdWFyaW8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ29uZmlndXJhY2nDs24gZGUgbGEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQnVzY2EgdW4gbm9tYnJlIMO6bmljbyBzw7NsbyBkZW50cm8gZGUgbGEgbWlzbWEgY2xhc2UgZGUgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSBvIGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbG8gcXVlIHNpZ25pZmljYSBxdWUgY2FkYSBDb25maWdJdGVtIGV4aXN0ZW50ZSBzZSB0aWVuZSBlbiBjdWVudGEgYWwgYnVzY2FyIGR1cGxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIGRlIG5vbWJyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIG51bcOpcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBkZSBjYWRlbmFzIGRlIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdFbGlqYSBhdHJpYnV0b3MgcGFyYSBhY3RpdmFyIGxhIGNyZWFjacOzbiBkZSB1bmEgbnVldmEgdmVyc2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0VsaWphIGxhcyBjYXRlZ29yw61hcyBxdWUgZGVzZWEgYXNpZ25hciBhIGVzdGEgY2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgY29sdW1uYSBwYXJhIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bW5hcyBxdWUgc2UgcHVlZGVuIGZpbHRyYXIgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gTm90YTogU29sbyBzZSBwZXJtaXRlbiBhdHJpYnV0b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHkgY2FtcG9zIGRpbsOhbWljb3MgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQcOxYWRpciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGljacOzbiBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBwZXJtaXRlIGVsIHJlZ2lzdHJvIGVuIGVsIGhpc3RvcmlhbCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBhY3R1YWxpemEgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBhIHN1IGRlZmluaWNpw7NuIGFjdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0b3JpYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDb25maWd1cmFyIGVsZW1lbnRvIGltcHJlc29yYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmFyIGVsIHpvb20gZGVsIGVsZW1lbnRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1Zpc3RhIGVuIMOhcmJvbCBkZSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGRlIGxhcyBzaWd1aWVudGVzIGNsYXNlcyBubyBzZSBhbG1hY2VuYXLDoW4gZW4gZWwgc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGVzdG8gYSBsb3MgQ0lzIGV4aXN0ZW50ZXMsIGxhIG1pZ3JhY2nDs24gZGVsIENJIHRpZW5lIHF1ZSBzZXIgZWplY3V0YWRhIGEgdHJhdsOpcyBkZSBsYSBjb25zb2xhLCBkZXNwdcOpcyBkZSBjYW1iaWFyIGVzdGEgb3BjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGNvbiBsb3Mgc2lndWllbnRlcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgbm8gc2UgYWxtYWNlbmFyw6FuIGVuIGVsIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBlc3RvIGEgbG9zIENJcyBleGlzdGVudGVzLCBsYSBtaWdyYWNpw7NuIGRlbCBDSSB0aWVuZSBxdWUgc2VyIGVqZWN1dGFkYSBhIHRyYXbDqXMgZGUgbGEgY29uc29sYSwgZGVzcHXDqXMgZGUgY2FtYmlhciBlc3RhIG9wY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYWNpw7NuIEzDrW1pdGUgZGUgZWxlbWVudG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmFjacOzbiBMw61taXRlIGRlIGVsZW1lbnRvcyBwb3IgcMOhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0Jhc2UgZGUgZGF0b3MgZGUgZ2VzdGnDs24gZGUgbGEgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGVsZW1lbnRvcyBpbmRpdmlkdWFsZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBidXNjYSBlbCBlbnJ1dGFtaWVudG8gYmFja2VuZCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlYXIgeSBnZXN0aW9uYXIgbGFzIGRlZmluaWNpb25lcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NvbiBlc3RhIG9wY2nDs24gZXMgcG9zaWJsZSByZWxsZW5hciBhdXRvbcOhdGljYW1lbnRlIHVuIGNhbXBvIENJLCBkZXBlbmRpZW5kbyBkZWwgcmVjdWVudG8gZGUgQ0kgdmluY3VsYWRvcyBjb24gZWwgdGlwbyBleGlzdGVudGUgRGVwZW5kc09uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdMb3MgY2xpZW50ZXMgcHVlZGVuIHZlciBsYXMgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMb3MgY2xpZW50ZXMgdGllbmVuIGxhIHBvc2liaWxpZGFkIGRlIGNhbWJpYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHByZWRldGVybWluYWRvcyBxdWUgc2UgdXRpbGl6YXLDoW4gZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9YcOxbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PcOabHRpbW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIGEgdXRpbGl6YXIgZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGNvbmZpZy4gRWplbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgYWNjaW9uZXMgZW4gbGFzIHF1ZSB1biBib3TDs24gZGUgY29uZmlndXJhY2nDs24gZXN0w6EgZGlzcG9uaWJsZSBlbiBlbCB3aWRnZXQgZGUgb2JqZXRvcyB2aW5jdWxhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFRlbmdhIGVuIGN1ZW50YSBxdWUgZXN0YXMgYWNjaW9uZXMgZGViZW4gaGFiZXIgcmVnaXN0cmFkbyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyBKUyB5IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgeSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmUgdW4gZXNxdWVtYSBUZW1wbGF0ZTo6VG9vbGtpdCBwYXJhIGNhZGVuYXMgZGUgdmVyc2nDs24uIFPDs2xvIHNlIHV0aWxpemEgc2kgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIHNlIGVzdGFibGVjZSBlbiBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgdW4gY29uanVudG8gZGUgY29uZGljaW9uZXMgYmFqbyBsYXMgY3VhbGVzIHVuIGNsaWVudGUgcHVlZGUgdmVyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLiBMYXMgY29uZGljaW9uZXMgcHVlZGVuIHJlc3RyaW5naXJzZSBvcGNpb25hbG1lbnRlIGEgZGV0ZXJtaW5hZG9zIGdydXBvcyBkZSBjbGllbnRlcy4gRWwgbm9tYnJlIGVzIGVsIMO6bmljbyBhdHJpYnV0byBvYmxpZ2F0b3Jpby4gU2kgbm8gc2UgaW5kaWNhbiBvdHJhcyBvcGNpb25lcywgdG9kb3MgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzZXLDoW4gdmlzaWJsZXMgZW4gZXNhIGNhdGVnb3LDrWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBlbGltaW5hciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gbWVkaWFudGUgbGEgaW50ZXJmYXogZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgb2J0ZW5lciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBidXNjYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJzacOzbiBDYWRlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgcmVzdW1lbiBwYXJhIG1vc3RyYXIgbGEgdmlzdGEgcGVxdWXDsWEgZGUgdW5hIGxpc3RhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNpIGxhcyBldGlxdWV0YXMgZGUgdGlwbyBkZSBlbmxhY2UgZGViZW4gbW9zdHJhcnNlIGVuIGxhcyBjb25leGlvbmVzIGRlIGxvcyBub2Rvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBleHByZXNpb25lcyByZWd1bGFyZXMgaW5kaXZpZHVhbG1lbnRlIHBhcmEgY2FkYSBjbGFzZSBDb25maWdJdGVtIHBhcmEgY29tcHJvYmFyIGVsIG5vbWJyZSBkZSBDb25maWdJdGVtIHkgbW9zdHJhciBsb3MgbWVuc2FqZXMgZGUgZXJyb3IgY29ycmVzcG9uZGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRpc3BvbmlibGVzIGRlIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBmdW5jacOzbiBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc2lzdGlyIGVuIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuIGFycmF5IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGVzdGEgb3BlcmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4gQXJyaWJhOiBlbCBtw6FzIGFudGlndW8gYXJyaWJhLiBBYmFqbzogZWwgbcOhcyByZWNpZW50ZSBhcnJpYmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0byBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlcGVuZGllbmRvIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zaXN0aXIgZW4gdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW4gYXJyYXkgZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgbGEgcHJvZnVuZGlkYWQgZGUgbGFzIHJlbGFjaW9uZXMgcXVlIHNlIG1vc3RyYXLDoW4gcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4gRWplbXBsbzogIkNsYXZlIiBkZWJlIHRlbmVyIGVsIG5vbWJyZSBkZWwgQ2FtcG8gRGluw6FtaWNvIGVuIGVzdGUgY2FzbyBcJ1hcJywgIkNvbnRlbmlkbyIgZGViZSB0ZW5lciBlbCB2YWxvciBkZWwgQ2FtcG8gRGluw6FtaWNvIGRlcGVuZGllbmRvIGRlbCB0aXBvIGRlIENhbXBvIERpbsOhbWljbywgVGV4dG86IFwnYSB0ZXh0XCcsIERlc3BsZWdhYmxlOiBcJzFcJywgRmVjaGEvSG9yYTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTZWNvbmQ9NTk7XCcgeSBvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzdWJvYmpldG8gcG9yIGRlZmVjdG8gZGUgbGEgY2xhc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnNpc3RpciBlbiB1biBub21icmUgZGUgY2xhc2UgeSB1biBhcnJheSBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBhbHR1cmEgZGVsIGNvbXBvbmVudGUgZGVsIGVkaXRvciBkZSB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGVzdGEgcGFudGFsbGEuIEludHJvZHV6Y2EgdW4gbsO6bWVybyAocMOteGVsZXMpIG8gdW4gdmFsb3IgcG9yY2VudHVhbCAocmVsYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgbsO6bWVybyBkZSBmaWxhcyBkZWwgZWRpdG9yIGRlIGRlZmluaWNpb25lcyBDSSBlbiBsYSBpbnRlcmZheiBkZSBhZG1pbmlzdHJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBkZSBsb3MgZXN0YWRvcyBkZSBpbmNpZGVuY2lhIGRlIGFsdG8gKHBvciBlamVtcGxvLCBjcsOtdGljbykgYSBiYWpvIChwb3IgZWplbXBsbywgZnVuY2lvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSByZWxldmFudGVzIGVuIGxvcyBxdWUgbG9zIHRpY2tldHMgdmluY3VsYWRvcyBwdWVkZW4gYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSBlbmxhY2VzIHBhcmEgdG9kYXMgbGFzIGNsYXNlcyBkZSBDSS4gU2kgbm8gaGF5IG5pbmd1bmEgZW50cmFkYSwgc2UgbXVlc3RyYW4gbGFzIGNvbHVtbmFzIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSBlbmxhY2VzLCBkZXBlbmRpZW5kbyBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgbGxldmFyIGNvbW8gcHJlZmlqbyBlbCBub21icmUgZGUgbGEgY2xhc2UgeSBkb3MgcHVudG9zIGRvYmxlcyAocG9yIGVqZW1wbG8sIENvbXB1dGVyOjopLiBIYXkgYWxndW5vcyBhdHJpYnV0b3MgQ0kgcXVlIHNvbiBjb211bmVzIGEgdG9kb3MgbG9zIENJcyAoZWplbXBsbyBwYXJhIGxhIGNsYXNlIENvbXB1dGFkb3I6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBhcmEgbW9zdHJhciBsb3MgQXRyaWJ1dG9zLUNpIGluZGl2aWR1YWxlcyBjb21vIHNlIGRlZmluZW4gZW4gbGEgRGVmaW5pY2nDs24tQ2ksIHNlIGRlYmUgdXRpbGl6YXIgZWwgc2lndWllbnRlIGVzcXVlbWEgKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBDb21wdXRhZG9yKTogT3JkZW5hZG9yOjpEaXNjb0R1cm86OjEsIENvbXB1dGFkb3I6OkRpc2NvRHVybzo6MTo6Q2FwYWNpZGFkOjoxLCBDb21wdXRhZG9yOjpEaXNjb0R1cm86OjIsIENvbXB1dGFkb3I6OkRpc2NvRHVybzo6Mjo6Q2FwYWNpZGFkOjoxLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhIHBhcmEgdW5hIGNsYXNlIENJLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgZWxlbWVudG9zIGVzdMOhbiBkaXNwb25pYmxlcyBwYXJhICJBY2Npw7NuIiBlbiBlbCB0ZXJjZXIgbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHByaW1lciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHNlZ3VuZG8gbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSBlbmxhY2UgKG5vbWJyYWRvIGRlc2RlIGxhIHBlcnNwZWN0aXZhIGRlbCB0aWNrZXQpIHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIHRpY2tldCBwdWVkZSBhZmVjdGFyIGFsIGVzdGFkbyBkZSB1biBDSSB2aW5jdWxhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQWN0dWFsaXphY2nDs24gZGUgbGEgZGVmaW5pY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0JvcnJhciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0NvbG9yIGRlbCBFc3RhZG8gZGUgRGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgY2FtcG9zIGRpbsOhbWljb3MgcXVlIG1hcmNhIGxhcyBkZWZpbmljaW9uZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbW8gbm8gc2luY3Jvbml6YWRhcyBzaSBjYW1iaWFuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyBxdWUgY29udGllbmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGNhbXBvcyBhZGljaW9uYWxlcyBJVFNNIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBY3RpdmEgbGEgZnVuY2nDs24gZGUgYWNjacOzbiBtYXNpdmEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgcXVlIGVsIGZyb250ZW5kIGRlbCBhZ2VudGUgdHJhYmFqZSBlbiBtw6FzIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGEgbGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWN0aXZhIGxhIGZ1bmNpw7NuIGRlIGFjY2nDs24gbWFzaXZhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzw7NsbyBwYXJhIGxvcyBncnVwb3MgZGUgbGEgbGlzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBwYXJhIGVzdGFibGVjZXIgZWwgZXN0YWRvIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBlbCB0aWNrZXQtY29uZmlnaXRlbS1lbmxhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkZWwgw61uZGljZSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24sIHV0aWxpemFkb3MgcGFyYSBsYSBiw7pzcXVlZGEgZGUgdGV4dG8gY29tcGxldG8uIExvcyBjYW1wb3MgdGFtYmnDqW4gc2UgYWxtYWNlbmFuLCBwZXJvIG5vIHNvbiBvYmxpZ2F0b3Jpb3MgcGFyYSBsYSBmdW5jaW9uYWxpZGFkIGdlbmVyYWwuIExhIGluY2x1c2nDs24gZGUgYW5leG9zIHB1ZWRlIGRlc2FjdGl2YXJzZSBwb25pZW5kbyBsYSBlbnRyYWRhIGEgMCBvIGJvcnLDoW5kb2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2FtcG9zIGFsbWFjZW5hZG9zIGVuIGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSB1dGlsaXphbiBwYXJhIG90cmFzIGNvc2FzIGFkZW3DoXMgZGUgbGFzIGLDunNxdWVkYXMgZGUgdGV4dG8gY29tcGxldG8uIFBhcmEgbGEgZnVuY2lvbmFsaWRhZCBjb21wbGV0YSB0b2RvcyBsb3MgY2FtcG9zIHNvbiBvYmxpZ2F0b3Jpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdSZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkb0luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXllIGVzdGFkb3MgZGUgaW5jaWRlbmNpYXMgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIHJlc3VsdGFkbyBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTcOzZHVsbyBwYXJhIGNvbXByb2JhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1bmEgY2xhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGNvbXByb2JhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VuZXJhciBlc3RhZMOtc3RpY2FzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vbWJyZSBNw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdNw7NkdWxvIG51bcOpcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBjYWRhIHDDoWdpbmEgZGUgdW4gcmVzdWx0YWRvIGRlIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgZGViZW4gbW9zdHJhcnNlIGVuIGNhZGEgcMOhZ2luYSBkZSB1biByZXN1bHRhZG8gZGUgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmpldG9zIGEgYnVzY2FyLCBjdcOhbnRhcyBlbnRyYWRhcyB5IHF1w6kgYXRyaWJ1dG9zIG1vc3RyYXIuIExvcyBhdHJpYnV0b3MgQ29uZmlnSXRlbSBkZWJlbiBhbG1hY2VuYXJzZSBleHBsw61jaXRhbWVudGUgYSB0cmF2w6lzIGRlIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Zpc3RhIEdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBjYXRlZ29yw61hcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBmaWx0cm9zIGRlIGNvbHVtbmEgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcGVxdWXDsW9zLiBQb3IgZmF2b3IsIHRlbmdhIGVuIGN1ZW50YTogZXN0YWJsZWNlciBcJ0FjdGl2b1wnIGEgMCBzw7NsbyBldml0YXLDoSBxdWUgbG9zIGFnZW50ZXMgZWRpdGVuIGxvcyBhanVzdGVzIGRlIGVzdGUgZ3J1cG8gZW4gc3VzIHByZWZlcmVuY2lhcyBwZXJzb25hbGVzLCBwZXJvIHNlZ3VpcsOhIHBlcm1pdGllbmRvIGEgbG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0YXIgbG9zIGFqdXN0ZXMgZW4gbm9tYnJlIGRlIG90cm8gdXN1YXJpby4gVXRpbGljZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHBhcmEgY29udHJvbGFyIGVuIHF1w6kgw6FyZWEgZGViZW4gbW9zdHJhcnNlIGVzdG9zIGFqdXN0ZXMgZW4gbGEgaW50ZXJmYXogZGUgdXN1YXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGNvbG9yIGRlIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGVqZW1wbG8gZGUgcGVybWlzb3MgZGUgZ3J1cG8gZGVsIGNhdMOhbG9nbyBnZW5lcmFsIGRlIGF0cmlidXRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIG3Ds2R1bG8gZGUgbm9tYnJlcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIG51bcOpcmljbyBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBww6FnaW5hcyAoZW4gbGFzIHF1ZSBzZSBtdWVzdHJhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgbcOzZHVsbyBkZWwga2l0IGRlIGhlcnJhbWllbnRhcyBkZSBwbGFudGlsbGFzIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBhY3RpdmFkb3IgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNvcyBkZSBncnVwbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBhY2Npw7NuIGRlIGFkanVudGFyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSB2aXN0YSBkZSDDoXJib2wgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGFtcGxpYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGHDsWFkaXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIG1hc2l2YSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWRpY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgaGlzdG9yaWFsIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBpbXByZXNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsZWdpb3MgbmVjZXNhcmlvcyBwYXJhIGVsaW1pbmFyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdCdXNjYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnRXN0YWJsZXpjYSBlbCBlc3RhZG8gZGUgbGEgaW5jaWRlbmNpYSBkZSB1biBDSSBkZSBmb3JtYSBhdXRvbcOhdGljYSBjdWFuZG8gc2UgdmluY3VsZSB1biB0aWNrZXQgYSB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFc3RhYmxlY2UgZWwgZXN0YWRvIGRlIGRlc3BsaWVndWUgZW4gbGEgcGFudGFsbGEgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXN0YWJsZWNlIGVsIGVzdGFkbyBkZSBsYSBpbmNpZGVuY2lhIGVuIGxhIHBhbnRhbGxhIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcXVlIHBlcm1pdGUgdmluY3VsYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIG90cm8gb2JqZXRvIGVuIGxhIHZpc3RhIGRlIHpvb20gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGFsIGhpc3RvcmlhbCBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHpvb20gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGVsaW1pbmFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIHN1IHZpc3RhIGRlIHpvb20gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgdmlzdWFsaXphciBsb3MgZW5sYWNlcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbW8gdW5hIHZpc3RhIGVuIMOhcmJvbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGR1cGxpY2FyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VtZW4gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgem9vbSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgem9vbSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSB2b2x2ZXIgYSBsYSB2aXN0YSBkZSB6b29tIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgZGUgem9vbSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYW1wbGlhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGVsIGhpc3RvcmlhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gKG9yZGVuYWRvIGRlIGZvcm1hIGludmVyc2EpIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0xhIGNhdGVnb3LDrWEgcG9yIGRlZmVjdG8gcXVlIHNlIG11ZXN0cmEsIHNpIG5vIHNlIHNlbGVjY2lvbmEgbmluZ3VuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0VsIGlkZW50aWZpY2Fkb3IgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIHBvciBlamVtcGxvIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBFbCB2YWxvciBwb3IgZGVmZWN0byBlcyBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjdGl2YSBhdXRvbcOhdGljYW1lbnRlIGVsIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc2nDs24gZGUgY2FkZW5hIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ03Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdBY3RpdmFkb3IgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnU2kgbG9zIGNhbXBvcyBkZWJlbiByZWxsZW5hcnNlIGF1dG9tw6F0aWNhbWVudGUgKDEpLCB5IGVuIGVzZSBjYXNvIHRhbWJpw6luIGRlYmVuIG9jdWx0YXJzZSBkZSBsb3MgZm9ybXVsYXJpb3MgZGUgbGFzIGVudHJhZGFzICgyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnU2kgc2UgcHVlZGUgZXZpdGFyIGxhIGVqZWN1Y2nDs24gZGUgQ29uZmlnSXRlbUFDTCBjb21wcm9iYW5kbyBsYXMgZGVwZW5kZW5jaWFzIGRlIGNhbXBvcyBlbiBjYWNow6kuIEVzdG8gcHVlZGUgbWVqb3JhciBsb3MgdGllbXBvcyBkZSBjYXJnYSBkZSBsb3MgZm9ybXVsYXJpb3MsIHBlcm8gZGViZSBkZXNhY3RpdmFyc2Ugc2kgc2UgdmFuIGEgdXRpbGl6YXIgQUNMTW9kdWxlcyBwYXJhIElUU01Db25maWdJdGVtLSB5IEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdRdcOpIGluZm9ybWFjacOzbiBnZW5lcmFsIHNlIG11ZXN0cmEgZW4gbGEgY2FiZWNlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnQ2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3Rpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3Rpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3Rpdm8nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcHVsZ2FkYXMgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwdWxnYWRhcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHB1bGdhZGFzICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHB1bGdhZGFzICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFjayBkZSAxOSBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcHVsZ2FkYXMgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ0NyZW1hbGxlcmEgZGUgMjEgcHVsZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiA5Nyw3OSBjbSAoMzgsNSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnRXN0YW50ZSBkZSAyMyBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgcHVsZ2FkYXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHB1bGdhZGFzICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwdWxnYWRhcyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IHB1bGdhZGFzICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHB1bGdhZGFzICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwdWxnYWRhcyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgcHVsZ2FkYXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHB1bGdhZGFzICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwdWxnYWRhcyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICcxLjAwMCBtbSAoMzksNCBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHB1bGdhZGFzICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcHVsZ2FkYXMgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHB1bGdhZGFzICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHB1bGdhZGFzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IHB1bGdhZGFzICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcHVsZ2FkYXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBwdWxnYWRhcyAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHB1bGdhZGFzICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgcHVsZ2FkYXMgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgcHVsZ2FkYXMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0NvbnRhYmlsaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FzaWduYWNpw7NuIGRlIGRpcmVjY2lvbmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBhbmFsw7NnaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVGlwbyBkZSBhcGFyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpZGFkIGRlIGxhIGJhdGVyw61hIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVGlwbyBkZSBiYXRlcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0VkaWZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZheiBkZSBidXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzZSBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaWRhZCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpZGFkIHBvciB0YXJqZXRhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVjdG9yIGRlIHRhcmpldGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1RpcG8gZGUgdGFyamV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXRlZ29yw61hIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnUmVsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZlbG9jaWRhZCBkZSByZWxvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGZpcm1hIGRlIGPDs2RpZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBkZSBjb25mZXJlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgY29uc3VsdG9yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdQw7NuZ2FzZSBlbiBjb250YWN0byBjb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0NvbnRhY3RhciBjb24gZWwgZGlzdHJpYnVpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgY29udGVuZWRvcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcG8gZGUgY29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdQZXLDrW9kbyBkZWwgY29udHJhdG8gZGVzZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGVsIGNvbnRyYXRvIGhhc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbMOpZm9ubyBpbmFsw6FtYnJpY28gKHRlbMOpZm9ubyBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdVbmlkYWQgZGUgY29zdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdSZWN1ZW50byBkZSBsaWNlbmNpYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0ZlY2hhIGRlIGNyZWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnRXN0YW50ZXLDrWEgcGVyc29uYWxpemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZpZG9yIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRmVjaGEgZGUgbGEgZmFjdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRmVjaGEgZGVsIHBlZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRmVjaGEgZGUgbGEgZ2FyYW50w61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0ZlY2hhIGRlIHB1YmxpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRXNjcml0b3Jpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGZpcm1hIGRlIGRvY3VtZW50b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIChDZXJ0aWZpY2Fkb3MgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdDb250cmF0byBkZSB0cmFiYWpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRGlyZWNjacOzbiBJUCBmaW5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0ZpbiBkZSBsYSBheXVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0ZlY2hhIGRlIGV4cGlyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdEaXNjbyBkdXJvIGV4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdDb3J0YWZ1ZWdvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnQWxtYWNlbmFtaWVudG8gZGUgZW5lcmfDrWEgbWVkaWFudGUgdm9sYW50ZSBkZSBpbmVyY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFjdG9yIGRlIGZvcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIGZyYW5xdWljaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZ2VuZXJhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1RhcmpldGFzIGdyw6FmaWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnVGFyamV0YSBncsOhZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWxvIGRlIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1Blc28gZGVsIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdBdXJpY3VsYXJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3RvY29sbyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdHZXN0acOzbiBkZSBpZGVudGlkYWRlcyB5IGFjY2Vzb3MgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ07Dum1lcm8gZGUgaW52ZW50YXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBmYWN0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGVjbGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdG9yIExDRCAocGFudGFsbGEgZGUgY3Jpc3RhbCBsw61xdWlkbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChkaW9kbyBlbWlzb3IgZGUgbHV6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWzDqWZvbm8gZmlqbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdDb21wdXRhZG9yIFBvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYXBhIDE6IENhcGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYXBhIDI6IENhcGEgZGUgZW5sYWNlIGRlIGRhdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIDM6IENhcGEgZGUgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYXBhIDQ6IENhcGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FwYSA1OiBDYXBhIGRlIHNlc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FwYSA2OiBDYXBhIGRlIHByZXNlbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYXBhIDc6IENhcGEgZGUgYXBsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgYXJyZW5kYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NsYXZlIGRlIGxpY2VuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2VuY2lhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIGxpdGlvIGZvc2ZhdG8gZGUgaGllcnJvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgaW9uZXMgZGUgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIHByw6lzdGFtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dWFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaWRhZCBkZSBjYXJnYSBtw6F4aW1hIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgbcOzdmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ03Ds3ZpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ03Ds2RlbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwY2nDs24gZGVsIG1vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSZXNvbHVjacOzbiBkZWwgbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdUYW1hw7FvIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIGRlIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtY2FkbWlvIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtaGlkcnVybyBtZXTDoWxpY28gKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjdWVyZG8gZGUgY29uZmlkZW5jaWFsaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0N1YWRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTsO6bWVybyBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTsO6bWVybyBkZSBtw7NkdWxvcyBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3Jnw6FuaWNvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0Nvc3RlcyBkZSBleHBsb3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTYWxpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgYXNvY2lhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbMOpZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkZSB0ZWzDqWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdOw7pjbGVvcyBmw61zaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N1bWluaXN0cm8gZGUgZW5lcmfDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdDb21wcmFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZnVuZGlkYWQgZGUgbGEgZXN0YW50ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbmlkYWRlcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUk9NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnVGFyamV0YSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHZlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBwb3Igc2F0w6lsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIHBsb21vLcOhY2lkbyBzZWxsYWRhIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnSW5jbHV5ZSBlc3RhZG9zIGRlIGluY2lkZW5jaWFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgZGUgc2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBzZXJ2aWNpb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdFdGlxdWV0YSBkZSBzZXJ2aWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUaXBvIGRlIGVuY2h1ZmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0FsdGF2b2Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdFc3TDoW5kYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0RpcmVjY2nDs24gSVAgZGUgaW5pY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdBbG1hY2VuYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpY2nDs24gZGUgYWxtYWNlbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdGaWxpYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1Jlc3VtZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDbGllbnRlIGxpZ2Vybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnSGlsb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIGRlIGxhIHRhcmpldGEgZ3LDoWZpY2EgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdG9yIHTDoWN0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnSHViIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ0Nhc2NvcyBkZSBSVic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWzDqWZvbm8gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnQ8OhbWFyYSB3ZWInOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/et_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmV0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfDnGxkaXNlZCB0ZWdldnVzYW5kbWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTaXNzZXR1bGV2YXRlIHRhb3RsdXN0ZSBhbmRtZXRlIHNlYWRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1bDpGxqYW1pbmV2YXRlIHZhc3R1c2FuZG1ldGUgc2VhZGVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnU2VydmVyIE9TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXV1ZGEga2xhc3NpIG3DpMOkcmF0bHVzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTXV1ZGEgcm9sbGkgbcOkw6RyYXRsdXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IGtsYXNzaWtvbXBsZWt0aWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdTaWl0IHNhYXRlIGltcG9ydGlkYSBSZWFkeTJJbXBvcnQta2xhc3NpZGUgcGFrZXR0ZSwgbWlzIHR1dHZ1c3RhdmFkIG1laWUga8O1aWdlIHRhdmFsaXNlbWFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuIFBhbmdlIHTDpGhlbGUsIGV0IG3DtW5lZCB0w6RpZW5kYXZhZCBrb25maWd1cmF0c2lvb25pZCB2w7VpdmFkIG9sbGEgdmFqYWxpa3VkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdPbGVtYXNvbGV2YXRlIMO8a3N1c3RlIGFqYWtvaGFzdGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3JkaSBSZWFkeTJBZG9wdCBrbGFzc2kgcGFrZXRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlIChzZWFkaXN0dXNlbGVtZW5kaSByb2xsKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdLbGFzc2lkZSBmaWx0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnVXVlIENvbmZpZyBJdGVtXCdpIGxvb21pc2VrcyB2YWxpZ2UgbmltZWtpcmphc3Qga2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0thc3V0dXNlbGV2w7V0dSBzZWlzdW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW50c2lkZW50aWRlIG9sdWtvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0ZWlzZWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdWaWdhbmUga29uZmlndXJhdHNpb29uaSBraXJqZSBudW1iZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ1RlaXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBudW1iZXIsIG1pbGxlZ2Egc2lkdWRhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1bDtXJrJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBuaW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOaW1pIG9uIGp1YmEga2FzdXR1c2VsIENvbmZpZ0l0ZW1zXCdpIHBvb2x0IGrDpHJnbWlzZSh0ZSkgbnVtYnJpKGRlKWdhOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpb29uaSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSB2ZXJzaW9vbmkgbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lvb25pbnVtYmVyIG9uIGp1YmEga2FzdXR1c2VsIENvbmZpZ0l0ZW1zXCdpcywgbWlsbGUgbnVtYmVyKGQpIG9uIGrDpHJnbWluZShkKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0thc3V0dXNlbGV2w7V0dSByaWlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSW50c2lkZW50aWRlIHJpaWsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0NvbmZpZyBJdGVtXCdpIGFqYWx1Z3U6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0FqYWx1Z3UgU2lzdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdTdXVyZW5kdXN2YWFkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgSXRlbXMgcGVyIHBhZ2UgKHNlYWRpc3R1c2VsZW1lbmRpZCBsZWhla8O8bGplIGtvaHRhKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnQ29uZmlnLWVsZW1lbmRpIGFuZG1laWQgZWkgbGVpdHVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZhbGlnZSBzZWUga29uZmlndXJhdHNpb29uaWVsZW1lbnQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdLw6Rpdml0YSBvdHNpbmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtXCdpIFRyZWVWaWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnU8O8Z2F2dXNlIHRhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdTdXVtaW1pbmUgc2lzc2UvdsOkbGphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0NvbmZpZ0l0ZW1cJ2kgbWFrc2ltYWFsbmUgbGlua2lkZSB0YXNlIG9uIHNhYXZ1dGF0dWQhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJlZXJpbWlzb2JqZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0tvbmZpZ3VyZWVyaW1pc2VsZW1lbmRpIHRlYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1ByYWVndW5lIGthc3V0dXNlbGV2w7V0dSBvbHVrb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdQcmFlZ3VuZSBqdWh0dW1pdGUgb2x1a29yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdWaWltYXRpIG11dWRldHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1ZpaW1hdGkgbXV1dGlzJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVGVpZSBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIG90c2luZyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0ltcG9yZGl0YWtzZSBqw6RyZ21pc2VkIGtsYXNzaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnSW1wb3JkaXRha3NlIGrDpHJnbWlzZWQgcm9sbGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1BhbmdlIHTDpGhlbGUsIGV0IGthIHZhc3RhdmFkIGTDvG5hYW1pbGlzZWQgdsOkbGphZCBqYSBHZW5lcmFsQ2F0YWxvZ2kga2xhc3NpZCBsdXVha3NlIGphIG5laWQgZWkgZWVtYWxkYXRhIGF1dG9tYWF0c2VsdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdLYXMgc29vdml0ZSBqw6R0a2F0YT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnVmFqYWQgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ03DpMOkcmF0bHVzIGVpIG9sZSBrZWh0aXYgWUFNTC1oYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ8OcbGV2YWFkZTogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVGVpbCBvbiB2YWphIHbDpGhlbWFsdCDDvGh0ZSB2YWxpdHVkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdUZWlsIGVpIG9sZSBzZWxsZWxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaWxlIGtpcmp1dGFtaXPDtWlndXN0OiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc3NpbGUgJXMgZWkgb2xlIG3DpMOkcmF0bGV0dWQgZGVmaW5pdHNpb29uaSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZyBpdGVtICIlcyIgZWkgb2xlIGFuZG1lYmFhc2lzIGxlaXR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdFaSDDtW5uZXN0dW51ZCBrdXN0dXRhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGphb2tzIGVpIGxlaXR1ZCB2ZXJzaW9vbmkhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgdsO1aSBDbGFzc0lEIGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0p1dXJkZXDDpMOkc3UgZWkgYW50YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnRWkgc2FhIG7DpGlkYXRhIGFqYWx1Z3UsIENvbmZpZ0l0ZW1JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnRWkgc2FhIG7DpGlkYXRhIGFqYWx1Z3UsIGp1dXJkZXDDpMOkc3XDtWlndXN0IGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ1V1cyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ1V1cyB2ZXJzaW9vbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnw5xsZGlzdGUga2F0YWxvb2dpIGF0cmlidXV0aWRlIG7DpGlkaXPDtWlndXN0ZSByw7xobWFkZSBwYXJhbWVldHJpZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSnVodHVtaXRlIHNlaXN1bmRpIHV1ZW5kYW1pbmUgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBrdXN0dXRhdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGlzYXR1ZCBsaW5rICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayAlcyAodHlwZT0lcykga3VzdHV0YXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSBtw6TDpHJhdGx1cyB1dWVuZGF0dWQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05pbWkgdXVlbmRhdHVkIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdFaSBzYWEgbsOkaWRhdGEgZWxlbWVudGksIENvbmZpZ0l0ZW1pbGUgZWkgb2xlIGFudHVkIGp1dXJkZXDDpMOkc3XDtWlndXNpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9vbiAlcyBrdXN0dXRhdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCB2w7VpIFZlcnNpb25JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0VpIHNhYSBrdXZhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpLCBlaSBvbGUgYW50dWQganV1cmRlcMOkw6RzdcO1aWd1c2khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGVpIGxlaXR1ZCBhbmRtZWJhYXNpcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3Ryw7xraXR1ZCAlcyBwb29sdCBhYWRyZXNzaWwgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1ZpaXRlZCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1ZhbGUgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lEIGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdTZWxsZWxlIGtsYXNzaWxlIGVpIG9sZSBqdXVyZGVww6TDpHN1w7VpZ3VzdCBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1R1bGVtdXN0IGVpIG9sZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgSXRlbSBvdHNpbmd1IHR1bGVtdXNlZCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnRWkgc2FhIG7DpGlkYXRhIGVsZW1lbnRpLCBDb25maWdJdGVtaWxlIGVpIG9sZSBhbnR1ZCBqdXVyZGVww6TDpHN1w7VpZ3VzaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBlaSBsZWl0dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ8OcaHRlZ2kgdmVyc2lvb25pIGVpIGxlaXR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpaXZuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnaG9pYXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2p1aHR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGthc3V0dXNlbGV2w7V0dSBvbGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGludHNpZGVudG5lIG9sZWsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdMdWJhIHB1dWR1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIga2VodGV0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMga2VodGV0dSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdOw6RpZGF0dWQga29uZmlndXJhdHNpb29uaSBlbGVtZW5kaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnS2FzdXR1c2VsZXbDtXR1IHJpaWdpIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdQcmFlZ3VuZSDDtW5uZXR1c2p1aHR1bWkgc2Vpc3VuZGl0w7zDvHAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NpIHBpaXJhbmd1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgamFva3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZhbGlnZSDDvGtzIHbDtWkgbWl0dSBrbGFzc2ksIGV0IHBpaXJhdGEgdmFsaXRhdmFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2kgcGlpcmFuZ3VkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBqYW9rcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZhbGlnZSDDvGtzIHbDtWkgbWl0dSBrbGFzc2ksIGV0IHBpaXJhdGEgdmFsaXRhdmFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRMO8bmFhbWlsaW5lIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhYXRpbGluZSAodmVyc2lvb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ0xpbmtpZGUgdmlpdGFtaXNlIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdLYXMgc2VlIGxpbmsga2VodGliIHZpaXRhdmEgb2JqZWt0aSBDb25maWdJdGVtXCdpIHbDtWkgc3RhYXRpbGlzZSB2ZXJzaW9vbmkga29odGEuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGVcJ2kgYXJ2dXRhbWluZSB0b2ltdWIgYWludWx0IGTDvG5hYW1pbGlzdGUgbGlua2lkZSBwdWh1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWYWxpZ2UgYXRyaWJ1dXQsIG1pbGxlIGrDpHJnaSBrb25maWd1cmF0c2lvb25pZWxlbWVudGUgb3RzaXRha3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYWFzc3RydWt0dXVyIGVpIG9sZSBrZWh0aXYuIFBhbHVuIGVzaXRhZ2UgWUFNTC12b3JtaW5ndXMgYW5kbWV0ZSBoYXNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUwtc3RyaW5naSBhbHVzdGFtaW5lIHPDtW5hZ2EgXCctLS1cJyBvbiBuw7V1dGF2Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdUYWJlbGl0IGNvbmZpZ2l0ZW1fbGluayBlaSDDtW5uZXN0dW51ZCBwdWhhc3RhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdBc2pha29oYXNlaWQgZMO8bmFhbWlsaXNpIHbDpGxqdSBlaSBsZWl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdFaSDDtW5uZXN0dW51ZCBzaXNlc3RhZGEgdGFiZWxpc3NlIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnU2lzZXN0YXR1ZCAwIHJpZGEgdGFiZWxpc3NlIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfDnGhlIGVsZW1lbmRpIG1ha3NpbWFhbG5lIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9vbiBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnVmlnYSBtw6TDpHJhdGx1c3RlIHPDvG5rcm9uaXNlZXJpbWlzZWwuIFBhbHVuIGtvbnRyb2xsaWdlIGxvZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGVpbCBvbiBJVFNNQ29uZmlnSXRlbSBtw6TDpHJhdGx1c2VkLCBtaXMgZWkgb2xlIHPDvG5rcm9uaXNlZXJpdHVkLiBQYWx1biB2w7V0a2Uga2FzdXR1c2VsZSBvbWEgSVRTTUNvbmZpZ0l0ZW0gZMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBtdXVkYXR1c2VkLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnQWVndW51ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0hvb2xkdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5lZXJpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlbW9udCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVuc2lvbmlsZSBqw6TDpG51ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfDnGxldmFhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ8OcbGV2YWFkZSBqYSBraW5uaXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdLbGFzc2lkZS9yb2xsaWRlIGphIG5lbmRlZ2Egc2VvdHVkIHbDpGxqYWRlIGltcG9ydGltaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnS2xhc3NpIGltcG9ydGltaXNlbCB0ZWtraXMgdmlnYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIHBlaWRldHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBuw6RpZGF0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1bDtWltYWxkYWIgbGFpZW5kYXR1ZCBvdHNpbmd1dGluZ2ltdXNpIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBvdHNpbmd1cy4gU2VsbGUgZnVua3RzaW9vbmlnYSBzYWF0ZSBvdHNpZGEgbnQgY29uZmlnLWVsZW1lbmRpIG5pbWUgc2VsbGlzdGUgdGluZ2ltdXN0ZWdhIG5hZ3UgIigqa2V5MSomJiprZXkyKikiIHbDtWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdWw7VpbWFsZGFiIGxhaWVuZGF0dWQgb3RzaW5ndXRpbmdpbXVzaSBrbGllbmRpIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXMuIFNlbGxlIGZ1bmt0c2lvb25pZ2Egc2FhdGUgb3RzaWRhIG50IGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBuaW1lIHNlbGxpc3RlIHRpbmdpbXVzdGVnYSBuYWd1ICIoKmtleTEqJiYqa2V5MiopIiB2w7VpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnTcOkw6RyYXR1ZCBlbHV0w6RodHNhZCBpbmZyYXN0cnVrdHV1cmlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0tsaWVudGlkZWxlIG3DpMOkcmF0dWQgQ0lkIGtsaWVuZGlldHRldsO1dHRlbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdLbGllbmRpa2FzdXRhamFsZSBtw6TDpHJhdHVkIENJZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBzZWFkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0tvbnRyb2xsaWRhIHVuaWthYWxzZXQgbmltZSBhaW51bHQgc2FtYSBDb25maWdJdGVtIGtsYXNzaSAoXCdjbGFzc1wnKSB2w7VpIGdsb2JhYWxzZWx0IChcJ2dsb2JhbFwnKSwgbWlzIHTDpGhlbmRhYiwgZXQgZHVibGVlcmluZ3V0ZSBvdHNpbWlzZWwgdsO1ZXRha3NlIGFydmVzc2UgaWdhIG9sZW1hc29sZXZhdCBDb25maWdJdGVtXCdpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnVmFsaWdlIG1vb2R1bCBuaW1lc2tlZW1pIGrDtXVzdGFtaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWYWxpZ2UgbW9vZHVsIG51bWJyaXNrZWVtaSBqw7V1c3RhbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdWYWxpZ2UgbW9vZHVsLCBldCBrZWh0ZXN0YWRhIHZlcnNpb29uaWphZGEgc2tlZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVmFsaWdlIGF0cmlidXVkaWQsIG1pcyBrw6Rpdml0YXZhZCB1dWUgdmVyc2lvb25pIGxvb21pc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1ZhbGlnZSBrYXRlZ29vcmlhZCwgbWlzIG3DpMOkcmF0YWtzZSBzZWxsZWxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBrbGFzc2lsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb25maWdJdGVtIE92ZXJ2aWV3IHZlZXJndSBDb25maWdJdGVtIGVsZW1lbmRpIGZpbHRyaWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdWZWVydWQsIG1pZGEgc2FhYiBmaWx0cmVlcmlkYSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZXMuIE3DpHJrdXM6IEx1YmF0dWQgb24gYWludWx0IENvbmZpZyBJdGVtIGF0cmlidXVkaWQgamEgZMO8bmFhbWlsaXNlZCB2w6RsamFkIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdLb25maWd1cmVlcmltaXNvYmpla3RpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlnIGl0ZW0gYWRkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZyBpdGVtIGVkaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9vZHVsLCBtaXMgdsO1aW1hbGRhYiBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcyBhamFsdWtrdSBsb2dpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZyBlbGVtZW50aWRlIHPDvG5kbXVzdGUgbW9vZHVsLCBtaXMgdXVlbmRhYiBjb25maWcgZWxlbWVudGUgbmVuZGUgcHJhZWd1c2UgbcOkw6RyYXRsdXNlIGrDpHJnaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdWw6RsamFsYXNrZWF2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDb25maWcgaXRlbSBwcmludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWcgaXRlbSB6b29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gVHJlZSBWaWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gdmVyc2lvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnSsOkcmdtaXN0ZSBrbGFzc2lkZSBDb25maWdJdGVtcyBlaSBzYWx2ZXN0YXRhIEVsYXN0aWNzZWFyY2hpIHNlcnZlcmlzc2UuIEV0IHNlZGEgb2xlbWFzb2xldmF0ZWxlIENJLWRlbGUgcmFrZW5kYWRhLCB0dWxlYiBww6RyYXN0IHNlbGxlIHZhbGlrdSBtdXV0bWlzdCBrw6Rpdml0YWRhIENJIG1pZ3JhdHNpb29uIGtvbnNvb2xpIGthdWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcywgbWlsbGVsIG9uIGrDpHJnbWlzZWQga2FzdXR1c2VsZXbDtXR1IG9sZWt1ZCwgZWkgc2FsdmVzdGF0YSBFbGFzdGljc2VhcmNoaSBzZXJ2ZXJpc3NlLiBTZWxsZSBrb2hhbGRhbWlzZWtzIG9sZW1hc29sZXZhdGVsZSBDSS1kZWxlIHR1bGViIHDDpHJhc3Qgc2VsbGUgdmFsaWt1IG11dXRtaXN0IGvDpGl2aXRhZGEgQ0ktbWlncmF0c2lvb24ga29uc29vbGkga2F1ZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ3VyZWVyaW1pc8O8a3N1c2UgcGlpcmFuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhdHNpb29uIEVsZW1lbnRpZGUgcGlpcmFydiBsZWhla8O8bGplIGtvaHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlndXJhdHNpb29uaSBqdWh0aW1pc2UgYW5kbWViYWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGxhaHRpbmUgbW9vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmVlcmltaXNlbGVtZW5kaSBvdHNpbmcgYWdlbnRpZGUgbGlpZGVzZSB0YWdhc2lzaWRlIG1hcnNydXV0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdMdXVhIGphIGhhbGxhdGEga29uZmlndXJhdHNpb29uaW9iamVrdGlkZSBtw6TDpHJhdGx1c2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnTG9vYiBDb25maWdJdGVtc1wnaSBwaWxldGlkIHRlYXR1ZCBhamFoZXRrZWRlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS2xpZW5kaWQgc2FhdmFkIG7DpGhhIGFqYWxvb2xpc2kgQ0ktdmVyc2lvb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLbGllbnRpZGVsIG9uIHbDtWltYWx1cyBrw6RzaXRzaSB2YWhldGFkYSB2YXJhc2VtYXRlIENJLXZlcnNpb29uaWRlIHZhaGVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1ZhaWtpbWlzaSBhbmRtZWQsIG1pZGEga2FzdXRhdGFrc2UgYXRyaWJ1dXRpZGUgcHVodWwga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgZWtyYWFuaWwuIE7DpGlkZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdWYWlraW1pc2kgYW5kbWVkLCBtaWRhIGthc3V0YXRha3NlIGF0cmlidXV0aWRlIHB1aHVsIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGVrcmFhbmlsLiBOw6RpZGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdNw6TDpHJha2UgdG9pbWluZ3VkLCBtaWxsZSBwdWh1bCBvbiBzZW90dWQgb2JqZWt0aWRlIHZpZGluYSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpIHNhYWRhdmFsIHNlYWRldGUgbnVwcCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQYW5nZSB0w6RoZWxlLCBldCBuZWVkIHRvaW1pbmd1ZCBwZWF2YWQgb2xlbWEgcmVnaXN0cmVlcml0dWQgasOkcmdtaXNlZCBKUy0gamEgQ1NTLWZhaWxpZDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgamEgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnTcOkw6RyYWtlIG1hbGxpOjpUb29sa2l0IHNrZWVtIHZlcnNpb29uaSBzdHJpbmdpZGUgamFva3MuIEthc3V0YXRha3NlIGFpbnVsdCBzaWlzLCBrdWkgVmVyc2lvbiBTdHJpbmcgTW9kdWxlXCdpbGUgb24gbcOkw6RyYXR1ZCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdNw6TDpHJha2UgdGluZ2ltdXNlZCwgbWlsbGUgYWx1c2VsIGtsaWVuZGlsIG9uIGx1YmF0dWQga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIG7DpGhhLiBUaW5naW11c2kgc2FhYiB2YWxpa3VsaXNlbHQgcGlpcmF0YSB0ZWF0dWQga2xpZW5kaXLDvGhtYWRlbGUuIE5pbWkgb24gYWludXMga29odXN0dXNsaWsgYXRyaWJ1dXQuIEt1aSBtdWlkIHZhbGlrdWlkIGVpIG9sZSBhbnR1ZCwgb24ga8O1aWsga29uZmlndXJhdHNpb29uaWVsZW1lbmRpZCBzZWxsZSBrYXRlZ29vcmlhIGFsbCBuw6RodGF2YWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBuw7V1dGF2YWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaW9iamVrdGlkZSBrdXN0dXRhbWlzZWtzIMO8bGRpc2UgbGlpZGVzZSBhYmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgbsO1dXRhdmFkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIHNhYW1pc2VrcyDDvGxkaXNlIGxpaWRlc2UgYWJpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIG7DtXV0YXZhZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pb2JqZWt0aWRlIG90c2ltaXNla3Mgw7xsZGlzZSBsaWlkZXNlIGFiaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBuw7V1dGF2YWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgc2VhZGlzdGFtaXNla3Mgw7xsZGlzZSBsaWlkZXNlIGFiaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIMO8bGV2YWF0ZW1vb2R1bGksIG1pcyBuw6RpdGFiIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIGxvZW5kaSB2w6Rpa2VzdCB2YWFkZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ03DpMOkcmFiLCBrYXMgbGluZ2l0w7zDvGJpIHNpbGRpZCBwZWF2YWQgb2xlbWEga3V2YXR1ZCBzw7VsbWXDvGhlbmR1c3Rlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIGlnYSBDb25maWdJdGVtLWtsYXNzaSBqYW9rcyBlcmFsZGkgcmVndWxhYXJhdmFsZGlzZWQgQ29uZmlnSXRlbS1uaW1lIGtvbnRyb2xsaW1pc2VrcyBqYSB2YXN0YXZhdGUgdmVhdGVhZGV0ZSBrdXZhbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIENJZGUgb2xlbWFzb2xldmFkIHZlZXJ1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlcyBzw7VsdHV2YWx0IENJLWtsYXNzaXN0LiBJZ2Ega2lyamUgcGVhYiBrb29zbmVtYSBrbGFzc2kgbmltZXN0IGphIHZhc3RhdmEga2xhc3NpIGphb2tzIGvDpHR0ZXNhYWRhdmF0ZSB2w6RsamFkZSBtYXNzaWl2aS4gRMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBraXJqZWQgcGVhdmFkIGrDpHJnaW1hIHNrZWVtaSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgdmFpa2ltaXNpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhdHJpYnV1ZGksIG1pcyBvbiB2YWphbGlrIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXR1bGVtdXNlIHNvcnRlZXJpbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYWIgdmFpa2ltaXNpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhdHJpYnV1ZGkga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZSBzb3J0ZWVyaW1pc2Vrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNw6TDpHJhYiB2YWlraW1pc2kga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGF0cmlidXVkaSBzZWxsZSBvcGVyYXRzaW9vbmkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZSBzb3J0ZWVyaW1pc2Vrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ03DpMOkcmFiIHZhaWtpbWlzaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgasOkcmpla29ycmEgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1dHVsZW11c2VzLiDDnGxlczogdmFuaW0gb24gw7xsZXZhbC4gQWxsYTogdXVzaW0gw7xsZXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ03DpMOkcmFiIHZhaWtpbWlzaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgasOkcmpla29ycmEga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZXMuIMOcbGVzOiB2YW5pbSBvbiDDvGxldmFsLiBBbGxhOiB1dXNpbSDDvGxldmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgQ0lkZSB2YWlraW1pc2kga3V2YXRhdmFkIHZlZXJ1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlcyBzw7VsdHV2YWx0IENJLWtsYXNzaXN0LiBJZ2Ega2lyamUgcGVhYiBrb29zbmVtYSBrbGFzc2kgbmltZXN0IGphIHZhc3RhdmEga2xhc3NpIGphb2tzIGvDpHR0ZXNhYWRhdmF0ZSB2w6RsamFkZSBtYXNzaWl2aS4gRMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBraXJqZWQgcGVhdmFkIGrDpHJnaW1hIHNrZWVtaSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdNw6TDpHJhYiB2YWlraW1pc2kga3V2YXRhdmF0ZSBzdWhldGUgc8O8Z2F2dXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiB2YWlraW1pc2kga3V2YXRhdmEga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgYXRyaWJ1dWRpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGVrcmFhbmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgdmFpa2ltaXNpIGt1dmF0YXZhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGF0cmlidXVkaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pbC4gTsOkaWRlOiAiS2V5IiBwZWFiIG9sZW1hIGTDvG5hYW1pbGlzZSB2w6RsamEgbmltaSwgYW50dWQganVodWwgXCdYXCcsICJDb250ZW50IiBwZWFiIG9sZW1hIGTDvG5hYW1pbGlzZSB2w6RsamEgdsOkw6RydHVzIHPDtWx0dXZhbHQgZMO8bmFhbWlsaXNlIHbDpGxqYSB0w7zDvGJpc3QsIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGphIHbDtWkgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIga2xhc3NpIFwnSVRTTUNvbmZpZ0l0ZW1cJyB2YWlraW1pc2kgYWxhbW9iamVrdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBDSWRlIG9sZW1hc29sZXZhZCB2ZWVydWQga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZXMgc8O1bHR1dmFsdCBDSS1rbGFzc2lzdC4gSWdhIGtpcmplIHBlYWIga29vc25lbWEga2xhc3NpIG5pbWVzdCBqYSB2YXN0YXZhIGtsYXNzaSBqYW9rcyBrw6R0dGVzYWFkYXZhdGUgdsOkbGphZGUgbWFzc2lpdmkuIETDvG5hYW1pbGlzdGUgdsOkbGphZGUga2lyamVkIHBlYXZhZCBqw6RyZ2ltYSBza2VlbWkgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTcOkw6RyYWIgc2VsbGUgZWtyYWFuaSByaWtrYWxpa3UgdGVrc3RpcmVkYWt0b3JpIGtvbXBvbmVuZGkga8O1cmd1c2UuIFNpc2VzdGFnZSBhcnYgKHBpa3NsaWQpIHbDtWkgcHJvdHNlbnR1YWFsbmUgdsOkw6RydHVzIChzdWh0ZWxpbmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBDSSBtw6TDpHJhdGx1c2UgcmVkYWt0b3JpIHJpZGFkZSBhcnZ1IGhhbGR1c2xpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBqdWh0dW1pIHNlaXN1bmRpdGUgasOkcmpla29ycmEga8O1cmdlc3QgKG50IGtyaXRzaWFhbG5lKSBrdW5pIG1hZGFsYW5pIChudCBmdW5rdHNpb25hYWxuZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgYXNqYW9tYXNlZCBrYXN1dHVzZWxldsO1dHUgb2xla3VkLCBtaWxsZSBwdWh1bCBzZW90dWQgcGlsZXRpZCB2w7VpdmFkIG3DtWp1dGFkYSBDSSBvbGVrdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgYWdlbnRJVFNNQ29uZmlnSXRlbSBla3JhYW5pIG90c2luZ3VwaWlyYW5ndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBvdHNpbmd1cGlpcmFuZ3UgZWtyYWFuaSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIGphb2tzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcmFiIG90c2luZ3VwaWlyYW5ndSBla3JhYW5pIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyYWIgb3RzaW5ndXBpaXJhbmd1IGVrcmFhbmlsIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIGvDtWlraWRlIENJLWtsYXNzaWRlIGphb2tzIGxpbmdpdGFiZWxpcyBrb21wbGVrc3ZhYXRlcyBuw6RpZGF0dWQgQ0lkZSB2ZWVydWQuIEt1aSBrYW5uZSBwdXVkdWIsIGt1dmF0YWtzZSB2YWlraW1pc2kgdmVlcnVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgbGluZ2l0YWJlbGlzIGtvbXBsZWtzdmFhdGVzIG7DpGlkYXR1ZCBDSWRlIHZlZXJ1ZCBzw7VsdHV2YWx0IENJLWtsYXNzaXN0LiBJZ2Ega2lyamUgZWVzIHBlYWIgb2xlbWEga2xhc3NpIG5pbWkgamEga2FrcyBrb29sb25pdCAobnQgQ29tcHV0ZXI6OikuIE9uIG9sZW1hcyBtw7VuZWQgQ0ktQXR0cmlidXVkaWQsIG1pcyBvbiBrw7VpZ2lsZSBDSWRlbGUgw7xoaXNlZCAobsOkaXRla3Mga2xhc3NpIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDDnGtzaWt1dGUgQ0ktQXR0cmlidXV0aWRlIG7DpGl0YW1pc2VrcywgbmFndSBvbiBtw6TDpHJhdGxldHVkIENJLURlZmluaXRzaW9vbmlzLCB0dWxlYiBrYXN1dGFkYSBqw6RyZ21pc3Qgc2tlZW1pIChuw6RpZGUga2xhc3NpIENvbXB1dGVyIHB1aHVsKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEt1aSBDSS1rbGFzc2kga29odGEgcHV1ZHViIGthbm5lLCBrdXZhdGFrc2UgdmFpa2ltaXNpIHZlZXJ1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNw6TDpHJhYiwgbWlsbGlzZWQgZWxlbWVuZGlkIG9uIHNhYWRhdmFsICJBY3Rpb24iIGphb2tzIElUU00gQ29uZmlnIEl0ZW0gQUNMaSBzdHJ1a3R1dXJpIGtvbG1hbmRhbCB0YXNhbmRpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNw6TDpHJhYiwgbWlsbGlzZWQgZWxlbWVuZGlkIG9uIHNhYWRhdmFsIElUU00gQ29uZmlnIEl0ZW0gQUNMaSBzdHJ1a3R1dXJpIGVzaW1lc2VsIHRhc2FuZGlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNw6TDpHJhYiwgbWlsbGlzZWQgZWxlbWVuZGlkIG9uIHNhYWRhdmFsIElUU00gQ29uZmlnIEl0ZW0gQUNMaSBzdHJ1a3R1dXJpIHRlaXNlbCB0YXNhbmRpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTcOkw6RyYWIsIG1pbGxpc3QgdMO8w7xwaSBsaW5rIChuaW1lZ2EgcGlsZXRpIHZhYXRlbnVyZ2FzdCkgdsO1aWIgbcO1anV0YWRhIHNlb3R1ZCBDSSBzdGFhdHVzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdNw6TDpHJhYiwgbWlsbGlzdCB0w7zDvHBpIHBpbGV0aWQgdsO1aXZhZCBtw7VqdXRhZGEgc2VvdHVkIENJIHN0YWF0dXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ03DpMOkcmF0bHVzZSBhamFrb2hhc3RhbWluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS3VzdHV0YSBrb25maWd1cmF0c2lvb25pZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0thc3V0dXNlbGV2w7V0dSBvbGVrIFbDpHJ2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWthYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEw7xuYWFtaWxpc3RlIHbDpGxqYWRlIHPDvG5kbXVzdGUgbW9vZHVsLCBtaXMgbcOkcmdpYiBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgbcOkw6RyYXRsdXNlZCBzw7xua3Jvb25pc3QgdsOkbGphcyBvbGV2YWtzLCBrdWkgZMO8bmFhbWlsaXNpIHbDpGxqdSBzaXNhbGRhdmFkIGTDvG5hYW1pbGlzZWQgdsOkbGphZCBtdXV0dXZhZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDvG5hYW1pbGlzZWQgdsOkbGphZCwgbWlzIGt1dmF0YWtzZSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2UgdMOkaWVuZGF2YXRlIElUU00tdsOkbGphZGUgZWtyYWFuaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDvG5hYW1pbGlzZWQgdsOkbGphZCwgbWlzIGt1dmF0YWtzZSBrbGllbmRpIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlIGVrcmFhbmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw7xuYWFtaWxpc2VkIHbDpGxqYWQsIG1pcyBrdXZhdGFrc2UgYWdlbmRpIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnVsO1aW1hbGRhYiBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgbWFzc2l0ZWdldnVzZSBmdW5rdHNpb29uaSwgZXQgYWdlbnRpZGUgZnJvbnRlbmQgc2Fha3MgdMO2w7Z0YWRhIGtvcnJhZ2Egcm9oa2VtIGt1aSDDvGhlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaWdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnU2VsbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGthc3V0dXNlbGV2w7V0dSBvbGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ1PDvG5kbXVzZSBtb29kdWwsIGV0IG3DpMOkcmF0YSBjb25maWdpdGVtLXN0YXR1cyB0aWNrZXQtY29uZmlnaXRlbS1saW5raWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdLb25maWd1cmF0c2lvb25pZWxlbWVuZGkgaW5kZWtzaSB2w6RsamFkLCBtaWRhIGthc3V0YXRha3NlIHTDpGlzdGVrc3Rpb3RzaW5ndWtzLiBWw6RsamFkIG9uIHNhbXV0aSBzYWx2ZXN0YXR1ZCwga3VpZCBlaSBvbGUgw7xsZGlzZSBmdW5rdHNpb25hYWxzdXNlIGphb2tzIGtvaHVzdHVzbGlrdWQuIE1hbnVzdGUgbGlzYW1pc2Ugc2FhYiBrZWVsYXRhLCBrdWkgbcOkw6RyYXRhIGtpcmplIHbDpMOkcnR1c2VrcyAwIHbDtWkga3VzdHV0YWRhIHNlZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBpbmRla3Npc3NlIHNhbHZlc3RhdHVkIHbDpGxqYWQsIG1pZGEga2FzdXRhdGFrc2UgbGlzYWtzIHTDpGlzdGVrc3RvdHNpbmd1dGVsZSBrYSBtdXVkZWtzIGFzamFkZWtzLiBUw6RpZWxpa3UgZnVua3RzaW9uYWFsc3VzZSB0YWdhbWlzZWtzIG9uIGvDtWlrIHbDpGxqYWQga29odXN0dXNsaWt1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlXCdpIG1vb2R1bGkgcmVnaXN0cmVlcmltaW5lIENvbmZpZ0l0ZW1GZXRjaCBrdXRzdXZhIGtpaGkgamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZVwnaSBtb29kdWxpIHJlZ2lzdHJlZXJpbWluZSBDb25maWdJdGVtRmV0Y2gga3V0c3V2YSBraWhpIGphb2tzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlXCdpIG1vb2R1bGkgcmVnaXN0cmVlcmltaW5lIENvbmZpZ0l0ZW1GZXRjaCBrdXRzdXZhIGtpaGkgamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2lzYWxkYWIga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3Vzc2Uga2FzdXR1c2VsZXbDtXR1IG9sZWt1aWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Npc2FsZGFiIGtsaWVuZGlsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1c3NlIGludHNpZGVudGlkZSBvbGVrdWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ1NlbGxlIG9wZXJhdHNpb29uaSB0dWxlbXVzZWwga3V2YXRhdmF0ZSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBtYWtzaW1hYWxuZSBhcnYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9vZHVsLCBldCBrb250cm9sbGlkYSBrbGFzc2kgZWVzdCB2YXN0dXRhdmF0IHLDvGhtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb29kdWwsIGV0IGtvbnRyb2xsaWRhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBlZXN0IHZhc3R1dGF2YXQgcsO8aG1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vb2R1bCBJVFNNLWkga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgc3RhdGlzdGlrYSBnZW5lcmVlcmltaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmltaSBNb29kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWJyaW1vb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmVlcmltaXNvYmpla3RpZGUgYXJ2LCBtaXMga3V2YXRha3NlIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzIGlnYWwgb3RzaW5ndXR1bGVtdXNlIGxlaGVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLbGllbnRpZGUga2FzdXRhamFsaWlkZXNlcyBpZ2FsIG90c2luZ3V0dWxlbXVzZSBsZWhlbCBrdXZhdGF2YXRlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIGFydi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnb2JqZWt0aWQsIG1pZGEgb3RzaWRhLCBrdWkgcGFsanUga2lyamVpZCBqYSBtaWxsaXNlaWQgYXRyaWJ1dXRlIG7DpGlkYXRhLiBDb25maWdJdGVtIGF0cmlidXVkaWQgdHVsZWIgc2VsZ2Vzw7VuYWxpc2VsdCBzYWx2ZXN0YWRhIEVsYXN0aWNzZWFyY2hpIGthdWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfDnGxldmFhZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWVldHJpZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkga2xhc3NpZGUga2F0ZWdvb3JpYXRlIGphb2tzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWVldHJpZCB2w6Rpa2VzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlIHZlZXJndWRlIGZpbHRyaXRlIGphb2tzLiBQYW5nZSB0w6RoZWxlOiBrdWkgbcOkw6RyYXRhIFwnQWN0aXZlXCcgdsOkw6RydHVzZWtzIDAsIHRha2lzdGFiIHNlZSBhaW51bHQgYWdlbnRpZGVsIHNlbGxlIGdydXBpIHNlYWRldGUgbXV1dG1pc3Qgb21hIGlzaWtsaWtlcyBlZWxpc3R1c3Rlcywga3VpZCBsdWJhYiBhZG1pbmlzdHJhYXRvcml0ZWwgc2lpc2tpIHRlaXNlIGthc3V0YWphIG5pbWVsIHNlYWRldGUgbXV1dG1pc3QuIEthc3V0YWdlIFwnUHJlZmVyZW5jZUdyb3VwXCcsIGV0IGtvbnRyb2xsaWRhLCBtaWxsaXNlcyBwaWlya29ubmFzIG5laWQgc2VhZGVpZCBrYXN1dGFqYWxpaWRlc2VzIG7DpGlkYXRha3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0thc3V0dXNlbGV2w7V0dSBvbGVrdXRlIHBhcmFtZWV0cml0ZSB2w6RydiBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2UgZWVsaXN0dXN0ZSB2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAna2FzdXR1c2VsZXbDtXR1IG9sZWt1dGUgcGFyYW1lZXRyaWQgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfDnGxkaXN0ZSBrYXRhbG9vZ2kgYXRyaWJ1dXRpZGUgbsOkaWRpc8O1aWd1c3RlIHLDvGhtYWRlIHBhcmFtZWV0cmlkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05pbWVtb29kdWxpIHBhcmFtZWV0cmlkIGtvbmZpZ3VyZWVyaXR1ZCBlbGVtZW5kaWtsYXNzaWRlIGphb2tzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZWV0cmlkIG51bWJyaW1vb2R1bGkgamFva3Mga29uZmlndXJlZXJpdHVkIGVsZW1lbmRpa2xhc3NpZGUgamFva3MgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdMZWhla8O8bGdlZGUgcGFyYW1lZXRyaWQgKGt1cyBrdXZhdGFrc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbnRlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQgdmVyc2lvb25pIHN0cmluZ2kgbW9vZHVsaSBqYW9rcyBjb25maWcgZWxlbWVudGlkZSBrbGFzc2lkZSBqYW9rcyBhZ2VudGlkZSBsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZWV0cmlkIHZlcnNpb29uaSBzdHJpbmdpIG1hbGxpIHTDtsO2cmlpc3Rha29tcGxla3RpIG1vb2R1bGkgamFva3Mga29uZmlndXJlZXJpdHVkIGVsZW1lbmRpa2xhc3NpZGUgamFva3MgYWdlbnRpZGUgbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQgdmVyc2lvb25pIGvDpGl2aXRhbWlzZWtzIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBrbGFzc2lkZSBqYW9rcyBhZ2VudGlkZSBsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0xvYSBncnVwcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DtXV0YXZhZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkga2lubml0YW1pc2UgdG9pbWluZ3Uga2FzdXRhbWlzZWtzIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBla3JhYW5pIGthc3V0YW1pc2VrcyBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pIGthc3V0YW1pc2VrcyBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7V1dGF2YWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgZWtyYWFuaSBrYXN1dGFtaXNla3Mga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgcHV1IHZhYXRlIGVrcmFhbmkga2FzdXRhbWlzZWtzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgc3V1bWltaXNla3JhYW5pIGthc3V0YW1pc2VrcyBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWYWphbGlrdWQgw7VpZ3VzZWQsIGV0IGthc3V0YWRhIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBsaXNhbWlzZSBla3JhYW5pIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCwgZXQga2FzdXRhZGEgSVRTTWkgbWFzc2tvbmZpZ3VyYXRzaW9vbmkgZWxlbWVuZGkgZWtyYWFuaSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWYWphbGlrdWQgw7VpZ3VzZWQsIGV0IGthc3V0YWRhIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSByZWRpZ2VlcmltaXNlIGVrcmFhbmkgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkLCBldCBrYXN1dGFkYSBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgYWphbG9vIGVrcmFhbmkgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCwgZXQga2FzdXRhZGEgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGVrcmFhbmkgcHJpbnRpbWluZSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnTsO1dXRhdmFkIMO1aWd1c2VkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIGt1c3R1dGFtaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnT3RzaSBrb25maWd1cmVlcml0dWQgZWxlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdTZWFkaXN0YWdlIENJIGludHNpZGVuZGkgc3RhYXR1cyBhdXRvbWFhdHNlbHQsIGt1aSBwaWxldCBvbiBzZW90dWQgQ0lnYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhYiBrYXN1dHVzZWxldsO1dHUgb2xla3UgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBodWxnaWFrbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhYiBpbnRzaWRlbmRpIG9sZWt1IGFnZW50aWRlIGxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGh1bGdpYWtuYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAncHJlcHJvZHVrdGlpdm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgcMOkw6RzZWIga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGFqYWx1a2t1IGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBqdXVyZGVww6TDpHN1IGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhamFsb29sZSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlIHN1dW1pdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0t1dmFiIG1lbsO8w7xzIGxpbmdpLCBtaWxsZSBhYmlsIHNhYWIga3VzdHV0YWRhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aSBvbWEgYWdlbmRpIGthc3V0YWphbGlpZGVzZSBzdXVtaXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ0t1dmFiIG1lbsO8w7xzIGxpbmdpLCBldCBrdXZhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgbGluZ2lkIHB1dXZhYXRlbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBrb25maWd1cmVlcmltaXNvYmpla3RpIGR1YmxlZXJpZGEgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmlvYmpla3RpZGUgw7xsZXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBrb25maWd1cmVlcmltaXNvYmpla3RpIGR1YmxlZXJpZGEgc2VsbGUgc3V1bWl2YWF0ZXMgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0t1dmFiIG1lbsO8w7xzIGxpbmdpLCBtaWxsZSBhYmlsIHNhYWIgc2VhZGlzdHVzb2JqZWt0aSByZWRpZ2VlcmlkYSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Ugc3V1bWl2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6RpdGFiIG1lbsO8w7xzIGxpbmtpLCBtaWxsZSBhYmlsIHNhYWIgbWlubmEgdGFnYXNpIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgc3V1bWl2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIGV0IHByaW50aWRhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aSBzZWxsZSBzdXVtaXZhYXRlcyBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6RpdGFiIG1lbsO8w7xzIGxpbmtpLCBtaWxsZSBhYmlsIHNhYWIga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIHN1dXJlbmRhbWEgYXNqYW5kdXNsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6RpdGFiIGtvbmZpZ3VyZWVyaXR1ZCBlbGVtZW5kaSBhamFsdWd1ICh2YXN0dXBpZGlzZXMgasOkcmpla29ycmFzKSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnVmFpa2ltaXNpIGthdGVnb29yaWEsIG1pcyBrdXZhdGFrc2UsIGt1aSDDvGtza2kga2F0ZWdvb3JpYSBlaSBvbGUgdmFsaXR1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBpZGVudGlmaWthYXRvciwgbnQgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFZhaWtpbWlzaSBvbiBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0vDpGl2aXRhYiBDb25maWdJdGVtRmV0Y2gtaSBrdXRzdWphIGF1dG9tYWF0c2VsdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvb24gU3RyaW5nIFbDpGxqZW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb29uaSBzdHJpbmcgbW9vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpb29uaSB2YWxsYW5kYWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdLYXMgQ29uZmlnSXRlbUFDTGkgdMOkaXRtaXN0IHNhYWIgdsOkbHRpZGEsIGtvbnRyb2xsaWRlcyB2YWhlbcOkbHUgdsOkbGphbGlzdGUgc8O1bHR1dnVzaS4gU2VlIHbDtWliIHBhcmFuZGFkYSB2b3JtaWRlIGxhYWRpbWlzYWVnYSwga3VpZCB0dWxlYiBrZWVsYXRhLCBrdWkgQUNMTW9kdWxlc1wnaSBrYXN1dGF0YWtzZSBJVFNNQ29uZmlnSXRlbS0gamEgRm9ybS1SZXR1cm5UeXBlc1wnaSBwdWh1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ01pbGxpc2VkIMO8bGRhbmRtZWQgb24gZXNpdGF0dWQgcMOkaXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWFsbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGlpdm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWt0aWl2bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3RpaXZuZSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSB0b2xsaSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHRvbGxpICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgdG9sbGkgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgdG9sbGkgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS10b2xsaW5lIHJpaXVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSB0b2xsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSB0b2xsaSAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtdG9sbGluZSByaWl1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgdG9sbGkgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy10b2xsaW5lIHJpaXVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiB0b2xsaSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgdG9sbGkgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHRvbGxpICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgdG9sbGkgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgdG9sbGkgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHRvbGxpICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSB0b2xsaSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgdG9sbGkgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDE2MCwwMiBjbSAoNjMgdG9sbGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgdG9sbGkgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSB0b2xsaSAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiAxMywzNCBjbSAoNSwyNSB0b2xsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSB0b2xsaSAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyB0b2xsaSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IHRvbGxpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHRvbGxpICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgdG9sbGkgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyB0b2xsaSAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgdG9sbGkgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSB0b2xsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHRvbGxpICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHRvbGxpICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IHRvbGxpICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdSYWFtYXR1cGlkYW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBYWRyZXNzaSBlcmFsZGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb29ndGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1NlYWRtZSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdBa3UgbWFodXRhdnVzIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQWt1IHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0hvb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdCdXNzaWxpaWRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSBrbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnTWFodCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnVsO1aW1zdXMgw7xoZSBncmFhZmlrYWthYXJkaSBrb2h0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0thYXJkaSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLYWFyZGlsdWdlamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS2FhcmRpIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpZW50aWRlIHNlcnRpZmlrYWFkaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW5kaXRhcmt2YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0tsaWVuZGlrYXRlZ29vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0tlbGxhYWVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb29kaSBhbGxraXJqYXN0YW1pc2Ugc2VydGlmaWthYWRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29udmVyZW50c2l0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsdGF0c2lvb25pbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdWw7V0a2Ugw7xoZW5kdXN0IGVkYXNpbcO8w7xqYWdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnS29udGVpbmVyaXRlIGhhbGRhbWluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0xlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnTGVwaW5ndSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdMZXBpbmd1cGVyaW9vZCBhbGF0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnTGVwaW5ndSBrZXN0dXMga3VuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdKdWh0bWV0YSB0ZWxlZm9uIChERUNULXRlbGVmb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0t1bHXDvGhpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0xpdHNlbnRzaWRlIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnTG9vbWlzZSBrdXVww6Rldic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnS29oYW5kYXR1ZCByaWl1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZlZXJpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdBcnZlIGt1dXDDpGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdUZWxsaW11c2Uga3V1cMOkZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0dhcmFudGlpIGt1dXDDpGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ1bDpGxqYWxhc2ttaXNlIGt1dXDDpGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdUw7bDtmxhdWFhcnZ1dGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW5kaSBhbGxraXJqYXN0YW1pc2Ugc2VydGlmaWthYWRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgcmlpdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtcG9zdGkgc2VydGlmaWthYWRpZCAoUy9NSU1FIHNlcnRpZmlrYWFkaWQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1TDtsO2bGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnTMO1cHAtSVAtYWFkcmVzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1RvZXR1c2UgbMO1cHBlbWluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0tlaHRpdnVza3V1cMOkZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ1bDpGxpbmUga8O1dmFrZXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1R1bGVtw7zDvHInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ07DtWdhcmF0dGEgZW5lcmdpYXNhbHZlc3R1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ1Zvcm1pZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFudHNpaXNpbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnVGFzdXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ8OcbGRpbmUgdGVhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFhZmlrYWthYXJkaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWFmaWtha2FhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdSaWlzdHZhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdSaWlzdHZhcmEgbXVkZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnUmlpc3R2YXJhIGthYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ1BlYWtvbXBsZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9rb2xsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXRlZWRpIGphIGp1dXJkZXDDpMOkc3UgaGFsZGFtaW5lIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRhcmludW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0FydmUgbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2xhdmlhdHV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QgbW9uaXRvciAodmVkZWxrcmlzdGFsbGt1dmFyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIG1vbml0b3IgKHZhbGd1c2Rpb29kKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdMYXVhdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdTw7xsZWFydnV0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhaXVza3JhYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdLaWh0IDE6IGbDvMO8c2lsaW5lIGtpaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnS2lodCAyOiBhbmRtZXNpZGVraWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdLaWh0IDM6IHbDtXJndWtpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnS2lodCAzOiB2w7VyZ3VraWhpIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnS2lodCA0OiBUcmFuc3BvcmRpa2lodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnS2lodCA1OiBTZWFuc2lraWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0tpaHQgNjogRXNpdGx1c2tpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdLaWh0IDc6IFJha2VuZHVza2loaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdSZW5kaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpdHNlbnRzaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGl0c2VudHNpIHbDtXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpdHNlbnRzaXTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGl0c2VudHNpIGtlaHRpdnVzYWVnIGFsYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpdHNlbnRzaSBrZWh0aXZ1c2FlZyBrdW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaWl0aXVtcmF1ZGZvc2ZhYXQgKExpRmVQTzQpIGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGlpdGl1bS1pb29uIGFrdSAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0xhZW51bGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdBc3ViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ1Bpa2t1c2tyYWFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVG9vdGphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW1hYWxuZSBrYW5kZXbDtWltZSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTcOkbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdNw6RsdSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWlsaW51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpaWxuZS9pbnRlZ3JlZXJpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTXVkZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNdWRlbGkga2lyamVsZHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3JpIHJlc29sdXRzaW9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yaSBzdXVydXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdIaWlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdWw7Vyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdWw7VyZ3VpbmZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdWw7VyZ3V0ZWF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnVsO1cmd1a29ycmFsZHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsLWthYWRtaXVtIChOaUNkKSBha3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtrZWwtbWV0YWxsaMO8ZHJpaWQgKE5pTUgpIGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdNaXR0ZWF2YWxkYW1pc2UgbGVwaW5nIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTcOkcmttaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdQcm90c2Vzc29yaXRlIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdSQU0tbW9vZHVsaXRlIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdHcmFhZmlrYWthYXJ0aWRlIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBtb25pdG9yIChvcmdhYW5pbGluZSB2YWxndXNkaW9vZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnVGVnZXZ1c2t1bHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ1RlbGxpbXVzZSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdNdXVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdWw6RsanVuZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTi1LT09EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcmx1c2xlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25pbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9uaSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGw7zDvHNpbGlzZWQgc8O8ZGFtaWt1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1RvaXRldmFydXN0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdPc3RldHVkIGFhZHJlc3NpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmlpdWxpIHPDvGdhdnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmlpdWxpw7xrc3VzZWQgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdUdWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWthYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyBzZXJ0aWZpa2FhZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnTcO8w7xnaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpaXR0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1N1bGV0dWQgcGxpaS1zb29saGFwcGUgYWt1IChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VlcmlhbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlcmkgdGFya3ZhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdUZWVudXNlbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnVGVlbnVzZSBzaWx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1Bpc3Rpa3VwZXNhIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Rhcmt2YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnS8O1bmVsZWphZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0IElQLWFhZHJlc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0xhZHVzdGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnU2FsdmVzdHVzcnV1bWkgZXJhbGRpc2Vpc3VuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1TDvHRhcmV0dGV2w7V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnS29ra3V2w7V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ8OVaHVrZSBrbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ05paWRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdHcmFhZmlrYWthYXJkaSBSQU0ga29ra3UgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSBrb2trdSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdQdXV0ZWVrcmFhbmlnYSBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ybmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiBwZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgcGVha29tcGxla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC10ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdWZWViaWthYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/fa_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9mG2q/Yp9i02Kog2KjYsdin24wg2K/Ysdiu2YjYp9iz2Kog2K/Yp9iv2Ycg2YfYp9uMINmI2LHZiNiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICfZhtqv2KfYtNiqINio2LHYp9uMINm+2KfYs9iuINiu2LHZiNis24wg2K/Yp9iv2YcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICfZhdiv24zYsduM2KogQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfYqti624zbjNixINiq2LnYsduM2YEg2qnZhNin2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9iq2LrbjNuM2LEg2KrYudix24zZgSDaqdmE2KfYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn2YHbjNmE2KrYsSDYqNix2KfbjCDaqdmE2KfYs+KAjNmH2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAn2qnZhNin2LPbjCDYsdinINio2LHYp9uMINiz2KfYrtiqINuM2qkg2KLbjNiq2YUg2b7YqNqp2LHYqNmG2K/bjCDYrNiv24zYryDYp9mG2KrYrtinINqp2YbbjNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9qp2YTYp9izJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfZiNi22LnbjNiqINmG2LXYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2LHYrtiv2KfYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfYotuM2Kcg2LTZhdinINmI2KfZgti52Kcg2YXbjCDYrtmI2KfZh9uM2K8gINin24zZhiDZgdi52KfZhNuM2Kog2LHYpyDYrdiw2YEg2qnZhtuM2K8g2J8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn2YbYp9mFINin24zZhiDYotuM2KrZheKAjNmH2KfbjCDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfYtNmF2KfYsdmHINmG2LPYrtmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfZhtin2YUg2KfbjNmGINii24zYqtmF4oCM2YfYp9uMINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2YbYtdioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn2YjYtti524zYqiDYsdiu2K/Yp9ivJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn2YXYrdiq2YjYp9uMINiz2KfYqNmC2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9iy2YXYp9mGINin24zYrNin2K8gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ9mG2YXYp9uMINqp2KfZhdmEJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9iq2LnYr9in2K8g2KLbjNiq2YXigIzZh9in24wg2b7bjNqp2LHYqNmG2K/bjCDYr9ixINmH2LEg2LXZgdit2YcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ9in2KzYsdinINis2LPYqtis2YgnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn2YjYtti524zYqiDZgdi52YTbjCDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2KzYp9ix24wg2LHYrtiv2KfYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfYotiu2LHbjNmGINiq2LrbjNuM2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn2KLYrtix24zZhiDYqti624zbjNixINio2Ycg2YjYs9uM2YTZhyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfZhtuM2KfYsiBFeGFtcGxlUHJvY2Vzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn2YbZhduMINiq2YjYp9mG2K8g2KrYp9ix24zYriDYsdinINmG2LTYp9mGINiv2YfYr9iMINmH24zahiBUaWNrZXRJRCDYr9in2K/ZhyDZhti02K/ZhyDYp9iz2KohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn2YbZhduMINiq2YjYp9mG2K8g2KrYp9ix24zYriDYsdinINmG2LTYp9mGINiv2YfYr9iMINmH24zahiBUaWNrZXRJRCDYr9in2K/ZhyDZhti02K/ZhyDYp9iz2KohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn2YbZhduMINiq2YjYp9mG2K8g2KrYp9ix24zYriDYsdinINmG2LTYp9mGINiv2YfYr9iMINmH24zahiBUaWNrZXRJRCDYr9in2K/ZhyDZhti02K/ZhyDYp9iz2KohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9mF2YbYqNi5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn2LnZhdmE24zYp9iq24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9in2K7Yt9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9mI2LbYuduM2Kog2YbYtdioINin24zZhiBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9mI2LbYuduM2Kog2LHYrtiv2KfYryDYp9uM2YYgQ0knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfYqNiv2YjZhiDZhdis2YjYsiDZiCDYp9is2KfYstmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfZhtmI2Lkg2YjYtti524zYqiDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn2YbZiNi5INmI2LbYuduM2Kog2KzYp9ix24wg2LHYrtiv2KfYryc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfYqNuM2YYnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfYrdiv2Kfaqdir2LEg2LTZhdin2LHZhyDbjNqpINi52YbYtdixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9mF2YbZgti224wg2LTYr9mHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn2b7YtNiq24zYqNin2YbbjCDZiCDZhtqv2YfYr9in2LHbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9mG2YXZiNmG2Ycg2KLYstmF2KfbjNi024wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9io2LHZhtin2YXZhyDYsduM2LLbjCDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn2KrYudmF24zYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn2KjYp9iy2YbYtNiz2KrZhyDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn2KjYp9iy2KjbjNmG24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9iq2LPYqi/Yqti22YXbjNmGINqp24zZgduM2KonOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn2KfYrNin2LLZhyDZhduMINiv2YfYryDYqtinINi02LHYp9uM2Lcg2KzYs9iq2KzZiCDYtNiv2Ycg2K/YsSDYrNiz2KrYrNmI24wg2KjZhNuM2Lcg2KfYsiDYsdin2KjYtyDYudin2YXZhCDYudmF2YjZhduMINin2LPYqi4g2KjYpyDYp9uM2YYg2YjbjNqY2q/bjCDYtNmF2Kcg2YXbjCDYqtmI2KfZhtuM2K8g2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEINi52YbZiNin2YYg2KjZhNuM2Lcg2KjYpyDYp9uM2YYg2YbZiNi5INin2LIg2LTYsdin24zYtyDZhdin2YbZhtivIFwg2KzYs9iq2KzZiCAiKCoga2V5MSAqICYmICoga2V5MiAqKSAiINuM2KcgXCAiKCoga2V5MSAqIHx8ICoga2V5MiAqKSAiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfYp9is2KfYstmHINmF24wg2K/Zh9ivINiq2Kcg2LTYsdin24zYtyDYrNiz2KrYrNmIINi02K/ZhyDYr9ixINis2LPYqtis2YjbjCDYqNmE24zYtyDYp9iyINix2KfYqNi3INi52KfZhdmEINi52YXZiNmF24wg2KfYs9iqLiDYqNinINin24zZhiDZiNuM2pjar9uMINi02YXYpyDZhduMINiq2YjYp9mG24zYryDYqNmHINi52YbZiNin2YYg2YXYq9in2YQg2LnZhtmI2KfZhiDYqNmE24zYtyDYqNinINin24zZhiDZhtmI2Lkg2KfYsiDYtNix2KfbjNi3INmF2KfZhtmG2K8gXCDYrNiz2KrYrNmIICIoKiBrZXkxICogJiYgKiBrZXkyICopICIg24zYpyBcICIoKiBrZXkxICogfHwgKiBrZXkyICopICIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYp9qY2YjZhCDYsdmI24zYr9in2K8g2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCDaqdmHINir2KjYqiDZiNmC2KfbjNi5INiv2LEg2KrYp9ix24zYrtqG2Ycg2LHYpyDYr9ixINmI2KfYs9i3INqp2KfYsdio2LHbjCDaqdin2LHYtNmG2KfYsyDZgdi52KfZhCDZhduM4oCM2LPYp9iy2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn2YXYrdiv2YjYr9uM2Kog2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti624zbjNixINmF2LPbjNix24zYp9ioINis2LPYqtis2Ygg2K/YsSDYsdin2KjYtyDaqdin2LHYqNix24wg2qnYp9ix2LTZhtin2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ9iz2KfYrtiqINmIINmF2K/bjNix24zYqiDYqti52KfYsduM2YEg2KLbjNiq2YXigIzZh9in24wg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn2K/Yp9iv2Ycg2YfYp9uMINm+24zYtCDZgdix2LYg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KjYsSDYsdmI24wg2YjbjNqY2q/bjCDYqNix2KfbjCDYtdmB2K3ZhyDZhtmF2KfbjNi0INis2LPYqtis2Ygg2KjZhNuM2LcuINio2Ycg2LnZhtmI2KfZhiDZhdir2KfZhDogXCAiVGlja2V0Q3JlYXRlVGltZVBvaW50Rm9ybWF0ID0g2LPYp9mE2JsgVGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQgPSDYotiu2LHbjNmGLiBUaWNrZXRDcmVhdGVUaW1lUG9pbnQgPSAy2JsgIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfYr9in2K/ZhyDZh9in24wg2b7bjNi0INmB2LHYtiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYqNixINix2YjbjCDZiNuM2pjar9uMINio2LHYp9uMINi12YHYrdmHINmG2YXYp9uM2LQg2KzYs9iq2KzZiCDYqNmE24zYty4g2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEOiBcICJUaWNrZXRDcmVhdGVUaW1lU3RhcnRZZWFyID0gMjAxMNibIFRpY2tldENyZWF0ZVRpbWVTdGFydE1vbnRoID0gMTDYmyBUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXkgPSA02JsgVGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyID0gMjAxMNibIFRpY2tldENyZWF0ZVRpbWVTdG9wTW9udGggPSAxMdibIFRpY2tldENyZWF0ZVRpbWVTdG9wRGF5ID0gM9ibICIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfYqti52LHbjNmBINi52YXZhNuM2KfYqiDaqdmHINiv2LEg2KLZhiDbjNqpINiv2qnZhdmHINiq2YbYuNuM2YXYp9iqINiv2LEg2K/Ys9iq2LHYsyDYp9iz2Kog2K/YsSDYp9i024zYp9ihINmF2LHYqtio2Lcg2YjbjNis2KogKExpbmtPYmplY3QgOjogVmlld01vZGUgPSBcICLZvtuM2obbjNiv2YcgIikuINmE2LfZgdinINiq2YjYrNmHINiv2KfYtNiq2Ycg2KjYp9i024zYryDaqdmHINin24zZhiDYp9mC2K/Yp9mF2KfYqiDYqNin24zYryDYr9ixINio2LEg2K/Yp9i02Kog2LLbjNixIEpTINmIIENTUyDZgdin24zZhCDZh9in24wg2KvYqNiqINmG2KfZhSDaqdix2K/ZhyDYp9mG2K86IENvcmUuQWxsb2NhdGlvbkxpc3QuY3Nz2IwgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qc9iMIENvcmUuVUkuVGFibGUuU29ydC5qc9iMIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2KrZiNis2Ycg2K/Yp9i02KrZhyDYqNin2LTbjNivINio2YTbjNi3INiv2LEg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiq2YjYrNmHINiv2KfYtNiq2Ycg2KjYp9i024zYryDYqNmE24zYtyDYr9ixINix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2KrZiNis2Ycg2K/Yp9i02KrZhyDYqNin2LTbjNivINio2YTbjNi3INiv2LEg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXYp9qY2YjZhCDZhtmF2KfbjCDaqdmE24wg2KjYsdin24wg2YbZhdin24zYtCDZhtmF2KfbjCDaqdmI2obaqSDYp9iyINmB2YfYsdiz2Kog2KrYutuM24zYsdin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INmI24zamNqv24wg2KjZhNuM2Lcg2KjYsdin24wg2YXYsdiq2Kgg2LPYp9iy24wg2KjZhNuM2Lcg2KfYsiDZhtiq24zYrNmHINis2LPYqtis2Ygg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDZiNuM2pjar9uMINio2YTbjNi3INio2LHYp9uMINmF2LHYqtioINiz2KfYstuMINio2YTbjNi3INin2LIg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INmI24zamNqv24wg2KjZhNuM2Lcg2KjYsdin24wg2YXYsdiq2Kgg2LPYp9iy24wg2KjZhNuM2Lcg2KfYsiDZhtiq24zYrNmHINis2LPYqtis2Ygg2KjZhNuM2Lcg2KfbjNmGINi52YXZhNuM2KfYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INiz2YHYp9ix2LQg2KjZhNuM2Lcg2K/YsSDZhtiq24zYrNmHINis2LPYqtis2Ygg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuINiq2Kc6INmC2K/bjNmF24wg2KrYsduM2YYg2K/YsSDYqNin2YTYp9uMINi12YHYrdmHLiDZvtin24zbjNmGOiDYtNiv2YYg2K/YsSDYqNin2YTYp9uMINi12YHYrdmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2LPZgdin2LHYtCDYqNmE24zYtyDYp9iyINuM2qkg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINiv2LEg2LHYp9io2Lcg2YXYtNiq2LHbjC4g2KrYpzog2YLYr9uM2YXbjCDYqtix24zZhiDYr9ixINio2KfZhNin24wg2LXZgdit2YcuINm+2KfbjNuM2YY6INi02K/ZhiDYr9ixINio2KfZhNin24wg2LXZgdit2YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INmG2LTYp9mGINiv2KfYr9mHINio2YTbjNi3INmI24zamNqv24wg2KzYs9iq2KzZiCDYqNix2KfbjCDYtdmB2K3ZhyDZhtmF2KfbjNi0INis2LPYqtis2Ygg2KjZhNuM2LcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDZhti02KfZhiDYr9in2K/ZhyDYqNmE24zYtyDZiNuM2pjar9uMINis2LPYqtis2Ygg2KjYsdin24wg2LXZgdit2Ycg2YbZhdin24zYtCDYrNiz2KrYrNmIINio2YTbjNi3LiDYqNmHINi52YbZiNin2YYg2YXYq9in2YQ6IFwgItqp2YTbjNivICIg2KjYp9uM2K8g2YbYp9mFINiy2YXbjNmG2Ycg2b7ZiNuM2Kcg2K/YsSDYp9uM2YYg2YXZiNix2K8gXCdYXCfYjCBcICLZhdit2KrZiNinICLYjCDYqNin24zYryDYp9ix2LLYtCDYr9ix2LPYqiDZvtmI24zYpyDYqNiz2KrZhyDYqNmHINmG2YjYuSDZvtmI24zYpyDYr9ix2LPYqtiMINmF2KrZhiDYsdinINiv2KfYtNiq2Ycg2KjYp9i02K86INuM2qkg2YXYqtmG2Iwg2qnYsdqp2LHZhyA6IFwnMVwn2Iwg2KrYp9ix24zYriAvINiy2YXYp9mGOiBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhciA9IDE5NzTYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGggPSAwMdibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXkgPSAyNtibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyID0gMDDYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlID0gMDDYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kID0gMDDYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyID0gMjAxM9ibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoID0gMDHYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXkgPSAyNtibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXIgPSAyM9ibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZSA9IDU52JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kID0gNTnYmyBcJyDZiCDbjNinICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQgPSDZh9mB2KrZh9ibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0ID0g2YLYqNmEINin2LIuIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlID0gNyBcJ9ibLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINin2LHYqtmB2KfYuSDYqNix2KfbjCDYutmG24wg2KzYstihINmI24zYsdin24zYtNqv2LEg2YXYqtmGINio2LHYp9uMINin24zZhiDYtdmB2K3ZhyDZhtmF2KfbjNi0LiDYqti52K/Yp9ivICjZvtuM2qnYs9mEKSDbjNinINin2LHYsti0INiv2LHYtdivICjZhtiz2KjbjCkg2LHYpyDZiNin2LHYryDaqdmG24zYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYp9mC2YTYp9mFINio2LHYp9uMIFwn2LnZhdmEXCcg2K/YsSDYs9i32K0g2LPZiNmFINiz2KfYrtiq2KfYsSBBQ0wg2K/YsSDYr9iz2KrYsdizINmH2LPYqtmG2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINin2YLZhNin2YUg2K/YsSDYs9i32K0g2KfZiNmEINin2LIg2LPYp9iu2KrYp9ixIEFDTCDYr9ixINiv2LPYqtix2LMg2YfYs9iq2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINin2YLZhNin2YUg2K/YsSDYs9i32K0g2K/ZiNmFINin2LIg2LPYp9iu2KrYp9ixIEFDTCDYr9ixINiv2LPYqtix2LMg2YfYs9iq2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn2YjYtti524zYqiDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn2YjYtti524zYqiDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn2Kraqdir24zYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn2K3YrNmFINiv2LHYrtmI2KfYs9iqINin2LIg2YjbjNqY2q/bjCDZh9in24wg2LnZhdmEINio2LHYp9uMINi42KfZh9ixINi52KfZhdmEINio2Ycg2qnYp9ixINio2LEg2LHZiNuMINio24zYtCDYp9iyINiv2LHYrtmI2KfYs9iqINiv2LEg24zaqSDYstmF2KfZhiDZgtin2K/YsSDZhduMINiz2KfYstivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn2YjbjNqY2q/bjCDZh9in24wg2LnZhdmEINit2KzZhSDYr9ix2K7ZiNin2LPYqiDYqtmG2YfYpyDYqNix2KfbjCDar9ix2YjZhyDZh9in24wg2LDaqdixINi02K/ZhyDYsdinINmC2KfYr9ixINmF24wg2LPYp9iy2K8gLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlINir2KjYqiDZhtin2YUg2YXYp9qY2YjZhCDYqNix2KfbjCDZhNin24zZhyBpbnZva2VyINin2LPYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlINir2KjYqiDZhtin2YUg2YXYp9qY2YjZhCDYqNix2KfbjCDZhNin24zZhyBpbnZva2VyINin2LPYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSDYq9io2Kog2YbYp9mFINmF2KfamNmI2YQg2KjYsdin24wg2YTYp9uM2YcgaW52b2tlciDYp9iz2KouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAn2YjYtti524zYqiDYsdiu2K/Yp9ivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfZiNi22LnbjNiqINix2K7Yr9in2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn2K3Yr9in2qnYq9ixINiq2LnYr9in2K8g2K/Ysdiu2YjYp9iz2Kog2K/YsSDZhtiq24zYrNmHINin24zZhiDaqdin2LEg2YbZhdin24zYtCDYr9in2K/ZhyDZhduMINi02YjYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti52K/Yp9ivINio2YTbjNi3INiv2LEg2YfYsSDYtdmB2K3ZhyDYp9iyINuM2qkg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINiv2LEg2LHYp9io2Lcg2LnYp9mF2YQg2YbZhdin24zYtCDYr9in2K/ZhyDYtNmI2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iq2LnYr9in2K8g2KjZhNuM2Lcg2K/YsSDZh9ixINi12YHYrdmHINin2LIg24zaqSDZhtiq24zYrNmHINis2LPYqtis2Ygg2K/YsSDYsdin2KjYtyDZhdi02KrYsduMINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2YXbjCDYtNmI2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfZvtuM2LQg2YbZhdin24zYtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9m+2KfYsdin2YXYqtix2YfYp9uM24wg2KjYsdin24wg2q/YsdmI2YfigIzZh9in24wg2K/Ys9iq2LHYs9uMINmG2YXZiNmG2Ycg2YXYsdio2YjYtyDYqNmHINmI24zamNqv24zigIzZh9in24wg2YHZh9ix2LPYqiDYudmF2YjZhduMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2K7YsdmI2KzbjCDYp9uM2YXbjNmEINiv2LEg2LXZgdit2Ycg24wg2qnYp9ix2LTZhtin2LMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LLYr9ix2K7ZiNin2LPYqiDYtdmB2K3ZhyDZhtmF2KfbjNi0INmH2KfbjCDZhdiq2YbbjCDYsdin24zar9in2YYg2K/YsSDYtdmB2K3ZhyDbjCDaqdin2LHYtNmG2KfYsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYrtix2YjYrNuMINin24zZhduM2YQg2K/YsSDYtdmB2K3ZhyDbjCDaqdin2LHYtNmG2KfYsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiq2YjYrNmHINiv2KfYtNiq2Ycg2KjYp9i024zYryDYqNmE24zYtyDYr9ixINix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbZiNi5INio2YTbjNi3INiv2LEg2LXZgdit2Ycg2YbZhdin24zYtCDZgdmE2Ycg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQg2KrZhti424zZhSDZhduMINqp2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbZiNi5INio2YTbjNi3INiv2LEg2LXZgdit2Ycg2YbZhdin24zYtCDZgdmE2Ycg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQg2KrZhti424zZhSDZhduMINqp2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhti02KfZhiDZhduMINiv2YfYryDbjNqpINmE24zZhtqpINiv2LEg2YXZhtmI24wg2KvYqNiqINmG2KfZhSDbjNqpINio2YTbjNi3INio2Ycg24zaqSDZgdix2KfbjNmG2K8g2K/YsSDZhti42LEg2LLZiNmFINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9uM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDZhti02KfZhiDZhduMINiv2YfYryDYqNix2KfbjCDYr9uM2K/ZhiDYqtin2LHbjNiuINuM2qkg2KjZhNuM2Lcg2K/YsSDZh9ixINmF2LHZiNix24wg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9uM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDZhti02KfZhiDZhduMINiv2YfYryDYqNix2KfbjCDYr9uM2K/ZhiDYqtin2LHbjNiuINuM2qkg2KjZhNuM2Lcg2K/YsSDZh9ixINmF2LHZiNix24wg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbYtNin2YYg2YXbjCDYr9mH2K8g24zaqSDZhNuM2YbaqSDYr9ixINmF2YbZiNuMINir2KjYqiDZhtin2YUg24zaqSDYqNmE24zYtyDYqNmHINuM2qkg2YHYsdin24zZhtivINiv2LEg2YbYuNixINiy2YjZhSDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mG2LTYp9mGINmF24wg2K/Zh9ivINuM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDYq9io2Kog2YbYp9mFINuM2qkg2KjZhNuM2Lcg2KjZhyDbjNqpINmB2LHYp9uM2YbYryDYr9ixINmG2LjYsSDYstmI2YUg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mG2LTYp9mGINmF24wg2K/Zh9ivINuM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDYq9io2Kog2YbYp9mFINuM2qkg2KjZhNuM2Lcg2KjZhyDbjNqpINmB2LHYp9uM2YbYryDYr9ixINmG2LjYsSDYstmI2YUg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhti02KfZhiDZhduMINiv2YfYryDbjNqpINmE24zZhtqpINiv2LEg2YXZhtmI24wg2KvYqNiqINmG2KfZhSDbjNqpINio2YTbjNi3INio2Ycg24zaqSDZgdix2KfbjNmG2K8g2K/YsSDZhti42LEg2LLZiNmFINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn24zaqSDZhNuM2YbaqSDYr9ixINmF2YbZiNuMINmG2LTYp9mGINmF24wg2K/Zh9ivINio2Ycg2LLZiNmFINuM2qkg2KjZhNuM2Lcg2K/YsSDZhdix2YjYsduMINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mG2LTYp9mGINmF24wg2K/Zh9ivINuM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDYq9io2Kog2YbYp9mFINuM2qkg2KjZhNuM2Lcg2KjZhyDbjNqpINmB2LHYp9uM2YbYryDYr9ixINmG2LjYsSDYstmI2YUg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbYtNin2YYg2YXbjCDYr9mH2K8g24zaqSDZhNuM2YbaqSDYr9ixINmF2YbZiNuMINir2KjYqiDZhtin2YUg24zaqSDYqNmE24zYtyDYqNmHINuM2qkg2YHYsdin24zZhtivINiv2LEg2YbYuNixINiy2YjZhSDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KrYp9ix24zYriDYqNmE24zYtyAo2YXYudqp2YjYsyDYr9iz2KrZiNixINiv2KfYrykg2K/YsSDYsdin2KjYtyDYudin2YXZhCDZhti02KfZhiDZhduMINiv2YfYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfaqdmE2KfYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9iz2KfYrtiq2YXYp9mGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfZiNin2LPYtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfYs9uM4oCM2b7bjOKAjNuM2YgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn2LHZiNmF24zYstuMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9mG2LHZhSDYp9mB2LLYp9ixINmF2KzYp9mG24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn2LXZgdit2Ycg2qnZhNuM2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9qp24zZgduMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfZhdiv2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9mF2KfZiNizJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfYutuM2LHZhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn2YbZiNi5INmG2KrbjNis2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfYp9iq2KfZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9iq2YjYp9mB2YIg2LPYt9itINiz2LHZiNuM2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9in2LPYqtin2YbYr9in2LHYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/fi_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZpX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdZbGVpc2V0IHRvaW1pbnRhdGllZG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTYWFwdXZpZW4gcHl5bnTDtmplbiB0aWV0b2plbiBhc2V0dWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdMw6RodGV2aWVuIHZhc3RhdXN0aWV0b2plbiBhc2V0dWtzZXQnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXV1dGEgbHVva2FuIG3DpMOkcml0ZWxtw6TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTXV1dGEgcm9vbGluIG3DpMOkcml0ZWxtw6TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1sdW9ra2Frb2tvbmFpc3V1ZGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnVMOkw6RsdMOkIHZvaXQgdHVvZGEgUmVhZHkySW1wb3J0LWx1b2trYWtva29uYWlzdXVrc2lhLCBqb3RrYSBlc2l0dGVsZXbDpHQgdGF2YWxsaXNpbXBpYSBrb25maWd1cm9pbnRpa29odGVpdGFtbWUuIEh1b21hYSwgZXR0w6Qgam9pdGFraW4gbGlzw6Rrb25maWd1cmFhdGlvaXRhIHNhYXRldGFhbiB0YXJ2aXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdQw6Rpdml0ZXTDpMOkbiBvbGVtYXNzYSBvbGV2YXQgeWtzaWvDtnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdUdW8gUmVhZHkyQWRvcHQtbHVva2FuIG5pcHB1amEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWcgSXRlbSAtbHVva2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSByb29saSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdMdW9ra2llbiBzdW9kYXRpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWYWxpdHNlIGx1b2trYSBsdWV0dGVsb3N0YSBsdW9kYWtzZXNpIHV1ZGVuIENvbmZpZyBJdGVtaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnTHVva2thJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGstdG9pbWludG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0vDpHl0dMO2w7Zub3RvbiB0aWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnVGFwYWh0dW1hbiB0aWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpbmtraSB0b2lzZWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdWaXJoZWVsbGluZW4ga29uZmlndXJvaW50aWtvaHRlZW4gbnVtZXJvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdUb2lzZW4ga29rb29ucGFub2tvaHRlZW4gbnVtZXJvLCBqb2hvbiBsaW5raXRldMOkw6RuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0hhbHVhdGtvIHRvZGVsbGEgcG9pc3RhYSB0w6Rtw6RuIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1TDpG3DpG4ga29uZmlndXJhYXRpb2VsZW1lbnRpbiBuaW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOaW1pIG9uIGpvIGvDpHl0w7Zzc8OkIENvbmZpZ0l0ZW1zLWtvaHRlaXNzYSBzZXVyYWF2YWxsYSBudW1lcm9sbGEgKHNldXJhYXZpbGxhIG51bWVyb2lsbGEpOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaW9uIG51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVMOkbcOkbiBrb25maWd1cmFhdGlvZWxlbWVudGluIHZlcnNpb251bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ1ZlcnNpb2x1a3Ugb24gam8ga8OkeXTDtnNzw6QgQ29uZmlnSXRlbXNpc3NhLCBqb2lsbGEgb24gc2V1cmFhdmEodCkgbnVtZXJvKHQpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnS8OkeXR0w7bDtm5vdG9uIHRpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdUYXBhaHR1bWFuIHRpbGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0NvbmZpZyBJdGVtaW4gaGlzdG9yaWE6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0hpc3RvcmlhIFNpc8OkbHTDtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdab29tYXVzbsOka3ltw6QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnIEtvaHRlZXQgcGVyIHNpdnUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tvbmZpZ3Vyb2ludGlrb2hkZXRpZXRvamEgZWkgbMO2eXR5bnl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZhbGl0c2UgdMOkbcOkIGtvbmZpZ3Vyb2ludGlrb2h0YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1N1b3JpdGEgaGFrdSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0tcHV1bsOka3ltw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdTeXZ5eXN0YXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbWF1cyBzaXPDpMOkbi91bG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0NvbmZpZ0l0ZW1pbiBlbmltbcOkaXNsaW5ra2llbiB0YXNvIHNhYXZ1dGV0dHUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJvaW50aSBLb2hkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdLb25maWd1cm9pbnRpa29odGVlbiB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTnlreWluZW4ga8OkeXR0w7bDtm5vdHRvdGlsYW5uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnTnlreWluZW4gdGFwYWh0dW1hdGlsYW5uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdWaWltZWtzaSBtdXV0ZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdWaWltZWtzaSBtdXV0dGFudXQnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTaW51biBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtLWhha3UnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZXVyYWF2YXQgbHVva2F0IHR1b2RhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2V1cmFhdmF0IHJvb2xpdCB0dW9kYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ0h1b21hYSwgZXR0w6QgbXnDtnMgdmFzdGFhdmF0IGR5bmFhbWlzZXQga2VudMOkdCBqYSBHZW5lcmFsQ2F0YWxvZy1sdW9rYXQgbHVvZGFhbiwgZWlrw6QgbmlpdMOkIHBvaXN0ZXRhIGF1dG9tYWF0dGlzZXN0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdIYWx1YXR0ZWtvIGphdGthYT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnVGFydml0YWFuIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdNw6TDpHJpdGVsbcOkIGVpIG9sZSBrZWx2b2xsaW5lbiBZQU1MLWhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnWWxlaXNrYXRzYXVzOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEOnTDpCBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdUYXJ2aXRzZXQgdsOkaGludMOkw6RuIHloZGVuIHZhbGl0dW4gbcOkw6RyaXR5c2tvaHRlZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnU2ludWxsYSBlaSBvbGUga2lyam9pdHVzb2lrZXV0dGEgdMOkaMOkbiBtw6TDpHJpdHlza29odGVlc2VlbjogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0x1b2thbGxlICVzIGVpIG9sZSBtw6TDpHJpdGVsdHkgbcOkw6RyaXRlbG3DpMOkISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnS29uZmlndXJhYXRpb2VsZW1lbnR0acOkICIlcyIgZWkgbMO2eWR5IHRpZXRva2FubmFzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnS29uZmlnaWtvaGRldHVubnVzdGEgJXMgZWkgcHlzdHl0dHkgcG9pc3RhbWFhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlczpsbGUgZWkgbMO2eXR5bnl0IHZlcnNpb3RhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQtLCBEdXBsaWNhdGVJRC0gdGFpIENsYXNzSUQtbnVtZXJvYSBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1DDpMOkc3nDpCBlaSBhbm5ldGEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0hpc3RvcmlhYSBlaSB2b2kgbsOkeXR0w6TDpCwga29za2EgQ29uZmlnSXRlbUlEOnTDpCBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdIaXN0b3JpYWEgZWkgdm9pIG7DpHl0dMOkw6QsIGtvc2thIGvDpHl0dMO2b2lrZXVrc2lhIGVpIG9sZSBhbm5ldHR1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnVXVzaSBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ1V1c2kgdmVyc2lvIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdZbGVpc2VuIGx1ZXR0ZWxvbiBhdHRyaWJ1dXR0aWVuIGVzaW1lcmtraW9pa2V1c3J5aG1pZW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnVGFwYWh0dW1hbiB0aWxhIHDDpGl2aXRldHR5IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgcG9pc3RldHR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpbmtraSAlcyAodHlwZT0lcykgbGlzw6R0dHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5ra2kgJXMgKHR5cGU9JXMpIHBvaXN0ZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbS1tw6TDpHJpdGVsbcOkIHDDpGl2aXRldHR5IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOaW1pIHDDpGl2aXRldHR5ICh1dXNpPSVzLCB2YW5oYT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dXR0aSAlcyBww6Rpdml0ZXR0eSAiJXMiLWFydm9zdGEgIiVzIiBhcnZvb24gIiVzIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvICVzIHBvaXN0ZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQtIHRhaSBWZXJzaW9uSUQtbnVtZXJvYSBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS29uZmlndXJhYXRpb2VsZW1lbnR0acOkIGVpIHZvaSBuw6R5dHTDpMOkLCBrb3NrYSBrw6R5dHTDtm9pa2V1a3NpYSBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgZWkgbMO2eWR5IHRpZXRva2FubmFzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICd0dWxvc3RhbnV0ICVzIG9zb2l0dGVlc3NhICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdWaWl0ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1bDpMOkcsOkIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ2xhc3NJRDp0w6QgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnVMOkbGxlIGx1b2thbGxlIGVpIG9sZSBhbm5ldHR1IGvDpHl0dMO2b2lrZXVrc2lhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnRWkgdHVsb3N0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgSXRlbSBoYWt1dHVsb2tzZXQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0VsZW1lbnR0acOkIGVpIHZvaSBuw6R5dHTDpMOkLCBDb25maWdJdGVtaWxsZSBlaSBvbGUgYW5uZXR0dSBrw6R5dHTDtm9pa2V1a3NpYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBlaSBsw7Z5dHlueXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1ZlcnNpb2l0YSBlaSBsw7Z5dHlueXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAndG9pbWludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ3Zhcm9pdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAndGFwYWh0dW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUw6Rtw6RuIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4ga8OkeXR0w7bDtm5vdHRvdGlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1TDpG3DpG4ga29uZmlndXJhYXRpb2VsZW1lbnRpbiB0YXBhaHR1bWF0aWxhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnRWkgbHVwYWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnU3VvZGF0aW4gb24gdmlyaGVlbGxpbmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ07DpHl0ZXR5dCBrb25maWd1cm9pbnRpa29odGVldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdLw6R5dHTDtsO2bm90dG90aWxhbiB0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnTnlreWluZW4gdGFwYWh0dW1hdGlsYSBUeXlwcGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnVsOkbGlsbMOkJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdMdW9ra2FyYWpvaXR1a3NldCBrb25maWd1cm9pbnRpa29oZGV0dGEgdmFydGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWYWxpdHNlIHlrc2kgdGFpIHVzZWFtcGkgbHVva2thIHJham9pdHRhYWtzZXNpIHZhbGl0dGF2aXNzYSBvbGV2aWEga29uZmlndXJhYXRpb2tvaHRlaXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnTHVva2thcmFqb2l0dWtzZXQga29uZmlndXJvaW50aWtvaGRldHRhIHZhcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZhbGl0c2UgeWtzaSB0YWkgdXNlYW1waSBsdW9ra2EgcmFqb2l0dGFha3Nlc2kgdmFsaXR0YXZpc3NhIG9sZXZpYSBrb25maWd1cmFhdGlva29odGVpdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYWFtaW5lbiAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAodmVyc2lvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdMaW5ra2kgVmlpdHRhdXN0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnS29za2Vla28gdMOkbcOkIGxpbmtraSBDb25maWdJdGVtLW9iamVrdGlhIHZhaSB2aWl0dGFhdmFuIG9iamVrdGluIHN0YWF0dGlzdGEgdmVyc2lvdGEuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgLWxhc2tlbnRhIHN1b3JpdGV0YWFuIHZhaW4gZHluYWFtaXNpbGxlIGxpbmtlaWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWYWxpdHNlIGF0dHJpYnV1dHRpLCBqb25rYSBtdWthYW4ga29uZmlndXJvaW50aWtvaHRlaXRhIGV0c2l0w6TDpG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdQZXJ1c3Jha2VubmUgZWkgb2xlIGtlbHZvbGxpbmVuLiBUb2ltaXRhIGhhc2gsIGpvc3NhIG9uIHRpZXRvamEgWUFNTC1tdW9kb3NzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdZQU1MLW1lcmtraWpvbm8gb24gYWxvaXRldHRhdmEga2lyamFpbWVsbGEgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnVGF1bHVra29hIGNvbmZpZ2l0ZW1fbGluayBlaSB2b2l0dSB0eWhqZW50w6TDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ01lcmtpdHlrc2VsbGlzacOkIGR5bmFhbWlzaWEga2VudHRpw6QgZWkgbMO2eXR5bnl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVGF1bHVra29vbiBjb25maWdpdGVtX2xpbmsgZWkgdm9pdHUgbGlzw6R0w6QgdGlldG9qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0xpc8OkdHR5IDAgcml2acOkIHRhdWx1a2tvb24gY29uZmlnaXRlbV9saW5ra2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnWWhkZW4gZWxlbWVudGluIGVuaW1tw6Rpc23DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpbyBtZXJra2lqb25vJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ1ZpcmhlIG3DpMOkcml0ZWxtaWVuIHN5bmtyb25vaW5uaXNzYS4gVGFya2lzdGEgbG9raS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdTaW51bGxhIG9uIElUU01Db25maWdJdGVtLW3DpMOkcml0eWtzacOkLCBqb2l0YSBlaSBvbGUgc3lua3Jvbm9pdHUuIE90YSBrw6R5dHTDtsO2biBJVFNNQ29uZmlnSXRlbS1keW5hYW1pc3RlbiBrZW50dGllbiBtdXV0b2tzZXQuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdWYW5oZW50dW51dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0h1b2x0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90dGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1N1dW5uaXRlbHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ0tvcmphdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ0Vsw6Rra2VlbGzDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdBcnZvc3RlbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3RpL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdZbGVpc2thdHNhdXMgamEgdmFodmlzdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0x1b2traWVuL3Jvb2xpZW4gamEgbmlpaGluIGxpaXR0eXZpZW4ga2VudHRpZW4gdHVvbWluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdMdW9rYW4gdHVvbm5pbiBhaWthbmEgdGFwYWh0dWkgdmlyaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBQaWlsb3RldHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBLdXZhc3NhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNYWhkb2xsaXN0YWEgbGFhamVubmV0dXQgaGFrdWVoZG90IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2hkZWhhdXNzYS4gVMOkbcOkbiBvbWluYWlzdXVkZW4gYXZ1bGxhIHZvaXQgaGFrZWEgZXNpbS4ga29uZmlndXJhYXRpb2VsZW1lbnRpbiBuaW1lw6QgdMOkbGxhaXNpbGxhIGVoZG9pbGxhIGt1dGVuICIoKmtleTEqJiYqa2V5MiopIiB0YWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNYWhkb2xsaXN0YWEgbGFhamVubmV0dXQgaGFrdWVoZG90IGFzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpG4ga29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYXVzc2EuIFTDpG3DpG4gb21pbmFpc3V1ZGVuIGF2dWxsYSB2b2l0IGhha2VhIGVzaW0uIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4gbmltZcOkIHTDpGxsYWlzaWxsYSBlaGRvaWxsYSBrdXRlbiAiKCprZXkxKiYmKmtleTIqKSIgdGFpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnTXnDtm5uZXR5dCBDSTp0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0FzaWFrYXN5cml0eWtzZWxsZSBvc29pdGV0dXQgQ0k6dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0FzaWFrYXNrw6R5dHTDpGrDpGxsZSBtw6TDpHJpdGV0eXQgQ0k6dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1hc2V0dWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1Rhcmtpc3RhLCBldHTDpCBuaW1pIG9uIHlrc2lsw7ZsbGluZW4gdmFpbiBzYW1hbiBDb25maWdJdGVtLWx1b2thbiAoXCdjbGFzc1wnKSBzaXPDpGxsw6QgdGFpIGdsb2JhYWxpc3RpIChcJ2dsb2JhbFwnKSwgbWlrw6QgdGFya29pdHRhYSwgZXR0w6Qgam9rYWluZW4gb2xlbWFzc2Egb2xldmEgQ29uZmlnSXRlbSBvdGV0YWFuIGh1b21pb29uLCBrdW4gZXRzaXTDpMOkbiBrYWtzb2lza2FwcGFsZWl0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1ZhbGl0c2UgbW9kdXVsaSBuaW1lw6RtaXNzdXVubml0ZWxtYW4ga8OkeXR0w7bDtm5vdHRvYSB2YXJ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWYWxpdHNlIG1vZHV1bGkgbnVtZXJvasOkcmplc3RlbG3DpG4ga8OkeXR0w7bDtm5vdHRvYSB2YXJ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1ZhbGl0c2UgbW9kdXVsaSwgam9rYSBvdHRhYSBrw6R5dHTDtsO2biB2ZXJzaW9qb25vasOkcmplc3RlbG3DpG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVmFsaXRzZSBhdHRyaWJ1dXRpdCwgam90a2Ega8OkeW5uaXN0w6R2w6R0IHV1ZGVuIHZlcnNpb24gbHVvbWlzZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1ZhbGl0c2UgbHVva2F0LCBqb3RrYSBvc29pdGV0YWFuIHTDpGxsZSBtw6TDpHJpdHlza29oZGVsdW9rYWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdTYXJha2tlZW4gQ29uZmlnSXRlbS1rb2h0ZWVuIHN1b2RhdHRpbWV0IENvbmZpZ0l0ZW0gT3ZlcnZpZXcgLWtvaHRlZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ1NhcmFra2VldCwgam9pdGEgdm9pZGFhbiBzdW9kYXR0YWEgYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlaWRlbiB5bGVpc2thdHNhdWtzZXNzYS4gSHVvbWF1dHVzOiBWYWluIENvbmZpZyBJdGVtIC1hdHRyaWJ1dXRpdCBqYSBkeW5hYW1pc2V0IGtlbnTDpHQgKER5bmFtaWNGaWVsZF9OYW1lWCkgb3ZhdCBzYWxsaXR0dWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdNw6TDpHJpdHlza29odGVldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnTcOkw6RyaXR5c2tvaHRlZW4gbGlzw6TDpG1pbmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ03DpMOkcml0eXNrb2h0ZWVuIG11b2trYXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0w6Qga29odGVlbiB0YXBhaHR1bWFtb2R1dWxpLCBqb2thIG1haGRvbGxpc3RhYSBraXJqYWFtaXNlbiBoaXN0b3JpYWFuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdLb25maWcta29odGVlbiB0YXBhaHR1bWFtb2R1dWxpLCBqb2thIHDDpGl2aXR0w6TDpCBrb25maWcta29odGVldCBuaWlkZW4gbnlreWlzZWVuIG3DpMOkcml0ZWxtw6TDpG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnTcOkw6RyaXTDpCBrb2h0ZWVuIGhpc3RvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdNw6TDpHJpdHlza29odGVlbiB0dWxvc3R1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdNw6TDpHJpdMOkIGtvaHRlZW4gem9vbWF1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtLXB1dW7DpGt5bcOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdTZXVyYWF2aWVuIGx1b2traWVuIENvbmZpZ0l0ZW1zLWVsZW1lbnR0ZWrDpCBlaSB0YWxsZW5uZXRhIEVsYXN0aWNzZWFyY2gtcGFsdmVsaW1lbGxlLiBKb3R0YSB0w6R0w6Qgdm9pZGFhbiBzb3ZlbHRhYSBvbGVtYXNzYSBvbGV2aWluIENJOmhpbiwgQ0ktc2lpcnRvIG9uIHN1b3JpdGV0dGF2YSBrb25zb2xpbiBrYXV0dGEgdMOkbcOkbiB2YWlodG9laGRvbiBtdXV0dGFtaXNlbiBqw6Rsa2Vlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMta29odGVpdGEsIGpvaWxsYSBvbiBzZXVyYWF2YXQga8OkeXR0w7bDtm5vdHRvdGlsYXQsIGVpIHRhbGxlbm5ldGEgRWxhc3RpY3NlYXJjaC1wYWx2ZWxpbWVsbGUuIEpvdHRhIHTDpHTDpCB2b2lkYWFuIHNvdmVsdGFhIG9sZW1hc3NhIG9sZXZpaW4gQ0k6aGluLCBDSS1zaWlydG8gb24gc3Vvcml0ZXR0YXZhIGtvbnNvbGluIGthdXR0YSB0w6Rtw6RuIHZhaWh0b2VoZG9uIG11dXR0YW1pc2VuIGrDpGxrZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdLb25maWd1cm9pbnRpIEtvaHRlZW4gcmFqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJvaW50aSBLb2h0ZWVuIHJhamEgc2l2dWEga29odGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWd1cmFhdGlvbmhhbGxpbm5hbiB0aWV0b2thbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTcOkw6RyaXR5c2tvaHRlZW4gaXJ0b3RhdmFyYW1vZHV1bGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0eXNrb2h0ZWVuIGhha3UgYWdlbnR0aWxpaXR0eW3DpG4gdGF1c3RhcmVpdGl0dGltZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnTHVvIGphIGhhbGxpdHNlIG3DpMOkcml0dGVseWrDpCBtw6TDpHJpdHlza29odGVpbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0x1byBsaXBwdWphIENvbmZpZ0l0ZW1zLWtvaHRlaWxsZSB0aWV0dHlpbsOkIGFqYW5rb2h0aW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdBc2lha2thYXQgdm9pdmF0IG7DpGhkw6QgaGlzdG9yaWFsbGlzZXQgQ0ktdmVyc2lvdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQXNpYWtrYWlsbGEgb24gbWFoZG9sbGlzdXVzIHZhaWh0YWEgbWFudWFhbGlzZXN0aSBoaXN0b3JpYWxsaXN0ZW4gQ0ktdmVyc2lvaWRlbiB2w6RsaWxsw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnT2xldHVzYXJ2b2lzZXQgdGllZG90LCBqb2l0YSBrw6R5dGV0w6TDpG4gbcOkw6RyaXR0ZWVuIG3DpMOkcml0dGVseWtvaHRlZW4gaGFrdW7DpHl0w7Zzc8OkLiBFc2ltZXJra2k6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnT2xldHVzYXJ2b2lzZXQgdGllZG90LCBqb2l0YSBrw6R5dGV0w6TDpG4gbcOkw6RyaXR0ZWVuIG3DpMOkcml0dGVseWtvaHRlZW4gaGFrdW7DpHl0w7Zzc8OkLiBFc2ltZXJra2k6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdNw6TDpHJpdMOkIHRvaW1pbm5vdCwgam9pc3NhIGFzZXR1c3BhaW5pa2Ugb24ga8OkeXRldHTDpHZpc3PDpCBsaW5raXRldHR5amVuIG9iamVrdGllbiB3aWRnZXRpc3PDpCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBIdW9tYWEsIGV0dMOkIG7DpGlsbMOkIHRvaW1pbm5vaWxsYSBvbiBvbHRhdmEgcmVraXN0ZXLDtmlkeXQgc2V1cmFhdmF0IEpTLSBqYSBDU1MtdGllZG9zdG90OiBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGphIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ03DpMOkcml0w6QgVGVtcGxhdGU6OlRvb2xraXQtc2tlZW1hIHZlcnNpb2pvbm9qYSB2YXJ0ZW4uIEvDpHl0ZXTDpMOkbiB2YWluLCBqb3MgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIC1tb2R1dWxpbiBhcnZva3NpIG9uIGFzZXRldHR1IFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ03DpMOkcml0w6Qgam91a2tvIGVodG9qYSwgam9pZGVuIG11a2Fpc2VzdGkgYXNpYWthcyBzYWEgbsOkaGTDpCBrb25maWd1cm9pbnRpa29odGVlbi4gRWhkb3Qgdm9pZGFhbiB2YWxpbm5haXNlc3RpIHJham9pdHRhYSB0aWV0dHlpaGluIGFzaWFrYXNyeWhtaWluLiBOaW1pIG9uIGFpbm9hIHBha29sbGluZW4gbcOkw6RyaXRlLiBKb3MgbXVpdGEgdmFpaHRvZWh0b2phIGVpIGFubmV0YSwga2Fpa2tpIGtvbmZpZ3Vyb2ludGlrb2h0ZWV0IG7DpGt5dsOkdCBreXNlaXNlc3PDpCBsdW9rYXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdmFhZGl0dXQgb2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVpZGVuIHBvaXN0YW1pc2VlbiB5bGVpc2VuIGvDpHl0dMO2bGlpdHR5bcOkbiBhdnVsbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHZhYWRpdHV0IG9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiBoYWtlbWlzZWVuIHlsZWlzZW4ga8OkeXR0w7ZsaWl0dHltw6RuIGF2dWxsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdmFhZGl0dXQgb2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVpZGVuIGhha3V1biB5bGVpc2VuIGvDpHl0dMO2bGlpdHR5bcOkbiBhdnVsbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHZhYWRpdHV0IG9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiBtw6TDpHJpdHTDpG1pc2VlbiB5bGVpc2VuIGvDpHl0dMO2bGlpdHR5bcOkbiBhdnVsbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgeWxlaXNrYXRzYXVzbW9kdXVsaW4sIGpva2EgbsOkeXR0w6TDpCBrb2tvb25wYW5va29oZGVsdWV0dGVsb24gcGllbmVuIG7DpGt5bcOkbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCwgb25rbyBsaW5raW4gdHl5cGluIG1lcmtpbm7DpHQgbsOkeXRldHTDpHbDpCBzb2xtdWplbiB5aHRleWtzaXNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHPDpMOkbm7DtmxsaXNldCBsYXVzZWtrZWV0IGVyaWtzZWVuIGt1bGxla2luIENvbmZpZ0l0ZW0tbHVva2FsbGUgQ29uZmlnSXRlbS1uaW1lbiB0YXJraXN0YW1pc2Vrc2kgamEgdmFzdGFhdmllbiB2aXJoZWlsbW9pdHVzdGVuIG7DpHl0dMOkbWlzZWtzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGvDpHl0ZXR0w6R2aXNzw6Qgb2xldmF0IENJLXNhcmFra2VldCBrb25maWd1cm9pbnRpa29odGVlbiB5bGVpc2thdHNhdWtzZXNzYSBDSS1sdW9rYW4gbXVrYWFuLiBKb2thaXNlbiBtZXJraW5uw6RuIG9uIGtvb3N0dXR0YXZhIGx1b2thbiBuaW1lc3TDpCBqYSBreXNlaXNlbiBsdW9rYW4ga8OkeXRldHTDpHZpc3PDpCBvbGV2aWVuIGtlbnR0aWVuIGpvdWtvc3RhLiBEeW5hYW1pc3RlbiBrZW50dGllbiBtZXJraW50w7ZqZW4gb24gbm91ZGF0ZXR0YXZhIGthYXZhYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBvbGV0dXNhcnZvaXNlbiBrb25maWd1cm9pbnRpa29oZGV0dGEga29za2V2YW4gYXR0cmlidXV0aW4gYWdlbnR0aWxpaXR0eW3DpG4ga29uZmlndXJvaW50aWtvaGRlaGFrdXR1bG9rc2VuIGxhaml0dGVsdWEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBvbGV0dXNhcnZvaXNlbiBrb25maWd1cmFhdGlva29oZGVhdHRyaWJ1dXRpbiBhc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGFrdXR1bG9rc2VuIGxhaml0dGVsdWEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qgb2xldHVzYXJ2b2lzZW4ga29uZmlndXJhYXRpb2tvaHRlZW4gYXR0cmlidXV0aW4ga29uZmlndXJhYXRpb2tvaHRlZW4gbGFqaXR0ZWx1YSB2YXJ0ZW4gdMOkbcOkbiB0b2ltaW5ub24ga29uZmlndXJhYXRpb2tvaHRlZW4gaGFrdXR1bG9rc2Vzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gb2xldHVzasOkcmplc3R5a3NlbiBhZ2VudHRpbGlpdHR5bcOkbiBrb25maWd1cmFhdGlva29odGVpZGVuIGhha3V0dWxva3Npc3NhLiBZbMO2czogdmFuaGluIHDDpMOkbGxpbW3DpGlzZW7DpC4gQWxhczogdXVzaW4gb24gcMOkw6RsbGltbcOkaXNlbsOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBrb25maWd1cmFhdGlva29odGVpZGVuIG9sZXR1c2rDpHJqZXN0eWtzZW4gYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cmFhdGlva29odGVpZGVuIGhha3V0dWxva3Npc3NhLiBZbMO2czogdmFuaGluIHDDpMOkbGxpbW3DpGlzZW7DpC4gQWxhczogdXVzaW4gb24geWxow6TDpGxsw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIENJOmlkZW4gb2xldHVzc2FyYWtrZWV0LCBqb3RrYSBuw6RreXbDpHQga29uZmlndXJvaW50aWtvaHRlZW4geWxlaXNrYXRzYXVrc2Vzc2EgQ0ktbHVva2FzdGEgcmlpcHB1ZW4uIEpva2Fpc2VuIG1lcmtpbm7DpG4gb24ga29vc3R1dHRhdmEgbHVva2FuIG5pbWVzdMOkIGphIGt5c2Vpc2VuIGx1b2thbiBrw6R5dGV0dMOkdmlzc8OkIG9sZXZpZW4ga2VudHRpZW4gam91a29zdGEuIER5bmFhbWlzdGVuIGtlbnR0aWVuIG1lcmtpbnTDtmplbiBvbiBub3VkYXRldHRhdmEga2FhdmFhIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ03DpMOkcml0dMOkw6QgbsOkeXRldHTDpHZpZW4gc3VodGVpZGVuIG9sZXR1c3N5dnl5ZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIG9sZXR1c2Fydm9pc2VzdGkgbsOkeXRldHTDpHbDpG4ga29uZmlndXJhYXRpb2tvaHRlZW4gaGFrdWF0dHJpYnV1dGluIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGhha3Vuw6R5dMO2bGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBvbGV0dXNhcnZvaXNlc3RpIG7DpHl0ZXR0w6R2w6RuIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGhha3VhdHRyaWJ1dXRpbiBrb25maWd1cmFhdGlva29odGVlbiBoYWt1bsOkeXTDtmxsZS4gRXNpbWVya2tpOiAiQXZhaW4iIG9uIG9sdGF2YSBkeW5hYW1pc2VuIGtlbnTDpG4gbmltaSB0w6Rzc8OkIHRhcGF1a3Nlc3NhIFwnWFwnLCAiU2lzw6RsdMO2IiBvbiBvbHRhdmEgZHluYWFtaXNlbiBrZW50w6RuIGFydm8gZHluYWFtaXNlbiBrZW50w6RuIHR5eXBpc3TDpCByaWlwcHVlbiwgVGVrc3RpOiBcJ3Rla3N0aVwnLCBQdWRvdHVzdmFsaWtrbzogXCcxXCcsIFDDpGl2w6Rtw6TDpHLDpC9BaWthOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgamEgdGFpIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgbHVva2FuIFwnSVRTTUNvbmZpZ0l0ZW1cJyBvbGV0dXNhcnZvaXNlbiBhbGlvYmpla3Rpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qga8OkeXRldHTDpHZpc3PDpCBvbGV2YXQgQ0ktc2FyYWtrZWV0IGtvbmZpZ3Vyb2ludGlrb2h0ZWVuIHlsZWlza2F0c2F1a3Nlc3NhIENJLWx1b2thbiBtdWthYW4uIEpva2Fpc2VuIG1lcmtpbm7DpG4gb24ga29vc3R1dHRhdmEgbHVva2FuIG5pbWVzdMOkIGphIGt5c2Vpc2VuIGx1b2thbiBrw6R5dGV0dMOkdmlzc8OkIG9sZXZpZW4ga2VudHRpZW4gam91a29zdGEuIER5bmFhbWlzdGVuIGtlbnR0aWVuIG1lcmtpbnTDtmplbiBvbiBub3VkYXRldHRhdmEga2FhdmFhIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdMOkbcOkbiBuw6R5dMO2biB0ZWtzdGllZGl0b3Jpa29tcG9uZW50aW4ga29ya2V1ZGVuLiBTecO2dMOkIG51bWVybyAocGlrc2VsacOkKSB0YWkgcHJvc2VudHRpbHVrdSAoc3VodGVlbGxpbmVuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBoYWxsaW50YWvDpHl0dMO2bGlpdHR5bcOkbiBDSS1tw6TDpHJpdHRlbHllZGl0b3JpbiByaXZpZW4gbcOkw6Ryw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHRhcGFodHVtYXRpbG9qZW4gasOkcmplc3R5a3NlbiBrb3JrZWFzdGEgKGVzaW0uIHN5ZMOkbmtvaHRhdXMpIG1hdGFsYWFuIChlc2ltLiB0b2ltaW5uYWxsaW5lbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBhc2lhYW5rdXVsdXZhdCBrw6R5dHTDtsO2bm90dG90aWxhdCwgam9pc3NhIGxpbmtpdGV0eXQgbGlwdXQgdm9pdmF0IHZhaWt1dHRhYSBDSTpuIHRpbGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIEFnZW50SVRTTUNvbmZpZ0l0ZW0tbsOkeXTDtm4gaGFrdXJhamFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC1uw6R5dMO2biBoYWt1cmFqYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBDdXN0b21lcklUU01Db25maWdJdGVtLW7DpHl0w7ZuIGhha3VyYWphbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gtbsOkeXTDtm4gaGFrdXJhamFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGthaWtraWVuIENJLWx1b2traWVuIHlodGV5c3RpZXRvdGF1bHVrb24gbW9uaXRhaG9pc2Vzc2EgbsOka3ltw6Rzc8OkIG7DpGt5dsOkdCBDSS1zYXJha2tlZXQuIEpvcyBtZXJraW50w6TDpCBlaSBvbGUsIG7DpHl0ZXTDpMOkbiBvbGV0dXNzYXJha2tlZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGxpbmtraXRhdWx1a29uIG1vbml0YWhvaXNlc3NhIG7DpGt5bcOkc3PDpCBuw6RreXbDpHQgQ0ktc2FyYWtrZWV0IENJLWx1b2thc3RhIHJpaXBwdWVuLiBKb2thaXNlbiBtZXJraW5uw6RuIGV0dWxpaXR0ZWVuw6Qgb24gb2x0YXZhIGx1b2thbiBuaW1pIGphIGtha3NvaXNwaXN0ZSAoZXNpbS4gQ29tcHV0ZXI6OikuIE9uIG9sZW1hc3NhIG11dXRhbWlhIENJLWF0dHJpYnV1dHRlamEsIGpvdGthIG92YXQgeWh0ZWlzacOkIGthaWtpbGxlIENJOmlsbGUgKGVzaW1lcmtraSBsdW9rYW4gQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFlrc2l0dMOkaXN0ZW4gQ0ktYXR0cmlidXV0dGllbiBuw6R5dHTDpG1pc2Vrc2kgQ0ktbcOkw6RyaXR0ZWx5c3PDpCBtw6TDpHJpdGVsbHlsbMOkIHRhdmFsbGEgb24ga8OkeXRldHTDpHbDpCBzZXVyYWF2YWEga2FhdmFhIChlc2ltZXJra2kgbHVva2FuIENvbXB1dGVyIG9zYWx0YSk6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBKb3MgQ0ktbHVva2FsbGUgZWkgb2xlIG1lcmtpbnTDpMOkLCBuw6R5dGV0w6TDpG4gb2xldHVzc2FyYWtrZWV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QsIG1pdGvDpCBrb2h0ZWV0IG92YXQga8OkeXRldHTDpHZpc3PDpCAiQWN0aW9uIiAtdG9pbWludG9hIHZhcnRlbiBJVFNNIENvbmZpZyBJdGVtIEFDTCAtcmFrZW50ZWVuIGtvbG1hbm5lbGxhIHRhc29sbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCwgbWl0a8OkIGtvaHRlZXQgb3ZhdCBrw6R5dGV0dMOkdmlzc8OkIElUU00gQ29uZmlnIEl0ZW0gQUNMIC1yYWtlbnRlZW4gZW5zaW1tw6Rpc2VsbMOkIHRhc29sbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QsIG1pdGvDpCBrb2h0ZWV0IG92YXQga8OkeXRldHTDpHZpc3PDpCBJVFNNIENvbmZpZyBJdGVtIEFDTCAtcmFrZW50ZWVuIHRvaXNlbGxhIHRhc29sbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QsIG1pbmvDpCB0eXlwcGluZW4gbGlua2tpIChuaW1ldHR5IHRpa2V0aW4gbsOka8O2a3VsbWFzdGEpIHZvaSB2YWlrdXR0YWEgbGlua2l0ZXR5biBDSTpuIHRpbGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkLCBtaW5rw6QgdHl5cHBpbmVuIGxpcHB1IHZvaSB2YWlrdXR0YWEgbGlua2l0ZXR5biBDSTpuIHRpbGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdNw6TDpHJpdGVsbcOkbiBww6Rpdml0eXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BvaXN0YSBrb25maWd1cmFhdGlvZWxlbWVudHRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnS8OkeXR0w7bDtm5vdG9uIHRpbGEgVsOkcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0tha3NvaXNrYXBwYWxlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEeW5hYW1pc3RlbiBrZW50dGllbiB0YXBhaHR1bWFtb2R1dWxpLCBqb2thIG1lcmtpdHNlZSBrb25maWd1cmFhdGlva29odGVlbiBtw6TDpHJpdGVsbcOkdCBlcMOkc3lua3JvbmlzaWtzaSwgam9zIGR5bmFhbWlzaWEga2VudHRpw6Qgc2lzw6RsdMOkdsOkdCBrZW50w6R0IG11dXR0dXZhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFhbWlzZXQga2VudMOkdCwgam90a2EgbsOka3l2w6R0IGFzaWFtaWVoZW4ga8OkeXR0w7ZsaWl0dHltw6RuIElUU00tbGlzw6RrZW50dMOkbsOkeXTDtnNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFhbWlzZXQga2VudMOkdCwgam90a2EgbsOka3l2w6R0IGFzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpG4ga29uZmlndXJvaW50aWtvaHRlZW4geWxlaXNrYXRzYXVzbsOkeXTDtnNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFhbWlzZXQga2VudMOkdCwgam90a2EgbsOka3l2w6R0IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWVuIGhha3Vuw6R5dMO2c3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnT3R0YWEga8OkeXR0w7bDtm4ga29uZmlndXJhYXRpb2tvaHRlZW4gbWFzc2F0b2ltaW50by1vbWluYWlzdXVkZW4sIGpvbmthIGF2dWxsYSBhZ2VudGluIGV0dXNpdnUgdm9pIGvDpHNpdGVsbMOkIHVzZWFtcGFhIGt1aW4geWh0w6Qga29uZmlndXJhYXRpb2tvaGRldHRhIGtlcnJhbGxhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdPdHRhYSBrw6R5dHTDtsO2biBtw6TDpHJpdHlza29odGVpZGVuIG1hc3NhdG9pbWludGF0b2ltaW5ub24gdmFpbiBsdWV0ZWxsdWlsbGUgcnlobWlsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ1RhcGFodHVtYW1vZHV1bGksIGpva2EgYXNldHRhYSBrb25maWdpdGVtLXRpbGFuIHRpY2tldC1jb25maWdpdGVtLWxpbmtpbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdLb2tvdGVrc3RpaGF1c3NhIGvDpHl0ZXR0w6R2w6R0IGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGluZGVrc2luIGtlbnTDpHQuIEtlbnTDpHQgdGFsbGVubmV0YWFuIG15w7ZzLCBtdXR0YSBuZSBlaXbDpHQgb2xlIHBha29sbGlzaWEgeWxlaXNlbiB0b2ltaW5uYWxsaXN1dWRlbiBrYW5uYWx0YS4gTGlpdGV0aWVkb3N0b2plbiBzaXPDpGxseXR0w6RtaW5lbiB2b2lkYWFuIGVzdMOkw6QgYXNldHRhbWFsbGEgbWVya2lubsOkbiBhcnZva3NpIDAgdGFpIHBvaXN0YW1hbGxhIHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnTcOkw6RyaXR5c2tvaGRlaW5kZWtzaWluIHRhbGxlbm5ldHV0IGtlbnTDpHQsIGpvaXRhIGvDpHl0ZXTDpMOkbiBtdXVodW4ga3VpbiBrb2tvdGVrc3RpaGFrdXVuLiBUw6R5ZGVsbGlzZW4gdG9pbWlubmFsbGlzdXVkZW4ga2FubmFsdGEga2Fpa2tpIGtlbnTDpHQgb3ZhdCBwYWtvbGxpc2lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtbW9kdXVsaW4gcmVraXN0ZXLDtmludGkgQ29uZmlnSXRlbUZldGNoLWt1dHN1a2Vycm9zdGEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtbW9kdXVsaW4gcmVraXN0ZXLDtmludGkgQ29uZmlnSXRlbUZldGNoLWt1dHN1a2Vycm9zdGEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlLW1vZHV1bGluIHJla2lzdGVyw7ZpbnRpIENvbmZpZ0l0ZW1GZXRjaC1rdXRzdWtlcnJvc3RhIHZhcnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTS1tw6TDpHJpdHlza29odGVlbiB5bGVpc2thdHNhdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2lzw6RsdMOkw6Qga8OkeXR0w7bDtm5vdHRvdGlsYXQgYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cm9pbnRpa29oZGVoYXVzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Npc8OkbHTDpMOkIHZhYXJhdGlsYW50ZWlkZW4gdGlsYXQgYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cm9pbnRpa29oZGVoYXVzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ1TDpG3DpG4gdG9pbWlubm9uIHR1bG9rc2VuYSBuw6R5dGV0dMOkdmllbiBrb25maWd1cm9pbnRpZWxlbWVudHRpZW4gZW5pbW3DpGlzbcOkw6Ryw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdXVsaSBsdW9rYXN0YSB2YXN0YWF2YW4gcnlobcOkbiB0YXJraXN0YW1pc2Vrc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdXVsaSwgam9sbGEgdm9pdCB0YXJraXN0YWEga29uZmlndXJhYXRpb2VsZW1lbnRpc3TDpCB2YXN0YWF2YW4gcnlobcOkbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1dWxpIElUU00ta29uZmlndXJhYXRpb3RpbGFzdG9qZW4gdHVvdHRhbWlzZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05pbWkgTW9kdXVsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtZXJvbW9kdXVsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkc3PDpCBrdWxsYWtpbiBoYWt1dHVsb3NzaXZ1bGxhIG7DpHl0ZXR0w6R2aWVuIG3DpMOkcml0eXNrb2h0ZWlkZW4gbcOkw6Ryw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6Qga3VsbGFraW4gaGFrdXR1bG9zc2l2dWxsYSBuw6R5dGV0dMOkdmllbiBtw6TDpHJpdHlza29odGVpZGVuIG3DpMOkcsOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdFdHNpdHTDpHbDpHQga29odGVldCwga3VpbmthIG1vbnRhIG1lcmtpbnTDpMOkIGphIG1pdGvDpCBvbWluYWlzdXVkZXQgbsOkeXRldMOkw6RuLiBDb25maWdJdGVtLWF0dHJpYnV1dGl0IG9uIHRhbGxlbm5ldHRhdmEgbmltZW5vbWFpc2VzdGkgRWxhc3RpY3NlYXJjaGluIGthdXR0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnWWxlaXNrYXRzYXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpG4ga29uZmlndXJvaW50aWtvaGRlbHVva2tpZW4gbHVva2tpZW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cml0IHBpZW50ZW4ga29uZmlndXJvaW50aWtvaHRlaWRlbiB5bGVpc2thdHNhdWtzZW4gc2FyYWtlc3VvZGF0dGltaWEgdmFydGVuLiBIdW9tYWE6IFwnQWt0aWl2aW5lblwnLWFzZXR1a3NlbiBhc2V0dGFtaW5lbiBhcnZvb24gMCBlc3TDpMOkIHZhaW4gYWdlbnR0ZWphIG11b2trYWFtYXN0YSB0w6Rtw6RuIHJ5aG3DpG4gYXNldHVrc2lhIGhlbmtpbMO2a29odGFpc2lzc2EgYXNldHVrc2lzc2FhbiwgbXV0dGEgc2FsbGlpIHNpbHRpIGrDpHJqZXN0ZWxtw6RudmFsdm9qaWVuIG11b2thdGEgdG9pc2VuIGvDpHl0dMOkasOkbiBhc2V0dWtzaWEuIEvDpHl0w6QgXCdQcmVmZXJlbmNlR3JvdXBcJy1rb2h0YWEsIGt1biBoYWx1YXQgaGFsbGl0YSwgbWlsbMOkIGFsdWVlbGxhIG7DpG3DpCBhc2V0dWtzZXQgbsOkeXRldMOkw6RuIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLw6R5dHTDtsO2bm90dG90aWxvamVuIHbDpHJpbiBwYXJhbWV0cml0IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHByZWZlcmVuY2VzLW7DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLw6R5dHTDtsO2bm90dG90aWxvamVuIHBhcmFtZXRyaXQgYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdZbGVpc2VuIGx1ZXR0ZWxvbiBhdHRyaWJ1dXR0aWVuIGVzaW1lcmtraW9pa2V1c3J5aG1pZW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpa29oZGVsdW9ra2llbiBuaW1pbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50dGlrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkIG9sZXZpZW4ga29uZmlndXJvaW50aWtvaGRlbHVva2tpZW4gbnVtZXJvbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnU2l2dWplbiBwYXJhbWV0cml0IChqb2lzc2EgYXNldHVza29odGVldCBuw6R5dGV0w6TDpG4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpbHVva2tpZW4gdmVyc2lvbiBtZXJra2lqb25vbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpa29oZGVsdW9ra2llbiB2ZXJzaW9uIG1lcmtraWpvbm9tYWxsaS10ecO2a2FsdXBha2tpbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpbHVva2tpZW4gdmVyc2lvbGF1a2Fpc2ltZW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdMdXBhcnlobcOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWVuIGtpaW5uaXR5c3RvaW1pbm5vbiBrw6R5dHTDpG1pc2VlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IG9pa2V1ZGV0IElUU00ta29uZmlndXJhYXRpb2tvaHRlaWRlbiBuw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb25maWd1cmFhdGlva29odGVpZGVuIGhha3Vuw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYWt1bsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiBwdXVuw6RreW3DpG4gbsOkeXR0w7bDtm4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtvbmZpZ3VyYWF0aW9rb2h0ZWVuIHpvb21hdXNuw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpG4gYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIC1uw6R5dMO2biBrw6R5dHTDpG1pc2Vlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNOm4gbcOkw6RyaXR5c2tvaHRlaWRlbiBpcnRvdGF2YXJhbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWVuIG11b2trYXVzbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGlzdG9yaWEtbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiB0dWxvc3RhbWluZW4gLW7DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdNw6TDpHJpdHlza29odGVpZGVuIHBvaXN0YW1pc2VlbiB0YXJ2aXR0YXZhdCBvaWtldWRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdIYWt1IGtvbmZpZ3Vyb2ludGllbGVtZW50aXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdBc2V0YSBDSTpuIHRhcGFodHVtYXRpbGEgYXV0b21hYXR0aXNlc3RpLCBrdW4gbGlwcHUgbGlua2l0ZXTDpMOkbiBDSTpoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXNldHRhYSBrw6R5dHTDtsO2bm90b24gdGlsYW4gYWdlbnR0aWxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlZW4gYnVsay1uw6R5dMO2c3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXNldHRhYSB0YXBhaHR1bWF0aWxhbiBhZ2VudHRpbGlpdHR5bcOkbiBtw6TDpHJpdHlza29odGVlbiBidWxrLW7DpHl0w7Zzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIGtvbmZpZ3Vyb2ludGlrb2hkZSB2b2lkYWFuIHloZGlzdMOkw6QgdG9pc2VlbiBrb2h0ZWVzZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2h0ZWVuIHpvb21hdXNuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgcMOkw6RzZWUgbcOkw6RyaXR5c2tvaHRlZW4gaGlzdG9yaWFhbiBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWlkZW4geWxlaXNrYXRzYXVrc2Vzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHDDpMOkc2VlIG3DpMOkcml0eXNrb2h0ZWVuIGhpc3RvcmlhYW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gem9vbWF1c27DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSB2b2l0IHBvaXN0YWEgbcOkw6RyaXR5c2tvaHRlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gem9vbWF1c27DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9rYSBuw6R5dHTDpMOkIG3DpMOkcml0eXNrb2h0ZWlkZW4gbGlua2l0IHB1dW7DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbGxhIHZvaXQga29waW9pZGEgbcOkw6RyaXR5c2tvaHRlZW4gYWdlbnR0aWxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlaWRlbiB5bGVpc2thdHNhdWtzZXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgdm9pdCBrb3Bpb2lkYSBtw6TDpHJpdHlza29odGVlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiB6b29tYXVzbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCBsaW5raW4gdmFsaWtrb29uLCBqb25rYSBhdnVsbGEgdm9pdCBtdW9rYXRhIG3DpMOkcml0eXNrb2hkZXR0YSBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiB6b29tYXVzbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgdm9pdCBwYWxhdGEgdGFrYWlzaW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlZW4gem9vbWF1c27DpGt5bcOkw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHZvaXQgdHVsb3N0YWEgbcOkw6RyaXR5c2tvaHRlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gem9vbWF1c27DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSB2b2l0IHpvb21hdGEgbcOkw6RyaXR5c2tvaHRlZXNlZW4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkbiBtw6TDpHJpdHlza29odGVpZGVuIHlsZWlza2F0c2F1a3Nlc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIG3DpMOkcml0eXNrb2h0ZWlkZW4gaGlzdG9yaWFuIChrw6TDpG50ZWlzZXNzw6QgasOkcmplc3R5a3Nlc3PDpCkgYWdlbnR0aWxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ09sZXR1c2x1b2trYSwgam9rYSBuw6R5dGV0w6TDpG4sIGpvcyBtaXTDpMOkbiBlaSBvbGUgdmFsaXR0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYWF0aW9lbGVtZW50aW4gdHVubmlzdGUsIGVzaW0uIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBPbGV0dXNhcnZvIG9uIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnS8OkeW5uaXN0w6TDpCBDb25maWdJdGVtRmV0Y2gta3V0c3VhamFuIGF1dG9tYWF0dGlzZXN0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvIFN0cmluZyBFeHByZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpbyBtZXJra2lqb25vIE1vZHV1bGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2lvIExhdWthaXNpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnVm9pZGFhbmtvIENvbmZpZ0l0ZW1BQ0w6biBzdW9yaXR0YW1pbmVuIHbDpGx0dMOkw6QgdGFya2lzdGFtYWxsYSB2w6RsaW11aXN0aWluIHRhbGxlbm5ldHR1amVuIGtlbnR0aWVuIHJpaXBwdXZ1dWRldC4gVMOkbcOkIHZvaSBwYXJhbnRhYSBsb21ha2tlaWRlbiBsYXRhdXNhaWtvamEsIG11dHRhIHNlIG9uIHBvaXN0ZXR0YXZhIGvDpHl0w7ZzdMOkLCBqb3MgQUNMTW9kdWxlamEga8OkeXRldMOkw6RuIElUU01Db25maWdJdGVtLSBqYSBGb3JtLVJldHVyblR5cGVzLXR5eXBlaXNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdNaXRrw6QgeWxlaXNldCB0aWVkb3QgbsOka3l2w6R0IG90c2lrb3NzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdsdW9ra2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnbWFhaWxtYW5sYWFqdWluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAndHVvdHRhdmEnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgdHV1bWFhICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogNTMsMzQgY20gKDIxIHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiA4MCwwMSBjbSAoMzEsNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LXR1dW1haW5lbiB0ZWxpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiA4OCw5IGNtICgzNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLXR1dW1haW5lbiB0ZWxpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHR1dW1hYSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLXR1dW1haW5lbiB0ZWxpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHR1dW1hYSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgdHV1bWFhICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSB0dXVtYWEgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDEzMywzNSBjbSAoNTIsNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSB0dXVtYWEgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHR1dW1hYSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgdHV1bWFhICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiAxNjAsMDIgY20gKDYzIHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCB0dXVtYWEgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyB0dXVtYWEgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgdHV1bWFhICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDE3LDc4IGNtICg3IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMzUsNTYgY20gKDE0IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnS2lyamFucGl0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ09zb2l0dGVlbiBqYWthbWluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1lsbMOkcGl0w6Rqw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9naW5lbiBwdWhlbGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnTGFpdHRlZW4gdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQWt1biBrYXBhc2l0ZWV0dGkgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdQYXJpc3RvdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnUmFrZW5udXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ1bDpHlsw6RsaWl0w6RudMOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWx1b2trYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXNpdGVldHRpIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhc2l0ZWV0dGkgbsOkeXTDtm5vaGphaW50YSBrb2h0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0tvcnRpbiBudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLb3J0aW5sdWtpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS29ydGluIHR5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQXNpYWthc3Zhcm1lbnRlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnQXNpYWthc29oamVsbWlzdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQXNpYWthc2x1b2trYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdLZWxsb3RhYWp1dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0tvb2RpbiBhbGxla2lyam9pdHVzdmFybWVudGVldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29rb3VzcHVoZWxpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bHR0aXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ090YSB5aHRleXR0w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ090YSB5aHRleXR0w6QgamFrZWxpamFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnR0aWVuIGhhbGxpbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnU29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnU29waW11c3R5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1NvcGltdXNrYXVzaSBhbGthZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnU29waW11c2thdXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0xhbmdhdG9uIHB1aGVsaW4gKERFQ1QtcHVoZWxpbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS3VzdGFubnVzeWtzaWtrw7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdMaXNlbnNzaWVuIGx1a3Vtw6TDpHLDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnTHVvbnRpcMOkaXbDpG3DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdDdXN0b20gUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBWYXJhdHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtcGFsdmVsaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0xhc2t1biBww6RpdsOkbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1RpbGF1c3DDpGl2w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ1Rha3V1YWphbiBww6RpdsOkbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnSnVsa2Fpc3Vww6RpdsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdUecO2cMO2eXTDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQXNpYWtpcmpvamVuIGFsbGVraXJqb2l0dXN2YXJtZW50ZWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSS1oeWxseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnU8OkaGvDtnBvc3RpdmFybWVudGVldCAoUy9NSU1FLXZhcm1lbnRlZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1R5w7Zzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnTG9wdW4gSVAtb3NvaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnVHVlbiBww6TDpHR0eW1pbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVmlpbWVpbmVuIHZvaW1hc3Nhb2xvcMOkaXbDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnVWxrb2luZW4ga2lpbnRvbGV2eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1BhbG9tdXVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnRmx5d2hlZWwtZW5lcmdpYW4gdmFyYXN0b2ludGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdNdW9kb24gdGVraWrDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNpbmctc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1lsZWlzdMOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnTsOkeXTDtm5vaGphaW1ldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnTsOkeXTDtm5vaGphaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdMYWl0dGVpc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTGFpdHRlaXN0b21hbGxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0xhaXR0ZWlzdG9uIHBhaW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdLdXVsb2trZWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9rb2xsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZWV0aW4tIGphIHDDpMOkc3luaGFsbGludGEgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ1ZhcmFzdG9udW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0xhc2t1biBudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdOw6RwcMOkaW1pc3TDtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QtbsOkeXR0w7YgKG5lc3Rla2lkZW7DpHl0dMO2KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVELW1vbml0b3JpICh2YWxvZGlvZGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0xhbmthcHVoZWxpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdLYW5uZXR0YXZhIHRpZXRva29uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xldmV5c2FzdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdLZXJyb3MgMTogRnl5c2luZW4ga2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0tlcnJvcyAyOiBUaWVkb25zaWlydG9rZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0tlcnJvcyAzOiBWZXJra29rZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnS2Vycm9zIDM6IFZlcmtrb2tlcnJvcyAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0tlcnJvcyA0OiBLdWxqZXR1c2tlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnS2Vycm9zIDU6IElzdHVudG9rZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnS2Vycm9zIDY6IEVzaXR5c2tlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0tlcnJvcyA3OiBTb3ZlbGx1c2tlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdWdW9rcmFzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGlzZW5zc2lzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaXNlbnNzaWF2YWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpc2Vuc3NpbiB0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpc2Vuc3NpYWlrYSBhbGthZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaXNlbnNzaWFpa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGl1bS1yYXV0YWZvc2ZhYXR0aWFra3UgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRpdW0taW9uaWFra3UgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMYWluYXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ1NpamFpdHNlZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdQaXR1dXNhc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVmFsbWlzdGFqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnU3V1cmluIGt1b3JtaXR1c2thcGFzaXRlZXR0aSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTXVpc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTXVpc3RpdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01hdGthcHVoZWxpbm51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpaWxpL3Npc8Okw6RucmFrZW5uZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01hbGxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTWFsbGluIGt1dmF1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdOw6R5dMO2biB0YXJra3V1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdOw6R5dMO2biBrb2tvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnSGlpcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1Zlcmtrbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdWZXJra290aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ1Zlcmtrb3RpZWRvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnVmVya2tva2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsaS1rYWRtaXVtLWFra3UgKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlra2VsaS1tZXRhbGxpaHlkcmlkaSAoTmlNSCkgLWFra3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnU2FsYXNzYXBpdG9zb3BpbXVzIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTXVpc3Rpa2lyamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdTdW9yaXRpbnlrc2lrw7ZpZGVuIG3DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1JBTS1tb2R1dWxpZW4gbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsOkeXTDtm5vaGphaW50ZW4gbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtbW9uaXRvcmkgKG9yZ2FhbmluZW4gdmFsb2Rpb2RpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdUb2ltaW50YWt1c3Rhbm51a3NldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdUaWxhdXNudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdNdXV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdMw6RoZMO2dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdLdW1wcGFudXVzc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1B1aGVsaW5udW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1B1aGVsaW1lbiB0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXlzaXNldCB5dGltZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdWaXJyYW5qYWtlbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdPc3RldHR1IG9zb2l0dGVlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdUZWxpbmVlbiBzeXZ5eXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdUZWxpbmV5a3Npa8O2dCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0h1b25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWtvcnR0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtc2VydGlmaWthYXRpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ015eW50aXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaWl0dGlwdWhlbGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1N1bGpldHR1IGx5aWp5aGFwcG9ha2t1IChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2FyamFudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnUGFsdmVsaW5vaGplbG1pc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnUGFsdmVsdXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdQYWx2ZWx1bWVya2tpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1Bpc3RvcmFzaWEgdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnT2hqZWxtaXN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1B1aHVqYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnVmFraW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0Fsb2l0YSBJUC1vc29pdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1ZhcmFzdG9pbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnVGFsbGVubnVzb3Npbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1R5dMOkcnlodGnDtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnWWh0ZWVudmV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ09odXQgYXNpYWthcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnS2llcnRlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnTsOkeXTDtm5vaGphaW1lbiBSQU0tbXVpc3RpIHlodGVlbnPDpCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNLW11aXN0aWEgeWh0ZWVuc8OkIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0tvc2tldHVzbsOkeXTDtm4gbsOkeXR0w7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWtlc2tpdGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgSGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLXB1aGVsaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/fr_CA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEb25uw6llcyBnw6luw6lyYWxlcyBkZSBmb25jdGlvbm5lbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcmVxdcOqdGUgZW50cmFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcsOpcG9uc2Ugc29ydGFudGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZGUgbGEgY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNb2RpZmllciBsYSBkw6lmaW5pdGlvbiBkZXMgcsO0bGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnTGVzIGVuc2VtYmxlcyBkZSBjbGFzc2VzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0ljaSwgdm91cyBwb3V2ZXogaW1wb3J0ZXIgZGVzIGNsYXNzZXMgUmVhZHkySW1wb3J0IHF1aSBwcsOpc2VudGVudCBub3Mgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGxlcyBwbHVzIGNvdXJhbnRzLiBWZXVpbGxleiBub3RlciBxdWUgY2VydGFpbmVzIGNvbmZpZ3VyYXRpb25zIHN1cHBsw6ltZW50YWlyZXMgcGV1dmVudCDDqnRyZSBuw6ljZXNzYWlyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ01pc2Ugw6Agam91ciBkZXMgZW50aXTDqXMgZXhpc3RhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGVyIGxlcyBwYXF1ZXRzIGRlIGNsYXNzZXMgZGUgUmVhZHkyQWRvcHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDbGFzc2UgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1LDtGxlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyZSBwb3VyIGxlcyBjbGFzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1PDqWxlY3Rpb25uZXogdW5lIGNsYXNzZSBkYW5zIGxhIGxpc3RlIHBvdXIgY3LDqWVyIHVuIG5vdXZlbCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OJdGF0IGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpZW4gdmVycyB1biBhdXRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtw6lybyBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBub24gdmFsaWRlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTGUgbnVtw6lybyBkXCd1biBhdXRyZSDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGxlcXVlbCDDqXRhYmxpciB1biBsaWVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMZSBub20gZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdMZSBub20gZXN0IGTDqWrDoCB1dGlsaXPDqSBwYXIgbGVzIENvbmZpZ0l0ZW1zIGF2ZWMgbGUocykgbnVtw6lybyhzKSBzdWl2YW50KHMpIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ051bcOpcm8gZGUgdmVyc2lvbiBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdMZSBudW3DqXJvIGRlIHZlcnNpb24gZXN0IGTDqWrDoCB1dGlsaXPDqSBwYXIgbGVzIENvbmZpZ0l0ZW1zIGF2ZWMgbGUocykgbnVtw6lybyhzKSBzdWl2YW50KHMpIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OJdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpcXVlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnQ29udGVudSBoaXN0b3JpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcsOpZXIgdW4gdGVtcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVnVlIGRlIGxhIHN5bnRow6hzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgw4lsw6ltZW50cyBwYXIgcGFnZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnQXVjdW5lIGRvbm7DqWUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gblwnYSDDqXTDqSB0cm91dsOpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTw6lsZWN0aW9ubmVyIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBkXCdleMOpY3V0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcG91ciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWF1IGRlIHByb2ZvbmRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGF2YW50L2FycmnDqHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ05pdmVhdSBkZSBsaWVucyBtYXhpbXVtIGF0dGVpbnQgcG91ciBDb25maWdJdGVtICEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbnMgc3VyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0Rlcm5pw6hyZSBtb2RpZmljYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnRGVybmnDqHJlIG1vZGlmaWNhdGlvbiBwYXInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdWb3Mgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdMZXMgY2xhc3NlcyBzdWl2YW50ZXMgc2Vyb250IGltcG9ydMOpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnTGVzIHLDtGxlcyBzdWl2YW50cyBzZXJvbnQgaW1wb3J0w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ05vdGV6IHF1ZSBsZXMgY2hhbXBzIGR5bmFtaXF1ZXMgZXQgbGVzIGNsYXNzZXMgR2VuZXJhbENhdGFsb2cgY29ycmVzcG9uZGFudHMgc2Vyb250IMOpZ2FsZW1lbnQgY3LDqcOpcyBldCBxdVwnaWwgblwneSBhIHBhcyBkZSBzdXBwcmVzc2lvbiBhdXRvbWF0aXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWb3VsZXotdm91cyBjb250aW51ZXIgPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdCZXNvaW4gZGUgY2xhc3NlcyBkXCdleGVtcGxlcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0xhIGTDqWZpbml0aW9uIG5cJ2VzdCBwYXMgdW4gaGFjaGFnZSBZQU1MIHZhbGlkZS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdWdWUgZFwnZW5zZW1ibGUgOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gQ29uZmlnSXRlbUlEIG5cJ2VzdCBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1ZvdXMgYXZleiBiZXNvaW4gZFwnYXUgbW9pbnMgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gc8OpbGVjdGlvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnVm91cyBuXCdhdmV6IHBhcyBkXCdhY2PDqHMgZW4gw6ljcml0dXJlIMOgIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiA6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdBdWN1bmUgZMOpZmluaXRpb24gblwnYSDDqXTDqSBkw6lmaW5pZSBwb3VyIGxhIGNsYXNzZSAlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdMXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAiJXMiIG5cJ2EgcGFzIMOpdMOpIHRyb3V2w6kgZGFucyBsYSBiYXNlIGRlIGRvbm7DqWVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdJbCBuXCdhIHBhcyDDqXTDqSBwb3NzaWJsZSBkZSBzdXBwcmltZXIgbGUgY29uZmlnaXRlbSBJRCAlcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdBdWN1bmUgdmVyc2lvbiB0cm91dsOpZSBwb3VyIENvbmZpZ0l0ZW1JRCAlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3UgQ2xhc3NJRCBuXCdlc3QgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIGFjY8OocyBuXCdlc3QgZG9ubsOpICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCdoaXN0b3JpcXVlLCBhdWN1biBDb25maWdJdGVtSUQgblwnZXN0IGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCdoaXN0b3JpcXVlLCBhdWN1biBkcm9pdCBkXCdhY2PDqHMgblwnYSDDqXTDqSBhY2NvcmTDqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3V2ZWF1IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm91dmVsbGUgdmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTWlzZSDDoCBqb3VyIGRlIGxcJ8OpdGF0IGR1IGTDqXBsb2llbWVudCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ01pc2Ugw6Agam91ciBkZSBsXCfDqXRhdCBkZSBsXCdpbmNpZGVudCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIHN1cHByaW3DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0Fqb3V0IGRcJ3VuIGxpZW4gdmVycyAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpZW4gdmVycyAlcyAodHlwZT0lcykgc3VwcHJpbcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdNaXNlIMOgIGpvdXIgZGUgbGEgZMOpZmluaXRpb24gZGUgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tIG1pcyDDoCBqb3VyIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dCAlcyBtaXMgw6Agam91ciBkZSAiJXMiIMOgICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvbiAlcyBzdXBwcmltw6llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIENvbmZpZ0l0ZW1JRCBvdSBWZXJzaW9uSUQgblwnZXN0IGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2libGUgZFwnYWZmaWNoZXIgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24sIGF1Y3VuIGRyb2l0IGRcJ2FjY8OocyBuXCdhIMOpdMOpIGFjY29yZMOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgaW50cm91dmFibGUgZGFucyBsYSBiYXNlIGRlIGRvbm7DqWVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdpbXByaW3DqSBwYXIgJXMgw6AgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1LDqWbDqXJlbmNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnQ2xhc3NJRCBpbnZhbGlkZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gaWRlbnRpZmlhbnQgZGUgY2xhc3NlIG5cJ2VzdCBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0F1Y3VuIGRyb2l0IGRcJ2FjY8OocyDDoCBjZXR0ZSBjbGFzc2UgblwnYSDDqXTDqSBhY2NvcmTDqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdQYXMgZGUgcsOpc3VsdGF0ICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdSw6lzdWx0YXRzIGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0ltcG9zc2libGUgZFwnYWZmaWNoZXIgbFwnw6lsw6ltZW50LCBhdWN1biBkcm9pdCBkXCdhY2PDqHMgblwnZXN0IGFjY29yZMOpIHBvdXIgQ29uZmlnSXRlbSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gaW50cm91dmFibGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdBdWN1bmUgdmVyc2lvbiB0cm91dsOpZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3DDqXJhdGlvbm5lbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYXZlcnRpc3NlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQgZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTFwnw6l0YXQgZGUgbFwnaW5jaWRlbnQgZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnUGFzIGRcJ2F1dG9yaXNhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cmUgbm9uIHZhbGlkZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXJhbcOodHJlcyBkZSByZWNoZXJjaGUgbm9uIHZhbGlkZXMgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBhZmZpY2jDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBkXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBkXCdpbmNpZGVudCBhY3R1ZWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnZW50cmUgbGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWN0aW9ucyBkZSBjbGFzc2UgcG91ciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU8OpbGVjdGlvbm5lciB1bmUgb3UgcGx1c2lldXJzIGNsYXNzZXMgcG91ciByZXN0cmVpbmRyZSBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHPDqWxlY3Rpb25uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWN0aW9ucyBkZSBjbGFzc2UgcG91ciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1PDqWxlY3Rpb25uZXIgdW5lIG91IHBsdXNpZXVycyBjbGFzc2VzIHBvdXIgcmVzdHJlaW5kcmUgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzw6lsZWN0aW9ubmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pcXVlIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIGRlIHLDqWbDqXJlbmNlbWVudCBkZXMgbGllbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2kgY2UgbGllbiBzXCdhcHBsaXF1ZSDDoCBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBvdSDDoCBsYSB2ZXJzaW9uIHN0YXRpcXVlIGRlIGxcJ29iamV0IGRlIHLDqWbDqXJlbmNlLiBMZSBjYWxjdWwgZGUgbFwnw6l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50IG5cJ2VzdCBlZmZlY3R1w6kgcXVlIHBvdXIgbGVzIGxpZW5zIGR5bmFtaXF1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU8OpbGVjdGlvbm5leiBsXCdhdHRyaWJ1dCBwYXIgbGVxdWVsIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc2Vyb250IHJlY2hlcmNow6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgc3RydWN0dXJlIGRlIGJhc2UgblwnZXN0IHBhcyB2YWxpZGUuIFZldWlsbGV6IGZvdXJuaXIgdW4gaGFjaGFnZSBhdmVjIGRlcyBkb25uw6llcyBhdSBmb3JtYXQgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdJbCBlc3QgbsOpY2Vzc2FpcmUgZGUgY29tbWVuY2VyIGxhIGNoYcOubmUgWUFNTCBwYXIgIi0tLSIuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0ltcG9zc2libGUgZGUgcHVyZ2VyIGxhIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0F1Y3VuIGNoYW1wIGR5bmFtaXF1ZSBwZXJ0aW5lbnQgblwnYSDDqXTDqSB0cm91dsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW1wb3NzaWJsZSBkXCdpbnPDqXJlciBkYW5zIGxhIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5zw6lyw6kgMCBsaWduZXMgZGFucyBsYSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTm9tYnJlIG1heGltYWwgZFwndW4gw6lsw6ltZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ0NoYcOubmUgZGUgdmVyc2lvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJldXIgZGUgc3luY2hyb25pc2F0aW9uIGRlcyBkw6lmaW5pdGlvbnMuIFZldWlsbGV6IHbDqXJpZmllciBsZSBqb3VybmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1ZvdXMgYXZleiBkZXMgZMOpZmluaXRpb25zIElUU01Db25maWdJdGVtIHF1aSBuZSBzb250IHBhcyBzeW5jaHJvbmlzw6llcy4gVmV1aWxsZXogZMOpcGxveWVyIHZvcyBjaGFuZ2VtZW50cyBkZSBjaGFtcHMgZHluYW1pcXVlcyBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYWludGVuYW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUHLDqXZ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1LDqXBhcmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRyYWl0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUsOpdmlzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWdWUgZFwnZW5zZW1ibGUgZXQgY29uZmlybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGF0aW9uIGRlIGNsYXNzZXMvcsO0bGVzIGV0IGRlIGxldXJzIGNoYW1wcyBjb25uZXhlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1VuZSBlcnJldXIgc1wnZXN0IHByb2R1aXRlIGxvcnMgZGUgbFwnaW1wb3J0YXRpb24gZGUgbGEgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gQ2FjaMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBNb250csOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtZXQgZFwnw6l0ZW5kcmUgbGVzIGNvbmRpdGlvbnMgZGUgcmVjaGVyY2hlIGRhbnMgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuIEdyw6JjZSDDoCBjZXR0ZSBmb25jdGlvbm5hbGl0w6ksIHZvdXMgcG91dmV6IHJlY2hlcmNoZXIsIHBhciBleGVtcGxlLCBsZSBub20gZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYXZlYyBkZXMgY29uZGl0aW9ucyB0ZWxsZXMgcXVlICIoKmtleTEqJiYqa2V5MiopIiBvdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1ldCBkXCfDqXRlbmRyZSBsZXMgY29uZGl0aW9ucyBkZSByZWNoZXJjaGUgZGFucyBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuIEF2ZWMgY2V0dGUgZm9uY3Rpb25uYWxpdMOpLCB2b3VzIHBvdXZleiByZWNoZXJjaGVyIHBhciBleGVtcGxlIGxlIG5vbSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGRlcyBjb25kaXRpb25zIHRlbGxlcyBxdWUgIigqa2V5MSomJiprZXkyKikiIG91ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnSUMgYXNzaWduw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIGFmZmVjdMOpcyDDoCBsXCdlbnRyZXByaXNlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSSBhdHRyaWJ1w6lzIMOgIGxcJ3V0aWxpc2F0ZXVyIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnUGFyYW3DqHRyZXMgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnVsOpcmlmaWVyIGxhIHByw6lzZW5jZSBkXCd1biBub20gdW5pcXVlIHVuaXF1ZW1lbnQgZGFucyBsYSBtw6ptZSBjbGFzc2UgZGUgQ29uZmlnSXRlbSAoImNsYXNzIikgb3UgZ2xvYmFsZW1lbnQgKCJnbG9iYWwiKSwgY2UgcXVpIHNpZ25pZmllIHF1ZSBjaGFxdWUgQ29uZmlnSXRlbSBleGlzdGFudCBlc3QgcHJpcyBlbiBjb21wdGUgbG9ycyBkZSBsYSByZWNoZXJjaGUgZGUgZG91YmxvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzY2jDqW1hIGRlIGTDqW5vbWluYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzeXN0w6htZSBkZSBudW3DqXJvdGF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzY2jDqW1hIGRlIGNoYcOubmUgZGUgdmVyc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdTw6lsZWN0aW9ubmV6IGxlcyBhdHRyaWJ1dHMgcXVpIGTDqWNsZW5jaGVudCBsYSBjcsOpYXRpb24gZFwndW5lIG5vdXZlbGxlIHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1PDqWxlY3Rpb25uZXogbGVzIGNhdMOpZ29yaWVzIMOgIGFmZmVjdGVyIMOgIGNldHRlIGNsYXNzZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gY29sb25uZSBwb3VyIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbG9ubmVzIHBvdXZhbnQgw6p0cmUgZmlsdHLDqWVzIGRhbnMgbGEgdnVlIGRcJ2Vuc2VtYmxlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50LiBSZW1hcnF1ZSA6IHNldWxzIGxlcyBhdHRyaWJ1dHMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBldCBsZXMgY2hhbXBzIGR5bmFtaXF1ZXMgKER5bmFtaWNGaWVsZF9OYW1lWCkgc29udCBhdXRvcmlzw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0Fqb3V0IGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ8OJZGl0aW9uIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBxdWkgcGVybWV0IGxcJ2VucmVnaXN0cmVtZW50IGRhbnMgbFwnaGlzdG9yaXF1ZSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IHBvdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBxdWkgbWV0IMOgIGpvdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsZXVyIGTDqWZpbml0aW9uIGFjdHVlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3RvcmlxdWUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnSW1wcmVzc2lvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZyBpdGVtIHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQXJib3Jlc2NlbmNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xlcyBDb25maWdJdGVtcyBkZXMgY2xhc3NlcyBzdWl2YW50ZXMgbmUgc2Vyb250IHBhcyBzdG9ja8OpcyBzdXIgbGUgc2VydmV1ciBFbGFzdGljc2VhcmNoLiBQb3VyIGFwcGxpcXVlciBjZWxhIGF1eCBDSSBleGlzdGFudHMsIGxhIG1pZ3JhdGlvbiBkZXMgQ0kgZG9pdCDDqnRyZSBleMOpY3V0w6llIHZpYSBsYSBjb25zb2xlLCBhcHLDqHMgYXZvaXIgY2hhbmfDqSBjZXR0ZSBvcHRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xlcyBDb25maWdJdGVtcyBhdmVjIGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IHN1aXZhbnRzIG5lIHNlcm9udCBwYXMgc3RvY2vDqXMgc3VyIGxlIHNlcnZldXIgRWxhc3RpY3NlYXJjaC4gUG91ciBhcHBsaXF1ZXIgY2VsYSBhdXggQ0kgZXhpc3RhbnRzLCBsYSBtaWdyYXRpb24gZGVzIENJIGRvaXQgw6p0cmUgZXjDqWN1dMOpZSB2aWEgbGEgY29uc29sZSwgYXByw6hzIGF2b2lyIGNoYW5nw6kgY2V0dGUgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpb24gTGltaXRlIGRcJ8OpbMOpbWVudHMgcGFyIHBhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXNlIGRlIGRvbm7DqWVzIGRlIGdlc3Rpb24gZGUgbGEgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG1vZHVsZSBlbiB2cmFjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiByZWNoZXJjaGUgcm91dGV1ciBiYWNrZW5kIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0Nyw6llciBldCBnw6lyZXIgbGVzIGTDqWZpbml0aW9ucyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0Nyw6llIGRlcyB0aWNrZXRzIHBvdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBkZXMgbW9tZW50cyBwcsOpY2lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdMZXMgY2xpZW50cyBwZXV2ZW50IGNvbnN1bHRlciBsXCdoaXN0b3JpcXVlIGRlcyB2ZXJzaW9ucyBkZSBsXCdJQy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnTGVzIGNsaWVudHMgb250IGxhIHBvc3NpYmlsaXTDqSBkZSBwYXNzZXIgbWFudWVsbGVtZW50IGRcJ3VuZSB2ZXJzaW9uIGhpc3RvcmlxdWUgZGUgQ0kgw6AgbFwnYXV0cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRG9ubsOpZXMgcGFyIGTDqWZhdXQgw6AgdXRpbGlzZXIgc3VyIGxcJ2F0dHJpYnV0IGRlIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4gRXhlbXBsZSA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yIDsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0Rvbm7DqWVzIHBhciBkw6lmYXV0IMOgIHV0aWxpc2VyIHN1ciBsXCdhdHRyaWJ1dCBkZSBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uIEV4ZW1wbGUgOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MyA7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGxlcyBhY3Rpb25zIHBvdXIgbGVzcXVlbGxlcyB1biBib3V0b24gZGUgY29uZmlndXJhdGlvbiBlc3QgZGlzcG9uaWJsZSBkYW5zIGxlIHdpZGdldCBkZXMgb2JqZXRzIGxpw6lzIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFZldWlsbGV6IG5vdGVyIHF1ZSBjZXMgYWN0aW9ucyBkb2l2ZW50IGF2b2lyIGVucmVnaXN0csOpIGxlcyBmaWNoaWVycyBKUyBldCBDU1Mgc3VpdmFudHMgOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBldCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEw6lmaW5pciB1biBzY2jDqW1hIFRlbXBsYXRlOjpUb29sa2l0IHBvdXIgbGVzIGNoYcOubmVzIGRlIHZlcnNpb24uIFV0aWxpc8OpIHVuaXF1ZW1lbnQgc2kgbGUgbW9kdWxlIGRlIGNoYcOubmUgZGUgdmVyc2lvbiBlc3QgZMOpZmluaSBzdXIgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRMOpZmluaXIgdW4gZW5zZW1ibGUgZGUgY29uZGl0aW9ucyBzb3VzIGxlc3F1ZWxsZXMgdW4gY2xpZW50IGVzdCBhdXRvcmlzw6kgw6Agdm9pciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4gTGVzIGNvbmRpdGlvbnMgcGV1dmVudCDDqXZlbnR1ZWxsZW1lbnQgw6p0cmUgbGltaXTDqWVzIMOgIGNlcnRhaW5zIGdyb3VwZXMgZGUgY2xpZW50cy4gTGUgbm9tIGVzdCBsZSBzZXVsIGF0dHJpYnV0IG9ibGlnYXRvaXJlLiBTaSBhdWN1bmUgYXV0cmUgb3B0aW9uIG5cJ2VzdCBkb25uw6llLCB0b3VzIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc2Vyb250IHZpc2libGVzIGRhbnMgY2V0dGUgY2F0w6lnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgc3VwcHJpbWVyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgb2J0ZW5pciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHJlY2hlcmNoZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBkw6lmaW5pciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IHVuIG1vZHVsZSBkZSB2dWUgZFwnZW5zZW1ibGUgcG91ciBhZmZpY2hlciBsYSBwZXRpdGUgdnVlIGRcJ3VuZSBsaXN0ZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IHNpIGxlcyDDqXRpcXVldHRlcyBkZSB0eXBlIGRlIGxpZW4gZG9pdmVudCDDqnRyZSBhZmZpY2jDqWVzIGRhbnMgbGVzIGNvbm5leGlvbnMgZGUgbsWTdWRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRMOpZmluaXQgZGVzIGV4cHJlc3Npb25zIHLDqWd1bGnDqHJlcyBpbmRpdmlkdWVsbGVtZW50IHBvdXIgY2hhcXVlIGNsYXNzZSBDb25maWdJdGVtIGFmaW4gZGUgdsOpcmlmaWVyIGxlIG5vbSBkdSBDb25maWdJdGVtIGV0IGRcJ2FmZmljaGVyIGxlcyBtZXNzYWdlcyBkXCdlcnJldXIgY29ycmVzcG9uZGFudHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGRpc3BvbmlibGVzIHBvdXIgbGVzIENJIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBjb25zdGl0dcOpZSBkXCd1biBub20gZGUgY2xhc3NlIGV0IGRcJ3VuIHRhYmxlYXUgZGUgY2hhbXBzIGRpc3BvbmlibGVzIHBvdXIgbGEgY2xhc3NlIGNvcnJlc3BvbmRhbnRlLiBMZXMgZW50csOpZXMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgZG9pdmVudCByZXNwZWN0ZXIgbGUgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHBhciBkw6lmYXV0IHBvdXIgbGUgdHJpIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHBhciBkw6lmYXV0IHBvdXIgbGUgdHJpIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBjZXR0ZSBvcMOpcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnb3JkcmUgcGFyIGTDqWZhdXQgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4gVXAgOiBsZSBwbHVzIGFuY2llbiBlc3QgZW4gaGF1dC4gRW4gYmFzIDogbGUgcGx1cyByw6ljZW50IGVuIGhhdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBwYXIgZMOpZmF1dCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4gRW4gaGF1dCA6IGxlIHBsdXMgYW5jaWVuIGVzdCBlbiBoYXV0LiBFbiBiYXMgOiBsZSBwbHVzIHLDqWNlbnQgZW4gaGF1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIHBhciBkw6lmYXV0IGRlcyBDSSBkYW5zIGxhIHZ1ZSBkXCdlbnNlbWJsZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBjb25zdGl0dcOpZSBkXCd1biBub20gZGUgY2xhc3NlIGV0IGRcJ3VuIHRhYmxlYXUgZGUgY2hhbXBzIGRpc3BvbmlibGVzIHBvdXIgbGEgY2xhc3NlIGNvcnJlc3BvbmRhbnRlLiBMZXMgZW50csOpZXMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgZG9pdmVudCByZXNwZWN0ZXIgbGUgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEw6lmaW5pdCBsYSBwcm9mb25kZXVyIHBhciBkw6lmYXV0IGRlcyByZWxhdGlvbnMgw6AgYWZmaWNoZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRlIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYWZmaWNow6kgcGFyIGTDqWZhdXQgcG91ciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRlIHJlY2hlcmNoZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhZmZpY2jDqSBwYXIgZMOpZmF1dCBwb3VyIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uIEV4ZW1wbGUgOiAiS2V5IiBkb2l0IGNvbnRlbmlyIGxlIG5vbSBkdSBjaGFtcCBkeW5hbWlxdWUsIGRhbnMgY2UgY2FzICJYIiwgIkNvbnRlbnQiIGRvaXQgY29udGVuaXIgbGEgdmFsZXVyIGR1IGNoYW1wIGR5bmFtaXF1ZSBlbiBmb25jdGlvbiBkdSB0eXBlIGRlIGNoYW1wIGR5bmFtaXF1ZSwgVGV4dCA6ICJ1biB0ZXh0ZSIsIERyb3Bkb3duIDogIjEiLCBEYXRlL1RpbWUgOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQiIDogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNiA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDAgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTMgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNiA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjMgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTkgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTkgO2V0IG91ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlayA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTciIDsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZSBzb3VzLW9iamV0IHBhciBkw6lmYXV0IGRlIGxhIGNsYXNzZSAiSVRTTUNvbmZpZ0l0ZW0iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGRpc3BvbmlibGVzIHBvdXIgbGVzIENJIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBjb25zdGl0dcOpZSBkXCd1biBub20gZGUgY2xhc3NlIGV0IGRcJ3VuIHRhYmxlYXUgZGUgY2hhbXBzIGRpc3BvbmlibGVzIHBvdXIgbGEgY2xhc3NlIGNvcnJlc3BvbmRhbnRlLiBMZXMgZW50csOpZXMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgZG9pdmVudCByZXNwZWN0ZXIgbGUgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBoYXV0ZXVyIGR1IGNvbXBvc2FudCBkZSBsXCfDqWRpdGV1ciBkZSB0ZXh0ZSBlbnJpY2hpIHBvdXIgY2V0IMOpY3Jhbi4gRW50cmV6IHVuIG5vbWJyZSAocGl4ZWxzKSBvdSB1bmUgdmFsZXVyIGVuIHBvdXJjZW50YWdlIChyZWxhdGl2ZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlIG5vbWJyZSBkZSBsaWduZXMgcG91ciBsXCfDqWRpdGV1ciBkZSBkw6lmaW5pdGlvbiBkZSBDSSBkYW5zIGxcJ2ludGVyZmFjZSBkXCdhZG1pbmlzdHJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnb3JkcmUgZGVzIMOpdGF0cyBpbmNpZGVudHMsIGRlIGhhdXQgKHBhciBleGVtcGxlLCBjcmljaXRhbCkgw6AgYmFzIChwYXIgZXhlbXBsZSwgZm9uY3Rpb25uZWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IHBlcnRpbmVudHMgZGFucyBsZXNxdWVscyBsZXMgdGlja2V0cyBsacOpcyBwZXV2ZW50IGFmZmVjdGVyIGxlIHN0YXR1dCBkXCd1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIGRlcyBDSSBkYW5zIGxhIHZ1ZSBjb21wbGV4ZSBkZSBsYSB0YWJsZSBkZXMgbGllbnMgcG91ciB0b3V0ZXMgbGVzIGNsYXNzZXMgZGUgQ0kuIFNcJ2lsIG5cJ3kgYSBwYXMgZFwnZW50csOpZSwgbGVzIGNvbG9ubmVzIHBhciBkw6lmYXV0IHNvbnQgYWZmaWNow6llcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIGRlcyBDSSBkYW5zIGxhIHZ1ZSBjb21wbGV4ZSBkZSBsYSB0YWJsZSBkZXMgbGllbnMsIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBwcsOpY8OpZMOpZSBkdSBub20gZGUgbGEgY2xhc3NlIGV0IGRlIGRldXggcG9pbnRzIChwYXIgZXhlbXBsZSA6IE9yZGluYXRldXI6IDopLiBRdWVscXVlcyBhdHRyaWJ1dHMgZGUgQ0kgc29udCBjb21tdW5zIMOgIHRvdXMgbGVzIENJIChleGVtcGxlIHBvdXIgbGEgY2xhc3NlIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20sIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tKSA6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBvdXIgYWZmaWNoZXIgbGVzIGF0dHJpYnV0cyBkZSBDSSBpbmRpdmlkdWVscyB0ZWxzIHF1ZSBkw6lmaW5pcyBkYW5zIGxhIGTDqWZpbml0aW9uIGRlIENJLCBpbCBjb252aWVudCBkXCd1dGlsaXNlciBsZSBzY2jDqW1hIHN1aXZhbnQgKGV4ZW1wbGUgcG91ciBsYSBjbGFzc2UgT3JkaW5hdGV1cikgOiBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6MSwgT3JkaW5hdGV1cjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6MiwgT3JkaW5hdGV1cjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBTXCdpbCBuXCd5IGEgcGFzIGRcJ2VudHLDqWUgcG91ciB1bmUgY2xhc3NlIENJLCBsZXMgY29sb25uZXMgcGFyIGTDqWZhdXQgc29udCBhZmZpY2jDqWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIHBvdXIgIkFjdGlvbiIgYXUgdHJvaXNpw6htZSBuaXZlYXUgZGUgbGEgc3RydWN0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIGF1IHByZW1pZXIgbml2ZWF1IGRlIGxhIHN0cnVjdHVyZSBkZSBsXCdBQ0wgZGVzIMOpbMOpbWVudHMgZGUgbGEgQ29uZmlnIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIGF1IGRldXhpw6htZSBuaXZlYXUgZGUgbGEgc3RydWN0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pdCBxdWVsIHR5cGUgZGUgbGllbiAobm9tbcOpIGR1IHBvaW50IGRlIHZ1ZSBkdSB0aWNrZXQpIHBldXQgYWZmZWN0ZXIgbGUgc3RhdHV0IGRcJ3VuIENJIGxpw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRMOpZmluaXQgcXVlbCB0eXBlIGRlIHRpY2tldCBwZXV0IGFmZmVjdGVyIGxlIHN0YXR1dCBkXCd1biBDSSBsacOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ01pc2Ugw6Agam91ciBkZSBsYSBkw6lmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnU3VwcHJpbWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ291bGV1ciBkZSBsXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnw4l0YXQgZGUgZMOpcGxvaWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2F0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBkZSBjaGFtcCBkeW5hbWlxdWUgcXVpIG1hcnF1ZSBsZXMgZMOpZmluaXRpb25zIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBjb21tZSDDqXRhbnQgZMOpc3luY2hyb25pc8OpZXMsIHNpIGxlcyBjaGFtcHMgZHluYW1pcXVlcyBxdVwnZWxsZXMgY29udGllbm5lbnQgY2hhbmdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDaGFtcHMgZHluYW1pcXVlcyBhZmZpY2jDqXMgZGFucyBsXCfDqWNyYW4gZGVzIGNoYW1wcyBJVFNNIHN1cHBsw6ltZW50YWlyZXMgZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDaGFtcHMgZHluYW1pcXVlcyBhZmZpY2jDqXMgZGFucyBsXCfDqWNyYW4gZGUgc3ludGjDqHNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2hhbXBzIGR5bmFtaXF1ZXMgYWZmaWNow6lzIGRhbnMgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWN0aXZlIGxhIGZvbmN0aW9uIGRcJ2FjdGlvbiBlbiBibG9jIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcG91ciBxdWUgbGUgZnJvbnRlbmQgZGUgbFwnYWdlbnQgcHVpc3NlIHRyYXZhaWxsZXIgc3VyIHBsdXMgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gw6AgbGEgZm9pcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FjdGl2ZSBsYSBmb25jdGlvbiBkXCdhY3Rpb24gZW4gYmxvYyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHVuaXF1ZW1lbnQgcG91ciBsZXMgZ3JvdXBlcyByw6lwZXJ0b3Jpw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bGUgZFwnw6l2w6luZW1lbnQgcG91ciBkw6lmaW5pciBsZSBzdGF0dXQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gc3VyIGxlIGxpZW4gdGlja2V0LWNvbmZpZ2l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NoYW1wcyBkZSBsXCdpbmRleCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLCB1dGlsaXPDqXMgcG91ciBsYSByZWNoZXJjaGUgZW4gdGV4dGUgaW50w6lncmFsLiBMZXMgY2hhbXBzIHNvbnQgw6lnYWxlbWVudCBzdG9ja8OpcywgbWFpcyBuZSBzb250IHBhcyBvYmxpZ2F0b2lyZXMgcG91ciBsYSBmb25jdGlvbm5hbGl0w6kgZ2xvYmFsZS4gTFwnaW5jbHVzaW9uIGRlcyBwacOoY2VzIGpvaW50ZXMgcGV1dCDDqnRyZSBkw6lzYWN0aXbDqWUgZW4gbWV0dGFudCBsXCdlbnRyw6llIMOgIDAgb3UgZW4gbGEgc3VwcHJpbWFudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NoYW1wcyBzdG9ja8OpcyBkYW5zIGxcJ2luZGV4IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcXVpIHNvbnQgdXRpbGlzw6lzIHBvdXIgZFwnYXV0cmVzIGNob3NlcyBxdWUgbGVzIHJlY2hlcmNoZXMgZW4gdGV4dGUgaW50w6lncmFsLiBQb3VyIHVuZSBmb25jdGlvbm5hbGl0w6kgY29tcGzDqHRlLCB0b3VzIGxlcyBjaGFtcHMgc29udCBvYmxpZ2F0b2lyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnRW5yZWdpc3RyZW1lbnQgZHUgbW9kdWxlIEdlbmVyaWNJbnRlcmZhY2UgcG91ciBsYSBjb3VjaGUgZFwnaW52b2NhdGlvbiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnRW5yZWdpc3RyZW1lbnQgZHUgbW9kdWxlIEdlbmVyaWNJbnRlcmZhY2UgcG91ciBsYSBjb3VjaGUgZFwnaW52b2NhdGlvbiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0VucmVnaXN0cmVtZW50IGR1IG1vZHVsZSBHZW5lcmljSW50ZXJmYWNlIHBvdXIgbGEgY291Y2hlIGRcJ2ludm9jYXRpb24gQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdBcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfDiXRhdCBkZSBsXCdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV0IGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IGRhbnMgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXQgbGVzIMOpdGF0cyBkXCdpbmNpZGVudHMgZGFucyBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ05vbWJyZSBtYXhpbXVtIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGxlIHLDqXN1bHRhdCBkZSBjZXR0ZSBvcMOpcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsZSBwZXJtZXR0YW50IGRlIHbDqXJpZmllciBsZSBncm91cGUgcmVzcG9uc2FibGUgZFwndW5lIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bGUgcGVybWV0dGFudCBkZSB2w6lyaWZpZXIgbGUgZ3JvdXBlIHJlc3BvbnNhYmxlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsZSBwZXJtZXR0YW50IGRlIGfDqW7DqXJlciBkZXMgc3RhdGlzdGlxdWVzIHN1ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tIGR1IG1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtw6lybyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9tYnJlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGNoYXF1ZSBwYWdlIGRcJ3VuIHLDqXN1bHRhdCBkZSByZWNoZXJjaGUgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vbWJyZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6AgYWZmaWNoZXIgZGFucyBjaGFxdWUgcGFnZSBkXCd1biByw6lzdWx0YXQgZGUgcmVjaGVyY2hlIGRhbnMgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnTGVzIG9iamV0cyDDoCByZWNoZXJjaGVyLCBsZSBub21icmUgZFwnZW50csOpZXMgZXQgbGVzIGF0dHJpYnV0cyDDoCBhZmZpY2hlci4gTGVzIGF0dHJpYnV0cyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRvaXZlbnQgw6p0cmUgZXhwbGljaXRlbWVudCBzdG9ja8OpcyB2aWEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVnVlIGRcJ2Vuc2VtYmxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsZXMgY2F0w6lnb3JpZXMgZGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyBmaWx0cmVzIGRlIGNvbG9ubmUgZGUgbFwnYXBlcsOndSBkZXMgcGV0aXRzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4gUmVtYXJxdWUgOiBzaSBsYSB2YWxldXIgIkFjdGlmIiBlc3QgZml4w6llIMOgIDAsIGxlcyBhZ2VudHMgbmUgcG91cnJvbnQgcGFzIG1vZGlmaWVyIGxlcyBwYXJhbcOodHJlcyBkZSBjZSBncm91cGUgZGFucyBsZXVycyBwcsOpZsOpcmVuY2VzIHBlcnNvbm5lbGxlcywgbWFpcyBsZXMgYWRtaW5pc3RyYXRldXJzIHBvdXJyb250IHRvdWpvdXJzIG1vZGlmaWVyIGxlcyBwYXJhbcOodHJlcyBhdSBub20gZFwndW4gYXV0cmUgdXRpbGlzYXRldXIuIFV0aWxpc2V6IFwnUHJlZmVyZW5jZUdyb3VwXCcgcG91ciBjb250csO0bGVyIGRhbnMgcXVlbGxlIHpvbmUgY2VzIHBhcmFtw6h0cmVzIGRvaXZlbnQgw6p0cmUgYWZmaWNow6lzIGRhbnMgbFwnaW50ZXJmYWNlIHV0aWxpc2F0ZXVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGEgY291bGV1ciBkZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbFwnZXhlbXBsZSBkZSBncm91cGVzIGRlIHBlcm1pc3Npb24gZGVzIGF0dHJpYnV0cyBnw6luw6lyYXV4IGR1IGNhdGFsb2d1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbm9tcyBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbnVtw6lyb3RhdGlvbiBkZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiB1bmlxdWVtZW50IHBvdXIgbGVzIGdyb3VwZXMgcsOpcGVydG9yacOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGNoYcOubmUgZGUgdmVyc2lvbiBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGxhIGJvw650ZSDDoCBvdXRpbHMgZHUgbW9kw6hsZSBkZSBjaGHDrm5lIGRlIHZlcnNpb24gcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlIGTDqWNsZW5jaGV1ciBkZSB2ZXJzaW9uIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcm91cGUgZGUgcGVybWlzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCdhY3Rpb24gZFwnYXR0YWNoZW1lbnQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZFwnYXJib3Jlc2NlbmNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRcJ2Fqb3V0IGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBlbiB2cmFjIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIG1vZGlmaWNhdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F0dHJpYnV0ICVzIG1pcyDDoCBqb3VyIGRlICIlcyIgw6AgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkXCdpbXByZXNzaW9uIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbMOoZ2VzIHJlcXVpcyBwb3VyIHN1cHByaW1lciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1JlY2hlcmNoZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGF1dG9tYXRpcXVlbWVudCBsXCfDqXRhdCBkXCdpbmNpZGVudCBkXCd1biBDSSBsb3JzcXVcJ3VuIHRpY2tldCBlc3QgbGnDqSDDoCB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQgZGFucyBsXCfDqWNyYW4gZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ8OpdGF0IGRlIGxcJ2luY2lkZW50IGRhbnMgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcXVpIHBlcm1ldCBkZSBsaWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIHVuIGF1dHJlIG9iamV0IGRhbnMgbGEgdnVlIHpvb20gZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhY2PDqWRlciDDoCBsXCdoaXN0b3JpcXVlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGFjY8OpZGVyIMOgIGxcJ2hpc3RvcmlxdWUgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIHN1cHByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIHNhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhZmZpY2hlciBsZXMgbGllbnMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzb3VzIGZvcm1lIGRcJ2FyYm9yZXNjZW5jZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgZHVwbGlxdWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGR1cGxpcXVlciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBtb2RpZmllciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciByZXZlbmlyIMOgIGxhIHZ1ZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBpbXByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBlcm1ldHRhbnQgZGUgem9vbWVyIHN1ciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgbFwnaGlzdG9yaXF1ZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIChvcmRyZSBpbnZlcnNlKSBkYW5zIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTGEgY2F0w6lnb3JpZSBwYXIgZMOpZmF1dCBxdWkgZXN0IGFmZmljaMOpZSBzaSBhdWN1bmUgblwnZXN0IHPDqWxlY3Rpb25uw6llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnTFwnaWRlbnRpZmlhbnQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24sIHBhciBleGVtcGxlIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBMYSB2YWxldXIgcGFyIGTDqWZhdXQgZXN0IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnRMOpY2xlbmNoZSBhdXRvbWF0aXF1ZW1lbnQgbFwnaW52b2tlciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc3Npb24gZGUgbGEgY2hhw65uZSBkZSBsYSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gQ2hhw65uZSBkZSBjYXJhY3TDqHJlcyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnRMOpY2xlbmNoZXVyIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NpIGxcJ2V4w6ljdXRpb24gZGUgQ29uZmlnSXRlbUFDTCBwZXV0IMOqdHJlIMOpdml0w6llIGVuIHbDqXJpZmlhbnQgbGVzIGTDqXBlbmRhbmNlcyBkZXMgY2hhbXBzIG1pcyBlbiBjYWNoZS4gQ2VsYSBwZXV0IGFtw6lsaW9yZXIgbGVzIHRlbXBzIGRlIGNoYXJnZW1lbnQgZGVzIGZvcm11bGFpcmVzLCBtYWlzIGRvaXQgw6p0cmUgZMOpc2FjdGl2w6kgc2kgbGVzIG1vZHVsZXMgQUNMTSBkb2l2ZW50IMOqdHJlIHV0aWxpc8OpcyBwb3VyIGxlcyB0eXBlcyBJVFNNQ29uZmlnSXRlbSBldCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXVlbGxlcyBzb250IGxlcyBpbmZvcm1hdGlvbnMgZ8OpbsOpcmFsZXMgcXVpIGZpZ3VyZW50IGRhbnMgbFwnZW4tdMOqdGUgPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdtb25kaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHLDqXByb2R1Y3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGlmJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVIDogMTcsNSBwb3VjZXMgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVIDogMjEgcG91Y2VzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VSA6IDI2LDI1IHBvdWNlcyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VSA6IDMxLDUgcG91Y2VzICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFjayAxOSBwb3VjZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVIDogMSw3NSBwb3VjZXMgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVSA6IDM1IHBvdWNlcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnQ3LDqW1haWxsw6hyZSBkZSAyMSBwb3VjZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVIDogMzgsNSBwb3VjZXMgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdDcsOpbWFpbGzDqHJlIGRlIDIzIHBvdWNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgcG91Y2VzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVIDogNDIgcG91Y2VzICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVIDogNDcsMjUgcG91Y2VzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVIDogMyw1IHBvdWNlcyAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVSA6IDUyLjUgcG91Y2VzICgxMzMuMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwb3VjZXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1UgOiA1Nyw3NSBwb3VjZXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBvdWNlcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VSA6IDYzIHBvdWNlcyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHBvdWNlcyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVUgOiA2OC4yNSBwb3VjZXMgKDE3My4zNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVSA6IDUsMjUgcG91Y2VzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVSA6IDczLDUgcG91Y2VzICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBvdWNlcyAoMTEwMCBtbSkgOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VSA6IDc4Ljc1IHBvdWNlcyAoMjAwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHBvdWNlcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFUgOiA4NCBwb3VjZXMgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VSA6IDcgcG91Y2VzICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VSA6IDgsNzUgcG91Y2VzICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VSA6IDEwLDUgcG91Y2VzICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1UgOiAxMiwyNSBwb3VjZXMgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VSA6IDE0IHBvdWNlcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVIDogMTUsNzUgcG91Y2VzICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdDb21wdGFiaWxpdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQXR0cmlidXRpb24gZFwnYWRyZXNzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIGFuYWxvZ2lxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUeXBlIGRcJ2FwcGFyZWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpdMOpIGRlIGxhIGJhdHRlcmllIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVHlwZSBkZSBiYXR0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0LDonRpbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYWNlIGRlIGJ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnVU5JVMOJIENFTlRSQUxFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NsYXNzZSBkXCd1bml0w6kgY2VudHJhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaXTDqSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpdMOpIHBhciBjYXJ0ZSBncmFwaGlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGxhIGNhcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVjdGV1ciBkZSBjYXJ0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVHlwZSBkZSBjYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgZGUgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0xvZ2ljaWVsIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXTDqWdvcmllIGRlIGNsaWVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnSG9ybG9nZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVml0ZXNzZSBkXCdob3Jsb2dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBkZSBzaWduYXR1cmUgZGUgY29kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgZGUgY29uZsOpcmVuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgY29uc3VsdGF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0ZXIgbGUgZGlzdHJpYnV0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgY29udGVuZXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cGUgZGUgY29udHJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0R1csOpZSBkdSBjb250cmF0IGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0R1csOpZSBkdSBjb250cmF0IGp1c3F1XCfDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUw6lsw6lwaG9uZSBzYW5zIGZpbCAodMOpbMOpcGhvbmUgREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pdMOpIGRlIGNvw7t0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTm9tYnJlIGRlIGxpY2VuY2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEYXRlIGRlIGNyw6lhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnU3VwcG9ydCBzdXIgbWVzdXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFLDqXNlcnbDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2VydmV1ciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdGUgZGUgbGEgZmFjdHVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0ZSBkZSBsXCdhcnLDqnTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0ZSBkdSBtYW5kYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0ZSBkZSBwdWJsaWNhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnQnVyZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBkZSBzaWduYXR1cmUgZGUgZG9jdW1lbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFjayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2F0cyBkZSBjb3VycmllciDDqWxlY3Ryb25pcXVlIChjZXJ0aWZpY2F0cyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0NvbnRyYXQgZGUgdHJhdmFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0FkcmVzc2UgSVAgZmluYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRmluIGRlIGxcJ2FpZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEYXRlIGRcJ2V4cGlyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Rpc3F1ZSBkdXIgZXh0ZXJuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1BhcmUtZmV1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTdG9ja2FnZSBkXCfDqW5lcmdpZSBwYXIgdm9sYW50IGRcJ2luZXJ0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWN0ZXVyIGRlIGZvcm1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgZnJhbmNoaXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnTG9naWNpZWxzIGdyYXR1aXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9ucyBnw6luw6lyYWxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0NhcnRlcyBncmFwaGlxdWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdDYXJ0ZSBncmFwaGlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdNYXTDqXJpZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2TDqGxlIGRlIG1hdMOpcmllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdQb2lkcyBkdSBtYXTDqXJpZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0Nhc3F1ZSBkXCfDqWNvdXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xlIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0dlc3Rpb24gZGVzIGlkZW50aXTDqXMgZXQgZGVzIGFjY8OocyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTnVtw6lybyBkXCdpbnZlbnRhaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGxhIGZhY3R1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdDbGF2aWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0ZXVyIExDRCAow6ljcmFuIMOgIGNyaXN0YXV4IGxpcXVpZGVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRldXIgw6AgTEVEIChkaW9kZSDDqWxlY3Ryb2x1bWluZXNjZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgZml4ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdPcmRpbmF0ZXVyIHBvcnRhYmxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDb3VjaGUgMSA6IENvdWNoZSBwaHlzaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDb3VjaGUgMiA6IENvdWNoZSBsaWFpc29uIGRlIGRvbm7DqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDb3VjaGUgMyA6IENvdWNoZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NvdWNoZSAzIDogQ291Y2hlIHLDqXNlYXUgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDb3VjaGUgNCA6IENvdWNoZSB0cmFuc3BvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0NvdWNoZSA1IDogY291Y2hlIHNlc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ291Y2hlIDYgOiBjb3VjaGUgZGUgcHLDqXNlbnRhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0NvdWNoZSA3IDogQ291Y2hlIGFwcGxpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXQgZGUgYmFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDbMOpIGRlIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwZSBkZSBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdQw6lyaW9kZSBkZSBsaWNlbmNlIGR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUMOpcmlvZGUgZGUgbGljZW5jZSBqdXNxdVwnw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIGF1IHBob3NwaGF0ZSBkZSBmZXIgbGl0aGnDqSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIGF1IGxpdGhpdW0taW9uIChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnQ29udHJhdCBkZSBwcsOqdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dcOpIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnQ2FwYWNpdMOpIGRlIGNoYXJnZSBtYXhpbWFsZSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTcOpbW9pcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUeXBlIGRlIG3DqW1vaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ051bcOpcm8gZGUgdMOpbMOpcGhvbmUgbW9iaWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsZS9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZMOobGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwdGlvbiBkdSBtb2TDqGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1LDqXNvbHV0aW9uIGR1IG1vbml0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhaWxsZSBkdSBtb25pdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ1NvdXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnUsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hdGlvbnMgc3VyIGxlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9ucyBzdXIgbGUgcsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQ291Y2hlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBuaWNrZWwtY2FkbWl1bSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBuaWNrZWwtaHlkcnVyZSBtw6l0YWxsaXF1ZSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQWNjb3JkIGRlIG5vbi1kaXZ1bGdhdGlvbiAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0Nhcm5ldCBkZSBub3Rlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ05vbWJyZSBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTm9tYnJlIGRlIG1vZHVsZXMgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ05vbWJyZSBkZSBjYXJ0ZXMgZ3JhcGhpcXVlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRldXIgT0xFRCAoZGlvZGUgw6lsZWN0cm9sdW1pbmVzY2VudGUgb3JnYW5pcXVlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdGcmFpcyBkZSBmb25jdGlvbm5lbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGNvbW1hbmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQXV0cmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTb3J0aWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBwYXJ0ZW5hcmlhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ051bcOpcm8gZGUgdMOpbMOpcGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1R5cGUgZGUgdMOpbMOpcGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdDxZN1cnMgcGh5c2lxdWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnRm91cm5pdHVyZSBkXCfDqW5lcmdpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0FjaGV0w6kgw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1Byb2ZvbmRldXIgZHUgcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaXTDqXMgZGUgcmFjayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0NoYW1icmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdDYXJ0ZSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdCBkZSB2ZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBzYXRlbGxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgcGxvbWItYWNpZGUgc2NlbGzDqWUgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOdW3DqXJvIGRlIHPDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdMb2dpY2llbCBzZXJ2ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIHNlcnZpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfDiXRpcXVldHRlIGRlIHNlcnZpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwZSBkZSBwcmlzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ0xvZ2ljaWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSW50ZXJ2ZW5hbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdBZHJlc3NlIElQIGRlIGTDqXBhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1N0b2NrYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGl0aW9uIGRlIHN0b2NrYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUsOpc3Vtw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDbGllbnQgbMOpZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdGaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSBkZSBsYSBjYXJ0ZSBncmFwaGlxdWUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdGV1ciDDoCDDqWNyYW4gdGFjdGlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDYXNxdWUgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/fr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEb25uw6llcyBnw6luw6lyYWxlcyBkZSBmb25jdGlvbm5lbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcmVxdcOqdGUgZW50cmFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcsOpcG9uc2Ugc29ydGFudGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZFwndW5lIGNsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZGVzIHLDtGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0xlcyBlbnNlbWJsZXMgZGUgY2xhc3NlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdJY2ksIHZvdXMgcG91dmV6IGltcG9ydGVyIGRlcyBjbGFzc2VzIFJlYWR5MkltcG9ydCBxdWkgcHLDqXNlbnRlbnQgbm9zIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBsZXMgcGx1cyBjb3VyYW50cy4gVmV1aWxsZXogbm90ZXIgcXVlIGNlcnRhaW5lcyBjb25maWd1cmF0aW9ucyBzdXBwbMOpbWVudGFpcmVzIHBldXZlbnQgw6p0cmUgbsOpY2Vzc2FpcmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdNaXNlIMOgIGpvdXIgZGVzIGVudGl0w6lzIGV4aXN0YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnRlciBsZXMgcGFxdWV0cyBkZSBjbGFzc2VzIGRlIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc3NlIGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdSw7RsZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cmVzIHBvdXIgbGVzIGNsYXNzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnQ2hvaXNpc3NleiB1bmUgY2xhc3NlIHBvdXIgY3LDqWVyIHVuIG5vdXZlbCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OJdGF0IGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpZXIgw6AgdW4gYXV0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ051bcOpcm8gZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gaW52YWxpZGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdMZSBudW3DqXJvIGRcJ3VuIGF1dHJlIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIGxpZXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgc3VwcHJpbWVyIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiA/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xlIG5vbSBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0xlIG5vbSBlc3QgZMOpasOgIHV0aWxpc8OpIHBhciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGxlIG51bcOpcm8gc3VpdmFudCA6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTnVtw6lybyBkZSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOdW3DqXJvIGRlIHZlcnNpb24gZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTGUgbnVtw6lybyBkZSB2ZXJzaW9uIGVzdCBkw6lqw6AgdXRpbGlzw6kgcGFyIGxlcyBDb25maWdJdGVtcyBhdmVjIGxlKHMpIG51bcOpcm8ocykgc3VpdmFudChzKSA6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfDiXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfDiXRhdCBkXCdpbmNpZGVudCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaXF1ZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZW51IGRlIGxcJ2hpc3RvcmlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0RhdGUgZGUgY3LDqWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Z1ZSBkw6l0YWlsbMOpZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcGFyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0F1Y3VuZSBkb25uw6llIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG5cJ2Egw6l0w6kgdHJvdXbDqWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU8OpbGVjdGlvbm5lciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdMYW5jZXIgbGEgcmVjaGVyY2hlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcG91ciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWF1IGRlIHByb2ZvbmRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGF2YW50L2FycmnDqHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ05pdmVhdSBkZSBsaWVucyBtYXhpbXVtIGF0dGVpbnQgcG91ciBDb25maWdJdGVtICEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbnMgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0Rlcm5pw6hyZXMgbW9kaWZpY2F0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdEZXJuacOocmVzIG1vZGlmaWNhdGlvbnMgZWZmZWN0dcOpZXMgcGFyJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVm9zIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnTGVzIGNsYXNzZXMgc3VpdmFudGVzIHNlcm9udCBpbXBvcnTDqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0xlcyByw7RsZXMgc3VpdmFudHMgc2Vyb250IGltcG9ydMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdOb3RleiBxdWUgbGVzIGNoYW1wcyBkeW5hbWlxdWVzIGV0IGxlcyBjbGFzc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRhbnRzIHNlcm9udCDDqWdhbGVtZW50IGNyw6nDqXMgZXQgcXVcJ2lsIG5cJ3kgYSBwYXMgZGUgc3VwcHJlc3Npb24gYXV0b21hdGlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnVm91bGV6LXZvdXMgcG91cnN1aXZyZSA/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0Jlc29pbiBkZSBjbGFzc2VzIGRcJ2V4ZW1wbGVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnTGEgZMOpZmluaXRpb24gblwnZXN0IHBhcyB1biBoYWNoYWdlIFlBTUwgdmFsaWRlLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Z1ZSBkXCdlbnNlbWJsZTogw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIElEIGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdWb3VzIGRldmV6IHPDqWxlY3Rpb25uZXIgYXUgbW9pbnMgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1ZvdXMgblwnYXZleiBwYXMgbGUgZHJvaXQgZGUgbW9kaWZpZXIgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0F1Y3VuZSBkw6lmaW5pdGlvbiBkw6lmaW5pZSBwb3VyIGxhIGNsYXNzZSAlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdMXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAiJXMiIG5cJ2EgcGFzIMOpdMOpIHRyb3V2w6kgZGFucyBsYSBiYXNlIGRlIGRvbm7DqWVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdJbXBvc3NpYmxlIGRlIHN1cHByaW1lciBsXCdJRCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAlcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdBdWN1bmUgdmVyc2lvbiB0cm91dsOpZSBwb3VyIGxcJ0lEIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uICVzICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gSUQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24sIGRlIGR1cGxpY2F0aW9uIG91IGRlIGNsYXNzZSBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdBdWN1biBhY2PDqHMgblwnYSDDqXTDqSBkb25uw6kgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ2hpc3RvcmlxdWUsIGF1Y3VuIElEIGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ2hpc3RvcmlxdWUsIGF1Y3VuIGFjY8OocyBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3V2ZWwgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm91dmVsbGUgdmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnw4l0YXQgZGUgZMOpcGxvaWVtZW50IG1pcyDDoCBqb3VyIChub3V2ZWF1PSVzLCBhbmNpZW49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50IG1pcyDDoCBqb3VyIChub3V2ZWF1PSVzLCBhbmNpZW49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gKElEPSVzKSBzdXBwcmltw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaWVyIMOgICVzICh0eXBlPSVzKSBham91dMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaWVyIMOgICVzICh0eXBlPSVzKSBzdXBwcmltw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0TDqWZpbml0aW9uIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG1pc2Ugw6Agam91ciAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tIG1pcyDDoCBqb3VyIChub3V2ZWF1PSVzLCBhbmNpZW49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidWUgJXMgbWlzIMOgIGpvdXIgZGUgIiVzIiDDoCAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgc3VwcHJpbcOpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBJRCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBvdSBkZSB2ZXJzaW9uIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiwgYXVjdW4gYWNjw6hzIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdMXCdJRCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAlcyBuXCdhIHBhcyDDqXTDqSB0cm91dsOpIGRhbnMgbGEgYmFzZSBkZSBkb25uw6llcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnSW1wcmltw6kgcGFyICVzIMOgICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSw6lmw6lyZW5jZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0lEIGRlIGNsYXNzZSBpbnZhbGlkZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gSUQgZGUgY2xhc3NlIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdBdWN1bnMgZHJvaXRzIGRcJ2FjY8OocyBwb3VyIGNldHRlIGNsYXNzZSBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdBdWN1bnMgcsOpc3VsdGF0cyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ8OpbMOpbWVudCwgYXVjdW5zIGRyb2l0cyBkXCdhY2PDqHMgcG91ciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIGludHJvdXZhYmxlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnQXVjdW5lIHZlcnNpb24gdHJvdXbDqWUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29ww6lyYXRpb25uZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2F2ZXJ0aXNzZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTFwnw6l0YXQgZGUgZMOpcGxvaWVtZW50IGRlIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xcJ8OpdGF0IGRcJ2luY2lkZW50IGRlIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1BhcyBkZSBwZXJtaXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRyZSBub24gdmFsaWRlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcmFtw6h0cmVzIGRlIHJlY2hlcmNoZSBub24gdmFsaWRlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnQWZmaWNoZXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGRcJ8OpdGF0IGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGRcJ8OpdGF0IGFjdHVlbCBkZSBsXCdpbmNpZGVudCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY3Rpb25zIGRlIGNsYXNzZSBwb3VyIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTw6lsZWN0aW9ubmVyIHVuZSBvdSBwbHVzaWV1cnMgY2xhc3NlcyBwb3VyIHJlc3RyZWluZHJlIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc8OpbGVjdGlvbm5hYmxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY3Rpb25zIGRlIGNsYXNzZSBwb3VyIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU8OpbGVjdGlvbm5lciB1bmUgb3UgcGx1c2lldXJzIGNsYXNzZXMgcG91ciByZXN0cmVpbmRyZSBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHPDqWxlY3Rpb25uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlxdWUgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKFZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cGUgZGUgcsOpZsOpcmVuY2VtZW50IGRlcyBsaWVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTaSBjZSBsaWVuIHNcJ2FwcGxpcXVlIMOgIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG91IMOgIGxhIHZlcnNpb24gc3RhdGlxdWUgZGUgbFwnb2JqZXQgZGUgcsOpZsOpcmVuY2UuIExlIGNhbGN1bCBkZSBsXCfDqXRhdCBhY3R1ZWwgZGUgbFwnaW5jaWRlbnQgblwnZXN0IGVmZmVjdHXDqSBxdWUgcG91ciBsZXMgbGllbnMgZHluYW1pcXVlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTw6lsZWN0aW9ubmV6IGxcJ2F0dHJpYnV0IHBhciBsZXF1ZWwgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzZXJvbnQgcmVjaGVyY2jDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdMYSBzdHJ1Y3R1cmUgZGUgYmFzZSBuXCdlc3QgcGFzIHZhbGlkZS4gVmV1aWxsZXogZm91cm5pciB1biBoYWNoYWdlIGF2ZWMgZGVzIGRvbm7DqWVzIGF1IGZvcm1hdCBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0lsIGVzdCBuw6ljZXNzYWlyZSBkZSBjb21tZW5jZXIgbGEgY2hhw65uZSBZQU1MIHBhciAiLS0tIi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnSW1wb3NzaWJsZSBkZSBwdXJnZXIgbGEgdGFibGUgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnQXVjdW4gY2hhbXAgZHluYW1pcXVlIHBlcnRpbmVudCBuXCdhIMOpdMOpIHRyb3V2w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbXBvc3NpYmxlIGRcJ2luc8OpcmVyIGRhbnMgbGEgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnPDqXLDqSAwIGxpZ25lcyBkYW5zIGxhIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdRdWFudGl0w6kgbWF4aW1hbGUgcG91ciB1biDDqWzDqW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnQ2hhw65uZSBkZSB2ZXJzaW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0VycmV1ciBkZSBzeW5jaHJvbmlzYXRpb24gZGVzIGTDqWZpbml0aW9ucy4gVmV1aWxsZXogdsOpcmlmaWVyIGxlIGpvdXJuYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVm91cyBhdmV6IGRlcyBkw6lmaW5pdGlvbnMgSVRTTUNvbmZpZ0l0ZW0gcXVpIG5lIHNvbnQgcGFzIHN5bmNocm9uaXPDqWVzLiBWZXVpbGxleiBkw6lwbG95ZXIgdm9zIGNoYW5nZW1lbnRzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXLDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01haW50ZW5hbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuaWZpw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnRW4gcsOpcGFyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2dWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Z1ZSBkXCdlbnNlbWJsZSBldCBjb25maXJtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YXRpb24gZGUgY2xhc3Nlcy9yw7RsZXMgZXQgZGUgbGV1cnMgY2hhbXBzIGNvbm5leGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnVW5lIGVycmV1ciBzXCdlc3QgcHJvZHVpdGUgbG9ycyBkZSBsXCdpbXBvcnRhdGlvbiBkZSBsYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBDYWNow6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIE1vbnRyw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1ldCBkXCfDqXRlbmRyZSBsZXMgY29uZGl0aW9ucyBkZSByZWNoZXJjaGUgZGFucyBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4gR3LDomNlIMOgIGNldHRlIGZvbmN0aW9ubmFsaXTDqSwgdm91cyBwb3V2ZXogcmVjaGVyY2hlciwgcGFyIGV4ZW1wbGUsIGxlIG5vbSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGRlcyBjb25kaXRpb25zIHRlbGxlcyBxdWUgIigqa2V5MSomJiprZXkyKikiIG91ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWV0IGRcJ8OpdGVuZHJlIGxlcyBjb25kaXRpb25zIGRlIHJlY2hlcmNoZSBkYW5zIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4gQXZlYyBjZXR0ZSBmb25jdGlvbm5hbGl0w6ksIHZvdXMgcG91dmV6IHJlY2hlcmNoZXIgcGFyIGV4ZW1wbGUgbGUgbm9tIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGF2ZWMgZGVzIGNvbmRpdGlvbnMgdGVsbGVzIHF1ZSAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidcOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidcOpcyDDoCB1biBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidcOpcyDDoCB1biB1dGlsaXNhdGV1ciBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1BhcmFtw6h0cmVzIGRlIGxhIENNREIgKGJhc2UgZGUgZG9ubsOpZXMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1bDqXJpZmllciBsYSBwcsOpc2VuY2UgZFwndW4gbm9tIHVuaXF1ZSB1bmlxdWVtZW50IGRhbnMgbGEgbcOqbWUgY2xhc3NlIGRlIENvbmZpZ0l0ZW0gKCJjbGFzcyIpIG91IGdsb2JhbGVtZW50ICgiZ2xvYmFsIiksIGNlIHF1aSBzaWduaWZpZSBxdWUgY2hhcXVlIENvbmZpZ0l0ZW0gZXhpc3RhbnQgZXN0IHByaXMgZW4gY29tcHRlIGxvcnMgZGUgbGEgcmVjaGVyY2hlIGRlIGRvdWJsb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc2Now6ltYSBkZSBkw6lub21pbmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc3lzdMOobWUgZGUgbnVtw6lyb3RhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc2Now6ltYSBkZSBjaGHDrm5lIGRlIHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnU8OpbGVjdGlvbm5leiBsZXMgYXR0cmlidXRzIHF1aSBkw6ljbGVuY2hlbnQgbGEgY3LDqWF0aW9uIGRcJ3VuZSBub3V2ZWxsZSB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdTw6lsZWN0aW9ubmV6IGxlcyBjYXTDqWdvcmllcyDDoCBhZmZlY3RlciDDoCBjZXR0ZSBjbGFzc2UgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyZXMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsYSBjb2xvbm5lIHBvdXIgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sb25uZXMgcG91dmFudCDDqnRyZSBmaWx0csOpZXMgZGFucyBsYSB2dWUgZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuIFJlbWFycXVlIDogc2V1bHMgbGVzIGF0dHJpYnV0cyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGV0IGxlcyBjaGFtcHMgZHluYW1pcXVlcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBzb250IGF1dG9yaXPDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYWpvdXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDqWRpdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHF1aSBwZXJtZXQgbFwnZW5yZWdpc3RyZW1lbnQgZGFucyBsXCdoaXN0b3JpcXVlIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bGUgZFwnw6l2w6luZW1lbnQgcG91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHF1aSBtZXQgw6Agam91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxldXIgZMOpZmluaXRpb24gYWN0dWVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaXF1ZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnSW1wcmVzc2lvbiBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdWdWUgZMOpdGFpbGzDqWUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQXJib3Jlc2NlbmNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xlcyBDb25maWdJdGVtcyBkZXMgY2xhc3NlcyBzdWl2YW50ZXMgbmUgc2Vyb250IHBhcyBzdG9ja8OpcyBzdXIgbGUgc2VydmV1ciBFbGFzdGljc2VhcmNoLiBQb3VyIGFwcGxpcXVlciBjZWxhIGF1eCBDSSBleGlzdGFudHMsIGxhIG1pZ3JhdGlvbiBkZXMgQ0kgZG9pdCDDqnRyZSBleMOpY3V0w6llIHZpYSBsYSBjb25zb2xlLCBhcHLDqHMgYXZvaXIgY2hhbmfDqSBjZXR0ZSBvcHRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xlcyBDb25maWdJdGVtcyBhdmVjIGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IHN1aXZhbnRzIG5lIHNlcm9udCBwYXMgc3RvY2vDqXMgc3VyIGxlIHNlcnZldXIgRWxhc3RpY3NlYXJjaC4gUG91ciBhcHBsaXF1ZXIgY2VsYSBhdXggQ0kgZXhpc3RhbnRzLCBsYSBtaWdyYXRpb24gZGVzIENJIGRvaXQgw6p0cmUgZXjDqWN1dMOpZSB2aWEgbGEgY29uc29sZSwgYXByw6hzIGF2b2lyIGNoYW5nw6kgY2V0dGUgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdMaW1pdGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHBhciBwYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzZSBkZSBkb25uw6llcyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gbW9kdWxlIGVuIHZyYWMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHJlY2hlcmNoZSByb3V0ZXVyIGJhY2tlbmQgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3LDqWVyIGV0IGfDqXJlciBsZXMgZMOpZmluaXRpb25zIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3LDqWUgZGVzIHRpY2tldHMgcG91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGRlcyBtb21lbnRzIHByw6ljaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0xlcyBjbGllbnRzIHBldXZlbnQgY29uc3VsdGVyIGxcJ2hpc3RvcmlxdWUgZGVzIHZlcnNpb25zIGRlIGxcJ0lDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMZXMgY2xpZW50cyBvbnQgbGEgcG9zc2liaWxpdMOpIGRlIHBhc3NlciBtYW51ZWxsZW1lbnQgZFwndW5lIHZlcnNpb24gaGlzdG9yaXF1ZSBkZSBDSSDDoCBsXCdhdXRyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEb25uw6llcyBwYXIgZMOpZmF1dCDDoCB1dGlsaXNlciBzdXIgbFwnYXR0cmlidXQgZGUgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBFeGVtcGxlIDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTIgOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRG9ubsOpZXMgcGFyIGTDqWZhdXQgw6AgdXRpbGlzZXIgc3VyIGxcJ2F0dHJpYnV0IGRlIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4gRXhlbXBsZSA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zIDsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRMOpZmluaXIgbGVzIGFjdGlvbnMgcG91ciBsZXNxdWVsbGVzIHVuIGJvdXRvbiBkZSBjb25maWd1cmF0aW9uIGVzdCBkaXNwb25pYmxlIGRhbnMgbGUgd2lkZ2V0IGRlcyBvYmpldHMgbGnDqXMgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVmV1aWxsZXogbm90ZXIgcXVlIGNlcyBhY3Rpb25zIGRvaXZlbnQgYXZvaXIgZW5yZWdpc3Ryw6kgbGVzIGZpY2hpZXJzIEpTIGV0IENTUyBzdWl2YW50cyA6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGV0IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIHVuIHNjaMOpbWEgVGVtcGxhdGU6OlRvb2xraXQgcG91ciBsZXMgY2hhw65uZXMgZGUgdmVyc2lvbi4gVXRpbGlzw6kgdW5pcXVlbWVudCBzaSBsZSBtb2R1bGUgZGUgY2hhw65uZSBkZSB2ZXJzaW9uIGVzdCBkw6lmaW5pIHN1ciBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEw6lmaW5pciB1biBlbnNlbWJsZSBkZSBjb25kaXRpb25zIHNvdXMgbGVzcXVlbGxlcyB1biBjbGllbnQgZXN0IGF1dG9yaXPDqSDDoCB2b2lyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLiBMZXMgY29uZGl0aW9ucyBwZXV2ZW50IMOpdmVudHVlbGxlbWVudCDDqnRyZSBsaW1pdMOpZXMgw6AgY2VydGFpbnMgZ3JvdXBlcyBkZSBjbGllbnRzLiBMZSBub20gZXN0IGxlIHNldWwgYXR0cmlidXQgb2JsaWdhdG9pcmUuIFNpIGF1Y3VuZSBhdXRyZSBvcHRpb24gblwnZXN0IGRvbm7DqWUsIHRvdXMgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzZXJvbnQgdmlzaWJsZXMgZGFucyBjZXR0ZSBjYXTDqWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBzdXBwcmltZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBvYnRlbmlyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgcmVjaGVyY2hlciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIGTDqWZpbmlyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRMOpZmluaXQgdW4gbW9kdWxlIGRlIHZ1ZSBkXCdlbnNlbWJsZSBwb3VyIGFmZmljaGVyIGxhIHBldGl0ZSB2dWUgZFwndW5lIGxpc3RlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRMOpZmluaXQgc2kgbGVzIMOpdGlxdWV0dGVzIGRlIHR5cGUgZGUgbGllbiBkb2l2ZW50IMOqdHJlIGFmZmljaMOpZXMgZGFucyBsZXMgY29ubmV4aW9ucyBkZSBuxZN1ZHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEw6lmaW5pdCBkZXMgZXhwcmVzc2lvbnMgcsOpZ3VsacOocmVzIGluZGl2aWR1ZWxsZW1lbnQgcG91ciBjaGFxdWUgY2xhc3NlIENvbmZpZ0l0ZW0gYWZpbiBkZSB2w6lyaWZpZXIgbGUgbm9tIGR1IENvbmZpZ0l0ZW0gZXQgZFwnYWZmaWNoZXIgbGVzIG1lc3NhZ2VzIGRcJ2VycmV1ciBjb3JyZXNwb25kYW50cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgZGlzcG9uaWJsZXMgcG91ciBsZXMgQ0kgZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIGNvbnN0aXR1w6llIGRcJ3VuIG5vbSBkZSBjbGFzc2UgZXQgZFwndW4gdGFibGVhdSBkZSBjaGFtcHMgZGlzcG9uaWJsZXMgcG91ciBsYSBjbGFzc2UgY29ycmVzcG9uZGFudGUuIExlcyBlbnRyw6llcyBkZSBjaGFtcHMgZHluYW1pcXVlcyBkb2l2ZW50IHJlc3BlY3RlciBsZSBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBwYXIgZMOpZmF1dCBwb3VyIGxlIHRyaSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGNldHRlIG9ww6lyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBwYXIgZMOpZmF1dCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50LiBVcCA6IGxlIHBsdXMgYW5jaWVuIGVzdCBlbiBoYXV0LiBFbiBiYXMgOiBsZSBwbHVzIHLDqWNlbnQgZW4gaGF1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIHBhciBkw6lmYXV0IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50LiBFbiBoYXV0IDogbGUgcGx1cyBhbmNpZW4gZXN0IGVuIGhhdXQuIEVuIGJhcyA6IGxlIHBsdXMgcsOpY2VudCBlbiBoYXV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGFmZmljaMOpZXMgcGFyIGTDqWZhdXQgZGVzIENJIGRhbnMgbGEgdnVlIGRcJ2Vuc2VtYmxlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIGNvbnN0aXR1w6llIGRcJ3VuIG5vbSBkZSBjbGFzc2UgZXQgZFwndW4gdGFibGVhdSBkZSBjaGFtcHMgZGlzcG9uaWJsZXMgcG91ciBsYSBjbGFzc2UgY29ycmVzcG9uZGFudGUuIExlcyBlbnRyw6llcyBkZSBjaGFtcHMgZHluYW1pcXVlcyBkb2l2ZW50IHJlc3BlY3RlciBsZSBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0TDqWZpbml0IGxhIHByb2ZvbmRldXIgcGFyIGTDqWZhdXQgZGVzIHJlbGF0aW9ucyDDoCBhZmZpY2hlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZGUgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBhZmZpY2jDqSBwYXIgZMOpZmF1dCBwb3VyIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZGUgcmVjaGVyY2hlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGFmZmljaMOpIHBhciBkw6lmYXV0IHBvdXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4gRXhlbXBsZSA6ICJLZXkiIGRvaXQgY29udGVuaXIgbGUgbm9tIGR1IGNoYW1wIGR5bmFtaXF1ZSwgZGFucyBjZSBjYXMgIlgiLCAiQ29udGVudCIgZG9pdCBjb250ZW5pciBsYSB2YWxldXIgZHUgY2hhbXAgZHluYW1pcXVlIGVuIGZvbmN0aW9uIGR1IHR5cGUgZGUgY2hhbXAgZHluYW1pcXVlLCBUZXh0IDogInVuIHRleHRlIiwgRHJvcGRvd24gOiAiMSIsIERhdGUvVGltZSA6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NCIgOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDEgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDAgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMyA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMyA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OSA7ZXQgb3UgIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9NyIgOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlIHNvdXMtb2JqZXQgcGFyIGTDqWZhdXQgZGUgbGEgY2xhc3NlICJJVFNNQ29uZmlnSXRlbSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgZGlzcG9uaWJsZXMgcG91ciBsZXMgQ0kgZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIGNvbnN0aXR1w6llIGRcJ3VuIG5vbSBkZSBjbGFzc2UgZXQgZFwndW4gdGFibGVhdSBkZSBjaGFtcHMgZGlzcG9uaWJsZXMgcG91ciBsYSBjbGFzc2UgY29ycmVzcG9uZGFudGUuIExlcyBlbnRyw6llcyBkZSBjaGFtcHMgZHluYW1pcXVlcyBkb2l2ZW50IHJlc3BlY3RlciBsZSBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGhhdXRldXIgZHUgY29tcG9zYW50IGRlIGxcJ8OpZGl0ZXVyIGRlIHRleHRlIGVucmljaGkgcG91ciBjZXQgw6ljcmFuLiBFbnRyZXogdW4gbm9tYnJlIChwaXhlbHMpIG91IHVuZSB2YWxldXIgZW4gcG91cmNlbnRhZ2UgKHJlbGF0aXZlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGUgbm9tYnJlIGRlIGxpZ25lcyBwb3VyIGxcJ8OpZGl0ZXVyIGRlIGTDqWZpbml0aW9uIGRlIENJIGRhbnMgbFwnaW50ZXJmYWNlIGRcJ2FkbWluaXN0cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBkZXMgw6l0YXRzIGluY2lkZW50cywgZGUgaGF1dCAocGFyIGV4ZW1wbGUsIGNyaWNpdGFsKSDDoCBiYXMgKHBhciBleGVtcGxlLCBmb25jdGlvbm5lbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgcGVydGluZW50cyBkYW5zIGxlc3F1ZWxzIGxlcyB0aWNrZXRzIGxpw6lzIHBldXZlbnQgYWZmZWN0ZXIgbGUgc3RhdHV0IGRcJ3VuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGFmZmljaMOpZXMgZGVzIENJIGRhbnMgbGEgdnVlIGNvbXBsZXhlIGRlIGxhIHRhYmxlIGRlcyBsaWVucyBwb3VyIHRvdXRlcyBsZXMgY2xhc3NlcyBkZSBDSS4gU1wnaWwgblwneSBhIHBhcyBkXCdlbnRyw6llLCBsZXMgY29sb25uZXMgcGFyIGTDqWZhdXQgc29udCBhZmZpY2jDqWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGFmZmljaMOpZXMgZGVzIENJIGRhbnMgbGEgdnVlIGNvbXBsZXhlIGRlIGxhIHRhYmxlIGRlcyBsaWVucywgZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIHByw6ljw6lkw6llIGR1IG5vbSBkZSBsYSBjbGFzc2UgZXQgZGUgZGV1eCBwb2ludHMgKHBhciBleGVtcGxlIDogT3JkaW5hdGV1cjogOikuIFF1ZWxxdWVzIGF0dHJpYnV0cyBkZSBDSSBzb250IGNvbW11bnMgw6AgdG91cyBsZXMgQ0kgKGV4ZW1wbGUgcG91ciBsYSBjbGFzc2UgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20sIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20pIDogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gUG91ciBhZmZpY2hlciBsZXMgYXR0cmlidXRzIGRlIENJIGluZGl2aWR1ZWxzIHRlbHMgcXVlIGTDqWZpbmlzIGRhbnMgbGEgZMOpZmluaXRpb24gZGUgQ0ksIGlsIGNvbnZpZW50IGRcJ3V0aWxpc2VyIGxlIHNjaMOpbWEgc3VpdmFudCAoZXhlbXBsZSBwb3VyIGxhIGNsYXNzZSBPcmRpbmF0ZXVyKSA6IE9yZGluYXRldXI6OkhhcmREaXNrOjoxLCBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIE9yZGluYXRldXI6OkhhcmREaXNrOjoyLCBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIFNcJ2lsIG5cJ3kgYSBwYXMgZFwnZW50csOpZSBwb3VyIHVuZSBjbGFzc2UgQ0ksIGxlcyBjb2xvbm5lcyBwYXIgZMOpZmF1dCBzb250IGFmZmljaMOpZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpbMOpbWVudHMgZGlzcG9uaWJsZXMgcG91ciAiQWN0aW9uIiBhdSB0cm9pc2nDqG1lIG5pdmVhdSBkZSBsYSBzdHJ1Y3R1cmUgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpbMOpbWVudHMgZGlzcG9uaWJsZXMgYXUgcHJlbWllciBuaXZlYXUgZGUgbGEgc3RydWN0dXJlIGRlIGxcJ0FDTCBkZXMgw6lsw6ltZW50cyBkZSBsYSBDb25maWcgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpbMOpbWVudHMgZGlzcG9uaWJsZXMgYXUgZGV1eGnDqG1lIG5pdmVhdSBkZSBsYSBzdHJ1Y3R1cmUgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IHF1ZWwgdHlwZSBkZSBsaWVuIChub21tw6kgZHUgcG9pbnQgZGUgdnVlIGR1IHRpY2tldCkgcGV1dCBhZmZlY3RlciBsZSBzdGF0dXQgZFwndW4gQ0kgbGnDqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pdCBxdWVsIHR5cGUgZGUgdGlja2V0IHBldXQgYWZmZWN0ZXIgbGUgc3RhdHV0IGRcJ3VuIENJIGxpw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnTWlzZSDDoCBqb3VyIGRlIGxhIGTDqWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdTdXBwcmltZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb3VsZXVyIGRlIGxcJ8OpdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfDiXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlxdWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IGRlIGNoYW1wIGR5bmFtaXF1ZSBxdWkgbWFycXVlIGxlcyBkw6lmaW5pdGlvbnMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGNvbW1lIMOpdGFudCBkw6lzeW5jaHJvbmlzw6llcywgc2kgbGVzIGNoYW1wcyBkeW5hbWlxdWVzIHF1XCdlbGxlcyBjb250aWVubmVudCBjaGFuZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NoYW1wcyBkeW5hbWlxdWVzIGFmZmljaMOpcyBkYW5zIGxcJ8OpY3JhbiBkZXMgY2hhbXBzIElUU00gc3VwcGzDqW1lbnRhaXJlcyBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NoYW1wcyBkeW5hbWlxdWVzIGFmZmljaMOpcyBkYW5zIGxcJ8OpY3JhbiBkZSBzeW50aMOoc2UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDaGFtcHMgZHluYW1pcXVlcyBhZmZpY2jDqXMgZGFucyBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBwb3VyIHF1ZSBsZSBmcm9udGVuZCBkZSBsXCdhZ2VudCBwdWlzc2UgdHJhdmFpbGxlciBzdXIgcGx1cyBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiDDoCBsYSBmb2lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWN0aXZlIGxhIGZvbmN0aW9uIGRcJ2FjdGlvbiBlbiBibG9jIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gdW5pcXVlbWVudCBwb3VyIGxlcyBncm91cGVzIHLDqXBlcnRvcmnDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBwb3VyIGTDqWZpbmlyIGxlIHN0YXR1dCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBzdXIgbGUgbGllbiB0aWNrZXQtY29uZmlnaXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2hhbXBzIGRlIGxcJ2luZGV4IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24sIHV0aWxpc8OpcyBwb3VyIGxhIHJlY2hlcmNoZSBlbiB0ZXh0ZSBpbnTDqWdyYWwuIExlcyBjaGFtcHMgc29udCDDqWdhbGVtZW50IHN0b2Nrw6lzLCBtYWlzIG5lIHNvbnQgcGFzIG9ibGlnYXRvaXJlcyBwb3VyIGxhIGZvbmN0aW9ubmFsaXTDqSBnbG9iYWxlLiBMXCdpbmNsdXNpb24gZGVzIHBpw6hjZXMgam9pbnRlcyBwZXV0IMOqdHJlIGTDqXNhY3RpdsOpZSBlbiBtZXR0YW50IGxcJ2VudHLDqWUgw6AgMCBvdSBlbiBsYSBzdXBwcmltYW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2hhbXBzIHN0b2Nrw6lzIGRhbnMgbFwnaW5kZXggZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBxdWkgc29udCB1dGlsaXPDqXMgcG91ciBkXCdhdXRyZXMgY2hvc2VzIHF1ZSBsZXMgcmVjaGVyY2hlcyBlbiB0ZXh0ZSBpbnTDqWdyYWwuIFBvdXIgdW5lIGZvbmN0aW9ubmFsaXTDqSBjb21wbMOodGUsIHRvdXMgbGVzIGNoYW1wcyBzb250IG9ibGlnYXRvaXJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnRW5yZWdpc3RyZW1lbnQgZHUgbW9kdWxlIEdlbmVyaWNJbnRlcmZhY2UgcG91ciBsYSBjb3VjaGUgZFwnaW52b2NhdGlvbiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1Z1ZSBkXCdlbnNlbWJsZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXQgbGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgZGFucyBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1dCBsZXMgw6l0YXRzIGRcJ2luY2lkZW50cyBkYW5zIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTm9tYnJlIG1heGltdW0gZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGFmZmljaGVyIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGNldHRlIG9ww6lyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxlIHBlcm1ldHRhbnQgZGUgdsOpcmlmaWVyIGxlIGdyb3VwZSByZXNwb25zYWJsZSBkXCd1bmUgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSBwZXJtZXR0YW50IGRlIHbDqXJpZmllciBsZSBncm91cGUgcmVzcG9uc2FibGUgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHBlcm1ldHRhbnQgZGUgZ8OpbsOpcmVyIGRlcyBzdGF0aXN0aXF1ZXMgc3VyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb20gZHUgbW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW3DqXJvIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOb21icmUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGFmZmljaGVyIGRhbnMgY2hhcXVlIHBhZ2UgZFwndW4gcsOpc3VsdGF0IGRlIHJlY2hlcmNoZSBkYW5zIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9tYnJlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGNoYXF1ZSBwYWdlIGRcJ3VuIHLDqXN1bHRhdCBkZSByZWNoZXJjaGUgZGFucyBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdMZXMgb2JqZXRzIMOgIHJlY2hlcmNoZXIsIGxlIG5vbWJyZSBkXCdlbnRyw6llcyBldCBsZXMgYXR0cmlidXRzIMOgIGFmZmljaGVyLiBMZXMgYXR0cmlidXRzIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZG9pdmVudCDDqnRyZSBleHBsaWNpdGVtZW50IHN0b2Nrw6lzIHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWdWUgZFwnZW5zZW1ibGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyBjYXTDqWdvcmllcyBkZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGVzIGZpbHRyZXMgZGUgY29sb25uZSBkZSBsXCdhcGVyw6d1IGRlcyBwZXRpdHMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBSZW1hcnF1ZSA6IHNpIGxhIHZhbGV1ciAiQWN0aWYiIGVzdCBmaXjDqWUgw6AgMCwgbGVzIGFnZW50cyBuZSBwb3Vycm9udCBwYXMgbW9kaWZpZXIgbGVzIHBhcmFtw6h0cmVzIGRlIGNlIGdyb3VwZSBkYW5zIGxldXJzIHByw6lmw6lyZW5jZXMgcGVyc29ubmVsbGVzLCBtYWlzIGxlcyBhZG1pbmlzdHJhdGV1cnMgcG91cnJvbnQgdG91am91cnMgbW9kaWZpZXIgbGVzIHBhcmFtw6h0cmVzIGF1IG5vbSBkXCd1biBhdXRyZSB1dGlsaXNhdGV1ci4gVXRpbGlzZXogXCdQcmVmZXJlbmNlR3JvdXBcJyBwb3VyIGNvbnRyw7RsZXIgZGFucyBxdWVsbGUgem9uZSBjZXMgcGFyYW3DqHRyZXMgZG9pdmVudCDDqnRyZSBhZmZpY2jDqXMgZGFucyBsXCdpbnRlcmZhY2UgdXRpbGlzYXRldXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsYSBjb3VsZXVyIGRlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsXCdleGVtcGxlIGRlcyBwZXJtaXNzaW9ucyBkZSBncm91cGVzIGRlcyBhdHRyaWJ1dHMgZHUgY2F0YWxvZ3VlIGfDqW7DqXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbm9tcyBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbnVtw6lyb3RhdGlvbiBkZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiB1bmlxdWVtZW50IHBvdXIgbGVzIGdyb3VwZXMgcsOpcGVydG9yacOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGNoYcOubmUgZGUgdmVyc2lvbiBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGxhIGJvw650ZSDDoCBvdXRpbHMgZHUgbW9kw6hsZSBkZSBjaGHDrm5lIGRlIHZlcnNpb24gcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlIGTDqWNsZW5jaGV1ciBkZSB2ZXJzaW9uIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzaW9uIGR1IGdyb3VwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCdhY3Rpb24gZFwnYXR0YWNoZW1lbnQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZFwnYXJib3Jlc2NlbmNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRcJ2Fqb3V0IGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBlbiB2cmFjIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIG1vZGlmaWNhdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F0dHJpYnV0ICVzIG1pcyDDoCBqb3VyIGRlICIlcyIgw6AgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkXCdpbXByZXNzaW9uIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbMOoZ2VzIHJlcXVpcyBwb3VyIHN1cHByaW1lciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1JlY2hlcmNoZXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGF1dG9tYXRpcXVlbWVudCBsXCfDqXRhdCBkXCdpbmNpZGVudCBkXCd1biBDSSBsb3JzcXVcJ3VuIHRpY2tldCBlc3QgbGnDqSDDoCB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQgZGFucyBsXCfDqWNyYW4gZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ8OpdGF0IGRlIGxcJ2luY2lkZW50IGRhbnMgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcXVpIHBlcm1ldCBkZSBsaWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIHVuIGF1dHJlIG9iamV0IGRhbnMgbGEgdnVlIHpvb20gZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhY2PDqWRlciDDoCBsXCdoaXN0b3JpcXVlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGFjY8OpZGVyIMOgIGxcJ2hpc3RvcmlxdWUgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIHN1cHByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIHNhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhZmZpY2hlciBsZXMgbGllbnMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzb3VzIGZvcm1lIGRcJ2FyYm9yZXNjZW5jZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgZHVwbGlxdWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGR1cGxpcXVlciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBtb2RpZmllciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciByZXZlbmlyIMOgIGxhIHZ1ZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBpbXByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBlcm1ldHRhbnQgZGUgem9vbWVyIHN1ciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgbFwnaGlzdG9yaXF1ZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIChvcmRyZSBpbnZlcnNlKSBkYW5zIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTGEgY2F0w6lnb3JpZSBwYXIgZMOpZmF1dCBxdWkgZXN0IGFmZmljaMOpZSBzaSBhdWN1bmUgblwnZXN0IHPDqWxlY3Rpb25uw6llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnTFwnaWRlbnRpZmlhbnQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24sIHBhciBleGVtcGxlIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBMYSB2YWxldXIgcGFyIGTDqWZhdXQgZXN0IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnRMOpY2xlbmNoZSBhdXRvbWF0aXF1ZW1lbnQgbFwnaW52b2tlciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc3Npb24gZGUgbGEgY2hhw65uZSBkZSBsYSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gQ2hhw65uZSBkZSBjYXJhY3TDqHJlcyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnRMOpY2xlbmNoZXVyIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NpIGxcJ2V4w6ljdXRpb24gZGUgQ29uZmlnSXRlbUFDTCBwZXV0IMOqdHJlIMOpdml0w6llIGVuIHbDqXJpZmlhbnQgbGVzIGTDqXBlbmRhbmNlcyBkZXMgY2hhbXBzIG1pcyBlbiBjYWNoZS4gQ2VsYSBwZXV0IGFtw6lsaW9yZXIgbGVzIHRlbXBzIGRlIGNoYXJnZW1lbnQgZGVzIGZvcm11bGFpcmVzLCBtYWlzIGRvaXQgw6p0cmUgZMOpc2FjdGl2w6kgc2kgbGVzIG1vZHVsZXMgQUNMTSBkb2l2ZW50IMOqdHJlIHV0aWxpc8OpcyBwb3VyIGxlcyB0eXBlcyBJVFNNQ29uZmlnSXRlbSBldCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXVlbGxlcyBzb250IGxlcyBpbmZvcm1hdGlvbnMgZ8OpbsOpcmFsZXMgcXVpIGZpZ3VyZW50IGRhbnMgbFwnZW4tdMOqdGUgPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0LXByb2R1Y3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHLDqS1wcm9kdWN0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3RpZic7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVSA6IDE3LDUgcG91Y2VzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVSA6IDIxIHBvdWNlcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVUgOiAyNiwyNSBwb3VjZXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFUgOiAzMSw1IHBvdWNlcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgMTkgcG91Y2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVSA6IDEsNzUgcG91Y2VzICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFUgOiAzNSBwb3VjZXMgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ0Nyw6ltYWlsbMOocmUgZGUgMjEgcG91Y2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVSA6IDM4LDUgcG91Y2VzICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnQ3LDqW1haWxsw6hyZSBkZSAyMyBwb3VjZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBvdWNlcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VSA6IDQyIHBvdWNlcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VSA6IDQ3LDI1IHBvdWNlcyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVSA6IDMsNSBwb3VjZXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFUgOiA1Mi41IHBvdWNlcyAoMTMzLjM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcG91Y2VzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVIDogNTcsNzUgcG91Y2VzICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwb3VjZXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlUgOiA2MyBwb3VjZXMgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwb3VjZXMgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVIDogNjguMjUgcG91Y2VzICgxNzMuMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1UgOiA1LDI1IHBvdWNlcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlUgOiA3Myw1IHBvdWNlcyAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwb3VjZXMgKDExMDAgbW0pIDonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVUgOiA3OC43NSBwb3VjZXMgKDIwMC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwb3VjZXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVIDogODQgcG91Y2VzICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFUgOiA3IHBvdWNlcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVUgOiA4LDc1IHBvdWNlcyAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlUgOiAxMCw1IHBvdWNlcyAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVIDogMTIsMjUgcG91Y2VzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFUgOiAxNCBwb3VjZXMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VSA6IDE1LDc1IHBvdWNlcyAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29tcHRhYmlsaXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0F0dHJpYnV0aW9uIGRcJ2FkcmVzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBhbmFsb2dpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwZSBkXCdhcHBhcmVpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaXTDqSBkZSBsYSBiYXR0ZXJpZSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1R5cGUgZGUgYmF0dGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCw6J0aW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmFjZSBkZSBidXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzc2UgZFwndW5pdMOpIGNlbnRyYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2l0w6kgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaXTDqSBwYXIgY2FydGUgZ3JhcGhpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSBsYSBjYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0xlY3RldXIgZGUgY2FydGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1R5cGUgZGUgY2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRzIGRlIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdMb2dpY2llbCBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0w6lnb3JpZSBkZSBjbGllbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0hvcmxvZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZpdGVzc2UgZFwnaG9ybG9nZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgZGUgc2lnbmF0dXJlIGRlIGNvZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIGRlIGNvbmbDqXJlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIGNvbnN1bHRhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnQ29udGFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdGVyIGxlIGRpc3RyaWJ1dGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb24gZGVzIGNvbnRlbmV1cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUeXBlIGRlIGNvbnRyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdEdXLDqWUgZHUgY29udHJhdCBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdEdXLDqWUgZHUgY29udHJhdCBqdXNxdVwnw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVMOpbMOpcGhvbmUgc2FucyBmaWwgKHTDqWzDqXBob25lIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaXTDqSBkZSBjb8O7dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ05vbWJyZSBkZSBsaWNlbmNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0ZSBkZSBjcsOpYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1N1cHBvcnQgc3VyIG1lc3VyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSw6lzZXJ2w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZldXIgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXRlIGRlIGxhIGZhY3R1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGUgZGUgbFwnYXJyw6p0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdGUgZHUgbWFuZGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGUgZGUgcHVibGljYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ09yZGluYXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRzIGRlIHNpZ25hdHVyZSBkZSBkb2N1bWVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYXRzIGRlIGNvdXJyaWVyIMOpbGVjdHJvbmlxdWUgKGNlcnRpZmljYXRzIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdCBkZSB0cmF2YWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnQWRyZXNzZSBJUCBmaW5hbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW4gZGUgbFwnYWlkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdGUgZFwnZXhwaXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzcXVlIGR1ciBleHRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnUGFyZS1mZXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1N0b2NrYWdlIGRcJ8OpbmVyZ2llIHBhciB2b2xhbnQgZFwnaW5lcnRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhY3RldXIgZGUgZm9ybWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBmcmFuY2hpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdMb2dpY2llbCBncmF0dWl0IChmcmVld2FyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb25zIGfDqW7DqXJhbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnQ2FydGVzIGdyYXBoaXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0NhcnRlIGdyYXBoaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ01hdMOpcmllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZMOobGUgZGUgbWF0w6lyaWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1BvaWRzIGR1IG1hdMOpcmllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQ2FzcXVlIGRcJ8OpY291dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbGUgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGlvbiBkZXMgaWRlbnRpdMOpcyBldCBkZXMgYWNjw6hzIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOdW3DqXJvIGRcJ2ludmVudGFpcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ051bcOpcm8gZGUgbGEgZmFjdHVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0NsYXZpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRldXIgTENEICjDqWNyYW4gw6AgY3Jpc3RhdXggbGlxdWlkZXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdGV1ciDDoCBMRUQgKGRpb2RlIMOpbGVjdHJvbHVtaW5lc2NlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBmaXhlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ09yZGluYXRldXIgcG9ydGFibGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdMYXRpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0NvdWNoZSAxIDogQ291Y2hlIHBoeXNpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0NvdWNoZSAyIDogQ291Y2hlIGxpYWlzb24gZGUgZG9ubsOpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0NvdWNoZSAzIDogQ291Y2hlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnQ291Y2hlIDMgOiBDb3VjaGUgcsOpc2VhdSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0NvdWNoZSA0IDogQ291Y2hlIHRyYW5zcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ291Y2hlIDUgOiBjb3VjaGUgc2Vzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdDb3VjaGUgNiA6IGNvdWNoZSBkZSBwcsOpc2VudGF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnQ291Y2hlIDcgOiBDb3VjaGUgYXBwbGljYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdCBkZSBiYWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0Nsw6kgZGUgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUeXBlIGRlIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1DDqXJpb2RlIGRlIGxpY2VuY2UgZHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdQw6lyaW9kZSBkZSBsaWNlbmNlIGp1c3F1XCfDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgYXUgcGhvc3BoYXRlIGRlIGZlciBsaXRoacOpIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgYXUgbGl0aGl1bS1pb24gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0IGRlIHByw6p0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdTaXR1w6kgw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnRmFicmljYW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2l0w6kgZGUgY2hhcmdlIG1heGltYWxlIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNw6ltb2lyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1R5cGUgZGUgbcOpbW9pcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSB0w6lsw6lwaG9uZSBtb2JpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxlL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kw6hsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXB0aW9uIGR1IG1vZMOobGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUsOpc29sdXRpb24gZHUgbW9uaXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnVGFpbGxlIGR1IG1vbml0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnU291cmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdSw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWF0aW9ucyBzdXIgbGUgcsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb25zIHN1ciBsZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDb3VjaGUgcsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIG5pY2tlbC1jYWRtaXVtIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIG5pY2tlbC1oeWRydXJlIG3DqXRhbGxpcXVlIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdBY2NvcmQgZGUgbm9uLWRpdnVsZ2F0aW9uIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQ2FybmV0IGRlIG5vdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTm9tYnJlIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOb21icmUgZGUgbW9kdWxlcyBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTm9tYnJlIGRlIGNhcnRlcyBncmFwaGlxdWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdGV1ciBPTEVEIChkaW9kZSDDqWxlY3Ryb2x1bWluZXNjZW50ZSBvcmdhbmlxdWUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0ZyYWlzIGRlIGZvbmN0aW9ubmVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ051bcOpcm8gZGUgY29tbWFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdBdXRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnU29ydGllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgcGFydGVuYXJpYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIHTDqWzDqXBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUeXBlIGRlIHTDqWzDqXBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnQ8WTdXJzIHBoeXNpcXVlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0ZvdXJuaXR1cmUgZFwnw6luZXJnaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdBY2hldMOpIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mb25kZXVyIGR1IHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbml0w6lzIGRlIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdQacOoY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdDYXJ0ZSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdCBkZSB2ZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBzYXRlbGxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgcGxvbWItYWNpZGUgc2NlbGzDqWUgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOdW3DqXJvIGRlIHPDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdMb2dpY2llbCBzZXJ2ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIHNlcnZpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfDiXRpcXVldHRlIGRlIHNlcnZpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwZSBkZSBwcmlzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ0xvZ2ljaWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSW50ZXJ2ZW5hbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdBZHJlc3NlIElQIGRlIGTDqXBhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1N0b2NrYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGl0aW9uIGRlIHN0b2NrYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUsOpc3Vtw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDbGllbnQgbMOpZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdGaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSBkZSBsYSBjYXJ0ZSBncmFwaGlxdWUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdGV1ciDDoCDDqWNyYW4gdGFjdGlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDYXNxdWUgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/gl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmdsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ01hcGVhZG8gcGFyYSBhcyBwZXRpY2nDs25zIGRlIGRhdG9zIGRlIGVudHJhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTWFwZWFkbyBwYXJhIG9zIGRhdG9zIGRlIHJlc3Bvc3RhIGRlIHNhw61kYSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cmFyIHBvciBjbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkbyBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUXVlcmUgcmVhbG1lbnRlIGJvcnJhciBlc3RhIEFjdGl2aWRhZGU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZG8gSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhciB0ZW1wbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWaXN0YSB6b29tJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnQ29tZXphciBidXNjYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdJbXBvcnRhciBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZG8gSW5jaWRlbnRlIGFjdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1vIGNhbWJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfDmmx0aW1vIGNhbWJpbyBmZWl0byBwb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEZXNleGEgcHJvc2VndWlyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdGdW5jaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ0F2aXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnSW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdQZXJtaXNvIGRlbmVnYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBhY3R1YWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOw7ptZXJvIG3DoXhpbW8gZHVuIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0NhZHVjYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFudGVtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0ltcG9ydGFyIENvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYXRvcyBwb3IgZGVmZWN0byBwYXJhIHVzYXIgbm8gYXRyaWJ1dG8gcGFyYSBhIHBhbnRhbGxhIGJ1c2NhIGRlIHRpY2tldC4gRXhlbXBsbzogIlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO1RpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRvcyBwb3IgZGVmZWN0byBwYXJhIHVzYXIgbm8gYXRyaWJ1dG8gcGFyYSBhIHBhbnRhbGxhIGJ1c2NhIGRlIHRpY2tldC4gRXhlbXBsbzogIlRpY2tldENyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnRNb250aD0xMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXk9NDtUaWNrZXRDcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RvcE1vbnRoPTExO1RpY2tldENyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIHhlcmFsIHBhcmEgbW9zdHJhciBhIHZpc3RhIHBlcXVlbmEgZHVuaGEgbGlzdGEgZGUgZW5xdWlzYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgb3MgYXRyaWJ1dG9zIGRlIHRpY2tldCBwb3IgZGVmZWN0byBwYXJhIGEgb3JkZW5hY2nDs24gZGUgdGlja2V0IGRvIHJlc3VsdGFkbyBkYSBidXNjYSBkZSB0aWNrZXQgZGEgaW50ZXJmYWNlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBhdHJpYnV0b3MgZGUgdGlja2V0IHBvciBkZWZlY3RvIHBhcmEgYSBvcmRlbmFjacOzbiBkZSB0aWNrZXQgZG8gcmVzdWx0YWRvIGRhIGJ1c2NhIGRlIHRpY2tldCBkYSBpbnRlcmZhY2UgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBhdHJpYnV0b3MgZGUgdGlja2V0IHBvciBkZWZlY3RvIHBhcmEgYSBvcmRlbmFjacOzbiBkZSB0aWNrZXQgZG8gcmVzdWx0YWRvIGRhIGJ1c2NhIGRlIHRpY2tldCBkZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZSBwb3IgZGVmZWN0byBkZSB0aWNrZXQgbm9zIHJlc3VsdGFkb3MgZGUgYnVzY2EgZGUgdGlja2V0IGRhIGludGVyZmFjZSBkZSBheGVudGUuIEFycmliYTogb3MgbWFpcyBhbnRpZ29zIG5vIGFsdG8uIEFiYWl4bzogb3Mgw7psdGltb3Mgbm8gYWx0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGUgcG9yIGRlZmVjdG8gZGUgdGlja2V0IG5vcyByZXN1bHRhZG9zIGRlIGJ1c2NhIG5hIGludGVyZmFjZSBkZSBheGVudGUuIEFycmliYTogb3MgbWFpcyBhbnRpZ29zIG5vIGFsdG8uIEFiYWl4bzogb3Mgw7psdGltb3Mgbm8gYWx0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG9zIGF0cmlidXRvcyBkZSBidXNjYSBtb3N0cmFkb3Mgbm8gdGlja2V0IHBvciBkZWZlY3RvIHBhcmEgYSBwYW50YWxsYSBidXNjYSBkZSB0aWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgb3MgYXRyaWJ1dG9zIGRlIGJ1c2NhIG1vc3RyYWRvcyBubyB0aWNrZXQgcG9yIGRlZmVjdG8gcGFyYSBhIHBhbnRhbGxhIGJ1c2NhIGRlIHRpY2tldC4gRXhlbXBsbzogIkNoYXZlIiBkZWJlIHRlciBvIG5vbWUgZG8gQ2FtcG8gRGluw6FtaWNvIG5lc3RlIGNhc28gXCdYXCcsICJDb250aWRvIiBkZWJlIHRlciBvIHZhbG9yIGRvIENhbXBvIERpbsOhbWljbyBkZXBlbmRlbmRvIGRvIHRpcG8gZGUgQ2FtcG8gRGluw6FtaWNvLCBUZXh0bzogXCd1biB0ZXh0b1wnLCBEcm9wZG93bjpcJzFcJywgRGF0YS9UZW1wbzogIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGEgYWx0dXJhIHBhcmEgbyBjb21wb8OxZW50ZSBkZSBlZGl0b3IgZGUgdGV4dG8gcmljbyBwYXJhIGVzdGEgcGFudGFsbGEuIEludHJvZHV6YSBlbiBuw7ptZXJvIChwaXhlaXMpIG91IHZhbG9yIHBvcmNlbnR1YWwgKHJlbGF0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBjYWxlcyBlbGVtZW50b3MgZXN0w6FuIGRpc3Bvw7FpYmxlcyBwYXJhIFwnQWNjacOzblwnIG5vIHRlcmNlaXJvIG5pdmVsIGRhIGVzdHJ1Y3R1cmEgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBjYWxlcyBlbGVtZW50b3MgZXN0w6FuIGRpc3Bvw7FpYmxlcyBubyBwcmltZWlybyBuaXZlbCBkYSBlc3RydWN0dXJhIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIGNhbGVzIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG/DsWlibGVzIG5vIHNlZ3VuZG8gbml2ZWwgZGEgZXN0cnVjdHVyYSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnSW1wb3J0YXIgQ29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIGNhbXBvcyBkZSB0w610dWxvIG5hIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBjYW1wb3MgZGUgdMOtdHVsbyBuYSBwYW50YWxsYSBjYW1wbyBJVFNNIGFkaWNpb25hbCBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgY2FtcG9zIGRlIHTDrXR1bG8gbmEgcGFudGFsbGEgY2FtcG8gSVRTTSBhZGljaW9uYWwgZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnUGVybWl0ZSBmdW5jacOzbiBkZSBhY2Npw7NuIGVuIG1hc2EgZG8gdGlja2V0IHBhcmEgbyBmcm9udGVuZCBkZSBheGVudGUgcGFyYSB0cmFiYWxsYXIgZW4gbcOhaXMgZHVuIHRpY2tldCDDoSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdQZXJtaXRlIGZ1bmNpw7NuIGRlIGFjY2nDs24gZW4gbWFzYSBkZSB0aWNrZXQgc29hbWVudGUgcGFyYSBvcyBncnVwb3MgZW51bWVyYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnSW50ZXJmYWNlWGVuw6lyaWNhIG3Ds2R1bG8gcmV4aXN0cm8gcGFyYSBhIGNhcGEgZG8gaW52b2NhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0ludGVyZmFjZVhlbsOpcmljYSBtw7NkdWxvIHJleGlzdHJvIHBhcmEgYSBjYXBhIGRvIGludm9jYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnSW50ZXJmYWNlWGVuw6lyaWNhIG3Ds2R1bG8gcmV4aXN0cm8gcGFyYSBhIGNhcGEgZG8gaW52b2NhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgdGlja2V0cyBwYXJhIHNlciBtb3N0cmFkb3Mgbm8gcmVzdWx0YWRvIGRlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSB0aWNrZXRzIHBhcmEgc2VyIG1vc3RyYWRvcyBlbiBjYWRhIHDDoXhpbmEgZHVuIHJlc3VsdGFkbyBkZSBidXNjYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIHRpY2tldHMgcGFyYSBzZXIgbW9zdHJhZG9zIGVuIGNhZGEgcMOheGluYSBkdW4gcmVzdWx0YWRvIGRlIGJ1c2NhIG5hIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgeGVyYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIG9zIGdydXBvcyBkZSBwZXJtaXNvcyBkZSBleGVtcGxvIGRvcyBhdHJpYnV0b3MgZG8gY2F0w6Fsb2dvIHhlcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSBlbXByZWdhciBhIHBhbnRhbGxhIGRlIHRleHRvIGxpYnJlIGRlIHTDrWNrZXRzIGRhIGludGVyZmFjZSBkbyBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBjYW1wbyBJVFNNIGFkaWNpb25hbCBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBvIHRpcG8gZGUgdGlja2V0IG5hIHBhbnRhbGxhIGRlIHRpY2tldCBtYXNpdm8gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXN0YWJsZWNlIG8gdGlwbyBkZSB0aWNrZXQgbmEgcGFudGFsbGEgZGUgdGlja2V0IG1hc2l2byBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgY2FtYmlhciBhIGRlY2lzacOzbiBkdW4gdGlja2V0IG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBjYW1iaWFyIGEgZGVjaXNpw7NuIGR1biB0aWNrZXQgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgZWRpdGFyIHVuaGEgZW5xdWlzYSBuYSBzw7phIHZpc3RhIHpvb20gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW5oYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgdm9sdGFyIGF0csOhcyBuYSB2aXN0YSB6b29tIGRlIGVucXVpc2EgZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW5oYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBvIGhpc3RvcmljbyBkbyB0aWNrZXQgKG9yZGVhZG8gbyByZXbDqSkgbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdDbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpemFyIFRlbXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0VkaWZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VzY3JpdG9yaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdFbmRlcmV6byBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdQb3J0w6F0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NoYXZlIExpY2VuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVGlwbyBMaWNlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ1JhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ091dHJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnU2HDrWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHNlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0Fjb3JkbyBkZSBuaXZlbCBkZSBzZXJ2aXpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdFc3TDoW5kYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/he_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhlX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAn15TXkNedINeQ16rXnSDXkdeQ157XqiDXqNeV16bXmdedINec157Xl9eV16cg15jXqNeZ15LXqCDXkNeZ16jXldeiINeW15Q/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn15bXntefINeU15nXpteZ16jXlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfXnteR15gg15bXldedJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn15TXqNelINeX15nXpNeV16knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn15TXkteT16jXldeqINeZ15nXkdeV15AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfXlNek16DXmdeZ15QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9eQ15bXlNeo15QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9eQ15nXnyDXlNeo16nXkNeUISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ9eR15nXnyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfXpNeSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn15TXkteT16jXldeqINeZ15nXkdeV15AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfXlNeS15PXqNeV16og15nXmdeR15XXkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfXnteR15gt16LXnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn157Xntep16cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9ek15zXmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9eU16HXm9edINeo157XqiDXqdeZ16jXldeqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfXodeY16DXk9eo15jXmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/hi_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhpX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn4KS44KSu4KSvIOCkrOCkqOCkvuCkj+CkgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfgpJzgpLzgpYLgpK4g4KSm4KWD4KS24KWN4KSvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ+CkuOCkguCkpuCksOCljeCkrSDgpK7gpYfgpIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+CkmuClh+CkpOCkvuCkteCkqOClgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn4KSF4KSo4KWB4KSu4KSk4KS/IOCkqOCkueClgOCkgiDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfgpJXgpYcg4KSs4KWA4KSaJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ+CkuOCkruCkryDgpLjgpYDgpK7gpL4g4KS44KSu4KS+4KSq4KWN4KSkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSV4KWHIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpK7gpYfgpIIg4KSk4KSv4KS24KWB4KSm4KS+IOCkn+Ckv+CkleCknyDgpJXgpYAg4KSb4KSB4KSf4KS+4KSIIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSfIOCkleClgCDgpLXgpL/gpLbgpYfgpLfgpKTgpL4g4KSV4KWLIOCkquCksOCkv+CkreCkvuCkt+Ckv+CkpCDgpJXgpLDgpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkluCli+CknCDgpKrgpLDgpL/gpKPgpL7gpK4g4KSu4KWH4KSCIOCkpOCkr+CktuClgeCkpuCkviDgpJ/gpL/gpJXgpJ8g4KSV4KWAIOCkm+CkgeCkn+CkvuCkiCDgpJXgpYcg4KSy4KS/4KSPIOCkn+Ckv+CkleCknyDgpJXgpYAg4KS14KS/4KS24KWH4KS34KSk4KS+IOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSV4KWHIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpK7gpYfgpIIg4KSk4KSv4KS24KWB4KSm4KS+IOCkn+Ckv+CkleCknyDgpJXgpYAg4KSb4KSB4KSf4KS+4KSIIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSfIOCkleClgCDgpLXgpL/gpLbgpYfgpLfgpKTgpL4g4KSV4KWLIOCkquCksOCkv+CkreCkvuCkt+Ckv+CkpCDgpJXgpLDgpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClgCDgpJbgpYvgpJwg4KSq4KSw4KS/4KSj4KS+4KSuIOCkruClh+CkgiDgpKTgpK/gpLbgpYHgpKbgpL4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJXgpY3gpLDgpK4g4KSV4KWLIOCkquCksOCkv+CkreCkvuCkt+Ckv+CkpCDgpJXgpLDgpKTgpL4g4KS54KWI4KWkIOCkiuCkquCksDrgpLbgpYDgpLDgpY3gpLcg4KSq4KSwIOCkuOCkrOCkuOClhyDgpKrgpYHgpLDgpL7gpKjgpYDgpaQg4KSo4KWA4KSa4KWHOuCktuClgOCksOCljeCktyDgpKrgpLAg4KSo4KS14KWA4KSo4KSk4KSu4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfgpJfgpY3gpLDgpL7gpLngpJUg4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpI/gpJUg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkleClhyDgpKTgpK/gpLbgpYHgpKbgpL4g4KSV4KWN4KSw4KSuIOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCDgpIrgpKrgpLA64KS24KWA4KSw4KWN4KS3IOCkquCksCDgpLjgpKzgpLjgpYcg4KSq4KWB4KSw4KS+4KSo4KWA4KWkIOCkqOClgOCkmuClhzrgpLbgpYDgpLDgpY3gpLcg4KSq4KSwIOCkqOCkteClgOCkqOCkpOCkruClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfgpJ/gpL/gpJXgpJ8g4KSV4KWAIOCkluCli+CknCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KWHIOCksuCkv+CkjyDgpKbgpL/gpJbgpL7gpIgg4KSf4KS/4KSV4KSfIOCkleClgCDgpKTgpK/gpLbgpYHgpKbgpL4g4KSW4KWL4KScIOCkteCkv+CktuClh+Ckt+CkpOCkviDgpJXgpYsg4KSq4KSw4KS/4KSt4KS+4KS34KS/4KSkIOCkleCksOCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn4KS44KSu4KWD4KSm4KWN4KSnIOCkquCkvuCkoCDgpLjgpILgpKrgpL7gpKbgpJUg4KSY4KSf4KSVIOCkleClhyDgpLLgpL/gpI8g4KSa4KWM4KSh4KS84KS+4KSIIOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCjgpKrgpL/gpJXgpY3gpLjgpYfgpLIpIOCkuOCkguCkluCljeCkr+CkviDgpK/gpL4g4KSq4KWN4KSw4KSk4KS/4KS24KSkIOCkruCkvuCkqCAo4KS44KS+4KSq4KWH4KSV4KWN4KS3KSDgpJXgpYsg4KSy4KS/4KSW4KWH4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ+Ckj+CklSDgpLjgpK7gpK8g4KSu4KWH4KSCIOCkj+CklSDgpLjgpYcg4KSF4KSn4KS/4KSVIOCkn+Ckv+CkleCkn+Cli+CkgiDgpKrgpLAg4KSV4KS+4KSuIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpKbgpYPgpLbgpY3gpK/gpKrgpJ/gpLIg4KSV4KWAIOCkn+Ckv+CkleCknyDgpKXgpYvgpJUg4KSV4KS+4KSw4KWN4KSw4KS14KS+4KSIIOCkuOClgeCkteCkv+Ckp+CkviDgpJXgpYsg4KS44KSV4KWN4KS34KSuIOCkrOCkqOCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+CkleClh+CkteCksiDgpLjgpYLgpJrgpYDgpKzgpKbgpY3gpKcg4KS44KSu4KWC4KS54KWL4KSCIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSfIOCkpeCli+CklSDgpJXgpL7gpLDgpY3gpLDgpLXgpL7gpIgg4KS44KWB4KS14KS/4KSn4KS+IOCkleCliyDgpLjgpJXgpY3gpLfgpK4g4KSs4KSo4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpI/gpJUg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpJXgpYcg4KSq4KWN4KSw4KSk4KWN4KSv4KWH4KSVIOCkquClg+Ckt+CljeCkoCDgpK7gpYfgpIIg4KSq4KWN4KSw4KSm4KSw4KWN4KS24KS/4KSkIOCkueCli+CkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkn+Ckv+CkleCkn+Cli+CkgiDgpJXgpYAg4KS44KSC4KSW4KWN4KSv4KS+4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+Ckl+CljeCksOCkvuCkueCklSDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkj+CklSDgpJbgpYvgpJwg4KSq4KSw4KS/4KSj4KS+4KSuIOCkleClhyDgpKrgpY3gpLDgpKTgpY3gpK/gpYfgpJUg4KSq4KWD4KS34KWN4KSgIOCkruClh+CkgiDgpKrgpY3gpLDgpKbgpLDgpY3gpLbgpL/gpKQg4KS54KWL4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSf4KWL4KSCIOCkleClgCDgpLjgpILgpJbgpY3gpK/gpL7gpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ+CkheCkteCksuCli+CkleCkqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJ/gpL/gpJXgpJ8g4KSu4KWB4KSV4KWN4KSkIOCkquCkvuCkoCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpLngpLAg4KSf4KS/4KSV4KSfIOCkleClhyDgpIXgpLXgpLLgpYvgpJXgpKgg4KSu4KWH4KSCIOCkn+Ckv+CkleCknyDgpIfgpKTgpL/gpLngpL7gpLgg4KSm4KWH4KSW4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KS14KS/4KSV4KSy4KWN4KSqIOCkuOClguCkmuClgCDgpK7gpYfgpIIg4KSP4KSVIOCkleCkoeCkvOClgCDgpKbgpL/gpJbgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KS54KSwIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSF4KS14KSy4KWL4KSV4KSoIOCkruClh+CkgiDgpJ/gpL/gpJXgpJ8g4KSH4KSk4KS/4KS54KS+4KS4IOCkpuClh+CkluCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkteCkv+CkleCksuCljeCkqiDgpLjgpYLgpJrgpYAg4KSu4KWH4KSCIOCkj+CklSDgpJXgpKHgpLzgpYAg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpLngpLAg4KSf4KS/4KSV4KSfIOCkleClhyDgpIXgpLXgpLLgpYvgpJXgpKgg4KSu4KWH4KSCIOCkn+Ckv+CkleCknyDgpIfgpKTgpL/gpLngpL7gpLgg4KSm4KWH4KSW4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KS14KS/4KSV4KSy4KWN4KSqIOCkuOClguCkmuClgCDgpK7gpYfgpIIg4KSP4KSVIOCkleCkoeCkvOClgCDgpKbgpL/gpJbgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KS54KSwIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSF4KS14KSy4KWL4KSV4KSoIOCkruClh+CkgiDgpJ/gpL/gpJXgpJ8g4KSH4KSk4KS/4KS54KS+4KS4IOCkpuClh+CkluCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkteCkv+CkleCksuCljeCkqiDgpLjgpYLgpJrgpYAg4KSu4KWH4KSCIOCkj+CklSDgpJXgpKHgpLzgpYAg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSP4KSVIOCkn+Ckv+CkleCknyDgpJzgpLzgpYLgpK4g4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KS14KS/4KSV4KSy4KWN4KSqIOCkuOClguCkmuClgCDgpK7gpYfgpIIg4KSP4KSVIOCkleCkoeCkvOClgCDgpKbgpL/gpJbgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkueCksCDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSf4KS/4KSV4KSfIOCkh+CkpOCkv+CkueCkvuCkuCDgpKbgpYfgpJbgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkueCksCDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSf4KS/4KSV4KSfIOCkh+CkpOCkv+CkueCkvuCkuCDgpKbgpYfgpJbgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSV4KWHIOCkn+Ckv+CkleCknyDgpIXgpLXgpLLgpYvgpJXgpKgg4KSu4KWH4KSCIOCkj+CklSDgpJ/gpL/gpJXgpJ8g4KSc4KS84KWC4KSuIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkteCkv+CkleCksuCljeCkqiDgpLjgpYLgpJrgpYAg4KSu4KWH4KSCIOCkj+CklSDgpJXgpKHgpLzgpYAg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkueCksCDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSf4KS/4KSV4KSfIOCkh+CkpOCkv+CkueCkvuCkuCDgpKbgpYfgpJbgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSF4KS14KSy4KWL4KSV4KSoIOCkruClh+CkgiDgpI/gpJUg4KSf4KS/4KSV4KSfIOCknOCkvOClguCkriDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSf4KS/4KSV4KSfIOCkh+CkpOCkv+CkueCkvuCkuCjgpLXgpL/gpKrgpLDgpYDgpKQg4KSG4KSm4KWH4KS2KSDgpKbgpL/gpJbgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfgpIXgpILgpKTgpLDgpKvgpLLgpJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ+CkhuCkieCkn+CkquClgeCknyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ+CkuOClh+CkteCkviDgpLLgpYfgpLXgpLIg4KS44KSu4KSd4KWM4KSk4KS+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfgpK7gpL7gpKjgpJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/hr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnU2lndXJubyDFvmVsaXRlIG9icmlzYXRpIG92YWogcHJlZGxvxb5haz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdWcmVtZW5hIG90dmFyYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdEZXRhbGpuaSBwcmVnbGVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnUG9rcmVuaSBwcmV0cmFndSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdVdm96IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ1Vwb3pvcmVuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05lbWF0ZSBkb3p2b2x1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0l6bWXEkXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnSXN0acSNZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ1V2b3oga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1V2b3oga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmVnbGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwYSBkb3p2b2xhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgc2xvYm9kbm9nIHRla3N0YSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdTdcSNZWxqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnUHJlZ2xlZCByZXp1bHRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTcG9yYXp1bSBvIHJhemluaSB1c2x1Z2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1VvYmnEjWFqZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/hu_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfDgWx0YWzDoW5vcyBtxbF2ZWxldGkgYWRhdG9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdCZcOhbGzDrXTDoXNvayBhIGJlasO2dsWRIGvDqXLDqXMgYWRhdGFpaG96JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnQmXDoWxsw610w6Fzb2sgYSBraW1lbsWRIHbDoWxhc3ogYWRhdGFpaG96JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnS29uZmlndXLDoWNpw7NlbGVtLW1lbmVkenNtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnT3N6dMOhbHktbWVnaGF0w6Fyb3rDoXMgbWVndsOhbHRvenRhdMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ1N6ZXJlcG1lZ2hhdMOhcm96w6FzIG1lZ3bDoWx0b3p0YXTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnSW1wb3J0w6Fsw6FzcmEga8Opc3ogb3N6dMOhbHljc29tYWdvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0l0dCBpbXBvcnTDoWxoYXRqYSBhIGxlZ2d5YWtvcmliYiBrb25maWd1csOhY2nDs2VsZW1la2V0IHRhcnRhbG1hesOzIGltcG9ydMOhbMOhc3JhIGvDqXN6IG9zenTDoWx5Y3NvbWFnb2thdC4gTmUgZmVsZWRqZSwgaG9neSBuw6low6FueSB0b3bDoWJiaSBiZcOhbGzDrXTDoXMgbGVoZXQgc3rDvGtzw6lnZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ01lZ2zDqXbFkSBiZWplZ3l6w6lzZWsgZnJpc3PDrXTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSGFzem7DoWxhdHJhIGvDqXN6IG9zenTDoWx5Y3NvbWFnb2sgaW1wb3J0w6Fsw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS1vc3p0w6FseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtLXN6ZXJlcCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnU3rFsXLFkSBheiBvc3p0w6FseW9raG96JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1bDoWxhc3N6b24gZWd5IG9zenTDoWx5dCBhIGxpc3TDoWLDs2wgZWd5IMO6aiBrb25maWd1csOhY2nDs2VsZW0gbMOpdHJlaG96w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnT3N6dMOhbHknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtxbF2ZWxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0luY2lkZW5zw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnSGl2YXRrb3rDoXMgZWd5IG3DoXNpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnw4lydsOpbnl0ZWxlbiBrb25maWd1csOhY2nDs2VsZW0tc3rDoW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0VneSBtw6FzaWsga29uZmlndXLDoWNpw7NlbGVtIHN6w6FtYSwgYW1lbGx5ZWwgw7Zzc3plIGtlbGwga8O2dG5pLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZhbMOzYmFuIHTDtnLDtmxuaSBzemVyZXRuw6kgZXp0IGEga29uZmlndXLDoWNpw7NlbGVtZXQ/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0Ega29uZmlndXLDoWNpw7NlbGVtIG5ldmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0EgbmV2ZXQgbcOhciBoYXN6bsOhbGrDoWsgYSBrb25maWd1csOhY2nDs2VsZW1layBhIGvDtnZldGtlesWRIHN6w6Ftb2trYWw6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyemnDs3N6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSB2ZXJ6acOzc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnQSB2ZXJ6acOzc3rDoW1vdCBtw6FyIGhhc3puw6FsasOhayBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGEga8O2dmV0a2V6xZEgc3rDoW1va2thbDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVuc8OhbGxhcG90JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdLb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdFbMWRem3DqW55dGFydGFsb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0zDqXRyZWhvesOhcyBpZGVqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdOYWd5w610w6FzaSBuw6l6ZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsgb2xkYWxhbmvDqW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZW0gdGFsw6FsaGF0w7NrIGtvbmZpZ3Vyw6FjacOzZWxlbS1hZGF0b2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQSBrb25maWd1csOhY2nDs2VsZW0ga2l2w6FsYXN6dMOhc2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdLZXJlc8OpcyBmdXR0YXTDoXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnRmFuw6l6ZXQgYSBrb25maWd1csOhY2nDs2VsZW1oZXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdNw6lseXPDqWdpIHN6aW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnTmFnecOtdMOhcyDDqXMga2ljc2luecOtdMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdBIGxlZ25hZ3lvYmIgaGl2YXRrb3rDoXNzemludCBlbMOpcnZlIGEga29uZmlndXLDoWNpw7NlbGVtbsOpbCEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtLWluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnSmVsZW5sZWdpIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0plbGVubGVnaSBpbmNpZGVuc8OhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1V0b2xqw6FyYSBtw7Nkb3PDrXR2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdVdG9sasOhcmEgbcOzZG9zw610b3R0YSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1NhasOhdCBrb25maWd1csOhY2nDs2VsZW1layc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdLb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXMnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBIGvDtnZldGtlesWRIG9zenTDoWx5b2sgbGVzem5layBpbXBvcnTDoWx2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBIGvDtnZldGtlesWRIHN6ZXJlcGVrIGxlc3puZWsgaW1wb3J0w6FsdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnTmUgZmVsZWRqZSwgaG9neSBhIGhvenrDoWp1ayB0YXJ0b3rDsyBkaW5hbWlrdXMgbWV6xZFrIMOpcyDDoWx0YWzDoW5vcyBrYXRhbMOzZ3VzIG9zenTDoWx5b2sgaXMgbMOpdHJlIGxlc3puZWsgaG96dmEsIMOpcyBuaW5jcyBhdXRvbWF0aWt1cyBlbHTDoXZvbMOtdMOhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdTemVyZXRuw6kgZm9seXRhdG5pPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdQw6lsZGFvc3p0w6FseW9rIHN6w7xrc8OpZ2VzZWshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0EgbWVnaGF0w6Fyb3rDoXMgbmVtIMOpcnbDqW55ZXMgWUFNTC1raXZvbmF0Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ8OBdHRla2ludMOpczogSVRTTS1rb25maWd1csOhY2nDs2VsZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnU3rDvGtzw6lnZSB2YW4gbGVnYWzDoWJiIGVneSBraXbDoWxhc3p0b3R0IGtvbmZpZ3Vyw6FjacOzZWxlbXJlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05pbmNzIMOtcsOhc2kgaG96esOhZsOpcsOpc2UgZWhoZXogYSBrb25maWd1csOhY2nDs2VsZW1oZXo6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOaW5jcyBtZWdoYXTDoXJvesOhcyBtZWdoYXTDoXJvenZhIGEoeikgJXMgb3N6dMOhbHlob3ohJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdBKHopIOKAniVz4oCdIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZW0gdGFsw6FsaGF0w7MgYXogYWRhdGLDoXppc2JhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOZW0gdm9sdCBsZWhldHPDqWdlcyBhKHopICVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyB0w7ZybMOpc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdOZW0gdGFsw6FsaGF0w7MgdmVyemnDsyBhKHopICVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDs27DoWwhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pbmNzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsywga2V0dMWResOpc2F6b25vc8OtdMOzIHZhZ3kgb3N6dMOhbHlhem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTmluY3MgaG96esOhZsOpcsOpcyBtZWdhZHZhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYXogZWzFkXptw6lueWVrZXQsIG5pbmNzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbSBsZWhldCBtZWdqZWxlbsOtdGVuaSBheiBlbMWRem3DqW55ZWtldCwgbmluY3NlbmVrIGhvenrDoWbDqXLDqXNpIGpvZ29rIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfDmmoga29uZmlndXLDoWNpw7NlbGVtIChhem9ub3PDrXTDsyA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnw5pqIHZlcnppw7MgKGF6b25vc8OtdMOzID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdCBmcmlzc8OtdHZlICjDumogPSAlcywgcsOpZ2kgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSW5jaWRlbnPDoWxsYXBvdCBmcmlzc8OtdHZlICjDumogPSAlcywgcsOpZ2kgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdLb25maWd1csOhY2nDs2VsZW0gKGF6b25vc8OtdMOzID0gJXMpIHTDtnLDtmx2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0thcGNzb2xhdCBlaGhlejogJXMgKHTDrXB1cyA9ICVzKSBob3p6w6FhZHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdLYXBjc29sYXQgZWhoZXo6ICVzICh0w61wdXMgPSAlcykgdMO2csO2bHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdLb25maWd1csOhY2nDs2VsZW0tbWVnaGF0w6Fyb3rDoXMgZnJpc3PDrXR2ZSAoYXpvbm9zw610w7MgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOw6l2IGZyaXNzw610dmUgKMO6aiA9ICVzLCByw6lnaSA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYsO6dHVtICglcykgZnJpc3PDrXR2ZSBlcnLFkWw6IOKAniVz4oCdLCBlcnJlOiDigJ4lc+KAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICclcy4gdmVyemnDsyB0w7Zyw7ZsdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnQSh6KSDigJ4lc+KAnSBmw6FqbCBmZWx0w7ZsdHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnQSh6KSDigJ4lc+KAnSBmw6FqbCBlbHTDoXZvbMOtdHZhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzIHZhZ3kgdmVyemnDs2F6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbSBsZWhldCBtZWdqZWxlbsOtdGVuaSBhIGtvbmZpZ3Vyw6FjacOzZWxlbWV0LCBuaW5jc2VuZWsgaG96esOhZsOpcsOpc2kgam9nb2sgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdBKHopICVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyBuZW0gdGFsw6FsaGF0w7MgYXogYWRhdGLDoXppc2JhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnbnlvbXRhdHRhOiAlcyDigJMgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ0hpdmF0a296dmEgZXogw6FsdGFsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnw4lydsOpbnl0ZWxlbiBvc3p0w6FseWF6b25vc8OtdMOzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pbmNzIG9zenTDoWx5YXpvbm9zw610w7MgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOaW5jc2VuZWsgaG96esOhZsOpcsOpc2kgam9nb2sgbWVnYWR2YSBlaGhleiBheiBvc3p0w6FseWhveiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05pbmNzIHRhbMOhbGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBrZXJlc8Opc2kgZXJlZG3DqW55ZWsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05lbSBsZWhldCBtZWdqZWxlbsOtdGVuaSBheiBlbGVtZXQsIG5pbmNzZW5layBob3p6w6Fmw6lyw6lzaSBqb2dvayBtZWdhZHZhIGEga29uZmlndXLDoWNpw7NlbGVtaGV6ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZW0gdGFsw6FsaGF0w7MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05lbSB0YWzDoWxoYXTDs2sgdmVyemnDs2shJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnw7x6ZW1rw6lwZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2ZpZ3llbG1lenRldMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0Ega29uZmlndXLDoWNpw7NlbGVtIGluY2lkZW5zw6FsbGFwb3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8OJcnbDqW55dGVsZW4gc3rFsXLFkSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ0Ega2VyZXPDqXNpIHBhcmFtw6l0ZXJlayDDqXJ2w6lueXRlbGVuZWshJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnTWVnamVsZW7DrXRldHQga29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdHTDrXB1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdKZWxlbmxlZ2kgaW5jaWRlbnPDoWxsYXBvdC10w61wdXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnS8O2esO2dHQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09zenTDoWx5a29ybMOhdG96w6Fzb2sgYSBrb25maWd1csOhY2nDs2VsZW1uw6lsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdFZ3kgdmFneSB0w7ZiYiBvc3p0w6FseSBraXbDoWxhc3p0w6FzYSBhIGtpdsOhbGFzenRoYXTDsyBrb25maWd1csOhY2nDs2VsZW1layBrb3Jsw6F0b3rDoXPDoWhveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdCBrb3Jsw6F0b3rDoXNvayBhIGtvbmZpZ3Vyw6FjacOzZWxlbW7DqWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdFZ3kgdmFneSB0w7ZiYiDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90IGtpdsOhbGFzenTDoXNhIGEga2l2w6FsYXN6dGhhdMOzIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGtvcmzDoXRvesOhc8OhaG96JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluYW1pa3VzIChrb25maWd1csOhY2nDs2VsZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWt1cyAodmVyemnDsyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnS2FwY3NvbGF0IGhpdmF0a296w6FzaSB0w61wdXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0V6IGEgaGl2YXRrb3rDoXMgYSBrb25maWd1csOhY2nDs2VsZW1yZSB2YWd5IGEgaGl2YXRrb3pvdHQgb2JqZWt0dW0gc3RhdGlrdXMgdmVyemnDs2rDoXJhIHZvbmF0a296aWstZS4gQSBqZWxlbmxlZ2kgaW5jaWRlbnPDoWxsYXBvdCBraXN6w6Ftw610w6FzYSBjc2FrIGRpbmFtaWt1cyBoaXZhdGtvesOhc29rbsOhbCB0w7ZydMOpbmlrIG1lZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdBem9uIGF0dHJpYsO6dHVtIGtpdsOhbGFzenTDoXNhLCBhbWVseSBhbGFwasOhbiBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGtlcmVzdmUgbGVzem5layc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnS8O8bHPFkSBmb3Jyw6FzIGt1bGNzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJ0EgbWVnamVsZW7DrXTDqXMgdMOtcHVzw6FuYWsga2l2w6FsYXN6dMOhc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJ0FrdGl2w6FsamEgZXp0IGEgbGVoZXTFkXPDqWdldCBheiDDqXJ0w6lrZWsgZmFrw6ludCB2YWzDsyBtZWdqZWxlbsOtdMOpc8OpaGV6LCBrb25maWd1csOhY2nDs2VsZW1layBzemVyaW50IGNzb3BvcnRvc8OtdHZhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdBeiBhbGFwc3plcmtlemV0IG5lbSDDqXJ2w6lueWVzLiBBZGpvbiBtZWcgZWd5IFlBTUwgZm9ybcOhdHVtw7ogYWRhdG9rYXQgdGFydGFsbWF6w7Mga2l2b25hdG90Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0EgWUFNTC1rYXJha3RlcmzDoW5jbmFrIOKAni0tLeKAnSBzb3JyYWwga2VsbCBrZXpkxZFkbmllLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOZW0gc2lrZXLDvGx0IHTDtnLDtmxuaSBhIOKAnmNvbmZpZ2l0ZW1fbGlua+KAnSB0w6FibMOhYsOzbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05lbSB0YWzDoWxoYXTDs2sgbWVnZmVsZWzFkSBkaW5hbWlrdXMgbWV6xZFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmVtIHNpa2Vyw7xsdCBiZXN6w7pybmkgYSDigJ5jb25maWdpdGVtX2xpbmvigJ0gdMOhYmzDoWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcwIHNvciBsZXR0IGJlc3rDunJ2YSBhIOKAnmNvbmZpZ2l0ZW1fbGlua+KAnSB0w6FibMOhYmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnRWd5IGVsZW0gbGVnbmFneW9iYiBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICdFZ3kga8Opc3psZXQgZGluYW1pa3VzIG1lesWRIGVsZW3DqW5layBsZWduYWd5b2JiIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICdFZ3kga8Opc3psZXQgZGluYW1pa3VzIG1lesWRIGVsZW3DqW4gYmVsw7xsaSBlbGVtZWsgbGVnbmFneW9iYiBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJ6acOzLWthcmFrdGVybMOhbmMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnSGliYSBhIG1lZ2hhdMOhcm96w6Fzb2sgc3ppbmtyb25pesOhbMOhc2Frb3IuIE7DqXp6ZSBtZWcgYSBuYXBsw7N0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ09seWFuIElUU00ta29uZmlndXLDoWNpw7NlbGVtIG1lZ2hhdMOhcm96w6FzYWkgdmFubmFrLCBhbWVseWVrIG5pbmNzZW5layBzemlua3Jvbml6w6FsdmEuIMOBbGzDrXRzYSDDvHplbWJlIGF6IElUU00ta29uZmlndXLDoWNpw7NlbGVtIGRpbmFtaWt1cyBtZXrFkWrDqW5layB2w6FsdG96dGF0w6FzYWl0Lic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnTGVqw6FydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0thcmJhbnRhcnTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQcsOzYmHDvHplbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnVGVydmV6ZXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ0phdsOtdMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnVmlzc3phdm9udCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdWaXpzZ8OhbGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN6dGVsw6lzL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfDgXR0ZWtpbnTDqXMgw6lzIG1lZ2VyxZFzw610w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ09zenTDoWx5b2ssIHN6ZXJlcGVrIMOpcyBhIGthcGNzb2zDs2TDsyBtZXrFkWlrIGltcG9ydMOhbMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdIaWJhIHTDtnJ0w6ludCBheiBvc3p0w6FseSBpbXBvcnTDoWzDoXNhIHNvcsOhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCDigJMgcmVqdGV0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIOKAkyBsw6F0aGF0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnQSBmb2x5YW1hdGtlemVsw6lzIMOhdG1lbmV0bcWxdmVsZXRlaW5layBrb25maWd1csOhY2nDs2VsZW0taG96esOhYWTDoXPDoWJhbiDDqXMgLWZyaXNzw610w6lzw6liZW4gaGFzem7DoWx0IGJlbHPFkSBtZXrFkW5ldmVrIGxla8OpcGV6w6lzZS4gQSBrdWxjc29rIGEgamVneSBvYmpla3R1bXTDrXB1c3NhbCByZW5kZWxrZXrFkSBrw6lzemxldG5layBhIGvDqXN6bGV0IGJlbHPFkSBtZXrFkWluZWsgYXpvbiBuZXZlaSwgYW1lbHllayBhIGtvbmZpZ3Vyw6FjacOzZWxlbSBsw6l0cmVob3rDoXPDoWhveiB2YWd5IGZyaXNzw610w6lzw6loZXogbGVzem5layBoYXN6bsOhbHZhLCBheiDDqXJ0w6lrZWsgcGVkaWcgYXogSVRTTS1rb25maWd1csOhY2nDs2VsZW0gb2JqZWt0dW10w61wdXNzYWwgcmVuZGVsa2V6xZEga8Opc3psZXQgYmVsc8WRIG1lesWRaW5layBuZXZlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTGVoZXTFkXbDqSB0ZXN6aSBhIGtpdGVyamVzenRldHQga2VyZXPDqXNpIGZlbHTDqXRlbGVrZXQgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXPDqWJlbi4gRXp6ZWwgYSBmdW5rY2nDs3ZhbCBhIHDDqWxkw6F1bCBvbHlhbiB0w61wdXPDuiBmZWx0w6l0ZWxla2tlbCBrZXJlc2hldCBhIGtvbmZpZ3Vyw6FjacOzZWxlbS1uZXZla3JlLCBtaW50IOKAnigqa3VsY3MxKiYmKmt1bGNzMiop4oCdIHZhZ3kg4oCeKCprdWxjczEqfHwqa3VsY3MyKinigJ0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaGV0xZF2w6kgdGVzemkgYSBraXRlcmplc3p0ZXR0IGtlcmVzw6lzaSBmZWx0w6l0ZWxla2V0IGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIGtlcmVzw6lzw6liZW4uIEV6emVsIGEgZnVua2Npw7N2YWwgYSBww6lsZMOhdWwgb2x5YW4gdMOtcHVzw7ogZmVsdMOpdGVsZWtrZWwga2VyZXNoZXQgYSBrb25maWd1csOhY2nDs2VsZW0tbmV2ZWtyZSwgbWludCDigJ4oKmt1bGNzMSomJiprdWxjczIqKeKAnSB2YWd5IOKAnigqa3VsY3MxKnx8Kmt1bGNzMiop4oCdLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdIb3p6w6FyZW5kZWx0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnSmVneSBsw6l0cmVob3rDoXNhIGEga29uZmlndXLDoWNpw7NlbGVtZWtoZXogZWd5IG1lZ2Fkb3R0IGlkxZFwb250YmFuLCBoYSBhIGJlw6FsbMOtdG90dCBrw7Z2ZXRlbG3DqW55ZWsgdGVsamVzw7xsbmVrLiBBeiBpZMWRcG9udG90IGEga29uZmlndXLDoWNpw7NlbGVtIOKAnlRpbWVDSUtleeKAnSBrdWxjc2EgYWxhdHQgYmXDoWxsw610b3R0IGTDoXR1bSB0w61wdXPDuiBkaW5hbWlrdXMgbWV6xZEgw6lydMOpa2UgaGF0w6Fyb3p6YSBtZWcsIMOpcyBhIOKAnlRpbWVNb2RpZmllcuKAnSBtw7Nkb3PDrXRqYS4gSGEgYXogdXTDs2JiaSB2YWd5IGNzYWsgc3rDoW0sIHZhZ3kgZWzFkWplbCAoKy8tKSwgc3rDoW0gw6lzIG3DqXJ0w6lrZWd5c8OpZyAoZC9oL20pIGxlaGV0OiBhIOKAnjfigJ0gZWd5ZW7DqXJ0w6lrxbEgYSDigJ4rN2TigJ0gw6lydMOpa2tlbC4gQSDigJ5UaWNrZXQtPkR5bmFtaWNGaWVsZOKAnSBkaW5hbWlrdXMgbWV6xZEgbGVzeiBoYXN6bsOhbHZhIGEgbMOpdHJlaG96b3R0IGplZ3llayBtZWdqZWzDtmzDqXPDqWhleiDigJMgbMOpdGV6bmllIGtlbGwuIEF6IFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gamVsesWRaywgYWhvbCBYIGhlbHlldHQgTkFNRSwgTlVNQkVSIMOpcyBEQVRFIGxlaGV0LCBhIOKAnlRpY2tldC0+VGV4dOKAnSBrdWxjc2JhbiBsw6l2xZEgbWVnZmVsZWzFkSDDqXJ0w6lrZWtrZWwgbGVzeiBraWNzZXLDqWx2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnQXR0cmliw7p0dW1vayBhIGxpY2VuY2VrIHN6w6FtbMOhbMOhc8OhaG96LCBhaG9sIGEg4oCeVG90YWxMaWNlbnNlc0RG4oCdLCBheiDigJ5BdmFpbGFibGVMaWNlbnNlc0RG4oCdIMOpcyBheiDigJ5MaWNlbnNlUmVmZXJlbmNlREbigJ0gYSBow6F0cmFsw6l2xZEgbGljZW5jZWsga8O2dmV0w6lzw6loZXogaGFzem7DoWx0IGRpbmFtaWt1cyBtZXrFkWsgbmV2ZWkuIEhhIGhhc3puw6FsdmEgdmFuLCBha2tvciBjc2FrIGEg4oCeVmFsaWREZXBsU3RhdGVz4oCdIGJlw6FsbMOtdMOhc2JhbiBsw6l2xZEgw6FsbGFwb3RvayBsZXN6bmVrIGZpZ3llbGVtYmUgdsOpdmUuIEhhIGvDvHN6w7Zic3ppbnQgdmFuIG1lZ2hhdMOhcm96dmEgYSDigJ5NaW5pbXVtTGljZW5zZXPigJ0gYmXDoWxsw610w6FzYmFuLCBha2tvciBhIGplZ3kgYXV0b21hdGlrdXNhbiBsw6l0cmUgbGVzeiBob3p2YSwgaGEga2V2ZXNlYmIgbGljZW5jIMOpcmhldMWRIGVsLiBFaGhleiBhIOKAnlRpY2tldC0+RHluYW1pY0ZpZWxk4oCdIGplbMO2bMWRbsOpZ3l6ZXQgZGluYW1pa3VzIG1lesWRbmVrIGzDqXRlem5pZSBrZWxsLiBBeiBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IGPDrW1rw6lrLCBhaG9sIFggaGVseWV0dCBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIMOpcyBMSUNFTlNFU19NSU4gbGVoZXQsIGEg4oCeVGlja2V0LT5UZXh04oCdIGJlw6FsbMOtdMOhc2JhbiBsw6l2xZEgbWVnZmVsZWzFkSDDqXJ0w6lrZWtrZWwsIGEga29uZmlndXLDoWNpw7NlbGVtIG5ldsOpdmVsLCBzesOhbcOhdmFsLCBlbMOpcmhldMWRIGxpY2VuY2Vra2VsIMOpcyBsZWdrZXZlc2ViYiBzesO8a3PDqWdlcyBlbMOpcmhldMWRIGxpY2VuY2NlbCBsZXN6IGtpY3NlcsOpbHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ8OcZ3lmw6lsLXbDoWxsYWxhdGhveiBob3p6w6FyZW5kZWx0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnw5xneWbDqWwtZmVsaGFzem7DoWzDs2hveiBob3p6w6FyZW5kZWx0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIGJlw6FsbMOtdMOhc29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdFZ3llZGkgbsOpdiBlbGxlbsWRcnrDqXNlIGtpesOhcsOzbGFnIHVneWFuYWJiYW4gYSBrb25maWd1csOhY2nDs2VsZW0gb3N6dMOhbHliYW4gKOKAnm9zenTDoWx54oCdKSB2YWd5IGdsb2LDoWxpc2FuICjigJ5nbG9iw6FsaXPigJ0pLCBhbWVseSBhenQgamVsZW50aSwgaG9neSBtaW5kZW4gbWVnbMOpdsWRIGtvbmZpZ3Vyw6FjacOzZWxlbSBmaWd5ZWxlbWJlIGxlc3ogdsOpdmUgYSBrZXR0xZF6w6lzZWsga2VyZXPDqXNla29yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnTW9kdWwga2l2w6FsYXN6dMOhc2EgZWd5IGVsbmV2ZXrDqXNpIHPDqW1hIGtpa8OpbnlzemVyw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdNb2R1bCBraXbDoWxhc3p0w6FzYSBlZ3kgc3rDoW1zw6ltYSBraWvDqW55c3plcsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdNb2R1bCBraXbDoWxhc3p0w6FzYSBlZ3kgdmVyemnDsy1rYXJha3RlcmzDoW5jIGtpa8OpbnlzemVyw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnQXR0cmliw7p0dW1vayBraXbDoWxhc3p0w6FzYSBlZ3kgw7pqIHZlcnppw7MgbMOpdHJlaG96w6Fzw6FuYWsgYWt0aXbDoWzDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnS2F0ZWfDs3Jpw6FrIGtpdsOhbGFzenTDoXNhIGV6ZW4ga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5b2tob3ogdmFsw7MgaG96esOhcmVuZGVsw6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdTesOtbm1lZ2hhdMOhcm96w6Fzb2sgYSBueWlsdsOhbm9zIGZlbMO8bGV0aGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdPc3psb3Aga29uZmlndXLDoWNpw7NlbGVtLXN6xbFyxZFrIGEga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50w6lzw6liZW4gc3rFsXJoZXTFkSBvc3psb3Bvay4gTWVnamVneXrDqXM6IGNzYWsga29uZmlndXLDoWNpw7NlbGVtLWF0dHJpYsO6dHVtb2sgw6lzIGRpbmFtaWt1cyBtZXrFkWsgKER5bmFtaWNGaWVsZF9OYW1lWCkgZW5nZWTDqWx5ZXpldHRlay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBob3p6w6FhZMOhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIHN6ZXJrZXN6dMOpc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJ0tvbmZpZ3Vyw6FjacOzZWxlbS1lc2Vtw6lueW1vZHVsLCBhbWVseSBlbmdlZMOpbHllemkgYSBsaWNlbmNlayBueWlsdsOhbnRhcnTDoXPDoXQgZWd5IGFkb3R0IGtvbmZpZ3Vyw6FjacOzZWxlbW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1csOhY2nDs2VsZW0tZXNlbcOpbnltb2R1bCwgYW1lbHkgZW5nZWTDqWx5ZXppIGEgbmFwbMOzesOhc3QgYXogZWzFkXptw6lueWVrYmUgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdLb25maWd1csOhY2nDs2VsZW0tZXNlbcOpbnltb2R1bCwgYW1lbHkgZnJpc3PDrXRpIGEga29uZmlndXLDoWNpw7NlbGVtZWtldCBhIGplbGVubGVnaSBtZWdoYXTDoXJvesOhc3VrcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIGVsxZF6bcOpbnllaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIG55b210YXTDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdLb25maWd1csOhY2nDs2VsZW0gZmFuw6l6ZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSB2ZXJ6acOzamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQSBrw7Z2ZXRrZXrFkSBvc3p0w6FseW9rIGtvbmZpZ3Vyw6FjacOzZWxlbWVpIG5lbSBrZXLDvGxuZWsgdMOhcm9sw6FzcmEgYXogRWxhc3RpY3NlYXJjaC1raXN6b2xnw6Fsw7NuLiBBaGhveiwgaG9neSBlenQgYSBtZWdsw6l2xZEga29uZmlndXLDoWNpw7NlbGVtZWtyZSBpcyBhbGthbG1henphLCBsZSBrZWxsIGZ1dHRhdG5pYSBhIGtvbmZpZ3Vyw6FjacOzZWxlbS1rw7ZsdMO2enRldMOpc3QgYSBrb256b2xvbiBrZXJlc3p0w7xsLCBtaXV0w6FuIG1lZ3bDoWx0b3p0YXR0YSBlenQgYSBiZcOhbGzDrXTDoXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdBIGvDtnZldGtlesWRIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Rva2thbCByZW5kZWxrZXrFkSBrb25maWd1csOhY2nDs2VsZW1layBuZW0ga2Vyw7xsbmVrIHTDoXJvbMOhc3JhIGF6IEVsYXN0aWNzZWFyY2gta2lzem9sZ8OhbMOzbi4gQWhob3osIGhvZ3kgZXp0IGEgbWVnbMOpdsWRIGtvbmZpZ3Vyw6FjacOzZWxlbWVrcmUgaXMgYWxrYWxtYXp6YSwgbGUga2VsbCBmdXR0YXRuaWEgYSBrb25maWd1csOhY2nDs2VsZW0ta8O2bHTDtnp0ZXTDqXN0IGEga29uem9sb24ga2VyZXN6dMO8bCwgbWl1dMOhbiBtZWd2w6FsdG96dGF0dGEgZXp0IGEgYmXDoWxsw610w6FzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlndXLDoWNpw7NlbGVtLWtvcmzDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS1rb3Jsw6F0IG9sZGFsYW5rw6ludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzbWVuZWR6c21lbnQtYWRhdGLDoXppcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNpIGjDoXR0w6lycHJvZ3JhbSDDunR2w6FsYXN6dMOzamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICdBem9uIG9zemxvcG9rIGJlw6FsbMOtdMOhc2EsIGFtZWx5ZWsgZWzDqXJoZXTFkWsgYSBqb2dvc3VsdHPDoWdpIGZlbHTDqXRlbGVrIG1lZ3Rla2ludMOpc8OpaGV6IGF6IMO8Z3lmw6lsZmVsw7xsZXRlbiwgaGEgYSBtZWdmZWxlbMWRIGpvZ29zdWx0c8OhZ2kgZmVsdMOpdGVsIG9zemxvcGFpIG5pbmNzZW5layBraWZlamV6ZXR0ZW4gYmXDoWxsw610dmEuIEV6IGEgYmXDoWxsw610w6FzIHRhcnRhbMOpa2vDqW50IHZhbiBoYXN6bsOhbHZhIGEgdMO2YmJpIGpvZ29zdWx0c8OhZ2kgZmVsdMOpdGVsIG9zemxvcGFpbmFrIGJlw6FsbMOtdMOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJ0F6b24gb3N6bG9wb2sgYmXDoWxsw610w6FzYSwgYW1lbHllayBlbMOpcmhldMWRayBhIGpvZ29zdWx0c8OhZ2kgZmVsdMOpdGVsZWsgbWVndGVraW50w6lzw6loZXogYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4sIGhhIGEgbWVnZmVsZWzFkSBqb2dvc3VsdHPDoWdpIGZlbHTDqXRlbCBvc3psb3BhaSBuaW5jc2VuZWsga2lmZWplemV0dGVuIGJlw6FsbMOtdHZhLiBFeiBhIGJlw6FsbMOtdMOhcyB0YXJ0YWzDqWtrw6ludCB2YW4gaGFzem7DoWx2YSBhIHTDtmJiaSBqb2dvc3VsdHPDoWdpIGZlbHTDqXRlbCBvc3psb3BhaW5hayBiZcOhbGzDrXTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBem9uIG9zemxvcG9rIGJlw6FsbMOtdMOhc2EsIGFtZWx5ZWsgZWzDqXJoZXTFkWsgYSBtZWdmZWxlbMWRIGpvZ29zdWx0c8OhZ2kgZmVsdMOpdGVsIG1lZ3Rla2ludMOpc2Vrb3IgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBem9uIG9zemxvcG9rIGJlw6FsbMOtdMOhc2EsIGFtZWx5ZWsgZWzDqXJoZXTFkWsgYSBtZWdmZWxlbMWRIGpvZ29zdWx0c8OhZ2kgZmVsdMOpdGVsIG1lZ3Rla2ludMOpc2Vrb3IgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdNZWdoYXTDoXJvesOhc29rIGzDqXRyZWhvesOhc2Egw6lzIGtlemVsw6lzZSBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdKZWd5ZWtldCBob3ogbMOpdHJlIGEga29uZmlndXLDoWNpw7NlbGVtZWtoZXogbWVnaGF0w6Fyb3pvdHQgaWTFkXBvbnRva2Jhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnQXogw7xneWZlbGVrIGzDoXRoYXRqw6FrIGEga29yw6FiYmkga29uZmlndXLDoWNpw7NlbGVtLXZlcnppw7NrYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmZWxla25layBsZWhldMWRc8OpZ8O8ayB2YW4ga8OpemlsZWcgdsOhbHRhbmkgYSBrb3LDoWJiaSBrb25maWd1csOhY2nDs2VsZW0tdmVyemnDs2sga8O2esO2dHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnQXogYXR0cmliw7p0dW1vbiBoYXN6bsOhbGFuZMOzIGFsYXDDqXJ0ZWxtZXpldHQgYWRhdG9rIGEga29uZmlndXLDoWNpw7NlbGVtIGtlcmVzw6lzZSBrw6lwZXJuecWRbsOpbC4gUMOpbGRhOiDigJ5JVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yO+KAnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdBeiBhdHRyaWLDunR1bW9uIGhhc3puw6FsYW5kw7MgYWxhcMOpcnRlbG1lemV0dCBhZGF0b2sgYSBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNlIGvDqXBlcm55xZFuw6lsLiBQw6lsZGE6IOKAnklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM74oCdLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnTcWxdmVsZXRlayBtZWdoYXTDoXJvesOhc2EsIGFob2wgZWd5IGJlw6FsbMOtdMOhc29rIGdvbWIgw6lyaGV0xZEgZWwgYSBrYXBjc29sdCBvYmpla3R1bW9rIGZlbMO8bGV0aSBlbGVtZW4gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0g4oCew7Zzc3pldGV0dOKAnSkuIE5lIGZlbGVkamUsIGhvZ3kgZXpla25layBhIG3FsXZlbGV0ZWtuZWsgcmVuZGVsa2V6bmnDvGsga2VsbCBhIGvDtnZldGtlesWRIEpTIMOpcyBDU1MgZsOhamxvayByZWdpc3p0csOhbMOhc8OhdmFsOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDDqXMgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnVGVtcGxhdGU6OlRvb2xraXQgc8OpbWEgbWVnaGF0w6Fyb3rDoXNhIGEgdmVyemnDsy1rYXJha3RlcmzDoW5jaG96LiBDc2FrIGFra29yIHZhbiBoYXN6bsOhbHZhLCBoYSBhIHZlcnppw7NrYXJha3RlcmzDoW5jLW1vZHVsIFRlbXBsYXRlVG9vbGtpdCDDqXJ0w6lrcmUgdmFuIMOhbGzDrXR2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBem9uIGRpbmFtaWt1cyBtZXrFkSBvYmpla3R1bXTDrXB1c29rIGxpc3TDoWrDoW5hayBtZWdoYXTDoXJvesOhc2EsIGFtZWx5ZWsgaG96esOhcmVuZGVsaGV0xZFrIGEgY3NvbWFnIG3FsXZlbGV0ZWloZXogYSBkaW5hbWlrdXMgbWV6xZEga8OpcGVybnnFkWluZWsgZmVsw7xsZXTDqW4ga2VyZXN6dMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0ZlbHTDqXRlbGhhbG1heiBtZWdoYXTDoXJvesOhc2EsIGFtZWx5IHRlbGplc8O8bMOpc2Vrb3IgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBueWlsdsOhbm9zYW4gbMOhdGhhdMOzLiBBIG7DqXYgYXogZWd5ZXRsZW4ga8O2dGVsZXrFkSBhdHRyaWLDunR1bS4gSGEgbmluY3NlbmVrIG3DoXMgYmXDoWxsw610w6Fzb2sgbWVnYWR2YSwgYWtrb3IgYXogw7Zzc3plcyBrb25maWd1csOhY2nDs2VsZW0gbMOhdGhhdMOzIGxlc3ogYXogYWRvdHQga2F0ZWfDs3JpYSBhbGF0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdGZWx0w6l0ZWxoYWxtYXogbWVnaGF0w6Fyb3rDoXNhLCBhbWVseSB0ZWxqZXPDvGzDqXNla29yIGF6IMO8Z3lmw6lsIGzDoXRoYXQgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbWV0LiBBIGZlbHTDqXRlbGVrIHbDoWxhc3p0aGF0w7NhbiBrb3Jsw6F0b3poYXTDs2sgYml6b255b3Mgw7xneWbDqWxjc29wb3J0b2tyYS4gQSBuw6l2IGF6IGVneWV0bGVuIGvDtnRlbGV6xZEgYXR0cmliw7p0dW0uIEhhIG5pbmNzZW5layBtw6FzIGJlw6FsbMOtdMOhc29rIG1lZ2FkdmEsIGFra29yIGF6IMO2c3N6ZXMga29uZmlndXLDoWNpw7NlbGVtIGzDoXRoYXTDsyBsZXN6IGF6IGFkb3R0IGthdGVnw7NyaWEgYWxhdHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2thdCBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbWVrIHTDtnJsw6lzw6loZXogYXogw6FsdGFsw6Fub3MgZmVsw7xsZXQgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rYXQgYXogSVRTTS1rb25maWd1csOhY2nDs2VsZW1layBsZWvDqXLDqXPDqWhleiBheiDDoWx0YWzDoW5vcyBmZWzDvGxldCBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2thdCBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbWVrIGtlcmVzw6lzw6loZXogYXogw6FsdGFsw6Fub3MgZmVsw7xsZXQgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rYXQgYXogSVRTTS1rb25maWd1csOhY2nDs2VsZW1layBiZcOhbGzDrXTDoXPDoWhveiBheiDDoWx0YWzDoW5vcyBmZWzDvGxldCBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0VneSDDoXR0ZWtpbnTFkSBtb2R1bHQgaGF0w6Fyb3ogbWVnIGVneSBrb25maWd1csOhY2nDs2VsZW0gbGlzdGEga2lzIG7DqXpldMOpbmVrIG1lZ2plbGVuw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgYSBoaXZhdGtvesOhc3TDrXB1cyBjw61ta8OpaW5layBtZWcga2VsbC1lIGplbGVubmnDvGsgYSBjc29tw7Nwb250IGthcGNzb2xhdGFpYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnUmVndWzDoXJpcyBraWZlamV6w6lzZWtldCBoYXTDoXJveiBtZWcgZWd5w6luaWxlZyBtaW5kZW4gZWd5ZXMga29uZmlndXLDoWNpw7NlbGVtIG9zenTDoWx5bsOhbCBhIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZXbDqW5layBlbGxlbsWRcnrDqXPDqWhleiwgdmFsYW1pbnQgYSBtZWdmZWxlbMWRIGhpYmHDvHplbmV0ZWsgbWVnamVsZW7DrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga29uZmlndXLDoWNpw7NlbGVtZWsgZWzDqXJoZXTFkSBvc3psb3BhaXQgYSBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50xZFqw6liZW4gYSBrb25maWd1csOhY2nDs2VsZW0gb3N6dMOhbHnDoXTDs2wgZsO8Z2fFkWVuLiBNaW5kZW4gYmVqZWd5esOpc25layBlZ3kgb3N6dMOhbHluw6l2YsWRbCDDqXMgYSBtZWdmZWxlbMWRIG9zenTDoWx5aG96IGVsw6lyaGV0xZEgbWV6xZFrIHTDtm1iasOpYsWRbCBrZWxsIMOhbGxuaWEuIEEgZGluYW1pa3VzIG1lesWRIGJlamVneXrDqXNlaW5layBhIER5bmFtaWNGaWVsZF9NZXrFkW7DqXYgc8OpbcOhdCBrZWxsIGvDtnZldG5pw7xrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IGtvbmZpZ3Vyw6FjacOzZWxlbS1hdHRyaWLDunR1bW90IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzaSBlcmVkbcOpbnnDqW5layBrb25maWd1csOhY2nDs2VsZW0tcmVuZGV6w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQga29uZmlndXLDoWNpw7NlbGVtLWF0dHJpYsO6dHVtb3QgYXogw7xneWbDqWxmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXNpIGVyZWRtw6luecOpbmVrIGtvbmZpZ3Vyw6FjacOzZWxlbS1yZW5kZXrDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQga29uZmlndXLDoWNpw7NlbGVtLWF0dHJpYsO6dHVtb3QgYSBueWlsdsOhbm9zIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbS1rZXJlc8Opc2kgZXJlZG3DqW55w6luZWsga29uZmlndXLDoWNpw7NlbGVtLXJlbmRlesOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBrb25maWd1csOhY2nDs2VsZW0tYXR0cmliw7p0dW1vdCBlemVuIG3FsXZlbGV0IGtvbmZpZ3Vyw6FjacOzZWxlbS1rZXJlc8Opc2kgZXJlZG3DqW55w6luZWsga29uZmlndXLDoWNpw7NlbGVtLXJlbmRlesOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IGtvbmZpZ3Vyw6FjacOzZWxlbS1zb3JyZW5kZXQgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXNpIGVyZWRtw6luecOpYmVuLiBGZWw6IGxlZ3LDqWdlYmJpIGZlbMO8bHJlLiBMZTogbGVndXRvbHPDsyBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBrb25maWd1csOhY2nDs2VsZW0tc29ycmVuZGV0IGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzaSBlcmVkbcOpbnnDqWJlbi4gRmVsOiBsZWdyw6lnZWJiaSBmZWzDvGxyZS4gTGU6IGxlZ8O6amFiYiBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQga29uZmlndXLDoWNpw7NlbGVtLXNvcnJlbmRldCBhIG55aWx2w6Fub3MgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzaSBlcmVkbcOpbnnDqWJlbi4gRmVsOiBsZWdyw6lnZWJiaSBmZWzDvGxyZS4gTGU6IGxlZ3V0b2xzw7MgZmVsw7xscmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IGtvbmZpZ3Vyw6FjacOzZWxlbS1zb3JyZW5kZXQgZXplbiBtxbF2ZWxldCBrb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXNpIGVyZWRtw6luecOpYmVuLiBGZWw6IGxlZ3LDqWdlYmJpIGZlbMO8bHJlLiBMZTogbGVndXRvbHPDsyBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs2VsZW1layBhbGFww6lydGVsbWV6ZXR0ZW4gbWVnamVsZW7DrXRldHQgb3N6bG9wYWl0IGEga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuIGEga29uZmlndXLDoWNpw7NlbGVtIG9zenTDoWx5w6F0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGJlamVneXrDqXNuZWsgZWd5IG9zenTDoWx5bsOpdmLFkWwgw6lzIGEgbWVnZmVsZWzFkSBvc3p0w6FseWhveiBlbMOpcmhldMWRIG1lesWRayB0w7ZtYmrDqWLFkWwga2VsbCDDoWxsbmlhLiBBIGRpbmFtaWt1cyBtZXrFkSBiZWplZ3l6w6lzZWluZWsgYSBEeW5hbWljRmllbGRfTWV6xZFuw6l2IHPDqW3DoXQga2VsbCBrw7Z2ZXRuacO8ay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnTWVnaGF0w6Fyb3p6YSBhIG1lZ2plbGVuw610ZW5kxZEgYWxhcMOpcnRlbG1lemV0dCBrYXBjc29sYXRvayBtw6lseXPDqWfDqXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dGVuIG1lZ2plbGVuw610ZXR0IGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXJlc8Opc2kgYXR0cmliw7p0dW3DoXQgYSBrb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXMga8OpcGVybnnFkW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHRlbiBtZWdqZWxlbsOtdGV0dCBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNpIGF0dHJpYsO6dHVtw6F0IGEga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzIGvDqXBlcm55xZFuw6lsLiBQw6lsZMOhdWw6IGEg4oCeS3VsY3PigJ0gw6lydMOpa8OpbmVrIGplbGVuIGVzZXRiZW4gYSBkaW5hbWlrdXMgbWV6xZEg4oCeWOKAnSBuZXbDqW5layBrZWxsIGxlbm5pZSwgYSDigJ5UYXJ0YWxvbeKAnSDDqXJ0w6lrw6luZWsgYSBkaW5hbWlrdXMgbWV6xZEgdMOtcHVzw6F0w7NsIGbDvGdnxZFlbiBhIGRpbmFtaWt1cyBtZXrFkSDDqXJ0w6lrw6luZWsga2VsbCBsZW5uaWUsIGEgc3rDtnZlZzog4oCeZWd5IHN6w7Z2ZWfigJ0sIGEgbGVuecOtbMOzOiDigJ4x4oCdLCBhIGTDoXR1bSDDqXMgaWTFkTog4oCeU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTvigJ0gw6lzIHZhZ3kg4oCeU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N+KAnTsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IOKAnklUU01Db25maWdJdGVt4oCdIG9zenTDoWx5IGFsYXDDqXJ0ZWxtZXpldHQgYWxvYmpla3R1bcOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs2VsZW1layBsZXRpbHRvdHQgb3N6bG9wYWl0IGEga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuIGEga29uZmlndXLDoWNpw7NlbGVtIG9zenTDoWx5w6F0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGJlamVneXrDqXNuZWsgZWd5IG9zenTDoWx5bsOpdmLFkWwgw6lzIGEgbWVnZmVsZWzFkSBvc3p0w6FseWhveiBlbMOpcmhldMWRIG1lesWRayB0w7ZtYmrDqWLFkWwga2VsbCDDoWxsbmlhLiBBIGRpbmFtaWt1cyBtZXrFkSBiZWplZ3l6w6lzZWluZWsgYSBEeW5hbWljRmllbGRfTWV6xZFuw6l2IHPDqW3DoXQga2VsbCBrw7Z2ZXRuacO8ay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIFJpY2ggVGV4dCBzemVya2VzenTFkS3DtnNzemV0ZXbFkSBtYWdhc3PDoWfDoXQgZW5uw6lsIGEga8OpcGVybnnFkW7DqWwuIFN6w6FtIChrw6lwcG9udCkgdmFneSBzesOhemFsw6lrIChyZWxhdMOtdikgw6lydMOpa2V0IGFkam9uIG1lZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIENJIG1lZ2hhdMOhcm96w6FzLXN6ZXJrZXN6dMWRIHNvcmFpbmFrIHN6w6Ftw6F0IGF6IGFkbWluaXN6dHLDoWNpw7NzIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogaW5jaWRlbnPDoWxsYXBvdG9rIHNvcnJlbmRqw6l0IGEgbGVnbWFnYXNhYmJ0w7NsIChww6lsZMOhdWwga3JpdGlrdXMpIGEgbGVnYWxhY3NvbnlhYmJpZyAocMOpbGTDoXVsIGZ1bmtjaW9uw6FsaXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogRWxhc3RpY3NlYXJjaCBmZWzDvGxldGkgZWxlbSBow6F0dMOpcnByb2dyYW1qw6FuYWsgcGFyYW3DqXRlcmVpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga2FwY3NvbMOzZMOzIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Rva2F0LCBhaG9sIGEga2FwY3NvbHQgamVneWVrIGJlZm9secOhc29saGF0asOhayBlZ3kga29uZmlndXLDoWNpw7NlbGVtIMOhbGxhcG90w6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrZXJlc8Opc2kga29ybMOhdG90IGF6IEFnZW50SVRTTUNvbmZpZ0l0ZW0ga8OpcGVybnnFkW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGtlcmVzw6lzaSBrb3Jsw6F0b3QgYXogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBrw6lwZXJuecWRbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga2VyZXPDqXNpIGtvcmzDoXRvdCBhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0ga8OpcGVybnnFkW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGtlcmVzw6lzaSBrb3Jsw6F0b3QgYSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIGvDqXBlcm55xZFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga2VyZXPDqXNpIGtvcmzDoXRvdCBhIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIGvDqXBlcm55xZFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs2VsZW1layBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrYXBjc29sYXRpIHTDoWJsYSBrb21wbGV4IG7DqXpldMOpYmVuIGF6IMO2c3N6ZXMga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5bsOhbC4gSGEgbmluY3MgYmVqZWd5esOpcywgYWtrb3IgYXogYWxhcMOpcnRlbG1lemV0dCBvc3psb3BvayBsZXN6bmVrIG1lZ2plbGVuw610dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ0ktayBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrYXBjc29sYXRpIHTDoWJsYSBrb21wbGV4IG7DqXpldMOpYmVuIGEgQ0kgb3N6dMOhbHl0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGJlamVneXrDqXN0IGF6IG9zemxvcCBuZXZlIMOpcyBkdXBsYSBrZXR0xZFzcG9udCBlbMWRdGFnZ2FsIGtlbGwgZWxsw6F0bmkgKGF6YXogQ29tcHV0ZXI6OikuIFZhbiBuw6low6FueSBvbHlhbiBDSS1hdHRyaWLDunR1bSwgYW1lbHkga8O2esO2cyBtaW5kZW4gQ0ktdmVsIChww6lsZMOhdWwgYSBDb21wdXRlciBvc3p0w6FseW7DoWw6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIEF6IGVnecOpbmkgQ0ktYXR0cmliw7p0dW1vayBtZWdqZWxlbsOtdMOpc8OpaGV6LCBhaG9neSBhem9rIGEgQ0ktbWVnaGF0w6Fyb3rDoXNiYW4gbWVnIHZhbm5hayBhZHZhLCBhIGvDtnZldGtlesWRIHPDqW3DoXQga2VsbCBoYXN6bsOhbG5pIChww6lsZMOhdWwgYSBDb21wdXRlciBvc3p0w6FseW7DoWwpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSGEgZWd5IENJIG9zenTDoWx5aG96IG5pbmNzIGJlamVneXrDqXMsIGFra29yIGF6IGFsYXDDqXJ0ZWxtZXpldHQgb3N6bG9wb2sgbGVzem5layBtZWdqZWxlbsOtdHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBlbGVtZWsgw6lyaGV0xZFrIGVsIGF6IOKAnkFjdGlvbuKAnSBzemFrYXN6bsOhbCBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBBQ0wtc3plcmtlemV0w6luZWsgaGFybWFkaWsgc3ppbnRqw6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBlbGVtZWsgw6lyaGV0xZFrIGVsIGF6IElUU00ta29uZmlndXLDoWNpw7NlbGVtIEFDTC1zemVya2V6ZXTDqW5layBlbHPFkSBzemludGrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBlbGVtZWsgw6lyaGV0xZFrIGVsIGF6IElUU00ta29uZmlndXLDoWNpw7NlbGVtIEFDTC1zemVya2V6ZXTDqW5layBtw6Fzb2RpayBzemludGrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBrYXBjc29sYXR0w61wdXNvayAoYSBqZWd5IG7DqXrFkXBvbnRqw6Fiw7NsIGVsbmV2ZXp2ZSkgYmVmb2x5w6Fzb2xoYXRqw6FrIGVneSBrYXBjc29sdCBrb25maWd1csOhY2nDs2VsZW0gw6FsbGFwb3TDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBtZWx5IGplZ3l0w61wdXMgYmVmb2x5w6Fzb2xoYXRqYSBlZ3kga2FwY3NvbHQga29uZmlndXLDoWNpw7NlbGVtIMOhbGxhcG90w6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ01lZ2hhdMOhcm96w6FzLWZyaXNzw610w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0gdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Qgc3rDrW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnS2V0dMWResOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0RpbmFtaWt1cyBtZXrFkSBlc2Vtw6lueW1vZHVsLCBhbWVseSBzemlua3Jvbml6w6FsYXRsYW5rw6ludCBqZWzDtmxpIG1lZyBhIGtvbmZpZ3Vyw6FjacOzZWxlbSBtZWdoYXTDoXJvesOhc2FpdCwgaGEgYSB0YXJ0YWxtYXpvdHQgZGluYW1pa3VzIG1lesWRayBtZWd2w6FsdG96bmFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCB0b3bDoWJiaSBJVFNNIG1lesWRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG55aWx2w6Fub3MgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXJlc8Opc2Uga8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIGEga29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIG3FsXZlbGV0IGZ1bmtjacOzdCBheiDDvGd5aW50w6l6xZFpIGVsxZF0w6l0cHJvZ3JhbW7DoWwsIGhvZ3kgZWd5c3plcnJlIGVneW7DqWwgdMO2YmIga29uZmlndXLDoWNpw7NlbGVtbWVsIGRvbGdvemhhc3Nvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0NzYWsgYSBmZWxzb3JvbHQgY3NvcG9ydG9rbmFrIGVuZ2Vkw6lseWV6aSBhIGtvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtxbF2ZWxldCBmdW5rY2nDs3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIHZhZ3kgbGV0aWx0amEgYXp0IGEgZnVua2Npb25hbGl0w6FzdCwgYW1lbHkgYXogSVRTTS1rb25maWd1csOhY2nDs2VsZW1layBlZ3llZGkgbmV2ZWl0IGVsbGVuxZFyemkuIEEgbGVoZXTFkXPDqWcgZW5nZWTDqWx5ZXrDqXNlIGVsxZF0dCBlbGxlbsWRcml6bmllIGtlbGwgYSByZW5kc3plcsOpdCwgaG9neSB2YW5uYWstZSBtw6FyIGzDqXRlesWRIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGtldHTFkXrDtnR0IG7DqXZ2ZWwuIEV6dCBheiDigJ5BZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXPigJ0ga29uem9scGFyYW5jY3NhbCB0ZWhldGkgbWVnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdFc2Vtw6lueW1vZHVsIGEga29uZmlndXLDoWNpw7NlbGVtIMOhbGxhcG90w6FuYWsgYmXDoWxsw610w6Fzw6Fob3ogZWd5IGplZ3kga29uZmlndXLDoWNpw7NlbGVtIGhpdmF0a296w6Fzw6FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSBpbmRleMOpbmVrIG1lesWRaSwgYW1lbHkgYSBzemFiYWQtc3phdmFzIGtlcmVzw6lzw6loZXogdmFuIGhhc3puw6FsdmEuIEEgbWV6xZFrIGlzIHTDoXJvbMOhc3JhIGtlcsO8bG5laywgZGUgbmVtIGvDtnRlbGV6xZFlayBhIHRlbGplcyBmdW5rY2lvbmFsaXTDoXNob3ouIEEgbWVsbMOpa2xldGVrIGZlbHbDqXRlbGUgbGV0aWx0aGF0w7MgYSBiZWplZ3l6w6lzIMOpcnTDqWvDqW5layAwLXJhIMOhbGzDrXTDoXPDoXZhbCB2YWd5IGEgYmVqZWd5esOpcyB0w7ZybMOpc8OpdmVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQSBrb25maWd1csOhY2nDs2VsZW0gaW5kZXjDqWJlbiB0w6Fyb2x0IG1lesWRaywgYW1lbHllayBhIHN6YWJhZC1zemF2YXMga2VyZXPDqXNla2VuIGvDrXbDvGwgbcOhcyBjw6lsb2tyYSBpcyBoYXN6bsOhbHZhIHZhbm5hay4gQSB0ZWxqZXMgZnVua2Npb25hbGl0w6FzaG96IGF6IMO2c3N6ZXMgbWV6xZEga8O2dGVsZXrFkS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJ01pbmRlbiB3ZWJzem9sZ8OhbHRhdMOhc2hveiAoa3VsY3MpIG9zenTDoWx5b2sgdMO2bWJqZSAow6lydMOpaykgaGF0w6Fyb3poYXTDsyBtZWcsIGFtZWx5cmUgYXogaW1wb3J0w6Fsw6FzIGtvcmzDoXRvenZhIHZhbi4gQXogw7Zzc3plcyBraXbDoWxhc3p0b3R0IG9zenTDoWx5bsOhbCB2YWd5IGF6IMO2c3N6ZXMgbWVnbMOpdsWRIG9zenTDoWx5bsOhbCBheiBhem9ub3PDrXTDsyBhdHRyaWLDunR1bW9rYXQga2kga2VsbCBtYWpkIHbDoWxhc3p0YW5pIGEgbWVnaMOtdsOzIGJlw6FsbMOtdMOhc8OhYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDgWx0YWzDoW5vcyBmZWzDvGxldCBtb2R1bCByZWdpc3p0csOhY2nDsyBhIGtvbmZpZ3Vyw6FjacOzZWxlbS1sw6l0cmVob3rDoXMgbWVnaMOtdsOzIHLDqXRlZ2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDgWx0YWzDoW5vcyBmZWzDvGxldCBtb2R1bCByZWdpc3p0csOhY2nDsyBhIGtvbmZpZ3Vyw6FjacOzZWxlbS1sZWvDqXLDqXMgbWVnaMOtdsOzIHLDqXRlZ2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnw4FsdGFsw6Fub3MgZmVsw7xsZXQgbW9kdWwgcmVnaXN6dHLDoWNpw7MgYSBrb25maWd1csOhY2nDs2VsZW0tZnJpc3PDrXTDqXMgbWVnaMOtdsOzIHLDqXRlZ2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTS1rb25maWd1csOhY2nDs2VsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSDDoXR0ZWtpbnTDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lkZW5zw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW5zw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRmVsdmVzemkgYXogb3N6dMOhbHlva2F0IGEgbnlpbHbDoW5vcyBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXPDqWJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGZWx2ZXN6aSBheiDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90b2thdCBheiDDvGd5ZsOpbGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbS1rZXJlc8Opc8OpYmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGZWx2ZXN6aSBheiDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90b2thdCBhIG55aWx2w6Fub3MgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzw6liZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZlbHZlc3ppIGF6IGluY2lkZW5zw6FsbGFwb3Rva2F0IGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzw6liZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGZWx2ZXN6aSBheiBpbmNpZGVuc8OhbGxhcG90b2thdCBhIG55aWx2w6Fub3MgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzw6liZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZlbHZlc3ppIGEgbmV2ZXQgYSBueWlsdsOhbm9zIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbS1rZXJlc8Opc8OpYmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZlbHZlc3ppIGEgc3rDoW1vdCBhIG55aWx2w6Fub3MgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzw6liZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnTGljZW5jbnlpbHbDoW50YXJ0w6FzaSBrb25maWd1csOhY2nDs2VsZW0gZXNlbcOpbnltb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0JldMO2bHTFkW1vZHVsIHJlZ2lzenRyw6FjacOzIGEgbnlpbHbDoW5vcyBmZWzDvGxldGhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRW5uZWsgYSBtxbF2ZWxldG5layBheiBlcmVkbcOpbnnDqWJlbiBtZWdqZWxlbsOtdGVuZMWRIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGxlZ25hZ3lvYmIgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ0VneSBtb2R1bCBlZ3kgb3N6dMOhbHnDqXJ0IGZlbGVsxZFzIGNzb3BvcnQgZWxsZW7FkXJ6w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnRWd5IG1vZHVsIGVneSBrb25maWd1csOhY2nDs2VsZW3DqXJ0IGZlbGVsxZFzIGNzb3BvcnQgZWxsZW7FkXJ6w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnRWd5IG1vZHVsIElUU00ta29uZmlndXLDoWNpw7NlbGVtIHN0YXRpc3p0aWvDoWsgZWzFkcOhbGzDrXTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOw6l2IG1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdTesOhbSBtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kga2VyZXPDqXNpIGVyZWRtw6lueSBtaW5kZW4gZWd5ZXMgb2xkYWzDoW4gbWVnamVsZW7DrXRlbmTFkSBrb25maWd1csOhY2nDs2VsZW1layBzesOhbWEgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kga2VyZXPDqXNpIGVyZWRtw6lueSBtaW5kZW4gZWd5ZXMgb2xkYWzDoW4gbWVnamVsZW7DrXRlbmTFkSBrb25maWd1csOhY2nDs2VsZW1layBzesOhbWEgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG55aWx2w6Fub3MgZmVsw7xsZXQgbWluZGVuIGVneWVzIG9sZGFsw6FuIG1lZ2plbGVuw610ZW5kxZEga29uZmlndXLDoWNpw7NlbGVtZWsgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ0tlcmVzZW5kxZEgb2JqZWt0dW1vaywgaMOhbnkgYmVqZWd5esOpcyDDqXMgbWVseSBhdHRyaWLDunR1bW9rIGplbGVuamVuZWsgbWVnLiBBIGtvbmZpZ3Vyw6FjacOzZWxlbS1hdHRyaWLDunR1bW9rYXQgZWd5w6lydGVsbcWxZW4gZWwga2VsbCB0w6Fyb2xuaSBheiBFbGFzdGljc2VhcmNoLWtpc3pvbGfDoWzDs24ga2VyZXN6dMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnw4F0dGVraW50w6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGEga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5b2sga2F0ZWfDs3Jpw6FpaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgYmXDoWxsw610w6Fzb2sgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGEga2lzIGtvbmZpZ3Vyw6FjacOzZWxlbS3DoXR0ZWtpbnTFkSBvc3psb3BzesWxcsWRaWhlei4gTmUgZmVsZWRqZTogYXog4oCeQWN0aXZl4oCdIDAtcmEgw6FsbMOtdMOhc8OhdmFsIGNzYWsgYXogw7xneWludMOpesWRa25layBha2Fkw6FseW96emEgbWVnIGV6ZW4gY3NvcG9ydCBiZcOhbGzDrXTDoXNhaW5hayBzemVya2VzenTDqXPDqXQgYSBzemVtw6lseWVzIGJlw6FsbMOtdMOhc2Fpa2JhbiwgZGUgYXogYWRtaW5pc3p0csOhdG9yb2tuYWsgdG92w6FiYnJhIGlzIGxlaGV0xZF2w6kgdGVzemkgYSBiZcOhbGzDrXTDoXNvayBzemVya2VzenTDqXPDqXQgZWd5IG3DoXNpayBmZWxoYXN6bsOhbMOzIG5ldsOpYmVuLiBIYXN6bsOhbGphIGEg4oCeUHJlZmVyZW5jZUdyb3Vw4oCdIGt1bGNzb3QgYW5uYWsgc3phYsOhbHlvesOhc8OhaG96LCBob2d5IGV6ZWtuZWsgYSBiZcOhbGzDrXTDoXNva25hayBtZWx5IHRlcsO8bGV0ZW4ga2VsbCBtZWdqZWxlbm5pw7xrIGEgZmVsaGFzem7DoWzDs2kgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gbWVnamVsZW7DrXRldHQgw7xneWbDqWx2w6FsbGFsYXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMOpc8OpbmVrIHZlesOpcmzFkXB1bHQgaMOhdHTDqXJwcm9ncmFtasOhaG96LiBBIOKAnkxpbWl04oCdIGEga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5b25rw6ludCBhbGFww6lydGVsbWV6ZXR0ZW4gbWVnamVsZW7DrXRldHQgYmVqZWd5esOpc2VrIHN6w6FtYS4gQSDigJ5Hcm91cOKAnSBoYXN6bsOhbGhhdMOzIGEgaG96esOhZsOpcsOpcyBrb3Jsw6F0b3rDoXPDoWhveiBhIGLFkXbDrXRtw6lueXJlIChww6lsZMOhdWwgR3JvdXA6IGFkbWluO2Nzb3BvcnQxO2Nzb3BvcnQyOykuIEEg4oCeRGVmYXVsdOKAnSBhenQgaGF0w6Fyb3p6YSBtZWcsIGhvZ3kgYSBixZF2w610bcOpbnkgYWxhcMOpcnRlbG1lemV0dGVuIGVuZ2Vkw6lseWV6dmUgdmFuLCB2YWd5IGhvZ3kgYSBmZWxoYXN6bsOhbMOzbmFrIGvDqXp6ZWwga2VsbCBlbmdlZMOpbHllem5pZSBhenQuIEEg4oCeQ2FjaGVUVExMb2NhbOKAnSBhIGLFkXbDrXRtw6lueSBneW9yc8OtdMOzdMOhciBpZGVqZSBwZXJjYmVuLiBBIOKAnkNvbmZpZ0l0ZW1LZXnigJ0gYW5uYWsgbWVnYWTDoXPDoXJhIHZhbMOzLCBob2d5IG1lbHkgw7xneWbDqWwtZmVsaGFzem7DoWzDsyBoaXZhdGtvesOhcyBkaW5hbWlrdXMgbWV6xZEgdmFuIGhhc3puw6FsdmEgYSBraXbDoWxhc3p0b3R0IMO8Z3lmw6lsdsOhbGxhbGF0IHN6xbFyw6lzw6loZXouIEEg4oCeU2hvd25DbGFzc2Vz4oCdIGVneSBsaXN0YSBhIG1lZ2plbGVuw610ZXR0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrIG9zenTDoWx5YWluYWsgdsOhbGFzenRoYXTDsyBrb3Jsw6F0b3rDoXPDoWhvei4gSGEgZXp0IGEgbGlzdMOhdCDDvHJlc2VuIGhhZ3lqYSwgYWtrb3IgYWxhcMOpcnRlbG1lemV0dGVuIGF6IMO2c3N6ZXMgb2x5YW4gb3N6dMOhbHl0IHRhcnRhbG1henphLCBhbWVseSBlZ3llemlrIGEg4oCeQ29uZmlnSXRlbUtleeKAnSBtZXrFkWJlbiBiZcOhbGzDrXRvdHQgZGluYW1pa3VzIG1lesWRYmVuIGzDqXbFkSDDvGd5ZsOpbC1mZWxoYXN6bsOhbMOzdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIG1lZ2plbGVuw610ZXR0IMO8Z3lmw6lsdsOhbGxhbGF0IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoXR0ZWtpbnTDqXPDqW5layB2ZXrDqXJsxZFwdWx0IGjDoXR0w6lycHJvZ3JhbWrDoWhvei4gQSDigJ5MaW1pdOKAnSBheiBhbGFww6lydGVsbWV6ZXR0ZW4gbWVnamVsZW7DrXRldHQgYmVqZWd5esOpc2VrIHN6w6FtYS4gQSDigJ5Hcm91cOKAnSBoYXN6bsOhbGhhdMOzIGEgaG96esOhZsOpcsOpcyBrb3Jsw6F0b3rDoXPDoWhveiBhIGLFkXbDrXRtw6lueXJlIChww6lsZMOhdWwgR3JvdXA6IGFkbWluO2Nzb3BvcnQxO2Nzb3BvcnQyOykuIEEg4oCeRGVmYXVsdOKAnSBhenQgaGF0w6Fyb3p6YSBtZWcsIGhvZ3kgYSBixZF2w610bcOpbnkgYWxhcMOpcnRlbG1lemV0dGVuIGVuZ2Vkw6lseWV6dmUgdmFuLCB2YWd5IGhvZ3kgYSBmZWxoYXN6bsOhbMOzbmFrIGvDqXp6ZWwga2VsbCBlbmdlZMOpbHllem5pZSBhenQuIEEg4oCeQ2FjaGVUVExMb2NhbOKAnSBhIGLFkXbDrXRtw6lueSBneW9yc8OtdMOzdMOhciBpZGVqZSBwZXJjYmVuLiBBIOKAnkNvbmZpZ0l0ZW1LZXnigJ0gYW5uYWsgbWVnYWTDoXPDoXJhIHZhbMOzLCBob2d5IG1lbHkgw7xneWbDqWx2w6FsbGFsYXQgaGl2YXRrb3rDoXMgZGluYW1pa3VzIG1lesWRIHZhbiBoYXN6bsOhbHZhIGEga2l2w6FsYXN6dG90dCDDvGd5ZsOpbHbDoWxsYWxhdCBzesWxcsOpc8OpaGV6LiBBIOKAnlNob3duQ2xhc3Nlc+KAnSBlZ3kgbGlzdGEgYSBtZWdqZWxlbsOtdGV0dCBrb25maWd1csOhY2nDs2VsZW1layBvc3p0w6FseWFpbmFrIHbDoWxhc3p0aGF0w7Mga29ybMOhdG96w6Fzw6Fob3ouIEhhIGV6dCBhIGxpc3TDoXQgw7xyZXNlbiBoYWd5amEsIGFra29yIGFsYXDDqXJ0ZWxtZXpldHRlbiBheiDDtnNzemVzIG9seWFuIG9zenTDoWx5dCB0YXJ0YWxtYXp6YSwgYW1lbHkgZWd5ZXppayBhIOKAnkNvbmZpZ0l0ZW1LZXnigJ0gbWV6xZFiZW4gYmXDoWxsw610b3R0IGRpbmFtaWt1cyBtZXrFkWJlbiBsw6l2xZEgw7xneWbDqWx2w6FsbGFsYXR0YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3RvayBzesOtbmVpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgYmXDoWxsw610w6Fzb2sgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Rva2hveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYXogw6FsdGFsw6Fub3Mga2F0YWzDs2d1cyBhdHRyaWLDunR1bWFpbmFrIHDDqWxkYSBqb2dvc3VsdHPDoWcgY3NvcG9ydGphaWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYSBrb25maWd1csOhY2nDs2VsZW0tb3N6dMOhbHlvayBuw6l2bW9kdWxqw6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBhIGtvbmZpZ3Vyw6FjacOzZWxlbS1vc3p0w6FseW9rIHN6w6FtbW9kdWxqw6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IG9sZGFsYWtob3ogKGFtZWx5ZWtlbiBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIG1lZ2plbGVubmVrKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGEga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5b2sgdmVyemnDs2thcmFrdGVybMOhbmMtbW9kdWxqw6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYSBrb25maWd1csOhY2nDs2VsZW0tb3N6dMOhbHlvayB2ZXJ6acOzLWthcmFrdGVybMOhbmPDoW5hayBUZW1wbGF0ZTo6VG9vbGtpdC1tb2R1bGrDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYSBrb25maWd1csOhY2nDs2VsZW0tb3N6dMOhbHlvayB2ZXJ6acOzYWt0aXbDoWzDs2rDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICdWw6lncmVoYWp0amEgYSBiZcOhbGzDrXRvdHQgbcWxdmVsZXRldCBtaW5kZW4gZWd5ZXMgZXNlbcOpbnloZXogKG1lZ2jDrXbDs2vDqW50KSBtaW5kZW4gYmXDoWxsw610b3R0IHdlYnN6b2xnw6FsdGF0w6FzbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0pvZ29zdWx0c8OhZ2kgY3NvcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdBIG55aWx2w6Fub3MgZmVsaGFzem7DoWzDs2sgbMOhdGhhdGrDoWsgYSBrb3LDoWJiaSBrb25maWd1csOhY2nDs2VsZW0tdmVyemnDs2thdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQSBueWlsdsOhbm9zIGZlbGhhc3puw6Fsw7NrbmFrIGxlaGV0xZFzw6lnw7xrIHZhbiBrw6l6aWxlZyB2w6FsdGFuaSBhIGtvcsOhYmJpIGtvbmZpZ3Vyw6FjacOzZWxlbS12ZXJ6acOzayBrw7Z6w7Z0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBtZWxsw6lrbGV0bcWxdmVsZXTDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBrZXJlc8Opc2kga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTS1rb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNpIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lmw6lsZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IElUU00ta29uZmlndXLDoWNpw7NlbGVtIGZhbsOpemV0IGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzaSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBob3p6w6FhZMOhc2Ega8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IElUU00ta29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBzemVya2VzenTDqXNlIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBlbMWRem3DqW55ZWsga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBueW9tdGF0w6FzYSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGEga29uZmlndXLDoWNpw7NlbGVtZWsgdMO2cmzDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdLb25maWd1csOhY2nDs2VsZW1layBrZXJlc8Opc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdFZ3kga29uZmlndXLDoWNpw7NlbGVtIGluY2lkZW5zw6FsbGFwb3TDoW5hayBhdXRvbWF0aWt1cyBiZcOhbGzDrXTDoXNhLCBhbWlrb3IgZWd5IGplZ3lldCBrYXBjc29sbmFrIGVneSBrb25maWd1csOhY2nDs2VsZW1oZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYXogw7x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdG90IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIG3FsXZlbGV0IGvDqXBlcm55xZFqw6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZcOhbGzDrXRqYSBheiBpbmNpZGVuc8OhbGxhcG90b3QgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQga8OpcGVybnnFkWrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiwgYW1lbHkgbGVoZXTFkXbDqSB0ZXN6aSBlZ3kga29uZmlndXLDoWNpw7NlbGVtIMO2c3N6ZWthcGNzb2zDoXPDoXQgZWd5IG3DoXNpayBvYmpla3R1bW1hbCBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIGVsxZF6bcOpbnllaW5layBlbMOpcsOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpbmVrIGVsw6lyw6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIHTDtnJsw6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGEga29uZmlndXLDoWNpw7NlbGVtIGhpdmF0a296w6FzYWluYWsgZmFuw6l6ZXRrw6ludCB2YWzDsyBtZWdqZWxlbsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXR0xZF6w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50xZFqw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXR0xZF6w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0gc3plcmtlc3p0w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldGhleiB2YWzDsyB2aXNzemF0w6lyw6lzaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBueW9tdGF0w6Fzw6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtYmUgdMO2cnTDqW7FkSBuYWd5w610w6FzaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdqZWxlbsOtdGkgYSBrb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpdCAoZm9yZMOtdG90dCBzb3JyZW5kYmVuKSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0F6IGFsYXDDqXJ0ZWxtZXpldHQga2F0ZWfDs3JpYSwgYW1lbHkgYWtrb3IgamVsZW5payBtZWcsIGhhIHNlbW1pIHNpbmNzIGtpdsOhbGFzenR2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0VneSBrb25maWd1csOhY2nDs2VsZW0gYXpvbm9zw610w7NqYSwgcMOpbGTDoXVsOiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gQXogYWxhcMOpcnRlbG1lemV0dDogQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICdBIG55aWx2w6Fub3MgZmVsw7xsZXQgw6F0dGVraW50w6lzw6luZWsgY8OtbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnQSBueWlsdsOhbm9zIGZlbMO8bGV0IGtlcmVzw6lzw6luZWsgY8OtbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQXV0b21hdGlrdXNhbiBha3RpdsOhbGphIGEga29uZmlndXLDoWNpw7NlbGVtLWxla8OpcsOpcyBtZWdow612w7N0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJ6acOzLWthcmFrdGVybMOhbmMga2lmZWplesOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyemnDsy1rYXJha3RlcmzDoW5jIG1vZHVsamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyemnDs2FrdGl2w6Fsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnQSBtZXrFkWsgYXV0b21hdGlrdXNhbiBraSBsZWd5ZW5lay1lIHTDtmx0dmUgKDEpLCDDqXMgZWJiZW4gYXogZXNldGJlbiBlbCBsZWd5ZW5lay1lIHJlanR2ZSBhIGplZ3nFsXJsYXBva3LDs2wgKDIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdFbGtlcsO8bGhldMWRIGxlZ3llbi1lIGEga29uZmlndXLDoWNpw7NlbGVtIEFDTCB2w6lncmVoYWp0w6FzYSBhIGd5b3Jzw610w7N0w6FyYXpvdHQgbWV6xZFmw7xnZ8WRc8OpZ2VrIGVsbGVuxZFyesOpc8OpdmVsLiBFeiBqYXbDrXRoYXRqYSBheiDFsXJsYXBvayBiZXTDtmx0w6lzaSBpZGVqw6l0LCBkZSBsZSBrZWxsIHRpbHRhbmksIGhhIEFDTC1tb2R1bG9rIHZhbm5hayBoYXN6bsOhbGF0YmFuIElUU00ta29uZmlndXLDoWNpw7NlbGVtLSDDqXMgxbFybGFwLXZpc3N6YXTDqXLDqXNpIHTDrXB1c29raG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnTWVseWlrIMOhbHRhbMOhbm9zIGluZm9ybcOhY2nDsyBqZWxlbmplbiBtZWcgYSBmZWpsw6ljYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ29zenTDoWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2LDoWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ2Jlw7x6ZW1lbMOpcyB1dMOhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnYmXDvHplbWVsw6lzIGVsxZF0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnYmXDvHplbWVsdmUnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgaMO8dmVseWsgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBow7x2ZWx5ayAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IGjDvHZlbHlrICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IGjDvHZlbHlrICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkgaMO8dmVseWtlcyByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBow7x2ZWx5ayAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBow7x2ZWx5ayAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgaMO8dmVseWtlcyByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBow7x2ZWx5ayAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzIGjDvHZlbHlrZXMgcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaMO8dmVseWsgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGjDvHZlbHlrICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBow7x2ZWx5ayAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGjDvHZlbHlrICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGjDvHZlbHlrICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBow7x2ZWx5ayAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaMO8dmVseWsgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGjDvHZlbHlrICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBow7x2ZWx5ayAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGjDvHZlbHlrICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgaMO8dmVseWsgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBow7x2ZWx5ayAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgaMO8dmVseWsgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgaMO8dmVseWsgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgaMO8dmVseWsgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBow7x2ZWx5ayAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGjDvHZlbHlrICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgaMO8dmVseWsgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGjDvHZlbHlrICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBow7x2ZWx5ayAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBow7x2ZWx5ayAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBow7x2ZWx5ayAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBow7x2ZWx5ayAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJ0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnU3rDoW12aXRlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnU3rDoW12aXRlbGkgaW5mb3Jtw6FjacOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdDw61tbGVmb2dsYWzDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN6dHLDoXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsw7NnIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICdBcGFjaGUgbGljZW5jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnS8Opc3rDvGzDqWsgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnQlNEIGxpY2VuYyAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0Fra3VtdWzDoXRvciBrYXBhY2l0w6FzYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0Fra3VtdWzDoXRvciB0w61wdXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnw4lww7xsZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1c3ogY3NhdG9sw7NqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICdDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvY2Vzc3pvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdQcm9jZXNzem9yIG9zenTDoWx5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYWNpdMOhcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnR3JhZmlrdXMga8OhcnR5w6Fua8OpbnRpIGthcGFjaXTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLw6FydHlhc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLw6FydHlhb2x2YXPDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLw6FydHlhIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ8OcZ3lmw6lsdGFuw7pzw610dsOhbnlvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfDnGd5ZsOpbHN6b2Z0dmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ8OcZ3lmw6lsLWthdGVnw7NyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnw5NyYWplbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnw5NyYWplbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS8OzZGFsw6HDrXLDoXNpIHRhbsO6c8OtdHbDoW55b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuY2lhdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ1RhbsOhY3NhZMOzaSBzemVyesWRZMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnS2FwY3NvbGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLYXBjc29sYXRmZWx2w6l0ZWwgYSBmb3JnYWxtYXrDs3ZhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnTDqW5lcmtlemVsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnU3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1N6ZXJ6xZFkw6lzIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdTemVyesWRZMOpc2VzIGlkxZFzemFrIGtlemRldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnU3plcnrFkWTDqXNlcyBpZMWRc3phayB2w6lnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdWZXpldMOpayBuw6lsa8O8bGkgdGVsZWZvbiAoREVDVCB0ZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLw7ZsdHPDqWcgbcOpcnTDqWtlZ3lzw6lnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0xpY2VuY2VrIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnTMOpdHJlaG96w6FzIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJ0NyZWF0aXZlIENvbW1vbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdFZ3nDqW5pIHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1Agw6FsdGFsIGxlZm9nbGFsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLWtpc3pvbGfDoWzDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnU3rDoW1sYSBkw6F0dW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdSZW5kZWzDqXMgZMOhdHVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnSsOzdMOhbGzDoXMgZMOhdHVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdLaWFkw6FzIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0FzenRhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50dW0tYWzDocOtcsOhc2kgdGFuw7pzw610dsOhbnlvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbC10YW7DunPDrXR2w6FueW9rIChTL01JTUUtdGFuw7pzw610dsOhbnlvayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJ0Jlw6FneWF6b3R0IFNJTSAoZVNJTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ011bmthc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdCZWZlamV6xZEgSVAtY8OtbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1TDoW1vZ2F0w6FzIHbDqWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnTGVqw6FyYXRpIGTDoXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnS8O8bHPFkSBtZXJldmxlbWV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVMWxemZhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0JlbHPFkSB2ZXrDqXJsxZFwcm9ncmFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnTGVuZGtlcsOpay1hbGFww7ogZW5lcmdpYXTDoXJvbMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0tpYWxha8OtdMOhc2kgbcOpcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2Utc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnw4FsdGFsw6Fub3MgaW5mb3Jtw6FjacOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpa3VzIGvDoXJ0ecOhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlrdXMga8OhcnR5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdIYXJkdmVybW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0hhcmR2ZXIgc8O6bHlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdGZWpoYWxsZ2F0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUC1wcm90b2tvbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnU3plbcOpbHlhem9ub3Nzw6FnLSDDqXMgaG96esOhZsOpcsOpcy1rZXplbMOpcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTGVsdMOhcmkgc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJ0JlZmVrdGV0w6lzaSBrw7ZsdHPDqWdlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ1N6w6FtbGEgc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnQmlsbGVudHnFsXpldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QtbW9uaXRvciAoZm9seWFkw6lra3Jpc3TDoWx5b3Mga2lqZWx6xZEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQtbW9uaXRvciAoZsOpbnlraWJvY3PDoXTDsyBkacOzZGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJ0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1ZlemV0w6lrZXMgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdTesOpbGVzc8OpZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJzEuIHLDqXRlZzogZml6aWthaSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnMi4gcsOpdGVnOiBhZGF0a2FwY3NvbGF0aSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJzMuIHLDqXRlZzogaMOhbMOzemF0aSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnMy4gcsOpdGVnOiBow6Fsw7N6YXRpIHLDqXRlZyAoc3p1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICc0LiByw6l0ZWc6IMOhdHZpdGVsaSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJzUuIHLDqXRlZzogdmlzem9ueSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnNi4gcsOpdGVnOiBtZWdqZWxlbsOtdMOpc2kgcsOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnNy4gcsOpdGVnOiBhbGthbG1hesOhcyByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTMOtemluZ3N6ZXJ6xZFkw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5jZWd5ZXptw6lueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnTGljZW5jc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbmNrdWxjcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaWNlbmMgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5jaWTFkXN6YWsga2V6ZGV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2VuY2lkxZFzemFrIHbDqWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMw610aXVtLXZhc2Zvc3pmw6F0IChMaUZlUE80KSBha2t1bXVsw6F0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0zDrXRpdW1pb24gKExpLWlvbikgYWtrdW11bMOhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnS8O2bGNzw7Zuc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0ViYmVuIHRhbMOhbGhhdMOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0hvc3N6w7pzw6FnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnTUlUIGxpY2VuYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdHecOhcnTDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTGVnbmFneW9iYiB0ZXJoZWzDqXMga2FwYWNpdMOhc2EgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbcOzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTWVtw7NyaWEgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICdNaWtybyBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaSByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbHRlbGVmb25zesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9iZcOhZ3lhem90dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsbCBsZcOtcsOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvciBmZWxib250w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yIG3DqXJldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdFZ8Opcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJ05hbm8gU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdIw6Fsw7N6YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSMOhbMOzemF0aSBpbmZvcm3DoWNpw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdIw6Fsw7N6YXRpIGluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0jDoWzDs3phdGkgcsOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsLWthZG1pdW0gKE5pQ2QpIGFra3VtdWzDoXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1mw6ltIGhpZHJpZCAoTmlNSCkgYWtrdW11bMOhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1RpdG9rdGFydMOhc2kgbWVnw6FsbGFwb2TDoXMgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ1Byb2Nlc3N6b3JvayBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUkFNLW1vZHVsb2sgc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0dyYWZpa3VzIGvDoXJ0ecOhayBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtbW9uaXRvciAob3JnYW5pa3VzIGbDqW55a2lib2Nzw6F0w7MgZGnDs2RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfDnHplbWVsdGV0w6lzaSBrw7ZsdHPDqWdlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdSZW5kZWzDqXNzesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0VnecOpYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnS2ltZW5ldGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJzw6lnaSBtZWfDoWxsYXBvZMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICfDlnLDtmvDtnMgbGljZW5jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJ1RlbGVmb24gLyBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25zesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbiB0w61wdXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRml6aWthaSBtYWdvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1TDoXBlbGzDoXTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJ0vDtnpraW5jcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdNZWd2w6Fzw6Fyb2x2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFjayBtw6lseXPDqWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmFjayBlZ3lzw6lnIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnU3pvYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta8OhcnR5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtdGFuw7pzw610dsOhbnlvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0Fkw6FzdsOpdGVsaSBzemVyesWRZMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdNxbFob2xkYXMgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdaw6FydCDDs2xvbXNhdmFzIChTTEEpIGFra3VtdWzDoXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnRmVsaGFzem7DoWzDs2kgbGljZW5jZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU29yb3phdHN6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ0tpc3pvbGfDoWzDs3N6b2Z0dmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU3pvbGfDoWx0YXTDoXNpIG1lZ8OhbGxhcG9kw6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU3pvbGfDoWx0YXTDoXNjw61ta2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnU2hhcmV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnQ3NhdGxha296w7MgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1N6b2Z0dmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSGFuZ3N6w7Nyw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N6YWJ2w6FueW9zIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnS2V6ZMWRIElQLWPDrW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1TDoXJoZWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnVMOhcm9sw7MgcGFydMOtY2nDs2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJ0VsxZFmaXpldMOpcyBhbGFww7ogbGljZW5jZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0xlw6FueXbDoWxsYWxhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnw5Zzc3plZm9nbGFsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdWw6lrb255IGtsaWVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnU3rDoWxhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUZWxqZXMgZ3JhZmlrdXMga8OhcnR5YSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RlbGplcyBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnw4lyaW50xZFrw6lwZXJuecWRcyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9yb255JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0ItZWxvc3p0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1mZWpoYWxsZ2F0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICdWaXJ0dcOhbGlzIGtsaWVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnTWVubnlpc8OpZ2kgbGljZW5jZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Via2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/id_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmlkX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRhIG9wZXJhc2kgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGVuZ2F0dXJhbiB1bnR1ayBkYXRhIHBlcm1pbnRhYW4geWFuZyBtYXN1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1BlbmdhdHVyYW4gdW50dWsgZGF0YSByZXNwb25zIGtlbHVhcic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1BlbmdlbG9sYWFuIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICd1YmFoIGRlZmluaXNpIGtlbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNZW5ndWJhaCBkZWZpbmlzaSBwZXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0J1bmRlbCBLZWxhcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdEaSBzaW5pIEFuZGEgZGFwYXQgbWVuZ2ltcG9yIGJ1bmRlbCBrZWxhcyBSZWFkeTJJbXBvcnQgeWFuZyBtZW5hbXBpbGthbiBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgcGFsaW5nIHVtdW0uIEhhcmFwIGRpY2F0YXQgYmFod2EgYmViZXJhcGEga29uZmlndXJhc2kgdGFtYmFoYW4gbXVuZ2tpbiBkaXBlcmx1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdNZW1wZXJiYXJ1aSBlbnRpdGFzIHlhbmcgYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnTWVuZ2ltcG9yIGJ1bmRlbCBrZWxhcyBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tlbGFzIEl0ZW0gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1BlcmFuIEl0ZW0gS29uZmlndXJhc2knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnSXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdTYXJpbmdhbiB1bnR1ayBrZWxhcy1rZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdQaWxpaCBzYXR1IGtlbGFzIGRhcmkgZGF0YXIgdW50dWsgbWVtYnVhdCBzZWJ1YWggaXRlbSBrb25maWd1cmFzaSBiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2VsYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdUaW5kYWthbiBtYXNhbCBJdGVtS29uZmlndXJhc2kgSVRTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhdHVzIHBlbnllYmFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdTdGF0dXMgaW5zaWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdUYXV0YW4gdW50dWsga2UgbGFpbm55YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTm9tb3IgaXRlbSBrb25maWd1cmFzaSB0aWRhayBzYWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnSnVtbGFoIGl0ZW0ga29uZmlndXJhc2kgbGFpbm55YSB5YW5nIGFrYW4gZGkgaHVidW5na2FuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQXBha2FoIEFuZGEgYmVuYXItYmVuYXIgaW5naW4gbWVuZ2hhcHVzIGl0ZW0ga29uZmlndXJhc2kgaW5pPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1hIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOYW1hIGluaSB0ZWxhaCBkaSBndW5ha2FuIG9sZWggSXRlbUtvbmZpZ3VyYXNpIGRlbmdhbiBub21vcihub21vci1ub21vcikgYmVyaWt1dDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOb21vciB2ZXJzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTm9tb3IgdmVyc2kgaXRlbSBrb25maWd1cmFzaSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOb21vciBWZXJzaSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tb3IgYmVyaWt1dCBpbmk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGF0dXMgcGVueWViYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0tvbmRpc2kgaW5zaWRlbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnUml3YXlhdCBJdGVtIEtvbmZpZ3VyYXNpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJc2kgc2VqYXJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQnVhdFdha3R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1BhbmRhbmdhbiBkZWthdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVtIGtvbmZpZ3VyYXNpIHBlciBoYWxhbWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdUaWRhayBkaXRlbXVrYW4gZGF0YSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1BpbGloIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnTXVsYWkgUGVuY2FyaWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgdW50dWsgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1RpbmdrYXQgS2VkYWxhbWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnTWVtcGVyYmVzYXIvTWVtcGVya2VjaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnVGluZ2thdCB0YXV0YW4gbWFrc2ltdW0gdGVyY2FwYWkgdW50dWsgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdJdGVtIEtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzaSBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXR1cyBwZW55ZWJhcmFhbiBzYWF0IGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnS29uZGlzaSBpbnNpZGVuIHNhYXQgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1RlcmFraGlyIGRpdWJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdUZXJha2hpciBkaXJ1YmFoIG9sZWgnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdJdGVtIEtvbmZpZ3VyYXNpIEFuZGEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnUGVuY2FyaWFuIEl0ZW0gS29uZmlndXJhc2knOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdLZWxhcy1rZWxhcyBiZXJpa3V0IGFrYW4gZGlpbXBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdQZXJhbi1wZXJhbiBiZXJpa3V0IGluaSBha2FuIGRpaW1wb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnUGVyaGF0aWthbiBiYWh3YSBiaWRhbmcgZGluYW1pcyBkYW4ga2VsYXMgR2VuZXJhbENhdGFsb2cgeWFuZyBzZXN1YWkganVnYSBha2FuIGRpYnVhdCBkYW4gdGlkYWsgYWRhIHBlbmdoYXB1c2FuIG90b21hdGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0FwYWthaCBBbmRhIGluZ2luIG1lbGFuanV0a2FuPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdCdXR1aCBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pc2kgdGlkYWsgYWRhIGhhc2ggWUFNTCB5YW5nIHZhbGlkLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ0dhbWJhcmFuIHVtdW06IEl0ZW0gS29uZmlndXJhc2kgSVRTTSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdUaWRhayBhZGEgQ29uZmlnSXRlbUlEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0FuZGEgbWVtZXJsdWthbiBzZXRpZGFrbnlhIHNhdHUgSXRlbSBLb25maWd1cmFzaSB5YW5nIGRpcGlsaWghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnQW5kYSB0aWRhayBtZW1pbGlraSBha3NlcyB0dWxpcyBrZSBpdGVtIGtvbmZpZ3VyYXNpIGluaTogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ1RpZGFrIGFkYSBkZWZpbmlzaSB5YW5nIGRpZGVmaW5pc2lrYW4gdW50dWsga2VsYXMgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdJdGVtIGtvbmZpZ3VyYXNpICIlcyIgdGlkYWsgZGl0ZW11a2FuIGRhbGFtIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1RpZGFrIGRhcGF0IG1lbmdoYXB1cyBJRCBrb25maWd1cmFzaSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ1RpZGFrIGRpdGVtdWthbiB2ZXJzaSB1bnR1ayBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGF0YXUgQ2xhc3NJRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSBha3NlcyB5YW5nIGRpYmVyaWthbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgZGFwYXQgbWVuYW1waWxrYW4gcml3YXlhdCwgdGlkYWsgYWRhIENvbmZpZ0l0ZW1JRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdUaWRhayBkYXBhdCBtZW5hbXBpbGthbiByaXdheWF0LCB0aWRhayBhZGEgaGFrIGFrc2VzIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnSXRlbSBLb25maWd1cmFzaSBCYXJ1IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ1ZlcnNpIGJhcnUgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXR1cyBwZW5lcmFwYW4gZGlwZXJiYXJ1aSAoYmFydSA9ICVzLCBsYW1hID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXR1cyBpbnNpZGVuIGRpcGVyYmFydWkgKGJhcnUgPSAlcywgbGFtYSA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBkaWhhcHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnVGF1dGFuIGtlICVzICh0aXBlID0gJXMpIGRpdGFtYmFoa2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdUYXV0YW4ga2UgJXMgKHRpcGUgPSAlcykgZGloYXB1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pc2kgQ29uZmlnSXRlbSBkaXBlcmJhcnVpIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYW1hIGRpcGVyYmFydWkgKGJhcnUgPSAlcywgbGFtYSA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlidXQgJXMgZGlwZXJiYXJ1aSBkYXJpICIlcyIgbWVuamFkaSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpICVzIGRpaGFwdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYWRhIENvbmZpZ0l0ZW1JRCBhdGF1IFZlcnNpb25JRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnVGlkYWsgZGFwYXQgbWVuYW1waWxrYW4gaXRlbSBrb25maWd1cmFzaSwgdGlkYWsgYWRhIGhhayBha3NlcyB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQlIHRpZGFrIGRpdGVtdWthbiBkYWxhbSBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0l0ZW1Lb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnZGljZXRhayBvbGVoJXMgcGFkYSVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuc2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdDbGFzc0lEIHRpZGFrIHZhbGlkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSBDbGFzc0lEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSBoYWsgYWtzZXMgdW50dWsga2VsYXMgaW5pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnVGlkYWsgYWRhIGhhc2lsISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ3VyYXNpIHBlbmNhcmlhbiBuaWxhaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnVGlkYWsgZGFwYXQgbWVuYW1waWxrYW4gaXRlbSwgdGlkYWsgYWRhIGhhayBha3NlcyB1bnR1ayBDb25maWdJdGVtIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIHRpZGFrIGRpdGVtdWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnVGlkYWsgYWRhIHZlcnNpIHlhbmcgZGl0ZW11a2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhc2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdwZXJpbmdhdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5zaWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhdHVzIHBlbnllYmFyYW4gaXRlbSBrb25maWd1cmFzaSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF0dXMgaW5zaWRlbiBpdGVtIGtvbmZpZ3VyYXNpIGluaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1RpZGFrIGFkYSBpemluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciB0aWRhayB2YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcmFtZXRlciBwZW5jYXJpYW4gdGlkYWsgdmFsaWQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnSXRlbSBrb25maWd1cmFzaSB5YW5nIGRpdGFtcGlsa2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcGUgc3RhdHVzIHBlbnllYmFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwZSBTdGF0dXMgaW5zaWRlbiBzYWF0IGluaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdEaWFudGFyYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUGVtYmF0YXNhbiBrZWxhcyB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdQaWxpaCBzYXR1IGtlbGFzIGF0YXUgbGViaWggdW50dWsgbWVtYmF0YXNpIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBkYXBhdCBkaXBpbGloJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdQZW1iYXRhc2FuIGtlbGFzIHVudHVrIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdQaWxpaCBzYXR1IGtlbGFzIGF0YXUgbGViaWggdW50dWsgbWVtYmF0YXNpIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBkYXBhdCBkaXBpbGloJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluYW1pcyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpcyAoVmVyc2kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ0plbmlzIFJlZmVyZW5zaSBUYXV0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQXBha2FoIHRhdXRhbiBpbmkgYmVybGFrdSB1bnR1ayBDb25maWdJdGVtIGF0YXUgdmVyc2kgc3RhdGlzIGRhcmkgb2JqZWsgcmVmZXJlbnNpLiBQZXJoaXR1bmdhbiBTdGF0dXMgSW5zaWRlbiBzYWF0IGluaSBoYW55YSBkaWxha3VrYW4gcGFkYSB0YXV0YW4gZGluYW1pcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdQaWxpaCBhdHJpYnV0IHlhbmcgYWthbiBkaWNhcmkgYmVyZGFzYXJrYW4gaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnU3RydWt0dXIgZGFzYXIgdGlkYWsgdmFsaWQuIEJlcmlrYW4gaGFzaCBkZW5nYW4gZGF0YSBkYWxhbSBmb3JtYXQgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdNZW11bGFpIHN0cmluZyBZQU1MIGRlbmdhbiBcJy0tLVwnIGRpcGVybHVrYW4uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ1RpZGFrIGRhcGF0IG1lbWJlcnNpaGthbiB0YWJlbCBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdUaWRhayBhZGEgYmlkYW5nIGRpbmFtaXMgeWFuZyByZWxldmFuIHlhbmcgZGl0ZW11a2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVGlkYWsgZGFwYXQgbWVueWlzaXBrYW4ga2UgZGFsYW0gdGFiZWwgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdNZW55aXNpcGthbiAwIGJhcmlzIGtlIGRhbGFtIHRhYmVsIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdKdW1sYWggbWFrc2ltdW0gZGFyaSAxIGVsZW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdTdHJpbmcgVmVyc2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnS2VzYWxhaGFuIG1lbnlpbmtyb25rYW4gZGVmaW5pc2kuIFNpbGFrYW4gcGVyaWtzYSBsb2cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnQW5kYSBtZW1pbGlraSBkZWZpbmlzaSBJVFNNQ29uZmlnSXRlbSB5YW5nIHRpZGFrIHRlcnNpbmtyb25pc2FzaS4gVGVyYXBrYW4gcGVydWJhaGFuIGJpZGFuZyBkaW5hbWlzIElUU01Db25maWdJdGVtIEFuZGEuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdUZWxhaCBrYWRhbHVhcnNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnUGVtZWxpaGFyYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1RlbGFoIGRpcmVuY2FuYWthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdQZXJiYWlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVuc2l1bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdVbGFzYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1VqaS9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnSWtodGlzYXIgZGFuIEtvbmZpcm1hc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnTWVuZ2ltcG9yIGtlbGFzL3BlcmFuIGRhbiBiaWRhbmcgdGVya2FpdG55YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1RlcmphZGkga2VzYWxhaGFuIHNhYXQgbWVuZ2ltcG9yIGtlbGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gVGVyc2VtYnVueWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIERpdGFtcGlsa2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4ga29uZGlzaSBwZW5jYXJpYW4geWFuZyBkaXBlcmx1YXMgZGFsYW0gcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgYWdlbi4gRGVuZ2FuIGZpdHVyIGluaSwgQW5kYSBkYXBhdCBtZW5jYXJpLCBtaXNhbG55YSBuYW1hIGl0ZW0ga29uZmlndXJhc2kgZGVuZ2FuIGtvbmRpc2kgc2VwZXJ0aSBpbmksIHNlcGVydGkgIigqa2V5MSomJiprZXkyKikiIGF0YXUgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4ga29uZGlzaSBwZW5jYXJpYW4geWFuZyBkaXBlcmx1YXMgZGFsYW0gcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLiBEZW5nYW4gZml0dXIgaW5pLCBBbmRhIGRhcGF0IG1lbmNhcmksIG1pc2FsbnlhIG5hbWEgaXRlbSBrb25maWd1cmFzaSBkZW5nYW4ga29uZGlzaSBzZXBlcnRpIGluaSBzZXBlcnRpICIoKmtleTEqJiYqa2V5MiopIiBhdGF1ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnQ0kgeWFuZyBkaXR1Z2Fza2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHlhbmcgZGl0dWdhc2thbiBrZSBwZXJ1c2FoYWFuIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHlhbmcgZGliZXJpa2FuIGtlcGFkYSBwZW5nZ3VuYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1BlbmdhdHVyYW4gQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUGVyaWtzYSBoYW55YSBuYW1hIHVuaWsgc2FqYSBkaSBkYWxhbSBrZWxhcyhcJ2tlbGFzXCcpIGl0ZW1rb25maWd1cmFzaSB5YW5nIHNhbWEgYXRhdSBzZWNhcmEgZ2xvYmFsIChcJ2dsb2JhbCksIHlhbmcgYmVyYXJ0aSBzZXRpYXAgSXRlbUtvbmZpZ3VyYXNpIHlhbmcgYWRhIGFrYW4gZGlwZXJoaXR1bmdrYW4ga2V0aWthIG1lbmNhcmkgZHVwbGlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1BpbGloIG1vZHVsIHVudHVrIG1lbmVyYXBrYW4gc2tlbWEgcGVuYW1hYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdQaWxpaCBtb2R1bCB1bnR1ayBtZW5lcmFwa2FuIHNrZW1hIGFuZ2thLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdQaWxpaCBtb2R1bCB1bnR1ayBtZW5lcmFwa2FuIHNrZW1hIHN0cmluZyB2ZXJzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdQaWxpaCBhdHJpYnV0IHVudHVrIG1lbWljdSBwZW1idWF0YW4gdmVyc2kgYmFydS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnUGlsaWgga2F0ZWdvcmkgeWFuZyBha2FuIGRpdGV0YXBrYW4ga2Uga2VsYXMgaXRlbSBrb25maWd1cmFzaSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdGVyIGl0ZW0ga29uZmlndXJhc2kga29sb20gdW50dWsgSWtodGlzYXIgSXRlbSBLb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbG9tIHlhbmcgZGFwYXQgZGlmaWx0ZXIgZGFsYW0gaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuLiBDYXRhdGFuOiBIYW55YSBhdHJpYnV0IEl0ZW0gS29uZmlndXJhc2kgZGFuIEJpZGFuZyBEaW5hbWlzIChEeW5hbWljRmllbGRfTmFtZVgpIHlhbmcgZGlwZXJib2xlaGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnVGFtYmFoIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdCBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHBlcmlzdGl3YSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgbWVuZ2FrdGlma2FuIGxvZ2dpbmcga2Ugcml3YXlhdCBwYWRhIGFudGFybXVrYSBhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsIHBlcmlzdGl3YSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgbWVtcGVyYmFydWkgaXRlbSBrb25maWd1cmFzaSBrZSBkZWZpbmlzaSBzYWF0IGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdSaXdheWF0IGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NldGFrIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnWm9vbSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1RhbXBpbGFuIFBvaG9uIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyc2kgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBkYXJpIGtlbGFzLWtlbGFzIGJlcmlrdXQgaW5pIHRpZGFrIGFrYW4gZGlzaW1wYW4gZGkgc2VydmVyIEVsYXN0aWNzZWFyY2guIFVudHVrIG1lbmVyYXBrYW4gaW5pIHBhZGEgQ0kgeWFuZyBzdWRhaCBhZGEsIG1pZ3Jhc2kgQ0kgaGFydXMgZGlqYWxhbmthbiBtZWxhbHVpIGtvbnNvbCwgc2V0ZWxhaCBtZW5ndWJhaCBvcHNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgZGVuZ2FuIHN0YXR1cyBwZW55ZWJhcmFuIGJlcmlrdXQgdGlkYWsgYWthbiBkaXNpbXBhbiBkaSBzZXJ2ZXIgRWxhc3RpY3NlYXJjaC4gVW50dWsgbWVuZXJhcGthbiBpbmkgcGFkYSBDSSB5YW5nIHN1ZGFoIGFkYSwgbWlncmFzaSBDSSBoYXJ1cyBkaWphbGFua2FuIG1lbGFsdWkga29uc29sLCBzZXRlbGFoIG1lbmd1YmFoIG9wc2kgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdCYXRhcyBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmFzaSBCYXRhcyBpdGVtIHBlciBoYWxhbWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzaXMgRGF0YSBNYW5hamVtZW4gS29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNb2R1bCBtYXNzYWwgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm91dGVyIHBlbmNhcmlhbiBiYWNrZW5kIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQnVhdCBkYW4gYXR1ciBkZWZpbmlzaSAtIGRlZmluaXNpIHVudHVrIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdNZW1idWF0IFRpa2V0IHVudHVrIENvbmZpZ0l0ZW1zIHBhZGEgdGl0aWsgd2FrdHUgdGVydGVudHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ1BlbGFuZ2dhbiBkYXBhdCBtZWxpaGF0IHZlcnNpIENJIGhpc3RvcmlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdQZWxhbmdnYW4gZGFwYXQgYmVyYWxpaCBzZWNhcmEgbWFudWFsIGRpIGFudGFyYSB2ZXJzaSBDSSB0ZXJkYWh1bHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0YSBkZWZhdWx0IHlhbmcgYWthbiBkaWd1bmFrYW4gcGFkYSBhdHJpYnV0IHVudHVrIGxheWFyIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpLiBDb250b2g6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCA9IHRhaHVuOyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0ID0gVGVyYWtoaXI7IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50ID0gMjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdGEgZGVmYXVsdCB5YW5nIGFrYW4gZGlndW5ha2FuIHBhZGEgYXRyaWJ1dCB1bnR1ayBsYXlhciBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaS4gQ29udG9oOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyID0gMjAxMDsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aCA9IDEwOyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheSA9IDQ7IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyID0gMjAxMDsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoID0gMTE7IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXkgPSAzOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdUZW50dWthbiBUaW5kYWthbiBhZGFsYWggdG9tYm9sIHBlbmdhdHVyYW4gdGVyc2VkaWEgZGkgb2JqZWsgd2lkZ2V0IHRlcmthaXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gSGFyYXAgZGljYXRhdCBiYWh3YSBUaW5kYWthbiBpbmkgaGFydXMgdGVsYWggbWVuZGFmdGFya2FuIGJlcmlrdXQgSlMgZGFuIENTUyBmaWxlOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIHNrZW1hIFRlbXBsYXRlOjpUb29sa2l0IHVudHVrIHN0cmluZyB2ZXJzaS4gSGFueWEgZGlndW5ha2FuIGppa2EgTW9kdWwgU3RyaW5nIFZlcnNpIGRpYXR1ciBrZSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdUZW50dWthbiBzZXJhbmdrYWlhbiBrb25kaXNpIGRpIG1hbmEgcGVsYW5nZ2FuIGRpaXppbmthbiB1bnR1ayBtZWxpaGF0IGl0ZW0ga29uZmlndXJhc2kuIEtvbmRpc2kgZGFwYXQgc2VjYXJhIG9wc2lvbmFsIGRpYmF0YXNpIHVudHVrIGdydXAgcGVsYW5nZ2FuIHRlcnRlbnR1LiBOYW1hIGFkYWxhaCBzYXR1LXNhdHVueWEgYXRyaWJ1dCB3YWppYi4gSmlrYSB0aWRhayBhZGEgcGlsaWhhbiBsYWluIHlhbmcgZGliZXJpa2FuLCBzZW11YSBpdGVtIGtvbmZpZ3VyYXNpIGFrYW4gdGVybGloYXQgZGkgYmF3YWgga2F0ZWdvcmkgdGVyc2VidXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5naGFwdXMgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFybXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gaXppbiB5YW5nIGRpIGJ1dHVoa2FuIHVudHVrIG1lbmRhcGF0a2FuIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkZW5nYW4gbWVuZ2d1bmFrYW4gYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBpemluIHlhbmcgZGkgYnV0dWhrYW4gdW50dWsgbWVuY2FyaSBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGVuZ2FuIG1lbmdndW5ha2FuIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2F0dXIgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFybXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBtb2R1bCBnYW1iYXJhbiB1bnR1ayBtZW51bmp1a2FuIHRhbXBpbGFuIGtlY2lsIGRhcmkgc2VidWFoIGRhZnRhciBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYXBha2FoIGxhYmVsIGplbmlzIHRhdXRhbiBoYXJ1cyBkaXRhbXBpbGthbiBkaSBrb25la3NpIG5vZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBla3NwcmVzaSByZWd1bGFyIHNlY2FyYSBpbmRpdmlkdWFsIHVudHVrIHNldGlhcCBrZWxhcyBJdGVtS29uZmlndXJhc2kgdW50dWsgbWVtZXJpa3NhIG5hbWEgSXRlbUtvbmZpZ3VyYXNpIHVudHVrIG1lbnVuanVrYW4gcGVzYW4gZXJyb3IgeWFuZyBzZXN1YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBrb2xvbSBDSSB5YW5nIHRlcnNlZGlhIGRhbGFtIGlraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kgdGVyZ2FudHVuZyBwYWRhIGtlbGFzIENJLiBTZXRpYXAgZW50cmkgaGFydXMgdGVyZGlyaSBkYXJpIG5hbWEga2VsYXMgZGFuIGxhcmlrIGtvbG9tIHlhbmcgdGVyc2VkaWEgdW50dWsga2VsYXMgeWFuZyBiZXJzYW5na3V0YW4uIEVudHJpIGJpZGFuZyBkaW5hbWlzIGhhcnVzIHNlc3VhaSBkZW5nYW4gc2tlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGF0cmlidXQgaXRlbSBrb25maWd1cmFzaSBkZWZhdWx0IHVudHVrIHBlbmd1cnV0YW4gaXRlbSBrb25maWd1cmFzaSBkYXJpIGhhc2lsIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZW50dWthbiBhdHJpYnV0IGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCB1bnR1ayBwZW5ndXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGFyaSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWVuZW50dWthbiBhdHJpYnV0IGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCB1bnR1ayBwZW5ndXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGFyaSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBvcGVyYXNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gdXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuLiBBdGFzOiB0ZXJ0dWEgZGkgYXRhcy4gVHVydW46IHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gdXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBUdXJ1bjogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTWVuZW50dWthbiBrb2xvbSBDSSB5YW5nIGRpdGFtcGlsa2FuIHNlY2FyYSBkZWZhdWx0IGRhbGFtIGlraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kgdGVyZ2FudHVuZyBwYWRhIGtlbGFzIENJLiBTZXRpYXAgZW50cmkgaGFydXMgdGVyZGlyaSBkYXJpIG5hbWEga2VsYXMgZGFuIGxhcmlrIGJpZGFuZyB5YW5nIHRlcnNlZGlhIHVudHVrIGtlbGFzIHlhbmcgc2VzdWFpLiBFbnRyaSBiaWRhbmcgZGluYW1pcyBoYXJ1cyBzZXN1YWkgZGVuZ2FuIHNrZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ01lbmVudHVrYW4ga2VkYWxhbWFuIHJlbGFzaSBkZWZhdWx0IHlhbmcgYWthbiBkaXRhbXBpbGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVuZW50dWthbiBhdHJpYnV0IHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgZGl0YW1waWxrYW4gc2VjYXJhIGRlZmF1bHQgdW50dWsgbGF5YXIgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGF0cmlidXQgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBkaXRhbXBpbGthbiBzZWNhcmEgZGVmYXVsdCB1bnR1ayBsYXlhciBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaS4gQ29udG9oOiAiS2V5IiBoYXJ1cyBtZW1pbGlraSBuYW1hIEJpZGFuZyBEaW5hbWlzIGRhbGFtIGhhbCBpbmkgXCdYXCcsICJDb250ZW50IiBoYXJ1cyBtZW1pbGlraSBuaWxhaSBCaWRhbmcgRGluYW1pcyB0ZXJnYW50dW5nIHBhZGEgamVuaXMgQmlkYW5nIERpbmFtaXMsIFRla3M6IFwndGVrc1wnLCBEcm9wZG93bjogXCcxXCcsIFRhbmdnYWwvV2FrdHU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXIgPSAxOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGggPSAwMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheSA9IDI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91ciA9IDAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlID0gMDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQgPSAwMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhciA9IDIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoID0gMDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheSA9IDI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyID0gMjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZSA9IDU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQgPSA1OTtcJyBkYW4gYXRhdSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdCA9IG1pbmdndTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQgPSBTZWJlbHVtOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZSA9IDdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBzdWJvYmplayBkZWZhdWx0IGRhcmkga2VsYXMgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4ga29sb20gQ0kgeWFuZyB0ZXJzZWRpYSBkYWxhbSBpa2h0aXNhciBpdGVtIGtvbmZpZ3VyYXNpIHRlcmdhbnR1bmcgcGFkYSBrZWxhcyBDSS4gU2V0aWFwIGVudHJpIGhhcnVzIHRlcmRpcmkgZGFyaSBuYW1hIGtlbGFzIGRhbiBsYXJpayBrb2xvbSB5YW5nIHRlcnNlZGlhIHVudHVrIGtlbGFzIHlhbmcgYmVyc2FuZ2t1dGFuLiBFbnRyaSBiaWRhbmcgZGluYW1pcyBoYXJ1cyBzZXN1YWkgZGVuZ2FuIHNrZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIHRpbmdnaSB1bnR1ayBrb21wb25lbiBlZGl0b3IgdGVrcyBrYXlhIHVudHVrIGxheWFyIGluaS4gTWFzdWtrYW4gbm9tb3IgKHBpa3NlbCkgYXRhdSBuaWxhaSBwZXJzZW4gKHJlbGF0aWYpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBqdW1sYWggYmFyaXMgdW50dWsgcGVuZ3ViYWggZGVmaW5pc2lDSSBwYWRhIGFudGFybXVrYSBBZG1pbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIHVydXRhbiBzdGF0dXMgaW5zaWRlbiBkYXJpIHRpbmdnaSAobWlzLiBrcnVzaWFsKSBrZSByZW5kYWggKG1pcy4gZnVuZ3Npb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gc3RhdHVzIHBlbnllYmFyYW4geWFuZyByZWxldmFuIGRpIG1hbmEgdGlrZXQgeWFuZyBkaXRhdXRrYW4gZGFwYXQgbWVtZW5nYXJ1aGkgc3RhdHVzIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGJhdGFzIHBlbmNhcmlhbiB1bnR1ayBsYXlhciBBZ2VudElUU01Db25maWdJdGVtICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGJhdGFzIHBlbmNhcmlhbiB1bnR1ayBMYXlhciBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYmF0YXMgcGVuY2FyaWFuIHVudHVrIGxheWFyIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVuZW50dWthbiBiYXRhcyBwZW5jYXJpYW4gdW50dWsgbGF5YXIgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTWVuZW50dWthbiBrb2xvbSBDSSB5YW5nIGRpdGFtcGlsa2FuIGRhbGFtIHRhbXBpbGFuIGtvbXBsZWtzIHRhYmVsIHRhdXRhbiB1bnR1ayBzZW11YSBrZWxhcyBDSS4gSmlrYSB0aWRhayBhZGEgZW50cmksIG1ha2Ega29sb20gZGVmYXVsdCBha2FuIGRpdGFtcGlsa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4ga29sb20geWFuZyBkaXRhbXBpbGthbiBkYXJpIENJIGRpIGxpbmsgdGFiZWwgdGFtcGlsYW4geWFuZyBrb21wbGVrcywgdGVyZ2FudHVuZyBwYWRhIGtlbGFzIENJLiBTZXRpYXAgZW50cmkgaGFydXMgZGlhd2FsaSBkZW5nYW4gbmFtYSBrZWxhcyBkYW4gdGl0aWsgZHVhIGdhbmRhIChpLmUuIENvbXB1dGVyOjopLiBBZGEgYmViZXJhcGEgQ0ktQXRyaWJ1dCB5YW5nIHVtdW0gdW50dWsgc2VtdWEgQ0kgKENvbnRvaCB1bnR1ayBLb21wdXRlciBrZWxhczogS29tcHV0ZXIgOjogTmFtYSwgS29tcHV0ZXIgOjogQ3VyRGVwbFN0YXRlLCBLb21wdXRlciA6OiBDcmVhdGVUaW1lKS4gVW50dWsgbWVudW5qdWtrYW4gaW5kaXZpZHUgQ0ktQXRyaWJ1dCBzZWJhZ2FpbWFuYSBkaWRlZmluaXNpa2FuIGRhbGFtIENJLURlZmluaXRpb24sIHNrZW1hIGJlcmlrdXQgaGFydXMgZGlndW5ha2FuIChtaXNhbG55YSB1bnR1ayBLb21wdXRlciBrZWxhcyk6ICBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSmlrYSB0aWRhayBhZGEgZW50cmkgdW50dWsga2VsYXMgQ0ksIG1ha2Ega29sb20gc3RhbmRhciBkaXRhbXBpbGthbiBzZWJhZ2FpbWFuYSBkaWRlZmluaXNpa2FuIGRhbGFtIHBlbmdhdHVyYW4gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gaXRlbSBtYW5hIHlhbmcgdGVyc2VkaWEgdW50dWsgXCdUaW5kYWthblwnIGRpIHRpbmdrYXQga2V0aWdhIGRhcmkgc3RydWt0dXIgQUNMIEl0ZW0gS29uZmlndXJhc2kgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBpdGVtIG1hbmEgeWFuZyB0ZXJzZWRpYSBkaSB0aW5na2F0IHBlcnRhbWEgc3RydWt0dXIgQUNMIEl0ZW0gS29uZmlndXJhc2kgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gaXRlbSBtYW5hIHlhbmcgdGVyc2VkaWEgZGkgdGluZ2thdCBrZWR1YSBkYXJpIHN0cnVrdHVyIEFDTCBJdGVtIEtvbmZpZ3VyYXNpIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGplbmlzIHRhdXRhbiBtYW5hIChkaW5hbWFpIGRhcmkgcGVyc3Bla3RpZiB0aWtldCkgeWFuZyBkYXBhdCBtZW1lbmdhcnVoaSBzdGF0dXMgQ0kgeWFuZyBkaXRhdXRrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gamVuaXMgdGlrZXQgbWFuYSB5YW5nIGRhcGF0IG1lbWVuZ2FydWhpIHN0YXR1cyBDSSB5YW5nIGRpdGF1dGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdQZW1iYXJ1YW4gRGVmaW5pc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ01lbmdoYXB1cyBJdGVtIEtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnV2FybmEgU3RhdHVzIFBlbnllYmFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgcGVyaXN0aXdhIGJpZGFuZyBkaW5hbWlzIHlhbmcgbWVuYW5kYWkgZGVmaW5pc2kgaXRlbSBrb25maWd1cmFzaSBzZWJhZ2FpIHRpZGFrIHNpbmtyb24sIGppa2EgbWVuZ2FuZHVuZyBwZXJ1YmFoYW4gYmlkYW5nIGRpbmFtaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGxheWFyIGJpZGFuZyBJVFNNIHRhbWJhaGFuIHBhZGEgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpZGFuZyBkaW5hbWlzIHlhbmcgZGl0YW1waWxrYW4gZGkgbGF5YXIgaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpZGFuZyBkaW5hbWlzIHlhbmcgZGl0YW1waWxrYW4gZGkgbGF5YXIgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIGZpdHVyIGl0ZW0ga29uZmlndXJhc2kgdGluZGFrYW4gbWFzc2FsIHVudHVrIGFnZW4gZnJvbnRlbmQgdW50dWsgYmVrZXJqYSBwYWRhIGxlYmloIGRhcmkgc2F0dSBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgc3VhdHUgd2FrdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4gZml0dXIgdGluZGFrYW4gbWFzc2FsIGl0ZW0ga29uZmlndXJhc2kgaGFueWEgdW50dWsga2Vsb21wb2sgdGVyZGFmdGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCBwZXJpc3Rpd2EgdW50dWsgbWVuZ2F0dXIgc3RhdHVzIGtvbmZpZ3VyYXNpIHBhZGEgdGF1dGFuIGtvbmZpZ3VyYXNpIHRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdCaWRhbmcgaW5kZWtzIGl0ZW0ga29uZmlndXJhc2ksIGRpZ3VuYWthbiB1bnR1ayBwZW5jYXJpYW4gdGVrcyBsZW5na2FwLiBCaWRhbmcganVnYSBkaXNpbXBhbiwgdGV0YXBpIHRpZGFrIHdhamliIHVudHVrIGZ1bmdzaW9uYWxpdGFzIGtlc2VsdXJ1aGFuLiBQZW55ZXJ0YWFuIGxhbXBpcmFuIGRhcGF0IGRpbm9uYWt0aWZrYW4gZGVuZ2FuIG1lbmdhdHVyIGVudHJpIGtlIDAgYXRhdSBtZW5naGFwdXNueWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdCaWRhbmcgeWFuZyBkaXNpbXBhbiBkYWxhbSBpbmRla3MgaXRlbSBrb25maWd1cmFzaSB5YW5nIGRpZ3VuYWthbiB1bnR1ayBoYWwtaGFsIGxhaW4gc2VsYWluIHBlbmNhcmlhbiB0ZWtzIGxlbmdrYXAuIFVudHVrIGZ1bmdzaW9uYWxpdGFzIHlhbmcgbGVuZ2thcCwgc2VtdWEgYmlkYW5nIHdhamliIGRpaXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhc2kgbW9kdWwgR2VuZXJpY0ludGVyZmFjZSB1bnR1ayBsYXBpc2FuIHBlbWFuZ2dpbCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFzaSBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVtYW5nZ2lsIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFzaSBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVtYW5nZ2lsIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSXRlbSBLb25maWd1cmFzaSBJVFNNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ1N0YXR1c0luc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rlcm1hc3VrIHN0YXR1cyBwZW5lcmFwYW4gZGFsYW0gcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZXJtYXN1ayBzdGF0dXMgaW5zaWRlbiBkYWxhbSBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0p1bWxhaCBtYWtzaW11bSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkYWxhbSBoYXNpbCBvcGVyYXNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB1bnR1ayBtZW1lcmlrc2Ega2Vsb21wb2sgeWFuZyBiZXJ0YW5nZ3VuZyBqYXdhYiB1bnR1ayBrZWxhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCB1bnR1ayBtZW1lcmlrc2Ega2Vsb21wb2sgeWFuZyBiZXJ0YW5nZ3VuZyBqYXdhYiB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHVudHVrIG1lbmdoYXNpbGthbiBzdGF0aXN0aWsgY29uZmlnIGJhcmFuZyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ01vZHVsIE5hbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ01vZHVsIEFuZ2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBzZXRpYXAgaGFsYW1hbiBoYXNpbCBwZW5jYXJpYW4gZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBzZXRpYXAgaGFsYW1hbiBoYXNpbCBwZW5jYXJpYW4gZGkgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWsgeWFuZyBha2FuIGRpY2FyaSwgYmVyYXBhIGJhbnlhayBlbnRyaSBkYW4gYXRyaWJ1dCBtYW5hIHlhbmcgYWthbiBkaXRhbXBpbGthbi4gQXRyaWJ1dCBDb25maWdJdGVtIGhhcnVzIHNlY2FyYSBla3NwbGlzaXQgZGlzaW1wYW4gbWVsYWx1aSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdHYW1iYXJhbiB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGthdGVnb3JpIHVudHVrIGtlbGFzIGl0ZW0ga29uZmlndXJhc2kgZGkgdGFtcGlsYW4gcHJlZmVyZW5zaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgZmlsdGVyIGtvbG9tIHBhZGEgaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSBrZWNpbC4gSGFyYXAgZGlwZXJoYXRpa2FuOiBtZW5nYXR1ciBcJ0FjdGl2ZVwnIGtlIDAgaGFueWEgYWthbiBtZW5jZWdhaCBhZ2VuIG1lbmdlZGl0IHBlbmdhdHVyYW4gZ3J1cCBpbmkgZGFsYW0gcHJlZmVyZW5zaSBwcmliYWRpIG1lcmVrYSwgdGV0YXBpIG1hc2loIG1lbXVuZ2tpbmthbiBhZG1pbmlzdHJhdG9yIHVudHVrIG1lbmdlZGl0IHBlbmdhdHVyYW4gYXRhcyBuYW1hIHBlbmdndW5hIGxhaW4uIEd1bmFrYW4gXCdQcmVmZXJlbmNlR3JvdXBcJyB1bnR1ayBtZW5nb250cm9sIGRpIGFyZWEgbWFuYSBwZW5nYXR1cmFuIGluaSBoYXJ1cyBkaXRhbXBpbGthbiBkaSBhbnRhcm11a2EgcGVuZ2d1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIHdhcm5hIHN0YXRlIHBlbnllYmFyYW4gZGFsYW0gcHJlZmVyZW5zaSBtZWxpaGF0IGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBzdGF0ZSBwZW55ZWJhcmFuIGRhbGFtIHByZWZlcmVuc2kgbWVsaWhhdCBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGdydXAgY29ub3RoIHBlcml6aW5hbiBkYXJpIGF0cmlidXQga2F0YWxvZyB1bXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIG5hbWEgdW50dWsga2VsYXMgaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiBwcmVmZXJlbnNpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIG5vbW9yIHVudHVrIGtlbGFzIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gdGFtcGlsYW4gcHJlZmVyZW5zaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGhhbGFtYW4gKGRpIG1hbmEgaXRlbSBrb25maWd1cmFzaSBha2FuIGRpdGFtcGlsa2FuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIHN0cmluZyB2ZXJzaSB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIHRvb2xraXQgdGVtcGxhdGUgc3RyaW5nIHZlcnNpIHVudHVrIGtlbGFzIGl0ZW0ga29uZmlndXJhc2kgZGkgdGFtcGlsYW4gcHJlZmVyZW5zaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIHBlbWljdSB2ZXJzaSB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3J1cCBJemluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gdGluZGFrYW4gbGFtcGlyYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gbGF5YXIgaXRlbSBrb25maWd1cmFzaSBJVFNNIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ2l6aW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdndW5ha2FuIGtvbmZpZ3VyYXNpIElUU00gbGF5YXIgcGVuY2FyaWFuIGl0ZW0gZGFsYW0gYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gbGF5YXIgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkaSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0l6aW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdndW5ha2FuIGxheWFyIHRhbXBpbGFuIHBvaG9uIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4ga29uZmlndXJhc2kgSVRTTSBpdGVtIGxheWFyIHpvb20gZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gYWRkIElUU00gbGF5YXIgaXRlbSBrb25maWd1cmFzaSBkYWxhbSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gbGF5YXIgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1hc3NhbCBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gbWVuZ2VkaXQgSVRTTSBsYXlhciBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBzZWphcmFoIElUU00gbGF5YXIgaXRlbSBrb25maWd1cmFzaSBkYWxhbSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0l6aW4gWWFuZyBkaXBlcmx1a2FuIHVudHVrIHJldmlldyB1c2luZyBTZWphcmFoIElUU00gTGF5YXIgSXRlbSBLb25maWd1cmFzaSBBbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ0hhayBpc3RpbWV3YSB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2hhcHVzIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnTWVuY2FyaSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnTWVuZ2F0dXIgc3RhdHVzIGluc2lkZW4gQ0kgc2VjYXJhIG90b21hdGlzIGtldGlrYSBUaWtldCBkaXRhdXRrYW4ga2UgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXR1ciBzdGF0dXMgcGVueWViYXJhbiBkaSBpdGVtIGtvbmZpZ3VyYXNpIGxheWFyIHRlcmJlc2FyIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F0dXIgc3RhdHVzIGtlamFkaWFuIHBhZGEgaXRlbSBrb25maWd1cmFzaSBsYXlhciB0ZXJiZXNhciBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB5YW5nIG1lbXVuZ2tpbmthbiBtZW5naHVidW5na2FuIGl0ZW0ga29uZmlndXJhc2kgZGVuZ2FuIG9iamVrIGxhaW4gZGkgY29uZmlnIGJhcmFuZyBwYW5kYW5nYW4gem9vbSBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5nYWtzZXMgc2VqYXJhaCBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgaXRlbSBrb25maWd1cmFzaSBnYW1iYXJhbiBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBsaW5rIGRhbGFtIG1lbnUgdW50dWsgbWVuZ2Frc2VzIHNlamFyYWggaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiB6b29tLW55YSBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmFtcGlsa2FuIHRhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbmdoYXB1cyBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20gYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdNZW5hbXBpbGthbiB0YXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW5hbXBpbGthbiB0YXV0YW4gaXRlbSBrb25maWd1cmFzaSBzZWJhZ2FpIFRhbXBpbGFuIFBvaG9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5kdXBsaWthc2kgaXRlbSBrb25maWd1cmFzaSBwYWRhIGl0ZW0ga29uZmlndXJhc2kgZ2FtYmFyYW4gZGFyaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHVudHVrIG1lbmR1cGxpa2FzaSBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20tbnlhIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBsaW5rIGRhbGFtIG1lbnUgdW50dWsgbWVuZ2VkaXQgaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiB6b29tLW55YSBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBsaW5rIGRhbGFtIG1lbnUgdW50dWsgbWVuY2V0YWsgaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiB6b29tLW55YSBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBzZWphcmFoIGNvbmZpZyBpdGVtICh1cnV0YW4gdGVyYmFsaWspIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdLYXRlZ29yaSBkZWZhdWx0IHlhbmcgZGl0YW1waWxrYW4sIGppa2EgdGlkYWsgYWRhIHlhbmcgZGlwaWxpaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ1BlbmdlbmFsIHVudHVrIGl0ZW0ga29uZmlndXJhc2ksIG1pc2FsbnlhIENvbmZpZ0l0ZW0gIywgTXlDb25maWcgSXRlbSAjLiBkZWZhdWx0IGFkYWxhaCBDb25maWdJdGVtICMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdNZW1pY3UgcGVtYW5nZ2lsIENvbmZpZ0l0ZW1GZXRjaCBzZWNhcmEgb3RvbWF0aXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0Vrc3ByZXNpIFN0cmluZyBWZXJzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdNb2R1bCBTdHJpbmcgVmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnUGVtaWN1IFZlcnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdBcGFrYWggZWtzZWt1c2kgQ29uZmlnSXRlbUFDTCBkYXBhdCBkaWhpbmRhcmkgZGVuZ2FuIG1lbWVyaWtzYSBrZXRlcmdhbnR1bmdhbiBiaWRhbmcgeWFuZyBkaS1jYWNoZS4gSGFsIGluaSBkYXBhdCBtZW5pbmdrYXRrYW4gd2FrdHUgcGVtdWF0YW4gZm9ybXVsYXIsIHRldGFwaSBoYXJ1cyBkaW5vbmFrdGlma2FuLCBqaWthIEFDTE1vZHVsZXMgYWthbiBkaWd1bmFrYW4gdW50dWsgSVRTTUNvbmZpZ0l0ZW0gZGFuIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdJbmZvcm1hc2kgdW11bSBtYW5hIHlhbmcgZGl0YW1waWxrYW4gZGkgaGVhZGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tlbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bhc2NhcHJvZHVrdGlmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmFwcm9kdWt0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3RpZic7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBpbmNpICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgaW5jaSAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IGluY2kgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgaW5jaSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhayAxOSBpbmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBpbmNpICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IGluY2kgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ1JhayAyMSBpbmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBpbmNpICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnUmFrIDIzIGluY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IGluY2kgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGluY2kgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IGluY2kgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBpbmNpICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGluY2kgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IGluY2kgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IGluY2kgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGluY2kgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGluY2kgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBpbmNpICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgaW5jaSAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IGluY2kgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IGluY2kgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgaW5jaSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBpbmNpICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgaW5jaSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGluY2kgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBpbmNpICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBpbmNpICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBpbmNpICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IGluY2kgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgaW5jaSAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBpbmNpICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdBa3VudGFuc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBbG9rYXNpIEFsYW1hdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWxlcG9uIEFuYWxvZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0plbmlzIEFsYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdLYXBhc2l0YXMgQmF0ZXJhaSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0plbmlzIEJhdGVyYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdNZW1iYW5ndW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0FudGFybXVrYSBCdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdLZWxhcyBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGFzaXRhcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYXNpdGFzIHBlciBrYXJ0dSBncmFmaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOb21vciBLYXJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ1BlbWJhY2EgS2FydHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnSmVuaXMgS2FydHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ1NlcnRpZmlrYXQgS2xpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnUGVyYW5na2F0IEx1bmFrIEtsaWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpIGtsaWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0Nsb2NrcmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnS2VjZXBhdGFuIGphbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnU2VydGlmaWthdCBQZW5hbmRhdGFuZ2FuYW4gS29kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsZXBvbiBLb25mZXJlbnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBLb25zdWx0YXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0h1YnVuZ2kgRGlzdHJpYnV0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdNYW5hamVtZW4gS29udGFpbmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnS29udHJhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnSmVuaXMgS29udHJhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0phbmdrYSB3YWt0dSBrb250cmFrIGRhcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnSmFuZ2thIHdha3R1IGtvbnRyYWsgc2FtcGFpIGRlbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUZWxlcG9uIFRhbnBhIEthYmVsIChUZWxlcG9uIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaXQgYmlheWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdKdW1sYWggbGlzZW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnVGFuZ2dhbCBQZW1idWF0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1JhayBLaHVzdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgRGljYWRhbmdrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZlciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ1RhbmdnYWwgRmFrdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdUYW5nZ2FsIFBlbWVzYW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnVGFuZ2dhbCBXYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdUYW5nZ2FsIHJpbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdTZXJ0aWZpa2F0IFBlbmFuZGF0YW5nYW5hbiBEb2t1bWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ1NlcnRpZmlrYXQgRW1haWwgKFNlcnRpZmlrYXQgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdLb250cmFrIEtlcmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnQWxhbWF0IElQIEFraGlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnQWtoaXIgZHVrdW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdUYW5nZ2FsIEtlZGFsdXdhcnNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdIYXJkIERyaXZlIEVrc3Rlcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdQZW55aW1wYW5hbiBFbmVyZ2kgUm9kYSBHaWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFrdG9yIEJlbnR1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBXYXJhbGFiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzaSBVbXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnS2FydHUgR3JhZmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdLYXJ0dSBncmFmaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdQZXJhbmdrYXQga2VyYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBQZXJhbmdrYXQgS2VyYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnQmVyYXQgUGVyYW5na2F0IEtlcmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9rb2wgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnTWFuYWplbWVuIElkZW50aXRhcyBkYW4gQWtzZXMgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ05vbW9yIFBlcnNlZGlhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ05vbW9yIEZha3R1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0tleWJvYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEIChMYXlhciBLcmlzdGFsIENhaXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbGVwb24gcnVtYWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGludGFuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xhcGlzYW4gMTogTGFwaXNhbiBGaXNpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdMYXBpc2FuIDI6IExhcGlzYW4gVGF1dGFuIERhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xhcGlzYW4gMzogTGFwaXNhbiBKYXJpbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMYXBpc2FuIDM6IExhcGlzYW4gSmFyaW5nYW4gKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYXBpc2FuIDQ6IExhcGlzYW4gVHJhbnNwb3J0YXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMYXBpc2FuIDU6IExhcGlzYW4gU2VzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMYXBpc2FuIDY6IExhcGlzYW4gUHJlc2VudGFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xhcGlzYW4gNzogTGFwaXNhbiBBcGxpa2FzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIFNld2EgTWVueWV3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ1BlcmphbmppYW4gTGlzZW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnS3VuY2kgTGlzZW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdKZW5pcyBMaXNlbnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdQZXJpb2RlIGxpc2Vuc2kgZGFyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ01hc2EgYmVybGFrdSBsaXNlbnNpIHNhbXBhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0ZXJhaSBMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXJhaSBMaXRoaXVtLUlvbiAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ1BlcmphbmppYW4gUGluamFtYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0Jlcmxva2FzaSBkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdCdWp1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Byb2R1c2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdLYXBhc2l0YXMgQmViYW4gTWFrc2ltdW0gKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbW9yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ0plbmlzIE1lbW9yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnUmFrIE1pbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ05vbW9yIHBvbnNlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdTZWx1bGVyIC8gVGVydGFuYW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2tyaXBzaSBNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSZXNvbHVzaSBNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1VrdXJhbiBNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ0phcmluZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm8gSmFyaW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzaSBKYXJpbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTGFwaXNhbiBKYXJpbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyYWkgTmlrZWwtS2FkbWl1bSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXRlcmFpIE5pa2VsLUxvZ2FtIEhpZHJpZGEgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1BlcmphbmppYW4gS2VyYWhhc2lhYW4gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdCdWt1IGNhdGF0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdKdW1sYWggQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0p1bWxhaCBtb2R1bCBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnSnVtbGFoIGthcnR1IGdyYWZpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChEaW9kYSBQZW1hbmNhciBDYWhheWEgT3JnYW5payknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnQmlheWEgb3BlcmFzaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTm9tb3IgUGVzYW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0xhaW4tbGFpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnS2VsdWFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBLZW1pdHJhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOb21vciBUZWxlcG9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdKZW5pcyBUZWxlcG9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnSW50aSBGaXNpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1BlbmdpcmltYW4gRGF5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0RpYmVsaSBkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnS2VkYWxhbWFuIFJhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaXQgUmFrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUnVhbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ0thcnR1IFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NlcnRpZmlrYXQgU1NMIC8gVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnS29udHJhayBQZW5qdWFsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsZXBvbiBTYXRlbGl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdGVyYWkgQXNhbSBUaW1iYWwgVGVyc2VnZWwgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOb21vciBzZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1BlcmFuZ2thdCBMdW5hayBTZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIExheWFuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdUYWcgTGF5YW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdKZW5pcyBTb2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1BlcmFuZ2thdCBsdW5hayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1BlbWJpY2FyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdNdWxhaSBBbGFtYXQgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1BlbnlpbXBhbmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGlzaSBQZW55aW1wYW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0FuYWsgUGVydXNhaGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUmluZ2thc2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnS2xpZW4gVGlwaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0JlbmFuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1BldGlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0ga2FydHUgZ3JhZmlzIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciBMYXlhciBTZW50dWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdNZW5hcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdIZWFkc2V0IFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVwb24gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnS2FtZXJhIHdlYic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/it_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Oml0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRpIGdlbmVyYWxpIGRpIGZ1bnppb25hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0ltcG9zdGF6aW9uaSBwZXIgaSBkYXRpIGRpIHJpY2hpZXN0YSBpbiBlbnRyYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSW1wb3N0YXppb25pIHBlciBpIGRhdGkgZGkgcmlzcG9zdGEgaW4gdXNjaXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbmUgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdNb2RpZmljYSBsYSBkZWZpbml6aW9uZSBkZWxsYSBjbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ01vZGlmaWNhIGRlbGxhIGRlZmluaXppb25lIGRlbCBydW9sbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhY2NoZXR0aSBkaSBjbGFzc2kgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnUXVpIMOoIHBvc3NpYmlsZSBpbXBvcnRhcmUgaSBwYWNjaGV0dGkgZGkgY2xhc3NpIFJlYWR5MkltcG9ydCwgY2hlIHByZXNlbnRhbm8gZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHBpw7kgY29tdW5pLiBTaSBub3RpIGNoZSBwb3RyZWJiZXJvIGVzc2VyZSBuZWNlc3NhcmllIGFsY3VuZSBjb25maWd1cmF6aW9uaSBhZ2dpdW50aXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBZ2dpb3JuYXJlIGxlIGVudGl0w6AgZXNpc3RlbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXJlIGkgYnVuZGxlIGRlbGxhIGNsYXNzZSBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgVm9jZSBSdW9sbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGVyIGNsYXNzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlemlvbmFyZSB1bmEgY2xhc3NlIGRhbGxcJ2VsZW5jbyBwZXIgY3JlYXJlIHVuIG51b3ZvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0F6aW9uZSBpbiBibG9jY28gZGkgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF0byBkaSBkaXN0cmlidXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhdG8gZGVsbFwnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0NvbGxlZ2EgYSB1biBhbHRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtZXJvIGFydGljb2xvIGRpIGNvbmZpZ3VyYXppb25lIG5vbiB2YWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0lsIG51bWVybyBkaSB1biBhbHRybyBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBjb24gY3VpIGNvbGxlZ2Fyc2kuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVnVvaSBkYXZ2ZXJvIGVsaW1pbmFyZSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0lsIG5vbWUgZGkgcXVlc3RvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdJbCBub21lIMOoIGdpw6AgaW4gdXNvIGRhIENvbmZpZ0l0ZW1zIGNvbiBpIHNlZ3VlbnRlL2kgbnVtZXIobylpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ051bWVybyBkaSB2ZXJzaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTnVtZXJvIGRpIHZlcnNpb25lIGRpIHF1ZXN0byBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0lsIG51bWVybyBkaSB2ZXJzaW9uZSDDqCBnacOgIHV0aWxpenphdG8gZGFpIENvbmZpZ0l0ZW0gY29uIGlsIHNlZ3VlbnRlIG51bWVybzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXRvIGRpIGltcGxlbWVudGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ1N0YXRvIGRlbGxcJ2luY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnU3RvcmlhIGRlbGxhIHZvY2UgZGkgY29uZmlndXJhemlvbmU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbnV0byBkZWxsbyBzdG9yaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdJc3RhbnRlIGRpIGNyZWF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWaXN0YSBkaSBEZXR0YWdsaW8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnLiBhcnRpY29saSBwZXIgcGFnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZXNzdW4gZGF0byBkaSBjb25maWd1cmF6aW9uZSB0cm92YXRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGV6aW9uYXJlIHF1ZXN0YSB2b2NlIGRpIGNvbmZpZ3VyYXppb25lJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRXNlZ3VpIHJpY2VyY2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdWaXN1YWxpenphemlvbmUgYWQgYWxiZXJvIHBlciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTGl2ZWxsbyBkaSBwcm9mb25kaXTDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ1pvb20gYXZhbnRpL2luZGlldHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0xpdmVsbG8gbWFzc2ltbyBkaSBjb2xsZWdhbWVudGkgcmFnZ2l1bnRvIHBlciBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF6aW9uaSBzdWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGF0byBhdHR1YWxlIGRpIGltcGxlbWVudGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnU3RhdG8gYXR0dWFsZSBkZWxsXCdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnVWx0aW1hIG1vZGlmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1VsdGltYSBtb2RpZmljYSBkaSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0kgdm9zdHJpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ1JpY2VyY2EgZGkgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1ZlcnJhbm5vIGltcG9ydGF0ZSBsZSBzZWd1ZW50aSBjbGFzc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVmVycmFubm8gaW1wb3J0YXRpIGkgc2VndWVudGkgcnVvbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnU2kgbm90aSBjaGUgdmVycmFubm8gY3JlYXRpIGFuY2hlIGkgY2FtcGkgZGluYW1pY2kgZSBsZSBjbGFzc2kgR2VuZXJhbENhdGFsb2cgY29ycmlzcG9uZGVudGkgZSBub24gw6ggcHJldmlzdGEgbGEgcmltb3ppb25lIGF1dG9tYXRpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnVnVvaSBjb250aW51YXJlPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdTZXJ2b25vIGNsYXNzaSBkaSBlc2VtcGlvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkZWZpbml6aW9uZSBub24gw6ggdW4gaGFzaCBZQU1MIHZhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQYW5vcmFtaWNhOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm9uIHZpZW5lIGZvcm5pdG8gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ8OIIG5lY2Vzc2FyaW8gYWxtZW5vIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05vbiBoYWkgYWNjZXNzbyBpbiBzY3JpdHR1cmEgYSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmU6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOZXNzdW5hIGRlZmluaXppb25lIMOoIHN0YXRhIGRlZmluaXRhIHBlciBsYSBjbGFzc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdWb2NlIGRpIGNvbmZpZ3VyYXppb25lICIlcyIgbm9uIHRyb3ZhdGEgbmVsIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0ltcG9zc2liaWxlIGVsaW1pbmFyZSBsXCdJRCBkaSBjb25maWd1cmF6aW9uZSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05lc3N1bmEgdmVyc2lvbmUgdHJvdmF0YSBwZXIgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOb24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05lc3N1biBhY2Nlc3NvIMOoIGNvbmNlc3NvISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdJbXBvc3NpYmlsZSBtb3N0cmFyZSBsYSBjcm9ub2xvZ2lhLCBub24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJpbGUgbW9zdHJhcmUgbGEgY3Jvbm9sb2dpYSwgbmVzc3VuIGRpcml0dG8gZGkgYWNjZXNzbyBjb25jZXNzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ051b3ZvIENvbmZpZ0l0ZW0gKElEID0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ051b3ZhIHZlcnNpb25lIChJRCA9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdG8gZGkgZGlzdHJpYnV6aW9uZSBhZ2dpb3JuYXRvIChudW92bz0lcywgdmVjY2hpbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdG8gZGVsbFwnaW5jaWRlbnRlIGFnZ2lvcm5hdG8gKG51b3ZvPSVzLCB2ZWNjaGlvPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgZWxpbWluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0NvbGxlZ2FtZW50byBhICVzICh0aXBvPSVzKSBhZ2dpdW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnQ29sbGVnYW1lbnRvIGEgJXMgKHRpcG89JXMpIGVsaW1pbmF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pemlvbmUgZGkgQ29uZmlnSXRlbSBhZ2dpb3JuYXRhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21lIGFnZ2lvcm5hdG8gKG51b3ZvPSVzLCB2ZWNjaGlvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0byAlcyBhZ2dpb3JuYXRvIGRhICIlcyIgYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb25lICVzIGVsaW1pbmF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOb24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQgbyBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2liaWxlIG1vc3RyYXJlIGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLCBuZXNzdW4gZGlyaXR0byBkaSBhY2Nlc3NvIGNvbmNlc3NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBub24gdHJvdmF0byBuZWwgZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdzdGFtcGF0byBkYSAlcyBhICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSaWZlcmltZW50byc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgbm9uIHZhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZXNzdW4gQ2xhc3NJRCDDqCBkYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05lc3N1biBkaXJpdHRvIGRpIGFjY2Vzc28gcGVyIHF1ZXN0YSBjbGFzc2UgZGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05lc3N1biByaXN1bHRhdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnQ29uZmlndXJhIGkgcmlzdWx0YXRpIGRlbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0ltcG9zc2liaWxlIG1vc3RyYXJlIGxcJ2VsZW1lbnRvLCBub24gdmllbmUgY29uY2Vzc28gYWxjdW4gZGlyaXR0byBkaSBhY2Nlc3NvIHBlciBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5vbiB0cm92YXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOZXNzdW5hIHZlcnNpb25lIHRyb3ZhdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdnZlcnRpbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xvIHN0YXRvIGRpIGltcGxlbWVudGF6aW9uZSBkaSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMbyBzdGF0byBkaSBpbmNpZGVudGUgZGkgcXVlc3RvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTmVzc3VuIHBlcm1lc3NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRybyBub24gdmFsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnUGFyYW1ldHJpIGRpIHJpY2VyY2Egbm9uIHZhbGlkaSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBtb3N0cmF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRpIHN0YXRvIGRpIGRpc3RyaWJ1emlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwbyBkaSBzdGF0byBkZWxsXCdpbmNpZGVudGUgY29ycmVudGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnZnJhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cml6aW9uaSBkaSBjbGFzc2UgcGVyIGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlemlvbmFyZSB1bmEgbyBwacO5IGNsYXNzaSBwZXIgbGltaXRhcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYWJpbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaXppb25pIGRpIGNsYXNzZSBwZXIgbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlemlvbmFyZSB1bmEgbyBwacO5IGNsYXNzaSBwZXIgbGltaXRhcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYWJpbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWljbyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpY2EgKHZlcnNpb25lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRpIHJpZmVyaW1lbnRvIGRlbCBjb2xsZWdhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2UgcXVlc3RvIGNvbGxlZ2FtZW50byBzaSBhcHBsaWNhIGFsIENvbmZpZ0l0ZW0gbyBhbGxhIHZlcnNpb25lIHN0YXRpY2EgZGVsbFwnb2dnZXR0byBkaSByaWZlcmltZW50by4gSWwgY2FsY29sbyBkZWxsbyBTdGF0byBjb3JyZW50ZSBkZWxsXCdpbmNpZGVudGUgdmllbmUgZXNlZ3VpdG8gc29sbyBzdWkgY29sbGVnYW1lbnRpIGRpbmFtaWNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGV6aW9uYXJlIGxcJ2F0dHJpYnV0byBpbiBiYXNlIGFsIHF1YWxlIGdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSB2ZXJyYW5ubyByaWNlcmNhdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0xhIHN0cnV0dHVyYSBkaSBiYXNlIG5vbiDDqCB2YWxpZGEuIEZvcm5pcmUgdW4gaGFzaCBjb24gaSBkYXRpIGluIGZvcm1hdG8gWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfDiCBuZWNlc3NhcmlvIGluaXppYXJlIGxhIHN0cmluZ2EgWUFNTCBjb24gXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnSW1wb3NzaWJpbGUgZWxpbWluYXJlIGxhIHRhYmVsbGEgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTm9uIHNvbm8gc3RhdGkgdHJvdmF0aSBjYW1waSBkaW5hbWljaSByaWxldmFudGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbXBvc3NpYmlsZSBpbnNlcmlyZSBuZWxsYSB0YWJlbGxhIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5zZXJpdGUgMCByaWdoZSBuZWxsYSB0YWJlbGxhIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOdW1lcm8gbWFzc2ltbyBkaSB1biBlbGVtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9uZSBTdHJpbmdhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm9yZSBuZWxsYSBzaW5jcm9uaXp6YXppb25lIGRlbGxlIGRlZmluaXppb25pLiBDb250cm9sbGFyZSBpbCByZWdpc3Ryby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdMZSBkZWZpbml6aW9uaSBkaSBJVFNNQ29uZmlnSXRlbSBub24gc29ubyBzaW5jcm9uaXp6YXRlLiBEaXN0cmlidWlyZSBsZSBtb2RpZmljaGUgYWkgY2FtcGkgZGluYW1pY2kgZGkgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdTY2FkdXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFudXRlbnppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BpYW5pZmljYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JpcGFyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSaXRpcmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpc2lvbmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdCc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUGFub3JhbWljYSBlIGNvbmZlcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGF6aW9uZSBkaSBjbGFzc2kvcnVvbGkgZSBkZWkgcmVsYXRpdmkgY2FtcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdTaSDDqCB2ZXJpZmljYXRvIHVuIGVycm9yZSBkdXJhbnRlIGxcJ2ltcG9ydGF6aW9uZSBkZWxsYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBOYXNjb3N0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gTW9zdHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0NvbnNlbnRlIGNvbmRpemlvbmkgZGkgcmljZXJjYSBlc3Rlc2UgbmVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBkZWxsXCdhZ2VudGUuIENvbiBxdWVzdGEgZnVuemlvbmUgw6ggcG9zc2liaWxlIGNlcmNhcmUsIGFkIGVzZW1waW8sIGlsIG5vbWUgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgY29uIGNvbmRpemlvbmkgZGVsIHRpcG8gIigqa2V5MSomJiprZXkyKikiIG8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdDb25zZW50ZSBjb25kaXppb25pIGRpIHJpY2VyY2EgZXN0ZXNlIG5lbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4gQ29uIHF1ZXN0YSBmdW56aW9uZSDDqCBwb3NzaWJpbGUgY2VyY2FyZSwgYWQgZXNlbXBpbywgaWwgbm9tZSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBjb24gY29uZGl6aW9uaSBkZWwgdGlwbyAiKCprZXkxKiYmKmtleTIqKSIgbyAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0NJcyBhc3NlZ25hdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0lzIGFzc2VnbmF0aSBhbGxhIHNvY2lldMOgIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNzZWduYXRpIGFsbFwndXRlbnphIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0ltcG9zdGF6aW9uaSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdDZXJjYSB1biBub21lIHVuaXZvY28gc29sbyBhbGxcJ2ludGVybm8gZGVsbGEgc3Rlc3NhIGNsYXNzZSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIG8gZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBpbCBjaGUgc2lnbmlmaWNhIGNoZSBvZ25pIENvbmZpZ0l0ZW0gZXNpc3RlbnRlIHZpZW5lIHByZXNvIGluIGNvbnNpZGVyYXppb25lIHF1YW5kbyBzaSBjZXJjYW5vIGR1cGxpY2F0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1NjZWdsaWVyZSB1biBtb2R1bG8gcGVyIGFwcGxpY2FyZSB1bm8gc2NoZW1hIGRpIGRlbm9taW5hemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdTY2VnbGllcmUgdW4gbW9kdWxvIHBlciBhcHBsaWNhcmUgdW5vIHNjaGVtYSBudW1lcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnU2NlZ2xpZXJlIHVuIG1vZHVsbyBwZXIgYXBwbGljYXJlIHVubyBzY2hlbWEgZGkgc3RyaW5naGUgZGkgdmVyc2lvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnU2NlZ2xpZXJlIGdsaSBhdHRyaWJ1dGkgcGVyIGF0dGl2YXJlIGxhIGNyZWF6aW9uZSBkaSB1bmEgbnVvdmEgdmVyc2lvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1NjZWdsaWVyZSBsZSBjYXRlZ29yaWUgZGEgYXNzZWduYXJlIGEgcXVlc3RhIGNsYXNzZSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cmkgcGVyIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsYSBjb2xvbm5hIHBlciBsYSBwYW5vcmFtaWNhIGRpIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2xvbm5lIGNoZSBwb3Nzb25vIGVzc2VyZSBmaWx0cmF0ZSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4gTm90YTogU29ubyBhbW1lc3NpIHNvbG8gZ2xpIGF0dHJpYnV0aSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBlIGkgY2FtcGkgZGluYW1pY2kgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBZ2dpdW5naSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdNb2RpZmljYSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRpIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGNoZSBjb25zZW50ZSBsYSByZWdpc3RyYXppb25lIG5lbGxhIGNyb25vbG9naWEgbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRvIHBlciBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgY2hlIGFnZ2lvcm5hIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBhbGxhIGxvcm8gZGVmaW5pemlvbmUgY29ycmVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnQ29uZmlndXJhIGNyb25vbG9naWEgYXJ0aWNvbGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1N0YW1wYSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmEgbG8gem9vbSBkZWxsXCdvZ2dldHRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1Zpc3RhIGFkIGFsYmVybyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnSSBDb25maWdJdGVtIGRlbGxlIHNlZ3VlbnRpIGNsYXNzaSBub24gc2FyYW5ubyBtZW1vcml6emF0aSBzdWwgc2VydmVyIEVsYXN0aWNzZWFyY2guIFBlciBhcHBsaWNhcmUgcXVlc3RvIGFpIENJIGVzaXN0ZW50aSwgw6ggbmVjZXNzYXJpbyBlc2VndWlyZSBsYSBtaWdyYXppb25lIGRlbCBDSSB0cmFtaXRlIGxhIGNvbnNvbGUsIGRvcG8gYXZlciBtb2RpZmljYXRvIHF1ZXN0YSBvcHppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdJIENvbmZpZ0l0ZW0gY29uIGkgc2VndWVudGkgc3RhdGkgZGkgZGlzdHJpYnV6aW9uZSBub24gc2FyYW5ubyBtZW1vcml6emF0aSBzdWwgc2VydmVyIEVsYXN0aWNzZWFyY2guIFBlciBhcHBsaWNhcmUgcXVlc3RvIGFpIENJIGVzaXN0ZW50aSwgw6ggbmVjZXNzYXJpbyBlc2VndWlyZSBsYSBtaWdyYXppb25lIGRlbCBDSSB0cmFtaXRlIGxhIGNvbnNvbGUsIGRvcG8gYXZlciBtb2RpZmljYXRvIHF1ZXN0YSBvcHppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0ZSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBwZXIgcGFnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWJhc2UgZGkgZ2VzdGlvbmUgZGVsbGEgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNb2R1bG8gZGkgbWFzc2EgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZvY2UgZGkgY29uZmlndXJhemlvbmUgcmljZXJjYSByb3V0ZXIgYmFja2VuZCBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmVhIGUgZ2VzdGlzY2kgbGUgZGVmaW5pemlvbmkgcGVyIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmVhIGJpZ2xpZXR0aSBwZXIgaSBDb25maWdJdGVtIGluIG1vbWVudGkgc3BlY2lmaWNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdJIGNsaWVudGkgcG9zc29ubyB2ZWRlcmUgbGUgdmVyc2lvbmkgc3RvcmljaGUgZGVpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdJIGNsaWVudGkgaGFubm8gbGEgcG9zc2liaWxpdMOgIGRpIHBhc3NhcmUgbWFudWFsbWVudGUgdHJhIGxlIHZlcnNpb25pIHN0b3JpY2hlIGRpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdGkgcHJlZGVmaW5pdGkgZGEgdXNhcmUgbmVsbFwnYXR0cmlidXRvIHBlciBsYSBzY2hlcm1hdGEgZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4gRXNlbXBpbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PWFubm87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD11bHRpbW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdGkgcHJlZGVmaW5pdGkgZGEgdXNhcmUgbmVsbFwnYXR0cmlidXRvIHBlciBsYSBzY2hlcm1hdGEgZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4gRXNlbXBpbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXJlIGxlIGF6aW9uaSBpbiBjdWkgw6ggZGlzcG9uaWJpbGUgdW4gcHVsc2FudGUgZGkgaW1wb3N0YXppb25lIG5lbCB3aWRnZXQgZGVnbGkgb2dnZXR0aSBjb2xsZWdhdGkgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gU2kgbm90aSBjaGUgcXVlc3RlIGF6aW9uaSBkZXZvbm8gYXZlciByZWdpc3RyYXRvIGkgc2VndWVudGkgZmlsZSBKUyBlIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgZSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmlzY2UgdW5vIHNjaGVtYSBUZW1wbGF0ZTo6VG9vbGtpdCBwZXIgbGUgc3RyaW5naGUgZGkgdmVyc2lvbmUuIFV0aWxpenphdG8gc29sbyBzZSBpbCBtb2R1bG8gU3RyaW5nYSBkaSB2ZXJzaW9uZSDDqCBpbXBvc3RhdG8gc3UgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5pcmUgdW4gaW5zaWVtZSBkaSBjb25kaXppb25pIGluIGJhc2UgYWxsZSBxdWFsaSB1biBjbGllbnRlIHB1w7IgdmVkZXJlIHVuIGVsZW1lbnRvIGRlbGxhIGNvbmZpZ3VyYXppb25lLiBMZSBjb25kaXppb25pIHBvc3Nvbm8gZXNzZXJlIGZhY29sdGF0aXZhbWVudGUgbGltaXRhdGUgYSBkZXRlcm1pbmF0aSBncnVwcGkgZGkgY2xpZW50aS4gSWwgbm9tZSDDqCBsXCd1bmljbyBhdHRyaWJ1dG8gb2JibGlnYXRvcmlvLiBTZSBub24gdmVuZ29ubyBmb3JuaXRlIGFsdHJlIG9wemlvbmksIHR1dHRpIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBzYXJhbm5vIHZpc2liaWxpIHNvdHRvIHF1ZWxsYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgaSBwZXJtZXNzaSBuZWNlc3NhcmkgcGVyIGVsaW1pbmFyZSBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSB1dGlsaXp6YW5kbyBsXCdpbnRlcmZhY2NpYSBnZW5lcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpIHBlcm1lc3NpIG5lY2Vzc2FyaSBwZXIgb3R0ZW5lcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gdXRpbGl6emFuZG8gbFwnaW50ZXJmYWNjaWEgZ2VuZXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgaSBwZXJtZXNzaSBuZWNlc3NhcmkgcGVyIGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSB1dGlsaXp6YW5kbyBsXCdpbnRlcmZhY2NpYSBnZW5lcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBhdXRvcml6emF6aW9uaSBuZWNlc3NhcmllIHBlciBpbXBvc3RhcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gdXRpbGl6emFuZG8gbFwnaW50ZXJmYWNjaWEgZ2VuZXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSB1biBtb2R1bG8gZGkgcGFub3JhbWljYSBwZXIgbW9zdHJhcmUgbGEgdmlzdGEgcmlkb3R0YSBkaSB1biBlbGVuY28gZGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBzZSBsZSBldGljaGV0dGUgZGVsIHRpcG8gZGkgY29sbGVnYW1lbnRvIGRldm9ubyBlc3NlcmUgbW9zdHJhdGUgbmVsbGUgY29ubmVzc2lvbmkgZGVpIG5vZGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgZXNwcmVzc2lvbmkgcmVnb2xhcmkgc2luZ29sYXJtZW50ZSBwZXIgY2lhc2N1bmEgY2xhc3NlIENvbmZpZ0l0ZW0gcGVyIGNvbnRyb2xsYXJlIGlsIG5vbWUgQ29uZmlnSXRlbSBlIG1vc3RyYXJlIGkgbWVzc2FnZ2kgZGkgZXJyb3JlIGNvcnJpc3BvbmRlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIGRpc3BvbmliaWxpIGRlaSBDSSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCBhIHNlY29uZGEgZGVsbGEgY2xhc3NlIGRlbCBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIGNvbXBvc3RhIGRhIHVuIG5vbWUgZGkgY2xhc3NlIGUgZGEgdW4gYXJyYXkgZGkgY2FtcGkgZGlzcG9uaWJpbGkgcGVyIGxhIGNsYXNzZSBjb3JyaXNwb25kZW50ZS4gTGUgdm9jaSBkZWkgY2FtcGkgZGluYW1pY2kgZGV2b25vIHJpc3BldHRhcmUgbG8gc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYXR0cmlidXRvIHByZWRlZmluaXRvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHBlciBsXCdvcmRpbmFtZW50byBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ2F0dHJpYnV0byBwcmVkZWZpbml0byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBwZXIgbFwnb3JkaW5hbWVudG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ2F0dHJpYnV0byBwcmVkZWZpbml0byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBwZXIgbFwnb3JkaW5hbWVudG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgZGVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGRpIHF1ZXN0YSBvcGVyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBwcmVkZWZpbml0byBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLiBTdTogaWwgcGnDuSB2ZWNjaGlvIGluIGNpbWEuIEdpw7k6IGxcJ3VsdGltbyBpbiBjaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBwcmVkZWZpbml0byBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4gU3U6IGlsIHBpw7kgdmVjY2hpbyBpbiBjaW1hLiBHacO5OiBpbCBwacO5IHJlY2VudGUgaW4gY2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIHByZWRlZmluaXRlIGRlaSBDSSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCBhIHNlY29uZGEgZGVsbGEgY2xhc3NlIGRlbCBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIGNvbXBvc3RhIGRhIHVuIG5vbWUgZGkgY2xhc3NlIGUgZGEgdW4gYXJyYXkgZGkgY2FtcGkgZGlzcG9uaWJpbGkgcGVyIGxhIGNsYXNzZSBjb3JyaXNwb25kZW50ZS4gTGUgdm9jaSBkZWkgY2FtcGkgZGluYW1pY2kgZGV2b25vIHJpc3BldHRhcmUgbG8gc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluaXNjZSBsYSBwcm9mb25kaXTDoCBwcmVkZWZpbml0YSBkZWxsZSByZWxhemlvbmkgZGEgbW9zdHJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhdHRyaWJ1dG8gcHJlZGVmaW5pdG8gZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBwZXIgbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYXR0cmlidXRvIGRpIHJpY2VyY2EgcHJlZGVmaW5pdG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgcGVyIGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLiBFc2VtcGlvOiAiS2V5IiBkZXZlIGF2ZXJlIGlsIG5vbWUgZGVsIGNhbXBvIGRpbmFtaWNvLCBpbiBxdWVzdG8gY2FzbyBcJ1hcJywgIkNvbnRlbnQiIGRldmUgYXZlcmUgaWwgdmFsb3JlIGRlbCBjYW1wbyBkaW5hbWljbywgYSBzZWNvbmRhIGRlbCB0aXBvIGRpIGNhbXBvIGRpbmFtaWNvLCBUZXh0OiBcJ3VuIHRlc3RvXCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgZSBvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBzb3R0by1vZ2dldHRvIHByZWRlZmluaXRvIGRlbGxhIGNsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSBkaXNwb25pYmlsaSBkZWkgQ0kgbmVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSwgYSBzZWNvbmRhIGRlbGxhIGNsYXNzZSBkZWwgQ0kuIE9nbmkgdm9jZSBkZXZlIGVzc2VyZSBjb21wb3N0YSBkYSB1biBub21lIGRpIGNsYXNzZSBlIGRhIHVuIGFycmF5IGRpIGNhbXBpIGRpc3BvbmliaWxpIHBlciBsYSBjbGFzc2UgY29ycmlzcG9uZGVudGUuIExlIHZvY2kgZGVpIGNhbXBpIGRpbmFtaWNpIGRldm9ubyByaXNwZXR0YXJlIGxvIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYWx0ZXp6YSBkZWwgY29tcG9uZW50ZSBkZWxsXCdlZGl0b3IgZGkgdGVzdG8gcmljY28gcGVyIHF1ZXN0YSBzY2hlcm1hdGEuIEluc2VyaXJlIHVuIG51bWVybyAocGl4ZWwpIG8gdW4gdmFsb3JlIHBlcmNlbnR1YWxlIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBudW1lcm8gZGkgcmlnaGUgcGVyIENJIGxcJ2VkaXRvciBkZWxsZSBkZWZpbml6aW9uaSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBuZWxsXCdpbnRlcmZhY2NpYSBkaSBhbW1pbmlzdHJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdvcmRpbmUgZGVnbGkgc3RhdGkgZGVnbGkgaW5jaWRlbnRpIGRhIGFsdG8gKGVzLiBjcml0aWNvKSBhIGJhc3NvIChlcy4gZnVuemlvbmFsZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGdsaSBzdGF0aSBkaSBkaXN0cmlidXppb25lIHBlcnRpbmVudGkgaW4gY3VpIGkgdGlja2V0IGNvbGxlZ2F0aSBwb3Nzb25vIGluZmx1aXJlIHN1bGxvIHN0YXRvIGRpIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBsaW1pdGUgZGkgcmljZXJjYSBwZXIgbGEgc2NoZXJtYXRhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGlsIGxpbWl0ZSBkaSByaWNlcmNhIHBlciBsYSBzY2hlcm1hdGEgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzY2UgaWwgbGltaXRlIGRpIHJpY2VyY2EgcGVyIGxhIHNjaGVybWF0YSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBsaW1pdGUgZGkgcmljZXJjYSBwZXIgbGEgc2NoZXJtYXRhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIGRpIHZpc3VhbGl6emF0ZSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBkaSBDSXMgbmVsbGEgdmlzdGEgY29tcGxlc3NhIGRlbGxhIHRhYmVsbGEgZGVpIGNvbGxlZ2FtZW50aSBwZXIgdHV0dGUgbGUgY2xhc3NpIENJLiBTZSBub24gw6ggcHJlc2VudGUgYWxjdW5hIHZvY2UsIHZlbmdvbm8gdmlzdWFsaXp6YXRlIGxlIGNvbG9ubmUgcHJlZGVmaW5pdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSB2aXN1YWxpenphdGUgZGVnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgbmVsbGEgdmlzdGEgY29tcGxlc3NhIGRlbGxhIHRhYmVsbGEgZGVpIGNvbGxlZ2FtZW50aSwgYSBzZWNvbmRhIGRlbGxhIGNsYXNzZSBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIHByZWNlZHV0YSBkYSB1biBub21lIGRpIGNsYXNzZSBlIGR1ZSBwdW50aSAoYWQgZXNlbXBpbyBDb21wdXRlcjo6KS4gRXNpc3Rvbm8gYWxjdW5pIGF0dHJpYnV0aSBDSSBjb211bmkgYSB0dXR0aSBnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgKGVzZW1waW8gcGVyIGxhIGNsYXNzZSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5vbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gUGVyIG1vc3RyYXJlIHNpbmdvbGkgYXR0cmlidXRpIENJIGNvbWUgZGVmaW5pdGkgbmVsbGEgZGVmaW5pemlvbmUgQ0ksIMOoIG5lY2Vzc2FyaW8gdXRpbGl6emFyZSBpbCBzZWd1ZW50ZSBzY2hlbWEgKGVzZW1waW8gcGVyIGxhIGNsYXNzZSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBTZSBub24gw6ggcHJlc2VudGUgYWxjdW5hIHZvY2UgcGVyIHVuYSBjbGFzc2UgQ0ksIHZlbmdvbm8gdmlzdWFsaXp6YXRlIGxlIGNvbG9ubmUgcHJlZGVmaW5pdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHF1YWxpIHZvY2kgc29ubyBkaXNwb25pYmlsaSBwZXIgbFwnIkF6aW9uZSIgbmVsIHRlcnpvIGxpdmVsbG8gZGVsbGEgc3RydXR0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBxdWFsaSB2b2NpIHNvbm8gZGlzcG9uaWJpbGkgbmVsIHByaW1vIGxpdmVsbG8gZGVsbGEgc3RydXR0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmlzY2UgcXVhbGkgdm9jaSBzb25vIGRpc3BvbmliaWxpIG5lbCBzZWNvbmRvIGxpdmVsbG8gZGVsbGEgc3RydXR0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmlzY2UgcXVhbGUgdGlwbyBkaSBjb2xsZWdhbWVudG8gKGRlbm9taW5hdG8gZGFsbGEgcHJvc3BldHRpdmEgZGVsIHRpY2tldCkgcHXDsiBpbmZsdWlyZSBzdWxsbyBzdGF0byBkaSB1biBlbGVtZW50byBkZWxsYSBjb25maWd1cmF6aW9uZSBjb2xsZWdhdG8gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHF1YWxlIHRpcG8gZGkgdGlja2V0IHB1w7IgaW5mbHVpcmUgc3VsbG8gc3RhdG8gZGkgdW4gZWxlbWVudG8gZGVsbGEgY29uZmlndXJhemlvbmUgY29sbGVnYXRvIENJLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBZ2dpb3JuYW1lbnRvIGRlbGxhIGRlZmluaXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGltaW5hIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ1N0YXRvIGRpIGRlcGxvcmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ29sb3JlIGRlbGxvIHN0YXRvIGRpIGRpc3RyaWJ1emlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnU3RhdG8gZGkgZGlzdHJpYnV6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRvIHBlciBjYW1waSBkaW5hbWljaSBjaGUgY29udHJhc3NlZ25hIGxlIGRlZmluaXppb25pIGRlZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIGNvbWUgbm9uIHNpbmNyb25penphdGUsIHNlIGkgY2FtcGkgZGluYW1pY2kgY2hlIGxlIGNvbnRlbmdvbm8gY2FtYmlhbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1waSBkaW5hbWljaSB2aXN1YWxpenphdGkgbmVsbGEgc2NoZXJtYXRhIGRlbCBjYW1wbyBJVFNNIGFnZ2l1bnRpdmEgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1waSBkaW5hbWljaSB2aXN1YWxpenphdGkgbmVsbGEgc2NoZXJtYXRhIGRpIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcGkgZGluYW1pY2kgdmlzdWFsaXp6YXRpIG5lbGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWJpbGl0YSBsYSBmdW56aW9uZSBkaSBhemlvbmUgaW4gYmxvY2NvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGFmZmluY2jDqSBpbCBmcm9udGVuZCBkZWxsXCdhZ2VudGUgZnVuemlvbmkgc3UgcGnDuSBkaSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBhbGxhIHZvbHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWJpbGl0YSBsYSBmdW56aW9uZSBkaSBhemlvbmUgaW4gYmxvY2NvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHNvbG8gcGVyIGkgZ3J1cHBpIGVsZW5jYXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRvIHBlciBpbXBvc3RhcmUgbG8gc3RhdG8gZGkgY29uZmlndXJhemlvbmUgc3UgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2FtcGkgZGVsbFwnaW5kaWNlIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCB1dGlsaXp6YXRpIHBlciBsYSByaWNlcmNhIGZ1bGwtdGV4dC4gSSBjYW1waSBzb25vIGFuY2hlIG1lbW9yaXp6YXRpLCBtYSBub24gc29ubyBvYmJsaWdhdG9yaSBwZXIgbGEgZnVuemlvbmFsaXTDoCBjb21wbGVzc2l2YS4gTFwnaW5jbHVzaW9uZSBkZWdsaSBhbGxlZ2F0aSBwdcOyIGVzc2VyZSBkaXNhdHRpdmF0YSBpbXBvc3RhbmRvIGxhIHZvY2Ugc3UgMCBvIGNhbmNlbGxhbmRvbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdDYW1waSBtZW1vcml6emF0aSBuZWxsXCdpbmRpY2UgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUsIHV0aWxpenphdGkgcGVyIGFsdHJpIHNjb3BpIG9sdHJlIGFsbGEgcmljZXJjYSBmdWxsLXRleHQuIFBlciBsYSBmdW56aW9uYWxpdMOgIGNvbXBsZXRhLCB0dXR0aSBpIGNhbXBpIHNvbm8gb2JibGlnYXRvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmF6aW9uZSBkZWwgbW9kdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGVyIGlsIGxpdmVsbG8gZGkgaW52b2NhemlvbmUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhemlvbmUgZGVsIG1vZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBlciBpbCBsaXZlbGxvIGRpIGludm9jYXppb25lIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmF6aW9uZSBkZWwgbW9kdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGVyIGlsIGxpdmVsbG8gZGkgaW52b2NhemlvbmUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ1N0YXRvIEluY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ1N0YXRvIGRlbGxcJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZSBnbGkgc3RhdGkgZGkgZGlzdHJpYnV6aW9uZSBuZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGUgZ2xpIHN0YXRpIGRlZ2xpIGluY2lkZW50aSBuZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ051bWVybyBtYXNzaW1vIGRpIHZvY2kgZGkgY29uZmlndXJhemlvbmUgZGEgdmlzdWFsaXp6YXJlIG5lbCByaXN1bHRhdG8gZGkgcXVlc3RhIG9wZXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxvIHBlciBjb250cm9sbGFyZSBpbCBncnVwcG8gcmVzcG9uc2FiaWxlIHBlciB1bmEgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsbyBwZXIgdmVyaWZpY2FyZSBpbCBncnVwcG8gcmVzcG9uc2FiaWxlIGRpIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsbyBwZXIgZ2VuZXJhcmUgbGUgc3RhdGlzdGljaGUgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdNb2R1bG8gTm9tZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtZXJvIE1vZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1lcm8gZGkgdm9jaSBkaSBjb25maWd1cmF6aW9uZSBkYSB2aXN1YWxpenphcmUgaW4gb2duaSBwYWdpbmEgZGkgdW4gcmlzdWx0YXRvIGRpIHJpY2VyY2EgbmVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1lcm8gZGkgdm9jaSBkaSBjb25maWd1cmF6aW9uZSBkYSB2aXN1YWxpenphcmUgaW4gb2duaSBwYWdpbmEgZGkgdW4gcmlzdWx0YXRvIGRpIHJpY2VyY2EgbmVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2dnZXR0aSBkYSBjZXJjYXJlLCBxdWFudGUgdm9jaSBlIHF1YWxpIGF0dHJpYnV0aSBtb3N0cmFyZS4gR2xpIGF0dHJpYnV0aSBkaSBDb25maWdJdGVtIGRldm9ubyBlc3NlcmUgbWVtb3JpenphdGkgZXNwbGljaXRhbWVudGUgdHJhbWl0ZSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXN0YSBHbG9iYWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsZSBjYXRlZ29yaWUgZGVsbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaSBmaWx0cmkgZGVsbGUgY29sb25uZSBkZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHBpY2NvbGkuIE5vdGEgYmVuZTogaW1wb3N0YW5kbyBcJ0F0dGl2b1wnIHN1IDAsIHNpIGltcGVkaXLDoCBhZ2xpIGFnZW50aSBkaSBtb2RpZmljYXJlIGxlIGltcG9zdGF6aW9uaSBkaSBxdWVzdG8gZ3J1cHBvIG5lbGxlIGxvcm8gcHJlZmVyZW56ZSBwZXJzb25hbGksIG1hIHNpIHBlcm1ldHRlcsOgIGFnbGkgYW1taW5pc3RyYXRvcmkgZGkgbW9kaWZpY2FyZSBsZSBpbXBvc3RhemlvbmkgZGkgdW4gYWx0cm8gdXRlbnRlLiBVc2FyZSBcJ0dydXBwbyBkaSBwcmVmZXJlbnplXCcgcGVyIGNvbnRyb2xsYXJlIGluIHF1YWxlIGFyZWEgcXVlc3RlIGltcG9zdGF6aW9uaSBkZXZvbm8gZXNzZXJlIHZpc3VhbGl6emF0ZSBuZWxsXCdpbnRlcmZhY2NpYSB1dGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSSBwYXJhbWV0cmkgcGVyIGdsaSBzdGF0aSBkaSBkaXN0cmlidXppb25lIGNvbG9yYW5vIG5lbGxhIHZpc3RhIGRlbGxlIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgZ2xpIHN0YXRpIGRpIGRpc3RyaWJ1emlvbmUgbmVsbGEgdmlzdGEgZGVsbGUgcHJlZmVyZW56ZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaSBncnVwcGkgZGkgcGVybWVzc2kgZGkgZXNlbXBpbyBkZWdsaSBhdHRyaWJ1dGkgZGVsIGNhdGFsb2dvIGdlbmVyYWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIGRlaSBub21pIGRlbGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIG51bWVyaWNvIGRlbGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsZSBwYWdpbmUgKG5lbGxlIHF1YWxpIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBzb25vIG1vc3RyYXRpKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBpbCBtb2R1bG8gc3RyaW5nYSBkaSB2ZXJzaW9uZSBwZXIgbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIGRlbCB0b29sa2l0IGRpIG1vZGVsbGkgZGkgc3RyaW5naGUgZGkgdmVyc2lvbmUgcGVyIGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2FnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsXCdhdHRpdmF6aW9uZSBkZWxsYSB2ZXJzaW9uZSBwZXIgbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBwbyBkaSBhdXRvcml6emF6aW9uaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXp6YXppb25pIG5lY2Vzc2FyaWUgcGVyIHV0aWxpenphcmUgbFwnYXppb25lIGRpIGNvbGxlZ2FtZW50byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2FnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXp6YXppb25pIG5lY2Vzc2FyaWUgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXp6YXppb25pIG5lY2Vzc2FyaWUgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRpIHZpc3VhbGl6emF6aW9uZSBhZCBhbGJlcm8gZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgem9vbSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIEFnZ2l1bmdpIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcml6emF6aW9uaSBuZWNlc3NhcmllIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIGRpIG1hc3NhIG5lbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2FnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkaSBtb2RpZmljYSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIGRlbGxhIGNyb25vbG9naWEgbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkaSBzdGFtcGEgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWxlZ2kgcmljaGllc3RpIHBlciBlbGltaW5hcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0NlcmNhIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnSW1wb3N0YSBhdXRvbWF0aWNhbWVudGUgbG8gc3RhdG8gZGVsbFwnaW5jaWRlbnRlIGRpIHVuIGVsZW1lbnRvIGRlbGxhIGNvbmZpZ3VyYXppb25lIHF1YW5kbyB1biB0aWNrZXQgw6ggY29sbGVnYXRvIGEgdW4gZWxlbWVudG8gZGVsbGEgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW1wb3N0YSBsbyBzdGF0byBkaSBkaXN0cmlidXppb25lIG5lbGxhIHNjaGVybWF0YSBkaSBtYXNzYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ltcG9zdGEgbG8gc3RhdG8gZGVsbFwnaW5jaWRlbnRlIG5lbGxhIHNjaGVybWF0YSBpbiBibG9jY28gZGVsbFwnYXJ0aWNvbG8gZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgY2hlIGNvbnNlbnRlIGRpIGNvbGxlZ2FyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBjb24gdW4gYWx0cm8gb2dnZXR0byBuZWxsYSB2aXN0YSB6b29tIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBhY2NlZGVyZSBhbGxhIGNyb25vbG9naWEgZGkgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGFjY2VkZXJlIGFsbGEgY3Jvbm9sb2dpYSBkaSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSB6b29tIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBlbGltaW5hcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgc3VhIHZpc3RhIHpvb20gZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgdmlzdWFsaXp6YXJlIGkgY29sbGVnYW1lbnRpIGFsbGUgdm9jaSBkaSBjb25maWd1cmF6aW9uZSBjb21lIHVuYSBzdHJ1dHR1cmEgYWQgYWxiZXJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGR1cGxpY2FyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgZHVwbGljYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHN1YSB2aXN0YSB6b29tIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIG1vZGlmaWNhcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgc3VhIHZpc3RhIHpvb20gZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgdG9ybmFyZSBpbmRpZXRybyBuZWxsYSB2aXN0YSB6b29tIGRlbGxhIHZvY2UgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIHN0YW1wYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHN1YSB2aXN0YSB6b29tIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBpbmdyYW5kaXJlIHVuYSB2b2NlIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHBhbm9yYW1pY2EgZGVsbGUgdm9jaSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBsYSBjcm9ub2xvZ2lhIGRlZ2xpIGFydGljb2xpIGRpIGNvbmZpZ3VyYXppb25lIChvcmRpbmUgaW52ZXJzbykgbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdMYSBjYXRlZ29yaWEgcHJlZGVmaW5pdGEgY2hlIHZpZW5lIG1vc3RyYXRhIHNlIG5vbiDDqCBzZWxlemlvbmF0YSBuZXNzdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnTFwnaWRlbnRpZmljYXRvcmUgcGVyIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLCBhZCBlcy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIExcJ2ltcG9zdGF6aW9uZSBwcmVkZWZpbml0YSDDqCBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F0dGl2YSBhdXRvbWF0aWNhbWVudGUgbFwnaW52b2NhdG9yZSBkaSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpb25lIEVzcHJlc3Npb25lIHN0cmluZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lvbmUgTW9kdWxvIFN0cmluZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2lvbmUgVHJpZ2dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnU2UgbFwnZXNlY3V6aW9uZSBkaSBDb25maWdJdGVtQUNMIHB1w7IgZXNzZXJlIGV2aXRhdGEgY29udHJvbGxhbmRvIGxlIGRpcGVuZGVuemUgZGVpIGNhbXBpIG5lbGxhIGNhY2hlLiBRdWVzdG8gcHXDsiBtaWdsaW9yYXJlIGkgdGVtcGkgZGkgY2FyaWNhbWVudG8gZGVpIG1vZHVsaSwgbWEgZGV2ZSBlc3NlcmUgZGlzYWJpbGl0YXRvIHNlIHNpIHZvZ2xpb25vIHVzYXJlIGkgbW9kdWxpIEFDTE0gcGVyIGkgdGlwaSBJVFNNQ29uZmlnSXRlbSBlIEZvcm0tUmV0dXJuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnTGUgaW5mb3JtYXppb25pIGdlbmVyYWxpIHNvbm8gcmlwb3J0YXRlIG5lbGxcJ2ludGVzdGF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdXR0aXZhJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHBvbGxpY2kgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwb2xsaWNpICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcG9sbGljaSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwb2xsaWNpICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFjayBkYSAxOSBwb2xsaWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwb2xsaWNpICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHBvbGxpY2kgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ0NyZW1hZ2xpZXJhIGRhIDIxIHBvbGxpY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHBvbGxpY2kgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdDcmVtYWdsaWVyYSBkYSAyMyBwb2xsaWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwb2xsaWNpICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwb2xsaWNpICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwb2xsaWNpICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcG9sbGljaSAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBwb2xsaWNpICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwb2xsaWNpICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwb2xsaWNpICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwb2xsaWNpICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwb2xsaWNpICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgcG9sbGljaSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHBvbGxpY2kgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwb2xsaWNpICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBwb2xsaWNpICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBvbGxpY2kgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcG9sbGljaSAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHBvbGxpY2kgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBwb2xsaWNpICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcG9sbGljaSAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgcG9sbGljaSAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgcG9sbGljaSAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwb2xsaWNpICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBvbGxpY2kgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgcG9sbGljaSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpdMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQXNzZWduYXppb25lIGRlZ2xpIGluZGlyaXp6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQW1taW5pc3RyYXRvcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVGVsZWZvbm8gYW5hbG9naWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVGlwbyBkaSBhcHBhcmVjY2hpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaXTDoCBkZWxsYSBiYXR0ZXJpYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1RpcG8gZGkgYmF0dGVyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdFZGlmaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYWNjaWEgYnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ2xhc3NlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpdMOgIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2l0w6AgcGVyIHNjaGVkYSBncmFmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTnVtZXJvIGRpIGNhcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGV0dG9yZSBkaSBzY2hlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVGlwbyBkaSBjYXJ0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdGkgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmlhIGRpIGNsaWVudGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnRnJlcXVlbnphIGRlbGxcJ29yb2xvZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdWZWxvY2l0w6AgZGVsbFwnb3JvbG9naW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRpIGRpIGZpcm1hIGRlbCBjb2RpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbGVmb25vIGRpIGNvbmZlcmVuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdDb250cmF0dG8gZGkgY29uc3VsZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnQ29udGF0dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0NvbnRhdHRvIGNvbiBpbCBkaXN0cmlidXRvcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uZSBkZWkgY29udGVuaXRvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcG8gZGkgY29udHJhdHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnRHVyYXRhIGRlbCBjb250cmF0dG8gZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnRHVyYXRhIGRlbCBjb250cmF0dG8gZmlubyBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbGVmb25vIGNvcmRsZXNzICh0ZWxlZm9ubyBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdVbml0w6AgZGkgY29zdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdOdW1lcm8gZGkgbGljZW56ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0YSBkaSBjcmVhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0NyZW1hZ2xpZXJhIHBlcnNvbmFsaXp6YXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJpc2VydmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2VydmVyIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0YSBkZWxsYSBmYXR0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRhIGRlbGxcJ29yZGluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0YSBkZWxsYSBnYXJhbnppYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRhIGRpIHJpbGFzY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0aSBkaSBmaXJtYSBkZWkgZG9jdW1lbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFjayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2F0aSBlLW1haWwgKGNlcnRpZmljYXRpIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdHRvIGRpIGxhdm9ybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0luZGlyaXp6byBJUCBmaW5hbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW5lIGRlbCBzdXBwb3J0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdGEgZGkgc2NhZGVuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Rpc2NvIHJpZ2lkbyBlc3Rlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0FjY3VtdWxvIGRpIGVuZXJnaWEgYSB2b2xhbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYXR0b3JlIGRpIGZvcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0dG8gZGkgZnJhbmNoaXNpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hemlvbmkgZ2VuZXJhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdTY2hlZGUgZ3JhZmljaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1NjaGVkYSBncmFmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbGxvIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1Blc28gZGVsbFwnaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0N1ZmZpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3RvY29sbG8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGlvbmUgZGVsbFwnaWRlbnRpdMOgIGUgZGVsbFwnYWNjZXNzbyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTnVtZXJvIGRpIGludmVudGFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ051bWVybyBkaSBmYXR0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGllcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKGRpc3BsYXkgYSBjcmlzdGFsbGkgbGlxdWlkaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChkaW9kbyBhIGVtaXNzaW9uZSBsdW1pbm9zYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsZWZvbm8gZmlzc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnUG9ydGF0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xpdmVsbG8gMTogbGl2ZWxsbyBmaXNpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGl2ZWxsbyAyOiBMaXZlbGxvIGRpIGNvbGxlZ2FtZW50byBkYXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMaXZlbGxvIDM6IGxpdmVsbG8gZGkgcmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMaXZlbGxvIDM6IExpdmVsbG8gZGkgcmV0ZSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xpdmVsbG8gNDogbGl2ZWxsbyBkaSB0cmFzcG9ydG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xpdmVsbG8gNTogbGl2ZWxsbyBkaSBzZXNzaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMaXZlbGxvIDY6IExpdmVsbG8gZGkgcHJlc2VudGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xpdmVsbG8gNzogTGl2ZWxsbyBhcHBsaWNhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdHRvIGRpIGxvY2F6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXR0byBkaSBsaWNlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDaGlhdmUgZGkgbGljZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUaXBvIGRpIGxpY2VuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcmlvZG8gZGkgbGljZW56YSBkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ1BlcmlvZG8gZGkgbGljZW56YSBmaW5vIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmlhIGFsIGxpdGlvIGZlcnJvIGZvc2ZhdG8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXR0ZXJpYSBhZ2xpIGlvbmkgZGkgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0dG8gZGkgcHJlc3RpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ1NpdHVhdG8gaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWRpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdQcm9kdXR0b3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2l0w6AgZGkgY2FyaWNvIG1hc3NpbWEgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbW9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUaXBvIGRpIG1lbW9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTnVtZXJvIGRpIGNlbGx1bGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGUvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpemlvbmUgZGVsIG1vZGVsbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUmlzb2x1emlvbmUgZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnRGltZW5zaW9uaSBkZWwgbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01vdXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdSZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWF6aW9uaSBzdWxsYSByZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hemlvbmkgc3VsbGEgcmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTGl2ZWxsbyBkaSByZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWEgYWwgbmljaGVsLWNhZG1pbyAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXR0ZXJpYSBhbCBuaWNoZWwtbWV0YWxsbyBpZHJ1cm8gKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjY29yZG8gZGkgbm9uIGRpdnVsZ2F6aW9uZSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ1RhY2N1aW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTnVtZXJvIGRpIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOdW1lcm8gZGkgbW9kdWxpIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOdW1lcm8gZGkgc2NoZWRlIGdyYWZpY2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKGRpb2RvIG9yZ2FuaWNvIGEgZW1pc3Npb25lIGRpIGx1Y2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0Nvc3RpIG9wZXJhdGl2aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOdW1lcm8gZFwnb3JkaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQWx0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1VzY2l0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdBY2NvcmRvIGRpIHBhcnRlbmFyaWF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ051bWVybyBkaSB0ZWxlZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkaSB0ZWxlZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ051Y2xlaSBmaXNpY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdFcm9nYXppb25lIGRpIGVuZXJnaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdBY3F1aXN0YXRvIHByZXNzbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZm9uZGl0w6AgZGVsIHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbml0w6AgcmFjayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1N0YW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NjaGVkYSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0aSBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdHRvIGRpIHZlbmRpdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsZWZvbm8gc2F0ZWxsaXRhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWEgYWwgcGlvbWJvIHNpZ2lsbGF0YSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ051bWVybyBkaSBzZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBwZXIgc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQ29udHJhdHRvIGRpIHNlcnZpemlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpY2hldHRhIGRpIHNlcnZpemlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1RpcG8gZGkgcHJlc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0FsdG9wYXJsYW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnSW5kaXJpenpvIElQIGRpIHBhcnRlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdJbW1hZ2F6emluYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGl6aW9uZSBkaSBhcmNoaXZpYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2ludGVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RoaW4gQ2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdGaWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnRm9sZ29yZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsZSBkZWxsYSBzY2hlZGEgZ3JhZmljYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsZSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdG9yIHRvdWNoc2NyZWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ycmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDdWZmaWUgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsZWZvbm8gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/ja_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmphX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzpgYvou6Ljg4fjg7zjgr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+WPl+S/oeODquOCr+OCqOOCueODiOODh+ODvOOCv+OBruioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+mAgeS/oeODrOOCueODneODs+OCueODu+ODh+ODvOOCv+OBruioreWumic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+ani+aIkOOCouOCpOODhuODoOeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+OCr+ODqeOCueWumue+qeOCkuWkieabtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5b255Ymy5a6a576p44Gu5aSJ5pu0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOOCr+ODqeOCueODkOODs+ODieODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+OBk+OBk+OBp+OBr+OAgVJlYWR5MkltcG9ydOOCr+ODqeOCueODkOODs+ODieODq+OCkuOCpOODs+ODneODvOODiOOBmeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgui/veWKoOioreWumuOBjOW/heimgeOBquWgtOWQiOOCguOBguOCiuOBvuOBmeOBruOBp+OBlOazqOaEj+OBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfml6LlrZjjga7jgqjjg7Pjg4bjgqPjg4bjgqPjga7mm7TmlrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdSZWFkeTJBZG9wdOOCr+ODqeOCueOBruODkOODs+ODieODq+OCkuOCpOODs+ODneODvOODiOOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruOCr+ODqeOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn6Kit5a6a6aCF55uuIOW9ueWJsic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn44Kv44Op44K544Gn44OV44Kj44Or44K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+aWsOimj+OBruani+aIkOOCouOCpOODhuODoOOCkuS9nOaIkOOBmeOCi+OBq+OBr+OAgeODquOCueODiOOBi+OCieOCr+ODqeOCueOCkumBuOaKnuOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+OCr+ODqeOCuSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ+ani+aIkOOCouOCpOODhuODoOS4gOaLrOOCouOCr+OCt+ODp+ODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn44OH44OX44Ot44Kk44O744K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn44Kk44Oz44K344OH44Oz44OI54q25rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ+S7luOBqOODquODs+OCr+OBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5YCk44GM5LiN5q2j44Gn44GZISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfku5bjga7mp4vmiJDjgqLjgqTjg4bjg6Djgbjjga7jg6rjg7Pjgq/mlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfmnKzlvZPjgavjgZPjga7mp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZfjgb7jgZnjgYvvvJ8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44GuIOani+aIkOOCouOCpOODhuODoCDjga7lkI3np7AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+OBk+OBruWQjeensOOBr+OBmeOBp+OBqyBOdW1iZXIocyk6ICVzIOOBruani+aIkOOCouOCpOODhuODoOOBp+S9v+eUqOS4reOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ+ODkOODvOOCuOODp+ODs+ODiuODs+ODkOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu6Kit5a6a6aCF55uu44Gu44OQ44O844K444On44Oz55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn44OQ44O844K444On44Oz55Wq5Y+344Gv44CB5Lul5LiL44Gu55Wq5Y+344GuIENvbmZpZ0l0ZW1zIOOBq+OCiOOBo+OBpuaXouOBq+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBmTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiOOBruOCueODhuODvOOCv+OCuSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGl5q20OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfjgrPjg6Hjg7Pjg4jlsaXmrbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+S9nOaIkOaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfjgrrjg7zjg6Djg7vjg5Pjg6Xjg7wnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnMeODmuODvOOCuOavjuOBruioreWumumgheebric7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn6Kit5a6a6aCF55uu44Gu44OH44O844K/44GM6KaL44Gk44GL44KK44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu6Kit5a6a6aCF55uu44KS6YG45oqe44GZ44KLJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn5qSc57Si44KS5a6f6KGMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAn44Kz44Oz44OV44Kj44Kw6aCF55uu44Gu44OE44Oq44O844OT44Ol44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAn44OH44OX44K544Os44OZ44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAn44K644O844Og44Kk44OzL+OCuuODvOODoOOCouOCpuODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdDb25maWdJdGVt44Gu5pyA5aSn44Oq44Oz44Kv44Os44OZ44Or44Gr6YGU44GX44Gf77yBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og77yIQ29uZmlndXJhdGlvbiBJdGVt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ+ani+aIkOOCouOCpOODhuODoOaDheWgsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfnj77lnKjjga7jg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ+ePvuWcqOOBruOCpOODs+OCt+ODh+ODs+ODiOOBruOCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfmnIDntYLmm7TmlrDml6XmmYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn5pyA57WC5pu05paw6ICFJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn6Kit5a6a6aCF55uuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ+ioreWumumgheebruaknOe0oic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+S7peS4i+OBruOCr+ODqeOCueOBjOOCpOODs+ODneODvOODiOOBleOCjOOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfku6XkuIvjga7lvbnlibLjgYzjgqTjg7Pjg53jg7zjg4jjgZXjgozjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn5a++5b+c44GZ44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44GoR2VuZXJhbENhdGFsb2fjgq/jg6njgrnjgoLkvZzmiJDjgZXjgozjgIHoh6rli5XnmoTjgavliYrpmaTjgZXjgozjgarjgYTjgZPjgajjgavms6jmhI/jgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfntprooYzjgZfjgb7jgZnjgYvvvJ8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnRXhhbXBsZUNsYXNzZXPjgYzlv4XopoHvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn5a6a576p44Gv5pyJ5Yq544GqIFlBTUwg44OP44OD44K344Ol44Gn44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn5LiA6KanOiDmp4vmiJDjgqLjgqTjg4bjg6AnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44GM5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn5bCR44Gq44GP44Go44KCMeOBpOOBrumBuOaKnuOBleOCjOOBn+ani+aIkOOCouOCpOODhuODoOOBjOW/heimgeOBp+OBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ+OBk+OBruani+aIkOOCouOCpOODhuODoOOBuOOBruabuOOBjei+vOOBv+OCouOCr+OCu+OCueaoqeOBjOOBguOCiuOBvuOBm+OCkzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn44Kv44Op44K5JXPjga7lrprnvqnjgYzlrprnvqnjgZXjgozjgabjgYTjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+ani+aIkOOCouOCpOODhuODoCAiJXMi44GM44OH44O844K/44OZ44O844K544Gr6KaL44Gk44GL44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn5qeL5oiQ44Ki44Kk44OG44OgSUQlc+OCkuWJiumZpOOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQ29uZmlnSXRlbUlEJXPjga7jg5Djg7zjgrjjg6fjg7PjgYzopovjgaTjgYvjgorjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44CBRHVwbGljYXRlSUTjgIFDbGFzc0lE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfjgqLjgq/jgrvjgrnmqKnjga/jgYLjgorjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5bGl5q2044KS6KGo56S644GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44GM44CBQ29uZmlnSXRlbUlE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5bGl5q2044KS6KGo56S644GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CC44Ki44Kv44K744K55qip44Gv5LiO44GI44KJ44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfmlrDjgZfjgYTmp4vmiJDjgqLjgqTjg4bjg6AoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfmlrDjgZfjgYTjg5Djg7zjgrjjg6fjg7PvvIhJRCA9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/jgILvvIjmlrDopo89JXPjgIHliY09JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn44Kk44Oz44K344OH44Oz44OI54q25oWL44GM5pu05paw44GV44KM44G+44GX44Gf77yI5paw6KaPPSVz44CB5Y+k44GEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5YmK6ZmkIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICclc++8iOOCv+OCpOODlz0lc++8ieOBuOOBruODquODs+OCr+OBjOi/veWKoOOBleOCjOOBvuOBl+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJXPvvIjjgr/jgqTjg5c9JXPvvInjgbjjga7jg6rjg7Pjgq/jgYzliYrpmaTjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW3lrprnvqnjgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/vvIhJRCA9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICflkI3liY3jgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/vvIjmlrDopo89JXPjgIHlj6TjgYQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICflsZ7mgKclc+OBjCAiJXMi44GL44KJICIlcyLjgavmm7TmlrDjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn44OQ44O844K444On44OzJXPjgYzliYrpmaTjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAn44OV44Kh44Kk44OrICIlcyIg44KS44Ki44OD44OX44Ot44O844OJ44GX44G+44GX44GfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAn44OV44Kh44Kk44OrICIlcyIg44KS5YmK6Zmk44GX44G+44GX44GfJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44G+44Gf44GvVmVyc2lvbklE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuihqOekuuOBp+OBjeOBvuOBm+OCk+OAguOCouOCr+OCu+OCueaoqeOBr+OBguOCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCVz44Gv44OH44O844K/44OZ44O844K544Gr6KaL44Gk44GL44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICclc+OBpyVz44Gn5Y2w5Yi344GV44KM44G+44GX44GfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfnlKjkvosnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdDbGFzc0lE44GM54Sh5Yq544Gn44GZ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ2xhc3NJROOBr+aMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ+OBk+OBruOCr+ODqeOCueOBruOCouOCr+OCu+OCueaoqeOBr+OBguOCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn57WQ5p6c44Gq44GXISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruaknOe0oue1kOaenCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44KS6KGo56S644Gn44GN44G+44Gb44KT44CC5qeL5oiQ44Ki44Kk44OG44Og44Gu44Ki44Kv44K744K55qip44Gv5LiO44GI44KJ44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW3jgYzopovjgaTjgYvjgorjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn44OQ44O844K444On44Oz44Gv6KaL44Gk44GL44KK44G+44Gb44KT44Gn44GX44Gf77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn56i85YON5LitJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICforablkYonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfjgqTjg7Pjgrfjg4fjg7Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+OBk+OBruani+aIkOOCouOCpOODhuODoOOBruODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+OBk+OBruani+aIkOOCouOCpOODhuODoOOBruOCpOODs+OCt+ODh+ODs+ODiOeKtuaFiyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ+aoqemZkOOBjOOBguOCiuOBvuOBm+OCkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfjg5XjgqPjg6vjgr/jg7znhKHlirnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ+aknOe0ouODkeODqeODoeODvOOCv+OBjOeEoeWKueOBp+OBme+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ+ihqOekuuOBleOCjOOCi+ani+aIkOOCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjga7jgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn54++5Zyo44Gu44Kk44Oz44K344OH44Oz44OI44O744K544OG44O844K/44K544Gu44K/44Kk44OXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ+OBk+OBrumWkyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn6Kit5a6a6aCF55uu44Gu44Kv44Op44K55Yi26ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfpgbjmip7lj6/og73jgaroqK3lrprpoIXnm67jgpLliLbpmZDjgZnjgovjgZ/jgoHjgavjgIEx44Gk5Lul5LiK44Gu44Kv44Op44K544KS6YG45oqe44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfoqK3lrprpoIXnm67jga7jgq/jg6njgrnliLbpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfpgbjmip7lj6/og73jgaroqK3lrprpoIXnm67jgpLliLbpmZDjgZnjgovjgZ/jgoHjgavjgIEx44Gk5Lul5LiK44Gu44Kv44Op44K544KS6YG45oqe44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAn5YuV55qEICjjgrPjg7Pjg5XjgqPjgrDpoIXnm64pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfjgrnjgr/jg4bjgqPjg4Pjgq/vvIjjg7TjgqHjg7zjgrjjg6fjg7PvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn44Oq44Oz44Kv5Y+C54Wn44K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ+OBk+OBruODquODs+OCr+OBjOWPgueFp+OCquODluOCuOOCp+OCr+ODiOOBriBDb25maWdJdGVtIOOBqOmdmeeahOODkOODvOOCuOODp+ODs+OBruOBqeOBoeOCieOBq+mBqeeUqOOBleOCjOOCi+OBi+OAguePvuWcqOOBruOCpOODs+OCt+ODh+ODs+ODiOODu+OCueODhuODvOODiOOBruioiOeul+OBr+OAgeODgOOCpOODiuODn+ODg+OCr+ODu+ODquODs+OCr+OBq+WvvuOBl+OBpuOBruOBv+Wun+ihjOOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ+ioreWumumgheebruOCkuaknOe0ouOBmeOCi+WxnuaAp+OCkumBuOaKnuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAn5aSW6YOo44K944O844K544Gu44Kt44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAn6KGo56S644Gu44K/44Kk44OX44KS6YG45oqe44GX44Gm44GP44Gg44GV44GEJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6DjgZTjgajjgavjgrDjg6vjg7zjg5fljJbjgZfjgabjgIHlgKTjgpLjg4Tjg6rjg7zooajnpLrjgZnjgovjgavjga/jgIHjgZPjga7jgqrjg5fjgrfjg6fjg7PjgpLmnInlirnjgavjgZfjgabjgY/jgaDjgZXjgYTjgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAn44OZ44O844K55qeL6YCg44GM54Sh5Yq544Gn44GZ44CCWUFNTOW9ouW8j+OBruODh+ODvOOCv+OCkuWQq+OCgOODj+ODg+OCt+ODpeOCkuaMh+WumuOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUzmloflrZfliJfjgpJcJy0tLVwn44Gn5aeL44KB44KL44GT44Go44GM5b+F6KaB44Gn44GZ44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ2NvbmZpZ2l0ZW1fbGluayDjg4bjg7zjg5bjg6vjgpLjg5Hjg7zjgrjjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ+mWoumAo+OBmeOCi+WLleeahOODleOCo+ODvOODq+ODieOBr+imi+OBpOOBi+OCiuOBvuOBm+OCk+OBp+OBl+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGlua+ODhuODvOODluODq+OBq+aMv+WFpeOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnY29uZmlnaXRlbV9saW5r44OG44O844OW44Or44GrMOihjOOCkuaMv+WFpeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfkuIDjgqjjg6zjg6Hjg7Pjg4jjgYLjgZ/jgorjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcx44Gk44Gu44K744OD44OI44O744OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ6KaB57Sg44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJ+OCu+ODg+ODiOODu+ODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieimgee0oOWGheOBrjHjgaTjga7opoHntKDjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfjg5Djg7zjgrjjg6fjg7PmloflrZfliJcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn5a6a576p44Gu5ZCM5pyf44Gr44Ko44Op44O844GM55m655Sf44GX44G+44GX44Gf44CC44Ot44Kw44KS56K66KqN44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnSVRTTUNvbmZpZ0l0ZW3jga7lrprnvqnjgYzlkIzmnJ/jgZXjgozjgabjgYTjgb7jgZvjgpPjgIJJVFNNQ29uZmlnSXRlbeOBruWLleeahOODleOCo+ODvOODq+ODieOBruWkieabtOOCkuWxlemWi+OBl+OBpuOBj+OBoOOBleOBhOOAgic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn5pyf6ZmQ5YiH44KMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn44Oh44Oz44OG44OK44Oz44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn44OR44Kk44Ot44OD44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfoqIjnlLsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn5L+u55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICflvJXpgIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn44Os44OT44Ol44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfjg4bjgrnjg4ggLyBRQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAn5qaC6KaB44Go56K66KqNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ+OCr+ODqeOCuS/lvbnlibLjgajjgZ3jga7plqLpgKPjg5XjgqPjg7zjg6vjg4njga7jgqTjg7Pjg53jg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfjgq/jg6njgrnjga7jgqTjg7Pjg53jg7zjg4jkuK3jgavjgqjjg6njg7zjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIOmdnuihqOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJ+ODl+ODreOCu+OCueeuoeeQhuOBrumBt+enu+OCouOCr+OCt+ODp+ODsyBDb25maWdJdGVtQWRkIOOBiuOCiOOBsyBDb25maWdJdGVtVXBkYXRlIOOBp+S9v+eUqOOBleOCjOOCi+WGhemDqOODleOCo+ODvOODq+ODieWQjeOBruWvvuW/nOS7mOOBkeOAguOCreODvOOBr+OAgUNJIOOBruS9nOaIkO+8j+abtOaWsOOBq+S9v+eUqOOBleOCjOOCi+OAgeOCquODluOCuOOCp+OCr+ODiOOCv+OCpOODl+OBjOODgeOCseODg+ODiOOBruOCu+ODg+ODiOOBruWGhemDqOODleOCo+ODvOODq+ODieWQjeOBp+OAgeWApOOBr+OCquODluOCuOOCp+OCr+ODiOOCv+OCpOODl+OBjCBJVFNNQ29uZmlnSXRlbSDjga7jgrvjg4Pjg4jjga7lhoXpg6jjg5XjgqPjg7zjg6vjg4nlkI3jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si44Gn44CB5ouh5by15qSc57Si5p2h5Lu244KS5L2/55So44Gn44GN44KL44KI44GG44Gr44GX44G+44GZ44CC44GT44Gu5qmf6IO944Gr44KI44KK44CB5L6L44GI44GwICIoKmtleTEqJiYqa2V5MiopIiDjgoQgIigqa2V5MSp8fCprZXkyKikiIOOBruOCiOOBhuOBquadoeS7tuOBp+ani+aIkOOCouOCpOODhuODoOWQjeOCkuaknOe0ouOBp+OBjeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLjgafjgIHmi6HlvLXmpJzntKLmnaHku7bjgpLkvb/nlKjjgafjgY3jgovjgojjgYbjgavjgZfjgb7jgZnjgILjgZPjga7mqZ/og73jgavjgojjgorjgIHkvovjgYjjgbAgIigqa2V5MSomJiprZXkyKikiIOOChCAiKCprZXkxKnx8KmtleTIqKSIg44Gu44KI44GG44Gq5p2h5Lu244Gn5qeL5oiQ44Ki44Kk44OG44Og5ZCN44KS5qSc57Si44Gn44GN44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ+WJsuOCiuW9k+OBpuOCieOCjOOBn0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAn6Kit5a6a44GX44Gf5p2h5Lu244KS5rqA44Gf44GZ5aC05ZCI44Gr44CB54m55a6a44Gu5pmC54K544Gn5qeL5oiQ44Ki44Kk44OG44Og44Gr5a++44GZ44KL44OB44Kx44OD44OI44KS5L2c5oiQ44GX44G+44GZ44CC5pmC54K544Gv44CB5qeL5oiQ44Ki44Kk44OG44Og44GuICJUaW1lQ0lLZXkiIOOBp+ioreWumuOBl+OBn+aXpeS7mOOCv+OCpOODl+OBruODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieOBruWApOOBp+axuuOBvuOCiuOAgSJUaW1lTW9kaWZpZXIiIOOBp+iqv+aVtOOBleOCjOOBvuOBmeOAgiJUaW1lTW9kaWZpZXIiIOOBq+OBr+aVsOWApOOBruOBv+OAgeOBvuOBn+OBr+espuWPt++8iCsvLe+8ieOAgeaVsOWApOOAgeWNmOS9je+8iGQvaC9t77yJ44KS5oyH5a6a44Gn44GN44G+44GZ44CCIjciIOOBryAiKzdkIiDjgajlkIzjgZjjgafjgZnjgILkvZzmiJDjgZXjgozjgZ/jg4HjgrHjg4Pjg4jjga7orZjliKXjgavjga/jgIHjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4kgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiDjgYzkvb/nlKjjgZXjgozjgb7jgZnvvIjlrZjlnKjjgZfjgabjgYTjgovlv4XopoHjgYzjgYLjgorjgb7jgZnvvInjgIIiVGlja2V0LT5UZXh0IiDlhoXjga7jg5Xjg6njgrAgXDxPVE9CT19DT05GSUdJVEVNX1hcPiDvvIhYIOOBryBOQU1F44CBTlVNQkVS44CBREFURe+8ieOBr+OAgeOBneOCjOOBnuOCjOOBruWApOOBq+e9ruaPm+OBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICfjg6njgqTjgrvjg7PjgrnmlbDjga7nrqHnkIbnlKjjga7lsZ7mgKfjgIIiVG90YWxMaWNlbnNlc0RGIuOAgSJBdmFpbGFibGVMaWNlbnNlc0RGIuOAgSJMaWNlbnNlUmVmZXJlbmNlREYiIOOBr+OAgeaui+OCiuOBruODqeOCpOOCu+ODs+OCueaVsOOCkui/vei3oeOBmeOCi+OBn+OCgeOBruODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieOBruWQjeWJjeOBp+OBmeOAguS9v+eUqOOBmeOCi+WgtOWQiOOBr+OAgSJWYWxpZERlcGxTdGF0ZXMiIOOBruODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruOBv+OBjOWvvuixoeOBq+OBquOCiuOBvuOBmeOAgiJNaW5pbXVtTGljZW5zZXMiIOOBq+OBl+OBjeOBhOWApOOCkuWumue+qeOBmeOCi+OBqOOAgeWIqeeUqOWPr+iDveOBquODqeOCpOOCu+ODs+OCueaVsOOBjOOBneOCjOOCkuS4i+WbnuOBo+OBn+WgtOWQiOOBq+iHquWLleeahOOBq+ODgeOCseODg+ODiOOBjOS9nOaIkOOBleOCjOOBvuOBmeOAguOBk+OBruOBn+OCgeOBq+OBr+OAgeODgeOCp+ODg+OCr+ODnOODg+OCr+OCueODu+ODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODiSAiVGlja2V0LT5EeW5hbWljRmllbGQiIOOBjOWtmOWcqOOBl+OBpuOBhOOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgiJUaWNrZXQtPlRleHQiIOWGheOBruOCv+OCsCBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IO+8iFgg44GvIE5BTUXjgIFOVU1CRVLjgIFMSUNFTlNFU19BVkFJTOOAgUxJQ0VOU0VTX01JTu+8ieOBr+OAgeOBneOCjOOBnuOCjOani+aIkOOCouOCpOODhuODoOWQjeOAgeeVquWPt+OAgeWIqeeUqOWPr+iDveOBquODqeOCpOOCu+ODs+OCueaVsOOAgeW/heimgeOBquacgOWwj+ODqeOCpOOCu+ODs+OCueaVsOOBq+e9ruaPm+OBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ+mhp+WuouS8gealreOBq+WJsuOCiuW9k+OBpuOCieOCjOOBn0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn6aGn5a6i44Om44O844K244O844Gr5Ymy44KK5b2T44Gm44KJ44KM44GfQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNRELjga7oqK3lrponOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ+WQjeWJjeOBruS4gOaEj+aAp+OCkuWQjOOBmOani+aIkOOCouOCpOODhuODoOOCr+ODqeOCueWGhe+8iFwnY2xhc3NcJ++8ieOBp+OBruOBv+ODgeOCp+ODg+OCr+OBmeOCi+OBi+OAgeWFqOS9k++8iFwnZ2xvYmFsXCfvvInjgafjg4Hjgqfjg4Pjgq/jgZnjgovjgYvjgIJcJ2dsb2JhbFwnIOOBruWgtOWQiOOAgemHjeikh+OBrueiuuiqjeaZguOBq+aXouWtmOOBruOBmeOBueOBpuOBruani+aIkOOCouOCpOODhuODoOOBjOWvvuixoeOBq+OBquOCiuOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAn5ZG95ZCN44K544Kt44O844Og44KS5by35Yi244GZ44KL44Oi44K444Ol44O844Or44KS6YG45oqe44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfnlarlj7fjgrnjgq3jg7zjg6DjgpLlvLfliLbjgZnjgovjg6Ljgrjjg6Xjg7zjg6vjgpLpgbjmip7jgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAn44OQ44O844K444On44Oz5paH5a2X5YiX44K544Kt44O844Og44KS5by35Yi244GZ44KL44Oi44K444Ol44O844Or44KS6YG45oqe44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn5paw44GX44GE44OQ44O844K444On44Oz44KS5L2c5oiQ44GZ44KL44OI44Oq44Ks44O844Go44Gq44KL5bGe5oCn44KS6YG45oqe44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ+OBk+OBruioreWumumgheebruOCr+ODqeOCueOBq+WJsuOCiuW9k+OBpuOCi+OCq+ODhuOCtOODquOCkumBuOaKnuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAn5YWs6ZaL44Kk44Oz44K/44OV44Kn44O844K544Gu6Imy44Gu5a6a576p44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0NvbmZpZ0l0ZW3mpoLopoHjga7jgqvjg6njg6DoqK3lrprpoIXnm67jg5XjgqPjg6vjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOS4gOimp+OBp+ODleOCo+ODq+OCv+ODvOWPr+iDveOBquWIl+OAguazqOaEjzog5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGe5oCn44Go44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ77yIRHluYW1pY0ZpZWxkX05hbWVY77yJ44Gu44G/5L2/55So44Gn44GN44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ+ani+aIkOOCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS6L+95Yqg44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5L+u5q2j44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJ+aMh+WumuOBl+OBn+ani+aIkOOCouOCpOODhuODoOOBruODqeOCpOOCu+ODs+OCueioiOS4iuOCkuWPr+iDveOBq+OBmeOCi+ani+aIkOOCouOCpOODhuODoOOBruOCpOODmeODs+ODiOODouOCuOODpeODvOODq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gn5bGl5q2044G444Gu6KiY6Yyy44KS5Y+v6IO944Gr44GZ44KL5qeL5oiQ44Ki44Kk44OG44Og44Gu44Kk44OZ44Oz44OI44Oi44K444Ol44O844Or44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOCkuePvuWcqOOBruWumue+qeOBq+WQiOOCj+OBm+OBpuabtOaWsOOBmeOCi+ani+aIkOOCouOCpOODhuODoOOBruOCpOODmeODs+ODiOODouOCuOODpeODvOODq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruWxpeattCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLljbDliLcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Djga7jgrrjg7zjg6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfoqK3lrprpoIXnm67jg4Tjg6rjg7zjg5Pjg6Xjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn6Kit5a6a6aCF55uu44OQ44O844K444On44OzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+S7peS4i+OBruOCr+ODqeOCueOBruani+aIkOOCouOCpOODhuODoOOBryBFbGFzdGljc2VhcmNoIOOCteODvOODkOODvOOBq+S/neWtmOOBleOCjOOBvuOBm+OCk+OAguaXouWtmOOBriBDSSDjgavpgannlKjjgZnjgovjgavjga/jgIHjgZPjga7jgqrjg5fjgrfjg6fjg7PjgpLlpInmm7TjgZfjgZ/lvozjgIHjgrPjg7Pjgr3jg7zjg6vjgYvjgokgQ0kg44Gu56e76KGM44KS5a6f6KGM44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+S7peS4i+OBruODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruani+aIkOOCouOCpOODhuODoOOBryBFbGFzdGljc2VhcmNoIOOCteODvOODkOODvOOBq+S/neWtmOOBleOCjOOBvuOBm+OCk+OAguaXouWtmOOBriBDSSDjgavpgannlKjjgZnjgovjgavjga/jgIHjgZPjga7jgqrjg5fjgrfjg6fjg7PjgpLlpInmm7TjgZfjgZ/lvozjgIHjgrPjg7Pjgr3jg7zjg6vjgYvjgokgQ0kg44Gu56e76KGM44KS5a6f6KGM44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruWItumZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn44Oa44O844K444GC44Gf44KK44Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu6KGo56S65Yi26ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfmp4vmiJDnrqHnkIbjg4fjg7zjgr/jg5njg7zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruS4gOaLrOODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLjg5Djg4Pjgq/jgqjjg7Pjg4njg7vjg6vjg7zjgr/jg7zjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJ+WvvuW/nOOBmeOCi+aoqemZkOadoeS7tuOBruWIl+OBjOWAi+WIpeOBq+ioreWumuOBleOCjOOBpuOBhOOBquOBhOWgtOWQiOOBq+OAgemhp+WuouOCpOODs+OCv+ODleOCp+ODvOOCueOBp+aoqemZkOadoeS7tuOBruihqOekuuOBq+S9v+eUqOOBp+OBjeOCi+WIl+OCkuioreWumuOBl+OBvuOBmeOAguOBk+OBruioreWumuOBr+OAgeS7luOBruaoqemZkOadoeS7tuOBruWIl+ioreWumuOBruODleOCqeODvOODq+ODkOODg+OCr+OBqOOBl+OBpuS9v+eUqOOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJ+WvvuW/nOOBmeOCi+aoqemZkOadoeS7tuOBruWIl+OBjOWAi+WIpeOBq+ioreWumuOBleOCjOOBpuOBhOOBquOBhOWgtOWQiOOBq+OAgeWFrOmWi+OCpOODs+OCv+ODleOCp+ODvOOCueOBp+aoqemZkOadoeS7tuOBruihqOekuuOBq+S9v+eUqOOBp+OBjeOCi+WIl+OCkuioreWumuOBl+OBvuOBmeOAguOBk+OBruioreWumuOBr+OAgeS7luOBruaoqemZkOadoeS7tuOBruWIl+ioreWumuOBruODleOCqeODvOODq+ODkOODg+OCr+OBqOOBl+OBpuS9v+eUqOOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODleOCp+ODvOOCueOBp+OAgeWvvuW/nOOBmeOCi+aoqemZkOadoeS7tuOCkuihqOekuuOBmeOCi+mam+OBq+S9v+eUqOOBp+OBjeOCi+WIl+OCkuioreWumuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgafjgIHlr77lv5zjgZnjgovmqKnpmZDmnaHku7bjgpLooajnpLrjgZnjgovpmpvjgavkvb/nlKjjgafjgY3jgovliJfjgpLoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruS9nOaIkOOBqOeuoeeQhuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ+eJueWumuOBruaZgueCueOBp0NvbmZpZ0l0ZW1z44Gu44OB44Kx44OD44OI44KS5L2c5oiQ44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ+mhp+WuouOBr+mBjuWOu+OBriBDSSDjg5Djg7zjgrjjg6fjg7PjgpLplrLopqfjgafjgY3jgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn6aGn5a6i44Gv6YGO5Y6744GuIENJIOODkOODvOOCuOODp+ODs+OCkuaJi+WLleOBp+WIh+OCiuabv+OBiOOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOaknOe0oueUu+mdouOBruWxnuaAp+OBp+S9v+eUqOOBmeOCi+ODh+ODleOCqeODq+ODiOODh+ODvOOCv+OAguS+izogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOaknOe0oueUu+mdouOBruWxnuaAp+OBp+S9v+eUqOOBmeOCi+ODh+ODleOCqeODq+ODiOODh+ODvOOCv+OAguS+izogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn44Oq44Oz44Kv44Kq44OW44K444Kn44Kv44OI44O744Km44Kj44K444Kn44OD44OI77yITGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCLvvInjgafoqK3lrprjg5zjgr/jg7PjgpLkvb/nlKjjgafjgY3jgovjgqLjgq/jgrfjg6fjg7PjgpLlrprnvqnjgZfjgb7jgZnjgILjgZPjgozjgonjga7jgqLjgq/jgrfjg6fjg7Pjgavjga/jgIHmrKHjga4gSlMg44GK44KI44GzIENTUyDjg5XjgqHjgqTjg6vjgYznmbvpjLLjgZXjgozjgabjgYTjgovlv4XopoHjgYzjgYLjgorjgb7jgZk6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3Nz44CBQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qc+OAgUNvcmUuVUkuVGFibGUuU29ydC5qc+OAgUNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpz44CBQ29yZS5BZ2VudC5MaW5rT2JqZWN0Lmpz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfjg5Djg7zjgrjjg6fjg7PmloflrZfliJfnlKjjga4gVGVtcGxhdGU6OlRvb2xraXQg44K544Kt44O844Og44KS5a6a576p44GX44G+44GZ44CC44OQ44O844K444On44Oz5paH5a2X5YiX44Oi44K444Ol44O844Or44GMIFRlbXBsYXRlVG9vbGtpdCDjgavoqK3lrprjgZXjgozjgabjgYTjgovloLTlkIjjgavjga7jgb/kvb/nlKjjgZXjgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4nnlLvpnaLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgpLku4vjgZfjgabjgIHjgZPjga7jg5Hjg4PjgrHjg7zjgrjjga7jgqLjgq/jgrfjg6fjg7PjgavlibLjgorlvZPjgabjgovjgZPjgajjgYzjgafjgY3jgovjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njga7jgqrjg5bjgrjjgqfjgq/jg4jjgr/jgqTjg5fjga7kuIDopqfjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOCkuWFrOmWi+OBp+ihqOekuuOBp+OBjeOCi+adoeS7tuOBruOCu+ODg+ODiOOCkuWumue+qeOBl+OBvuOBmeOAguW/hemgiOOBruWxnuaAp+OBryBOYW1lIOOBruOBv+OBp+OBmeOAguS7luOBruOCquODl+OCt+ODp+ODs+OCkuaMh+WumuOBl+OBquOBhOWgtOWQiOOAgeOBmeOBueOBpuOBruani+aIkOOCouOCpOODhuODoOOBjOOBneOBruOCq+ODhuOCtOODquODvOOBq+ihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ+mhp+WuouOBjOani+aIkOOCouOCpOODhuODoOOCkumWsuimp+OBp+OBjeOCi+adoeS7tuOBruOCu+ODg+ODiOOCkuWumue+qeOBl+OBvuOBmeOAguadoeS7tuOBr+OAgeW/heimgeOBq+W/nOOBmOOBpueJueWumuOBrumhp+WuouOCsOODq+ODvOODl+OBq+mZkOWumuOBp+OBjeOBvuOBmeOAguW/hemgiOOBruWxnuaAp+OBryBOYW1lIOOBruOBv+OBp+OBmeOAguS7luOBruOCquODl+OCt+ODp+ODs+OCkuaMh+WumuOBl+OBquOBhOWgtOWQiOOAgeOBmeOBueOBpuOBruani+aIkOOCouOCpOODhuODoOOBjOOBneOBruOCq+ODhuOCtOODquODvOOBq+ihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5rGO55So44Kk44Oz44K/44OV44Kn44O844K577yIR2VuZXJpYyBJbnRlcmZhY2XvvInjgpLkvb/nlKjjgZfjgaYgSVRTTSDmp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+axjueUqOOCpOODs+OCv+ODleOCp+ODvOOCue+8iEdlbmVyaWMgSW50ZXJmYWNl77yJ44KS5L2/55So44GX44GmIElUU00g5qeL5oiQ44Ki44Kk44OG44Og44KS5Y+W5b6X44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfmsY7nlKjjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnvvIhHZW5lcmljIEludGVyZmFjZe+8ieOCkuS9v+eUqOOBl+OBpiBJVFNNIOani+aIkOOCouOCpOODhuODoOOCkuaknOe0ouOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnR2VuZXJpYyBJbnRlcmZhY2XjgpLkvb/nlKjjgZfjgaZJVFNN5qeL5oiQ6aCF55uu44KS6Kit5a6a44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOS4gOimp+OCkuWwj+OCteOCpOOCuuOBp+ihqOekuuOBmeOCi+S4gOimp+ODouOCuOODpeODvOODq+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICfjg47jg7zjg4njga7mjqXntprjgavjg6rjg7Pjgq/jgr/jgqTjg5fjga7jg6njg5njg6vjgpLooajnpLrjgZnjgovjgYvjganjgYbjgYvjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOBruWQjeWJjeOCkuODgeOCp+ODg+OCr+OBl+OAgeWvvuW/nOOBmeOCi+OCqOODqeODvOODoeODg+OCu+ODvOOCuOOCkuihqOekuuOBmeOCi+OBn+OCgeOBruato+imj+ihqOePvuOCkuOAgeani+aIkOOCouOCpOODhuODoOOCr+ODqeOCueOBlOOBqOOBq+Wumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIOOCr+ODqeOCueOBlOOBqOOBq+OAgeani+aIkOOCouOCpOODhuODoOS4gOimp+OBp+WIqeeUqOWPr+iDveOBqiBDSSDjga7liJfjgpLlrprnvqnjgZfjgb7jgZnjgILlkITjgqjjg7Pjg4jjg6rjg7zjga/jgIHjgq/jg6njgrnlkI3jgajjgIHjgZ3jga7jgq/jg6njgrnjgafliKnnlKjlj6/og73jgarjg5XjgqPjg7zjg6vjg4njga7phY3liJfjgafmp4vmiJDjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgILjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njga7jgqjjg7Pjg4jjg6rjg7zjga8gRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDjga7lvaLlvI/jgavlvpPjgYblv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOaknOe0oue1kOaenOOBp+OAgeOCveODvOODiOOBq+S9v+eUqOOBmeOCi+ODh+ODleOCqeODq+ODiOOBruani+aIkOOCouOCpOODhuODoOWxnuaAp+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si57WQ5p6c44Gn44CB44K944O844OI44Gr5L2/55So44GZ44KL44OH44OV44Kp44Or44OI44Gu5qeL5oiQ44Ki44Kk44OG44Og5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si57WQ5p6c44Gn44CB44K944O844OI44Gr5L2/55So44GZ44KL44OH44OV44Kp44Or44OI44Gu5qeL5oiQ44Ki44Kk44OG44Og5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn44GT44Gu44Kq44Oa44Os44O844K344On44Oz44Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si57WQ5p6c44Gn44CB44K944O844OI44Gr5L2/55So44GZ44KL44OH44OV44Kp44Or44OI44Gu5qeL5oiQ44Ki44Kk44OG44Og5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLntZDmnpzjgavjgYrjgZHjgovjgIHjg4fjg5Xjgqnjg6vjg4jjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7kuKbjgbPpoIbjgpLlrprnvqnjgZfjgb7jgZnjgIJVcDog5Y+k44GE44KC44Gu44GM5LiK44CCRG93bjog5paw44GX44GE44KC44Gu44GM5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLntZDmnpzjgavjgYrjgZHjgovjgIHjg4fjg5Xjgqnjg6vjg4jjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7kuKbjgbPpoIbjgpLlrprnvqnjgZfjgb7jgZnjgIJVcDog5Y+k44GE44KC44Gu44GM5LiK44CCRG93bjog5paw44GX44GE44KC44Gu44GM5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si57WQ5p6c44Gr44GK44GR44KL44CB44OH44OV44Kp44Or44OI44Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu5Lim44Gz6aCG44KS5a6a576p44GX44G+44GZ44CCVXA6IOWPpOOBhOOCguOBruOBjOS4iuOAgkRvd246IOaWsOOBl+OBhOOCguOBruOBjOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+OBk+OBruOCquODmuODrOODvOOCt+ODp+ODs+OBruani+aIkOOCouOCpOODhuODoOaknOe0oue1kOaenOOBq+OBiuOBkeOCi+OAgeODh+ODleOCqeODq+ODiOOBruani+aIkOOCouOCpOODhuODoOOBruS4puOBs+mghuOCkuWumue+qeOBl+OBvuOBmeOAglVwOiDlj6TjgYTjgoLjga7jgYzkuIrjgIJEb3duOiDmlrDjgZfjgYTjgoLjga7jgYzkuIrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIOOCr+ODqeOCueOBlOOBqOOBq+OAgeani+aIkOOCouOCpOODhuODoOS4gOimp+OBp+ODh+ODleOCqeODq+ODiOOBp+ihqOekuuOBmeOCiyBDSSDjga7liJfjgpLlrprnvqnjgZfjgb7jgZnjgILlkITjgqjjg7Pjg4jjg6rjg7zjga/jgIHjgq/jg6njgrnlkI3jgajjgIHjgZ3jga7jgq/jg6njgrnjgafliKnnlKjlj6/og73jgarjg5XjgqPjg7zjg6vjg4njga7phY3liJfjgafmp4vmiJDjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgILjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njga7jgqjjg7Pjg4jjg6rjg7zjga8gRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDjga7lvaLlvI/jgavlvpPjgYblv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn44OH44OV44Kp44Or44OI44Gn6KGo56S644GZ44KL6Zai6YCj44Gu5rex44GV44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOaknOe0oueUu+mdouOBp+OAgeODh+ODleOCqeODq+ODiOOBp+ihqOekuuOBmeOCi+ani+aIkOOCouOCpOODhuODoOaknOe0ouWxnuaAp+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si55S76Z2i44Gn44CB44OH44OV44Kp44Or44OI44Gn6KGo56S644GZ44KL5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si5bGe5oCn44KS5a6a576p44GX44G+44GZ44CC5L6LOiAiS2V5IiDjgavjga/jg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njga7lkI3liY3vvIjjgZPjga7loLTlkIjjga8gXCdYXCfvvInjgpLjgIEiQ29udGVudCIg44Gr44Gv44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ44Gu44K/44Kk44OX44Gr5b+c44GY44Gf5YCk44KS5oyH5a6a44GX44G+44GZ44CC44OG44Kt44K544OIOiBcJ2EgdGV4dFwn44CB44OJ44Ot44OD44OX44OA44Km44OzOiBcJzFcJ+OAgeaXpeS7mO+8j+aXpeaZgjogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIOOBiuOCiOOBs++8j+OBvuOBn+OBryBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ+OCr+ODqeOCuSBcJ0lUU01Db25maWdJdGVtXCcg44Gu44OH44OV44Kp44Or44OI44Gu44K144OW44Kq44OW44K444Kn44Kv44OI44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSeOCr+ODqeOCueOBq+W/nOOBmOOBpuOAgeioreWumumgheebruOBruamguimgeOBp+WIqeeUqOWPr+iDveOBqkNJ44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC5ZCE6aCF55uu44Gv44CB44Kv44Op44K55ZCN44Go44CB5a++5b+c44GZ44KL44Kv44Op44K544Gn5Yip55So5Y+v6IO944Gq44OV44Kj44O844Or44OJ44Gu6YWN5YiX44GL44KJ5qeL5oiQ44GV44KM44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CC5YuV55qE44OV44Kj44O844Or44OJ44Gu44Ko44Oz44OI44Oq44Gv44CBRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDjgrnjgq3jg7zjg6DjgavlvpPjgo/jgarjgZHjgozjgbDjgarjgorjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn44GT44Gu55S76Z2i44Gu44Oq44OD44OB44OG44Kt44K544OI44Ko44OH44Kj44K/44O844Gu6auY44GV44KS5a6a576p44GX44G+44GZ44CC5pWw5YCk77yI44OU44Kv44K744Or77yJ44G+44Gf44Gv44OR44O844K744Oz44OI5YCk77yI55u45a++5YCk77yJ44KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+euoeeQhuiAheOCpOODs+OCv+ODleOCp+ODvOOCueOBriBDSSDlrprnvqnjgqjjg4fjgqPjgr/jg7zjga7ooYzmlbDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn44Kk44Oz44K344OH44Oz44OI54q25rOB44Gu6aCG5bqP44KS44CB6auY44GE77yI5L6LOiBjcml0aWNhbO+8ieOCguOBruOBi+OCieS9juOBhO+8iOS+izogZnVuY3Rpb25hbO+8ieOCguOBruOBuOOBqOWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJ0VsYXN0aWNzZWFyY2gg44Km44Kj44K444Kn44OD44OI44O744OQ44OD44Kv44Ko44Oz44OJ44Gu44OR44Op44Oh44O844K/44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn44Oq44Oz44Kv44GV44KM44Gf44OB44Kx44OD44OI44GMIENJIOOBruOCueODhuODvOOCv+OCueOBq+W9semfv+OCkuS4juOBiOOCi+OBk+OBqOOBjOOBp+OBjeOCi+OAgeWvvuixoeOBruODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0g55S76Z2i44Gu5qSc57Si5LiK6ZmQ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCDnlLvpnaLjga7mpJzntKLkuIrpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtIOeUu+mdouOBruaknOe0ouS4iumZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gg55S76Z2i44Gu5qSc57Si5LiK6ZmQ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ1B1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIOeUu+mdouOBruaknOe0ouS4iumZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ+OBmeOBueOBpuOBriBDSSDjgq/jg6njgrnjgavjgaTjgYTjgabjgIHjg6rjg7Pjgq/jg4bjg7zjg5bjg6vjga7oqbPntLDooajnpLrjgafooajnpLrjgZnjgosgQ0kg44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC44Ko44Oz44OI44Oq44O844GM44Gq44GE5aC05ZCI44Gv44CB44OH44OV44Kp44Or44OI44Gu5YiX44GM6KGo56S644GV44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdDSSDjgq/jg6njgrnjgZTjgajjgavjgIHjg6rjg7Pjgq/jg4bjg7zjg5bjg6vjga7oqbPntLDooajnpLrjgafooajnpLrjgZnjgosgQ0kg44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC5ZCE44Ko44Oz44OI44Oq44O844Gr44Gv44CB44Kv44Op44K55ZCN44Go44OA44OW44Or44Kz44Ot44Oz44KS5o6l6aCt6L6e44Go44GX44Gm5LuY44GR44KL5b+F6KaB44GM44GC44KK44G+44GZ77yI5L6LOiBDb21wdXRlcjo677yJ44CC44GZ44G544Gm44GuIENJIOOBq+WFsemAmuOBmeOCiyBDSSDlsZ7mgKfjgYzjgYTjgY/jgaTjgYvjgYLjgorjgb7jgZnvvIjjgq/jg6njgrkgQ29tcHV0ZXIg44Gu5L6LOiBDb21wdXRlcjo6TmFtZeOAgUNvbXB1dGVyOjpDdXJEZXBsU3RhdGXjgIFDb21wdXRlcjo6Q3JlYXRlVGltZe+8ieOAgkNJIOOBruWumue+qeOBp+Wumue+qeOBl+OBn+WAi+OAheOBriBDSSDlsZ7mgKfjgpLooajnpLrjgZnjgovjgavjga/jgIHmrKHjga7lvaLlvI/jgpLkvb/nlKjjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnvvIjjgq/jg6njgrkgQ29tcHV0ZXIg44Gu5L6L77yJOiBDb21wdXRlcjo6SGFyZERpc2s6OjHjgIFDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5Ojox44CBQ29tcHV0ZXI6OkhhcmREaXNrOjoy44CBQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MeOAgkNJIOOCr+ODqeOCueOBruOCqOODs+ODiOODquODvOOBjOOBquOBhOWgtOWQiOOBr+OAgeODh+ODleOCqeODq+ODiOOBruWIl+OBjOihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g5qeL5oiQ44Ki44Kk44OG44Og44GuIEFDTCDmp4vpgKDjga7nrKwz6ZqO5bGk44GnIFwnQWN0aW9uXCcg44Gr5L2/55So44Gn44GN44KL6aCF55uu44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSDmp4vmiJDjgqLjgqTjg4bjg6Djga4gQUNMIOani+mAoOOBruesrDHpmo7lsaTjgafkvb/nlKjjgafjgY3jgovpoIXnm67jgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSDmp4vmiJDjgqLjgqTjg4bjg6Djga4gQUNMIOani+mAoOOBruesrDLpmo7lsaTjgafkvb/nlKjjgafjgY3jgovpoIXnm67jgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn44Oq44Oz44Kv44GV44KM44GfIENJIOOBruOCueODhuODvOOCv+OCueOBq+W9semfv+OCkuS4juOBiOOCi+OBk+OBqOOBjOOBp+OBjeOCi+ODquODs+OCr+OBruOCv+OCpOODl++8iOODgeOCseODg+ODiOWBtOOBi+OCieimi+OBn+WQjeWJje+8ieOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+ODquODs+OCr+OBleOCjOOBnyBDSSDjga7jgrnjg4bjg7zjgr/jgrnjgavlvbHpn7/jgpLkuI7jgYjjgovjgZPjgajjgYzjgafjgY3jgovjg4HjgrHjg4Pjg4jjga7jgr/jgqTjg5fjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICflrprnvqnjga7mm7TmlrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuWJiumZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICfjg4fjg5fjg6vjgrnjg4bjg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruOCq+ODqeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICflsZXplovnirbmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn44Kz44OU44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn5ZCr44G+44KM44KL44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ44GM5aSJ5pu044GV44KM44Gf5aC05ZCI44Gr44CB5qeL5oiQ44Ki44Kk44OG44Og44Gu5a6a576p44KS6Z2e5ZCM5pyf44Go44GX44Gm44Oe44O844Kv44GZ44KL44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ44Gu44Kk44OZ44Oz44OI44Oi44K444Ol44O844Or44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ov73liqAgSVRTTSDjg5XjgqPjg7zjg6vjg4nnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA6Kan55S76Z2i44Gr6KGo56S644GZ44KL44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DkuIDopqfnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOaknOe0oueUu+mdouOBq+ihqOekuuOBmeOCi+ODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfmi4XlvZPogIXjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njgafmp4vmiJDjgqLjgqTjg4bjg6Djga7kuIDmi6zlh6bnkIbmqZ/og73jgpLmnInlirnjgavjgZfjgIHopIfmlbDjga7mp4vmiJDjgqLjgqTjg4bjg6DjgpLlkIzmmYLjgavlh6bnkIbjgafjgY3jgovjgojjgYbjgavjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+S4gOimp+OBq+iomOi8ieOBl+OBn+OCsOODq+ODvOODl+OBq+WvvuOBl+OBpuOBruOBv+OAgeani+aIkOOCouOCpOODhuODoOOBruS4gOaLrOWHpueQhuapn+iDveOCkuacieWKueOBq+OBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0lUU00g5qeL5oiQ44Ki44Kk44OG44Og44Gu5ZCN5YmN44Gu5LiA5oSP5oCn44KS44OB44Kn44OD44Kv44GZ44KL5qmf6IO944KS5pyJ5Yq577yP54Sh5Yq544Gr44GX44G+44GZ44CC44GT44Gu44Kq44OX44K344On44Oz44KS5pyJ5Yq544Gr44GZ44KL5YmN44Gr44CB5ZCN5YmN44GM6YeN6KSH44GX44Gm44GE44KL5pei5a2Y44Gu5qeL5oiQ44Ki44Kk44OG44Og44GM44Gq44GE44GL56K66KqN44GX44Gm44GP44Gg44GV44GE44CC56K66KqN44Gr44Gv44Kz44Oz44K944O844Or44Kz44Oe44Oz44OJIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcyDjgpLkvb/nlKjjgafjgY3jgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn44OB44Kx44OD44OI44Go5qeL5oiQ44Ki44Kk44OG44Og44Gu44Oq44Oz44Kv44Gr44CB5qeL5oiQ44Ki44Kk44OG44Og44Gu44K544OG44O844K/44K544KS6Kit5a6a44GZ44KL44Kk44OZ44Oz44OI44Oi44K444Ol44O844Or44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ+WFqOaWh+aknOe0ouOBq+S9v+eUqOOBleOCjOOCi+ani+aIkOOCouOCpOODhuODoOOCpOODs+ODh+ODg+OCr+OCueOBruODleOCo+ODvOODq+ODieOAguODleOCo+ODvOODq+ODieOBr+S/neWtmOOCguOBleOCjOOBvuOBmeOBjOOAgeWFqOS9k+OBruapn+iDveOBq+OBr+W/hemgiOOBp+OBr+OBguOCiuOBvuOBm+OCk+OAgua3u+S7mOODleOCoeOCpOODq+OCkuWQq+OCgeOBquOBhOOCiOOBhuOBq+OBmeOCi+OBq+OBr+OAgeOCqOODs+ODiOODquODvOOCkiAwIOOBq+ioreWumuOBmeOCi+OBi+WJiumZpOOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn5YWo5paH5qSc57Si5Lul5aSW44Gu55So6YCU44Gr44KC5L2/55So44GV44KM44KL44CB5qeL5oiQ44Ki44Kk44OG44Og44Kk44Oz44OH44OD44Kv44K544Gr5L+d5a2Y44GV44KM44KL44OV44Kj44O844Or44OJ44CC44GZ44G544Gm44Gu5qmf6IO944KS5Yip55So44GZ44KL44Gr44Gv44CB44GZ44G544Gm44Gu44OV44Kj44O844Or44OJ44GM5b+F6aCI44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICdXZWIg44K144O844OT44K577yI44Kt44O877yJ44GU44Go44Gr44CB44Kk44Oz44Od44O844OI44KS5Yi26ZmQ44GZ44KL44Kv44Op44K544Gu6YWN5YiX77yI5YCk77yJ44KS5a6a576p44Gn44GN44G+44GZ44CC6YG45oqe44GX44Gf44GZ44G544Gm44Gu44Kv44Op44K544CB44G+44Gf44Gv5pei5a2Y44Gu44GZ44G544Gm44Gu44Kv44Op44K544Gr44Gk44GE44Gm44CBSW52b2tlciDjga7oqK3lrprjgaforZjliKXnlKjjga7lsZ7mgKfjgpLpgbjmip7jgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIGludm9rZXLjg6zjgqTjg6Tjg7zjga5HZW5lcmljSW50ZXJmYWNl44Oi44K444Ol44O844Or55m76Yyy44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIEludm9rZXIg44Os44Kk44Ok44O855So44GuIEdlbmVyaWNJbnRlcmZhY2Ug44Oi44K444Ol44O844Or55m76Yyy44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCBpbnZva2Vy44Os44Kk44Ok44O844GuR2VuZXJpY0ludGVyZmFjZeODouOCuOODpeODvOODq+eZu+mMsuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIOioreWumumgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruS4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfjgqTjg7Pjgrfjgrnjg4bjg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiOOCueODhuODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLjgavjgq/jg6njgrnjgpLlkKvjgoHjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si44Gr44OH44OX44Ot44Kk44O744K544OG44O844K/44K544KS5ZCr44KB44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLjgavjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjgpLlkKvjgoHjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOaknOe0ouOBq+OCpOODs+OCt+ODh+ODs+ODiOeKtuazgeOCkuWQq+OCgeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOaknOe0ouOBq+OCpOODs+OCt+ODh+ODs+ODiOeKtuazgeOCkuWQq+OCgeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si44Gr5ZCN5YmN44KS5ZCr44KB44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOaknOe0ouOBq+eVquWPt+OCkuWQq+OCgeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICfjg6njgqTjgrvjg7PjgrnoqIjkuIrnlKjjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7jgqTjg5njg7Pjg4jjg6Ljgrjjg6Xjg7zjg6vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ+WFrOmWi+OCpOODs+OCv+ODleOCp+ODvOOCueeUqOOBruODreODvOODgOODvOODouOCuOODpeODvOODq+OBrueZu+mMsuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfjgZPjga7jgqrjg5rjg6zjg7zjgrfjg6fjg7Pjga7ntZDmnpzjgavooajnpLrjgZnjgovmp4vmiJDjgqLjgqTjg4bjg6Djga7mnIDlpKfmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfjgq/jg6njgrnjga7osqzku7vjgrDjg6vjg7zjg5fjgpLjg4Hjgqfjg4Pjgq/jgZnjgovjg6Ljgrjjg6Xjg7zjg6vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6Djga7osqzku7vjgrDjg6vjg7zjg5fjgpLjg4Hjgqfjg4Pjgq/jgZnjgovjg6Ljgrjjg6Xjg7zjg6vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdJVFNNIOani+aIkOOCouOCpOODhuODoOOBrue1seioiOOCkueUn+aIkOOBmeOCi+ODouOCuOODpeODvOODq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ+WQjeWJjeODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn44OK44Oz44OQ44O844O744Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruaknOe0oue1kOaenOOBruWQhOODmuODvOOCuOOBq+ihqOekuuOBmeOCi+ani+aIkOOCouOCpOODhuODoOOBruaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mpJzntKLntZDmnpzjga7lkITjg5rjg7zjgrjjgavooajnpLrjgZnjgovmp4vmiJDjgqLjgqTjg4bjg6Djga7mlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44OV44Kn44O844K544Gu5ZCE44Oa44O844K444Gr6KGo56S644GZ44KL5qeL5oiQ44Ki44Kk44OG44Og44Gu5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn5qSc57Si5a++6LGh44Gu44Kq44OW44K444Kn44Kv44OI44CB44Ko44Oz44OI44Oq44O85pWw44CB6KGo56S644GZ44KL5bGe5oCn44CC5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGe5oCn44Gv44CBRWxhc3RpY3NlYXJjaCDjgavmmI7npLrnmoTjgavkv53lrZjjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn5qaC6KaBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7lgIvkurroqK3lrprjg5Pjg6Xjg7zjgavjgYrjgZHjgovjgIHmp4vmiJDjgqLjgqTjg4bjg6Djgq/jg6njgrnjga7jgqvjg4bjgrTjg6rjg7zjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6DkuIDopqfvvIjlsI/jgrXjgqTjgrrooajnpLrvvInjga7liJfjg5XjgqPjg6vjgr/jg7zjga7jg5Hjg6njg6Hjg7zjgr/jgILms6jmhI86IFwnQWN0aXZlXCcg44KSIDAg44Gr6Kit5a6a44GX44Gm44KC44CB5ouF5b2T6ICF44GM6Ieq5YiG44Gu5YCL5Lq66Kit5a6a44Gn44GT44Gu44Kw44Or44O844OX44Gu6Kit5a6a44KS57eo6ZuG44Gn44GN44Gq44GP44Gq44KL44Gg44GR44Gn44CB566h55CG6ICF44Gv5byV44GN57aa44GN5LuW44Gu44Om44O844K244O844Gr5Luj44KP44Gj44Gm6Kit5a6a44KS57eo6ZuG44Gn44GN44G+44GZ44CCXCdQcmVmZXJlbmNlR3JvdXBcJyDjgpLkvb/nlKjjgZfjgabjgIHjgZPjgozjgonjga7oqK3lrprjgpLjg6bjg7zjgrbjg7zjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7jganjga7poJjln5/jgavooajnpLrjgZnjgovjgYvjgpLliLblvqHjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBq+ihqOekuuOBleOCjOOCi+mhp+WuouODpuODvOOCtuODvOOBruani+aIkOOCouOCpOODhuODoOS4gOimp+OBruODgOODg+OCt+ODpeODnOODvOODieODu+ODkOODg+OCr+OCqOODs+ODieOBruODkeODqeODoeODvOOCv+OAgiJMaW1pdCIg44Gv44OH44OV44Kp44Or44OI44Gn6KGo56S644GZ44KL5qeL5oiQ44Ki44Kk44OG44Og44Kv44Op44K544GU44Go44Gu44Ko44Oz44OI44Oq44O85pWw44Gn44GZ44CCIkdyb3VwIiDjga/jg5fjg6njgrDjgqTjg7Pjgbjjga7jgqLjgq/jgrvjgrnjgpLliLbpmZDjgZnjgovjgZ/jgoHjgavkvb/nlKjjgZfjgb7jgZnvvIjkvos6IEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyO++8ieOAgiJEZWZhdWx0IiDjga/jgIHjg5fjg6njgrDjgqTjg7PjgpLjg4fjg5Xjgqnjg6vjg4jjgafmnInlirnjgavjgZnjgovjgYvjgIHjg6bjg7zjgrbjg7zjgYzmiYvli5XjgafmnInlirnjgavjgZnjgovlv4XopoHjgYzjgYLjgovjgYvjgpLmsbrlrprjgZfjgb7jgZnjgIIiQ2FjaGVUVExMb2NhbCIg44Gv44OX44Op44Kw44Kk44Oz44Gu44Kt44Oj44OD44K344Ol5pmC6ZaT77yI5YiG77yJ44Gn44GZ44CCIkNvbmZpZ0l0ZW1LZXkiIOOBp+OBr+OAgemBuOaKnuOBl+OBn+mhp+WuouODpuODvOOCtuODvOOBp+OBrue1nuOCiui+vOOBv+OBq+S9v+eUqOOBmeOCi+mhp+WuouODpuODvOOCtuODvOWPgueFp+ODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieOCkuaMh+WumuOBl+OBvuOBmeOAgiJTaG93bkNsYXNzZXMiIOOBr+OAgeihqOekuuOBmeOCi+ani+aIkOOCouOCpOODhuODoOOBruOCr+ODqeOCueOCkuS7u+aEj+OBp+WItumZkOOBmeOCi+OBn+OCgeOBruS4gOimp+OBp+OBmeOAguepuuashOOBruWgtOWQiOOBr+OAgSJDb25maWdJdGVtS2V5IiDjgafoqK3lrprjgZfjgZ/jg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4nlhoXjga7poaflrqLjg6bjg7zjgrbjg7zjgavkuIDoh7TjgZnjgovjgZnjgbnjgabjga7jgq/jg6njgrnjgYzlr77osaHjgavjgarjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gr6KGo56S644GV44KM44KL6aGn5a6i5LyB5qWt44Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA6Kan44Gu44OA44OD44K344Ol44Oc44O844OJ44O744OQ44OD44Kv44Ko44Oz44OJ44Gu44OR44Op44Oh44O844K/44CCIkxpbWl0IiDjga/jg4fjg5Xjgqnjg6vjg4jjgafooajnpLrjgZnjgovjgqjjg7Pjg4jjg6rjg7zmlbDjgafjgZnjgIIiR3JvdXAiIOOBr+ODl+ODqeOCsOOCpOODs+OBuOOBruOCouOCr+OCu+OCueOCkuWItumZkOOBmeOCi+OBn+OCgeOBq+S9v+eUqOOBl+OBvuOBme+8iOS+izogR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI777yJ44CCIkRlZmF1bHQiIOOBr+OAgeODl+ODqeOCsOOCpOODs+OCkuODh+ODleOCqeODq+ODiOOBp+acieWKueOBq+OBmeOCi+OBi+OAgeODpuODvOOCtuODvOOBjOaJi+WLleOBp+acieWKueOBq+OBmeOCi+W/heimgeOBjOOBguOCi+OBi+OCkuaxuuWumuOBl+OBvuOBmeOAgiJDYWNoZVRUTExvY2FsIiDjga/jg5fjg6njgrDjgqTjg7Pjga7jgq3jg6Pjg4Pjgrfjg6XmmYLplpPvvIjliIbvvInjgafjgZnjgIIiQ29uZmlnSXRlbUtleSIg44Gn44Gv44CB6YG45oqe44GX44Gf6aGn5a6i5LyB5qWt44Gn44Gu57We44KK6L6844G/44Gr5L2/55So44GZ44KL6aGn5a6i5LyB5qWt5Y+C54Wn44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ44KS5oyH5a6a44GX44G+44GZ44CCIlNob3duQ2xhc3NlcyIg44Gv44CB6KGo56S644GZ44KL5qeL5oiQ44Ki44Kk44OG44Og44Gu44Kv44Op44K544KS5Lu75oSP44Gn5Yi26ZmQ44GZ44KL44Gf44KB44Gu5LiA6Kan44Gn44GZ44CC56m65qyE44Gu5aC05ZCI44Gv44CBIkNvbmZpZ0l0ZW1LZXkiIOOBp+ioreWumuOBl+OBn+ODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieWGheOBrumhp+WuouS8gealreOBq+S4gOiHtOOBmeOCi+OBmeOBueOBpuOBruOCr+ODqeOCueOBjOWvvuixoeOBq+OBquOCiuOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruWAi+S6uuioreWumuODk+ODpeODvOOBq+OBiuOBkeOCi+OAgeODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruiJsuOBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruWAi+S6uuioreWumuODk+ODpeODvOOBq+OBiuOBkeOCi+OAgeODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfkuIDoiKzjgqvjgr/jg63jgrDlsZ7mgKfjga7mqKnpmZDjgrDjg6vjg7zjg5fkvovjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7lgIvkurroqK3lrprjg5Pjg6Xjg7zjgavjgYrjgZHjgovjgIHmp4vmiJDjgqLjgqTjg4bjg6Djgq/jg6njgrnjga7lkI3liY3jg6Ljgrjjg6Xjg7zjg6vjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruWAi+S6uuioreWumuODk+ODpeODvOOBq+OBiuOBkeOCi+OAgeani+aIkOOCouOCpOODhuODoOOCr+ODqeOCueOBrueVquWPt+ODouOCuOODpeODvOODq+OBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfvvIjmp4vmiJDjgqLjgqTjg4bjg6DjgpLooajnpLrjgZnjgovvvInjg5rjg7zjgrjjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5YCL5Lq66Kit5a6a44OT44Ol44O844Gr44GK44GR44KL44CB5qeL5oiQ44Ki44Kk44OG44Og44Kv44Op44K544Gu44OQ44O844K444On44Oz5paH5a2X5YiX44Oi44K444Ol44O844Or44Gu44OR44Op44Oh44O844K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5YCL5Lq66Kit5a6a44OT44Ol44O844Gr44GK44GR44KL44CB5qeL5oiQ44Ki44Kk44OG44Og44Kv44Op44K544Gu44OQ44O844K444On44Oz5paH5a2X5YiXIFRlbXBsYXRlIFRvb2xraXQg44Oi44K444Ol44O844Or44Gu44OR44Op44Oh44O844K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruWAi+S6uuioreWumuODk+ODpeODvOOBq+OBiuOBkeOCi+OAgeani+aIkOOCouOCpOODhuODoOOCr+ODqeOCueOBruODkOODvOOCuOODp+ODs+ODiOODquOCrOODvOOBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICfoqK3lrprjgZXjgozjgZ/lkIQgV2ViIOOCteODvOODk+OCueOBq+OBpOOBhOOBpuOAgeOCpOODmeODs+ODiOOBlOOBqOOBq+ioreWumuOBleOCjOOBn+OCouOCr+OCt+ODp+ODs+OCku+8iEludm9rZXIg44Go44GX44Gm77yJ5a6f6KGM44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfmqKnpmZDjgrDjg6vjg7zjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn5YWs6ZaL44Om44O844K244O844Gv6YGO5Y6744GuIENJIOODkOODvOOCuOODp+ODs+OCkumWsuimp+OBp+OBjeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICflhazplovjg6bjg7zjgrbjg7zjga/pgY7ljrvjga4gQ0kg44OQ44O844K444On44Oz44KS5omL5YuV44Gn5YiH44KK5pu/44GI44KL44GT44Go44GM44Gn44GN44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBp0lUU00g5qeL5oiQ44Ki44Kk44OG44Og44Gu5re75LuY44OV44Kh44Kk44Or5pON5L2c44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgadJVFNNIOani+aIkOOCouOCpOODhuODoOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBp0lUU00g5qeL5oiQ44Ki44Kk44OG44Og44Gu5qSc57Si55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44OV44Kn44O844K544GnIElUU00g5qeL5oiQ44Ki44Kk44OG44Og44Gu5qSc57Si55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544GnSVRTTSDmp4vmiJDjgqLjgqTjg4bjg6Djga7jg4Tjg6rjg7zjg5Pjg6Xjg7znlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544GnSVRTTSDmp4vmiJDjgqLjgqTjg4bjg6Djga7jgrrjg7zjg6DnlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgadJVFNNIOani+aIkOOCouOCpOODhuODoOOBrui/veWKoOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgadJVFNNIOani+aIkOOCouOCpOODhuODoOOBruS4gOaLrOWHpueQhueUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgadJVFNNIOani+aIkOOCouOCpOODhuODoOOBrue3qOmbhueUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgadJVFNNIOani+aIkOOCouOCpOODhuODoOOBruWxpeattOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544GnIElUU00g5qeL5oiQ44Ki44Kk44OG44Og44Gu5Y2w5Yi355S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLmpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+ODgeOCseODg+ODiOOBjCBDSSDjgavjg6rjg7Pjgq/jgZXjgozjgZ/jgajjgY3jgavjgIFDSSDjga7jgqTjg7Pjgrfjg4fjg7Pjg4jnirbms4HjgpLoh6rli5XnmoTjgavoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DkuIDmi6zlh6bnkIbnlLvpnaLjgafjgIHjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjgpLoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA5ous5Yem55CG55S76Z2i44Gn44CB44Kk44Oz44K344OH44Oz44OI54q25rOB44KS6Kit5a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og44K644O844Og44OT44Ol44O844Gn44CB5qeL5oiQ44Ki44Kk44OG44Og44KS5LuW44Gu44Kq44OW44K444Kn44Kv44OI44Go44Oq44Oz44Kv44GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA6Kan44Gn44CB5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGl5q2044KS6KGo56S644GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOOCuuODvOODoOODk+ODpeODvOOBp+OAgeani+aIkOOCouOCpOODhuODoOOBruWxpeattOOCkuihqOekuuOBmeOCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOOCuuODvOODoOODk+ODpeODvOOBp+OAgeani+aIkOOCouOCpOODhuODoOOCkuWJiumZpOOBmeOCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44Gu44Oq44Oz44Kv44KS44OE44Oq44O844OT44Ol44O844Gn6KGo56S644GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA6Kan44Gn44CB5qeL5oiQ44Ki44Kk44OG44Og44KS6KSH6KO944GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOOCuuODvOODoOODk+ODpeODvOOBp+OAgeani+aIkOOCouOCpOODhuODoOOCkuikh+ijveOBmeOCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og44K644O844Og44OT44Ol44O844Gn44CB5qeL5oiQ44Ki44Kk44OG44Og44KS57eo6ZuG44GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djgrrjg7zjg6Djg5Pjg6Xjg7zjgafjgIHliY3jga7nlLvpnaLjgavmiLvjgovjgZ/jgoHjga7jg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djgrrjg7zjg6Djg5Pjg6Xjg7zjgafjgIHmp4vmiJDjgqLjgqTjg4bjg6DjgpLljbDliLfjgZnjgovjgZ/jgoHjga7jg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DkuIDopqfjgafjgIHmp4vmiJDjgqLjgqTjg4bjg6Djga7oqbPntLDjgpLooajnpLrjgZnjgovjgZ/jgoHjga7jg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gn5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGl5q2044KS77yI5paw44GX44GE6aCG44Gr77yJ6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ+S9leOCgumBuOaKnuOBleOCjOOBpuOBhOOBquOBhOWgtOWQiOOBq+ihqOekuuOBleOCjOOCi+ODh+ODleOCqeODq+ODiOOBruOCq+ODhuOCtOODquODvOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44Gu6K2Y5Yil5a2Q77yI5L6LOiBDb25maWdJdGVtI+OAgU15Q29uZmlnSXRlbSPvvInjgILjg4fjg5Xjgqnjg6vjg4jjga8gQ29uZmlnSXRlbSMg44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7kuIDopqfjga7jgr/jgqTjg4jjg6vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mpJzntKLjga7jgr/jgqTjg4jjg6vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdDb25maWdJdGVtRmV0Y2ggSW52b2tlciDjgpLoh6rli5XnmoTjgavjg4jjg6rjgqzjg7zjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn44OQ44O844K444On44Oz5paH5a2X5YiX5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ+ODkOODvOOCuOODp+ODs+aWh+Wtl+WIl+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfjg5Djg7zjgrjjg6fjg7Pjg7vjg4jjg6rjgqzjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAn44OV44Kj44O844Or44OJ44KS6Ieq5YuV55qE44Gr5YWl5Yqb44GZ44KL77yIMe+8ieOBi+OAgeOBneOBruWgtOWQiOOBq+ODgeOCseODg+ODiOOBruODleOCqeODvOODoOOBi+OCiemdnuihqOekuuOBq+OCguOBmeOCi++8iDLvvInjgYvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAn44Kt44Oj44OD44K344Ol44GV44KM44Gf44OV44Kj44O844Or44OJ44Gu5L6d5a2Y6Zai5L+C44KS56K66KqN44GZ44KL44GT44Go44Gn44CBQ29uZmlnSXRlbUFDTCDjga7lrp/ooYzjgpLnnIHnlaXjgafjgY3jgovjgYvjganjgYbjgYvjgILjg5Xjgqnjg7zjg6Djga7oqq3jgb/ovrzjgb/mmYLplpPjgpLmlLnlloTjgafjgY3jgb7jgZnjgYzjgIFBQ0xNb2R1bGVzIOOCkiBJVFNNQ29uZmlnSXRlbSDjgYrjgojjgbMgRm9ybSDjga4gUmV0dXJuVHlwZSDjgavkvb/nlKjjgZnjgovloLTlkIjjga/nhKHlirnjgavjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ+ODmOODg+ODgOODvOOBq+ihqOekuuOBmeOCi+WFqOiIrOaDheWgseOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ+OCr+ODqeOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfjgrDjg63jg7zjg5Djg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfmrKHjga7nlJ/nlKMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ+WGjeeUn+eUoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn55Sf55SjJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBV77yaMTcuNeOCpOODs+ODge+8iDQ0LjQ1Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVe+8mjIx44Kk44Oz44OB77yINTMuMzRjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVV77yaMjYuMjXjgqTjg7Pjg4HvvIg2Ni42OGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4Ve+8mjMxLjXjgqTjg7Pjg4HvvIg4MC4wMWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE544Kk44Oz44OB44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVe+8mjEuNzXjgqTjg7Pjg4HvvIg0LjQ1Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBV77yaMzXjgqTjg7Pjg4HvvIg4OC45Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjHjgqTjg7Pjg4Hjg6njg4Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJV77yaMzguNeOCpOODs+ODge+8iDk3Ljc5Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjPjgqTjg7Pjg4Hjg6njg4Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMy4244Kk44Oz44OB77yINjAwbW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFXvvJo0MuOCpOODs+ODge+8iDEwNi42OGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdV77yaNDcuMjXjgqTjg7Pjg4HvvIgxMjAuMDJjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVe+8mjMuNeOCpOODs+ODge+8iDguODljbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBV77yaNTIuNeOCpOODs+ODge+8iDEzMy4zNWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEuNeOCpOODs+ODge+8iDgwMG1t77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNV77yaNTcuNzXjgqTjg7Pjg4HvvIgxNDYuNjhjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LjTjgqTjg7Pjg4HvvIg5MDBtbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2Ve+8mjYz44Kk44Oz44OB77yIMTYwLjAyY23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzkuNOOCpOODs+ODge+8iDEwMDBtbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5Ve+8mjY4LjI144Kk44Oz44OB77yIMTczLjM1Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVe+8mjUuMjXjgqTjg7Pjg4HvvIgxMy4zNGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlXvvJo3My4144Kk44Oz44OB77yIMTg2LjY5Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLjPjgqTjg7Pjg4HvvIgxMTAwbW3vvInvvJonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVXvvJo3OC43NeOCpOODs+ODge+8iDIwMC4wMmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LjLjgqTjg7Pjg4HvvIgxMjAwbW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFXvvJo4NOOCpOODs+ODge+8iDIxMy4zNmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFXvvJo344Kk44Oz44OB77yIMTcuNzhjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVV77yaOC43NeOCpOODs+ODge+8iDIyLjIzY23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2Ve+8mjEwLjXjgqTjg7Pjg4HvvIgyNi42N2Nt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdV77yaMTIuMjXjgqTjg7Pjg4HvvIgzMS4xMmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhV77yaMTTjgqTjg7Pjg4HvvIgzNS41NmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlV77yaMTUuNzXjgqTjg7Pjg4HvvIg0MC4wMWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJ0FHUEzvvIhBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn5Lya6KiIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICfoqIjkuIrmg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAn44Ki44OJ44Os44K55Ymy44KK5b2T44GmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfnrqHnkIbogIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn44Ki44OK44Ot44Kw6Zu76KmxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnQXBhY2hlIExpY2Vuc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfjgqLjg5fjg6njgqTjgqLjg7Pjgrnjg7vjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJ0JTRCBMaWNlbnNl77yIQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2XvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAn44OQ44OD44OG44Oq44O85a656YeP77yIQWjvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn44OQ44OD44OG44Oq44O844K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn5qeL56+JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfjg5Djgrnjg7vjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnQ0Mw77yIQ3JlYXRpdmUgQ29tbW9ucyBaZXJv77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFXjgq/jg6njgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+WuuemHjyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn44Kw44Op44OV44Kj44OD44Kv44K544Kr44O844OJMeaemuOBguOBn+OCiuOBruWuuemHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ+OCq+ODvOODieeVquWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ+OCq+ODvOODieODquODvOODgOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfjgqvjg7zjg4njga7nqK7poZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ+OCr+ODqeOCpOOCouODs+ODiOiovOaYjuabuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfjgq/jg6njgqTjgqLjg7Pjg4jjg7vjgr3jg5Xjg4jjgqbjgqfjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn6aGn5a6i44Kr44OG44K044Oq44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ+OCr+ODreODg+OCr+ODrOODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn44Kv44Ot44OD44Kv44K544OU44O844OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfjgrPjg7zjg4nnvbLlkI3oqLzmmI7mm7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ+mbu+ipseS8muitsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ+OCs+ODs+OCteODq+ODhuOCo+ODs+OCsOWlkee0hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn6YCj57Wh5YWIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfosqnlo7Lku6PnkIblupcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfjgrPjg7Pjg4bjg4rnrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICflpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ+Wlkee0hOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ+Wlkee0hOacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICflpZHntITmnJ/plpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn44Kz44O844OJ44Os44K56Zu76Kmx77yIREVDVOmbu+ipse+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfjgrPjgrnjg4jljZjkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfjg6njgqTjgrvjg7PjgrnmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+S9nOaIkOaXpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAn44Kv44Oq44Ko44Kk44OG44Kj44OW44O744Kz44Oi44Oz44K6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn44Kr44K544K/44Og44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICfjg4fjgqPjg7zjgqjjgqTjg4Hjgrfjg7zjg5Tjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1DkuojntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROU+OCteODvOODkOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICfjg4fjgqPjg7TjgqMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn6KuL5rGC5pu444Gu5pel5LuYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfms6jmlofml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+ODr+ODqeODs+ODiOWPluW+l+aXpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfjg6rjg6rjg7zjgrnml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+ODh+OCueOCr+ODiOODg+ODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ+ODh+OCo+OCueODl+ODrOOCpOODneODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+aWh+abuOe9suWQjeiovOaYjuabuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnRVBM77yIRWNsaXBzZSBQdWJsaWMgTGljZW5zZe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJ44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfpm7vlrZDjg6Hjg7zjg6voqLzmmI7mm7jvvIhTL01JTUUg6Ki85piO5pu477yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICfntYTjgb/ovrzjgb8gU0lN77yIZVNJTe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6ZuH55So5aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn57WC5LqGSVDjgqLjg4njg6zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfjgrXjg53jg7zjg4jntYLkuoYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfmnInlirnmnJ/pmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ+WkluS7mOOBkeODj+ODvOODieODieODqeOCpOODlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ+ODleOCoeOCpOOCouOCpuOCqeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ+ODleOCoeODvOODoOOCpuOCp+OCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ+ODleODqeOCpOODm+OCpOODvOODq+ODu+OCqOODjeODq+OCruODvOiyr+iUtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ+ODleOCqeODvOODoOODleOCoeOCr+OCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn44OV44Op44Oz44OB44Oj44Kk44K65aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn44OV44Oq44O844Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICdHUEzvvIhHZW5lcmFsIFB1YmxpYyBMaWNlbnNl77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfkuIDoiKzmg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfjgrDjg6njg5XjgqPjg4Pjgq/jgrnjgqvjg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ+OCsOODqeODleOCo+ODg+OCr+OCueOCq+ODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ+ODj+ODvOODieOCpuOCp+OCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ+ODj+ODvOODieOCpuOCp+OCouODu+ODouODh+ODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICfjg4/jg7zjg4njgqbjgqfjgqLph43ph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ+ODmOODg+ODieOCu+ODg+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQ44OX44Ot44OI44Kz44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ+OCouOCpOODh+ODs+ODhuOCo+ODhuOCo+OBqOOCouOCr+OCu+OCueeuoeeQhu+8iElBTe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAn5Zyo5bqr55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICfmipXos4fjgrPjgrnjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfjgqTjg7Pjg5zjgqTjgrnnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfjgq3jg7zjg5zjg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENE44Oi44OL44K/44O877yI5ray5pm244OH44Kj44K544OX44Os44Kk77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUTjg6Ljg4vjgr/jg7zvvIjnmbrlhYnjg4DjgqTjgqrjg7zjg4nvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnTEdQTO+8iExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn5Zu65a6a6Zu76KmxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ+ODjuODvOODiFBDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn57ev5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn44Os44Kk44Ok44O8Me+8mueJqeeQhuODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7wy77ya44OH44O844K/44Oq44Oz44Kv44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7wz77ya44ON44OD44OI44Ov44O844Kv44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ+ODrOOCpOODpOODvDPvvJrjg43jg4Pjg4jjg6/jg7zjgq/jg7vjg6zjgqTjg6Tjg7zvvIjjgrnjg7zjg5Hjg7zjg43jg4Pjg4jvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn44Os44Kk44Ok44O8NO+8muODiOODqeODs+OCueODneODvOODiOODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn44Os44Kk44Ok44O8Ne+8muOCu+ODg+OCt+ODp+ODs+ODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7w277ya44OX44Os44K844Oz44OG44O844K344On44Oz44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAn44Os44Kk44Ok44O8N++8muOCouODl+ODquOCseODvOOCt+ODp+ODs+ODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfjg6rjg7zjgrnlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICfjg6njgqTjgrvjg7PjgrnlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJ+ODqeOCpOOCu+ODs+OCueaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+ODqeOCpOOCu+ODs+OCueOCreODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfjg6njgqTjgrvjg7Pjgrnjga7nqK7poZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ+ODqeOCpOOCu+ODs+OCueacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+ODqeOCpOOCu+ODs+OCueacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn44Oq44Oz6YW46YmE44Oq44OB44Km44Og77yITGlGZVBPNO+8iembu+axoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn44Oq44OB44Km44Og44Kk44Kq44Oz77yITGktaW9u77yJ44OQ44OD44OG44Oq44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn44Ot44O844Oz5aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfoqK3nva7loLTmiYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn57WM5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnTUlUIExpY2Vuc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJ01QTO+8iE1vemlsbGEgUHVibGljIExpY2Vuc2XvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn44Oh44O844Kr44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfmnIDlpKfosqDojbflrrnph48gKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ+ODoeODouODquODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ+ODoeODouODquODvOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICdNaWNybyBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn44Of44OL44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfmkLrluK/pm7voqbHnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn44Oi44OQ44Kk44OrL+e1hOOBv+i+vOOBvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ+ODouODh+ODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ+ODouODh+ODq+iqrOaYjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfjg6Ljg4vjgr/jg7zop6Plg4/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn44Oi44OL44K/44O844K144Kk44K6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn44Oe44Km44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnTmFubyBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ+ODjeODg+ODiOODr+ODvOOCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfjg43jg4Pjg4jjg6/jg7zjgq/mg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ+ODjeODg+ODiOODr+ODvOOCr+aDheWgsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn44ON44OD44OI44Ov44O844Kv5bGkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn44OL44OD44Kx44Or44Kr44OJ44Of44Km44Og77yITmlDZO+8iembu+axoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ+ODi+ODg+OCseODq+awtOe0oOmbu+axoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICfnp5jlr4bkv53mjIHlpZHntITvvIhOREHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfjg47jg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdDUFXmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUkFN44Oi44K444Ol44O844Or5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ+OCsOODqeODleOCo+ODg+OCr+OCq+ODvOODieOBruaemuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFROODouODi+OCv+ODvO+8iOacieapn+eZuuWFieODgOOCpOOCquODvOODie+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfllrbmpa3osrvnlKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn5rOo5paH55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn5LuWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICflh7rlipsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAn5pqX6Ki855Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn5pqX6Ki855Wq5Y+3Mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICfjg5Hjg7zjg4jjg4rjg7zjgrfjg4Pjg5flpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAn5rC457aa44Op44Kk44K744Oz44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJ+mbu+ipse+8j1ZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn6Zu76Kmx55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfpm7voqbHjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfjg5XjgqPjgrjjgqvjg6vjg7vjgrPjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfjg5Hjg6/jg7zjg7vjg4fjg6rjg5Djg6rjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJ+ODkeODluODquODg+OCr+ODieODoeOCpOODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfjgafos7zlhaXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ+ODqeODg+OCr+OBruWlpeihjOOBjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ+ODqeODg+OCr+ODpuODi+ODg+ODiCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+WupOWGhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTeOCq+ODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFPoqLzmmI7mm7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICflo7LosrflpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn6KGb5pif6Zu76KmxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ+WvhumWieWei+mJm+iThOmbu+axoCAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAn44K344O844OI44Op44Kk44K744Oz44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ+OCt+ODquOCouODq+eVquWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfjgrXjg7zjg5Djg7zjg7vjgr3jg5Xjg4jjgqbjgqfjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfjgrXjg7zjg5PjgrnlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfjgrXjg7zjg5Pjgrnjgr/jgrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAn44K344Kn44Ki44Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn44K944Kx44OD44OI44K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn44K944OV44OI44Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn44K544OU44O844Kr44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+OCueOCv+ODs+ODgOODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn6ZaL5aeLSVDjgqLjg4njg6zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ+OCueODiOODrOODvOOCuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ+OCueODiOODrOODvOOCuOODu+ODkeODvOODhuOCo+OCt+ODp+ODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICfjgrXjg5bjgrnjgq/jg6rjg5fjgrfjg6fjg7Plnovjg6njgqTjgrvjg7PjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ+WtkOS8muekvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn5qaC6KaBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn44K344Oz44Kv44Op44Kk44Ki44Oz44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfjgrnjg6zjg4Pjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICfjgrXjg7Pjg4Djg7zjg5zjg6vjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ+OCsOODqeODleOCo+ODg+OCr+OCueOCq+ODvOODiVJBTeWQiOioiO+8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn5ZCI6KiIUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ+OCv+ODg+ODgeOCueOCr+ODquODvOODs+ODouODi+OCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ+OCv+ODr+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNC44OP44OWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAn44OW44Kk44K444O844Ko44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ+OBi+OBneOBhuOBuOOBhOOBhOOBjeOCguOBhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlLjg5jjg4Pjg4njgrvjg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICfku67mg7Pjgq/jg6njgqTjgqLjg7Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICfjg5Djg7zjg4Hjg6Pjg6vjg6rjg7Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVDjg5Xjgqnjg7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAn44Oc44Oq44Ol44O844Og44Op44Kk44K744Oz44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ+OCpuOCp+ODluOCq+ODoeODqSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/ko_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmtvX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfsnbzrsJgg7Jq07JiBIOuNsOydtO2EsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn7IiY7IugIOyalOyyrSDrjbDsnbTthLAg7ISk7KCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn67Cc7IugIOydkeuLtSDrjbDsnbTthLAg7ISk7KCVJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn6rWs7ISxIO2VreuqqSDqtIDrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICftgbTrnpjsiqQg7KCV7J2YIOuzgOqyvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn7Jet7ZWgIOygleydmCDrs4Dqsr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQg7YG0656Y7IqkIOuyiOuTpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+yXrOq4sOyXkOyEnCDqsIDsnqUg7J2867CY7KCB7J24IOq1rOyEsSDtla3rqqnsnYQg67O07Jes7KO864qUIFJlYWR5MkltcG9ydCDtgbTrnpjsiqQg67KI65Ok7J2EIOqwgOyguOyYrCDsiJgg7J6I7Iq164uI64ukLiDrqocg6rCA7KeAIOy2lOqwgCDqtazshLHsnbQg7ZWE7JqU7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+q4sOyhtCDsl5TthLDti7Ag7JeF642w7J207Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQg7YG0656Y7IqkIOuyiOuTpCDqsIDsoLjsmKTquLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfqtazshLEg7ZWt66qpIO2BtOuemOyKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn6rWs7ISxIO2VreuqqSDsl63tlaAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn6rWs7ISxIO2VreuqqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfsiJjsl4Ug7ZWE7YSw66eBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+uqqeuhneyXkOyEnCDtgbTrnpjsiqTrpbwg7ISg7YOd7ZWY7JesIOyDiCDqtazshLEg7ZWt66qp7J2EIOunjOuTreuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICftgbTrnpjsiqQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIOq1rOyEsSDtla3rqqkg7J286rSEIOyekeyXhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn67Cw7Y+sIOyDge2DnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ+yduOyLnOuNmO2KuCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn64uk66W4IOunge2BrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn6rWs7ISxIO2VreuqqSDrsojtmLjqsIAg7J6Y66q765CY7JeI7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfsl7DqsrDtlaAg64uk66W4IOq1rOyEsSDtla3rqqnsnZgg67KI7Zi47J6F64uI64ukLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+ydtCDqtazshLEg7ZWt66qp7J2EIOygleunkCDsgq3soJztlZjsi5zqsqDsirXri4jquYw/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ydtCDqtazshLEg7ZWt66qp7J2YIOydtOumhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn7J2066aE7J20IOydtOuvuCDri6TsnYwg67KI7Zi47J2YIOq1rOyEsSDtla3rqqnsl5DshJwg7IKs7JqpIOykkeyeheuLiOuLpDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn67KE7KCEIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn7J20IOq1rOyEsSDtla3rqqnsnZgg67KE7KCEIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+uyhOyghCDrsojtmLjqsIAg64uk7J2MIOuyiO2YuOydmCBDb25maWdJdGVtc+yXkOyEnCDsnbTrr7gg7IKs7JqpIOykkeyeheuLiOuLpDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfrsLDtj6wg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn7J247Iuc642Y7Yq4IOyDge2DnCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn6rWs7ISxIO2VreuqqSDquLDroZ06ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ+q4sOuhnSDsvZjthZDsuKAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+2BrOumrOyXkOydtO2DgOyehCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICftmZXrjIAg67O06riwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ+2OmOydtOyngOuLuSDqtazshLEg7ZWt66qpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfqtazshLEg7ZWt66qpIOuNsOydtO2EsOulvCDssL7snYQg7IiYIOyXhuyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfsnbQg6rWs7ISxIO2VreuqqeydhCDshKDtg53tlanri4jri6QuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn6rKA7IOJIOyLpO2WiSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ+q1rOyEsSDtla3rqqnsmqkg7Yq466as67ewJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAn6rmK7J20IOugiOuyqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ+2ZleuMgC/stpXshownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAn6rWs7ISxIO2VreuqqeydmCDstZzrjIAg66eB7YGsIOugiOuyqOyXkCDrj4Tri6ztlojsirXri4jri6QhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn6rWs7ISxIO2VreuqqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfqtazshLEg7ZWt66qpIOygleuztCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICftmITsnqwg67Cw7Y+sIOyDge2DnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn7ZiE7J6sIOyduOyLnOuNmO2KuCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn66eI7KeA66eJIOuzgOqyveuQqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfrp4jsp4Drp4kg67OA6rK97J6QJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn6rWs7ISxIO2VreuqqSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfqtazshLEg7ZWt66qpIOqygOyDiSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+uLpOydjCDtgbTrnpjsiqTrpbwg6rCA7KC47Ji164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfri6TsnYwg7Jet7ZWg7J2EIOqwgOyguOyYteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn7ZW064u5IOuPmeyggSDtlYTrk5zsmYAg7J2867CYIOy5tO2DiOuhnOq3uCDtgbTrnpjsiqTrj4Qg7IOd7ISx65CY66mwIOyekOuPmeycvOuhnCDsoJzqsbDrkJjsp4Ag7JWK64qU64uk64qUIOygkOyXkCDsnKDsnZjtlZjshLjsmpQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn6rOE7IaNIOynhO2Wie2VmOyLnOqyoOyKteuLiOq5jD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn7JiI7KCcIO2BtOuemOyKpOqwgCDtlYTsmpTtlanri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ+ygleydmOyXkCDsnKDtmqjtlZwgWUFNTCDtlbTsi5zqsIAg7JeG7Iq164uI64ukLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ+qwnOyalDogSVRTTSDqtazshLEg7ZWt66qpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JROqwgCDsp4DsoJXrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ+yEoO2Dne2VnCDqtazshLEg7ZWt66qp7J20IO2VmOuCmCDsnbTsg4Eg7ZWE7JqU7ZWp64uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ+ydtCDqtazshLEg7ZWt66qp7JeQIOuMgO2VnCDsk7DquLAg6raM7ZWc7J20IOyXhuyKteuLiOuLpDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ+2BtOuemOyKpOyXkCDrjIDtlZwg7KCV7J2Y6rCAIOygleydmOuQmOyngCDslYrslZjsirXri4jri6QhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfrjbDsnbTthLDrsqDsnbTsiqTsl5DshJwg6rWs7ISxIO2VreuqqSAiJXMi66W8IOywvuydhCDsiJgg7JeG7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ+q1rOyEsSDtla3rqqkgSUQgJXPrpbwg7IKt7KCc7ZWgIOyImCDsl4bsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdDb25maWdJdGVtSUQgJXPsl5Ag64yA7ZWcIOuyhOyghOydhCDssL7snYQg7IiYIOyXhuyKteuLiOuLpCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn6rWs7ISxIO2VreuqqSBJRCwg7KSR67O1IElEIOuYkOuKlCDtgbTrnpjsiqQgSUTqsIAg7KeA7KCV65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ+yVoeyEuOyKpCDqtoztlZzsnbQg7JeG7Iq164uI64ukISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICftnojsiqTthqDrpqzrpbwg7ZGc7Iuc7ZWgIOyImCDsl4bqs6AsIENvbmZpZ0l0ZW1JROqwgCDsp4DsoJXrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+q4sOuhneydhCDtkZzsi5ztlaAg7IiYIOyXhuycvOupsCDslaHshLjsiqQg6raM7ZWc7J20IOu2gOyXrOuQmOyngCDslYrslZjsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfsg4gg6rWs7ISxIO2VreuqqShJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ+yDiCDrsoTsoIQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+uwsO2PrCDsg4Htg5wg7JeF642w7J207Yq465CoKOyDiD0lcywg7J207KCEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfsnbjsi5zrjZjtirgg7IOB7YOcIOyXheuNsOydtO2KuCjsg4g9JXMsIOydtOyghD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfqtazshLEg7ZWt66qpKElEPSVzKSDsgq3soJzrkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdzKOycoO2YlT0lcynsl5Ag64yA7ZWcIOunge2BrOqwgCDstpTqsIDrkJjsl4jsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdzKOycoO2YlT0lcynsl5Ag64yA7ZWcIOunge2BrCDsgq3soJzrkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ+q1rOyEsSDtla3rqqkg7KCV7J2YIOyXheuNsOydtO2KuOuQqChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfsnbTrpoQg7JeF642w7J207Yq4KOyDiD0lcywg7J207KCEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ+yGjeyEsSAlc+qwgCAiJXMi7JeQ7IScICIlcyLroZwg7JeF642w7J207Yq465CY7JeI7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfrsoTsoIQgJXMg7IKt7KCc65CoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ+q1rOyEsSDtla3rqqkgSUQg65iQ64qUIOuyhOyghCBJROqwgCDsp4DsoJXrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfshKTsoJUg7ZWt66qp7J2EIO2RnOyLnO2VoCDsiJgg7JeG7Jy866mwIOyVoeyEuOyKpCDqtoztlZzsnbQg7JeG7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlc+ulvCDrjbDsnbTthLDrsqDsnbTsiqTsl5DshJwg7LC+7J2EIOyImCDsl4bsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfqtazshLEg7ZWt66qpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfsl5DshJwgJXPqsIAg7J247IeE7ZaI7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn7LC46rOgJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn7J6Y66q765CcIENsYXNzSUTsnoXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ2xhc3NJROqwgCDsoJzqs7XrkJjsp4Ag7JWK7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ+ydtCDtgbTrnpjsiqTsl5Ag64yA7ZWcIOyVoeyEuOyKpCDqtoztlZzsnbQg67aA7Jes65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+qysOqzvCDsl4bsnYwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn6rWs7ISxIO2VreuqqSDqsoDsg4kg6rKw6rO8JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICftla3rqqnsnYQg7ZGc7Iuc7ZWgIOyImCDsl4bsirXri4jri6QuIOq1rOyEsSDtla3rqqnsl5Ag64yA7ZWcIOyVoeyEuOyKpCDqtoztlZzsnbQg67aA7Jes65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAn6rWs7ISxIO2VreuqqeydhCDssL7snYQg7IiYIOyXhuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn67KE7KCE7J2EIOywvuydhCDsiJgg7JeG7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ+yatOyYgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn6rK96rOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn7J247Iuc642Y7Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfsnbQg6rWs7ISxIO2VreuqqeydmCDrsLDtj6wg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn7J20IOq1rOyEsSDtla3rqqnsnZgg7J247Iuc642Y7Yq4IOyDge2DnCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ+u5hO2XiOqwgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICftlYTthLDqsIAg7Jyg7Zqo7ZWY7KeAIOyViuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ+qygOyDiSDrp6TqsJzrs4DsiJjqsIAg7J6Y66q765CY7JeI7Iq164uI64ukISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ+2RnOyLnOuQnCDqtazshLEg7ZWt66qpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+uwsO2PrCDsg4Htg5wg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ+2YhOyerCDsnbjsi5zrjZjtirgg7IOB7YOcIOycoO2YlSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfsgqzsnbQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+q1rOyEsSDtla3rqqnsnZgg7YG0656Y7IqkIOygnO2VnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn7ZWY64KYIOydtOyDgeydmCDtgbTrnpjsiqTrpbwg7ISg7YOd7ZWY7JesIOyEoO2DnSDqsIDriqXtlZwg6rWs7ISxIO2VreuqqeydhCDsoJztlZztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfqtazshLEg7ZWt66qp7J2YIO2BtOuemOyKpCDsoJztlZwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICftlZjrgpgg7J207IOB7J2YIO2BtOuemOyKpOulvCDshKDtg53tlZjsl6wg7ISg7YOdIOqwgOuKpe2VnCDqtazshLEg7ZWt66qp7J2EIOygnO2VnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfrj5nsoIEo6rWs7ISxIO2VreuqqSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ+ygleyggSjrsoTsoIQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ+unge2BrCDssLjsobAg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ+ydtCDrp4HtgazqsIAg6rWs7ISxIO2VreuqqeyXkCDsoIHsmqnrkJjripTsp4Ag65iQ64qUIOywuOyhsCDqsJzssrTsnZgg7KCV7KCBIOuyhOyghOyXkCDsoIHsmqnrkJjripTsp4Ag7Jes67aA7J6F64uI64ukLiDtmITsnqwg7J247Iuc642Y7Yq4IOyDge2DnCDqs4TsgrDsnYAg64+Z7KCBIOunge2BrOyXkOyEnOunjCDsiJjtlonrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn6rWs7ISxIO2VreuqqeydhCDqsoDsg4ntlaAg7IaN7ISx7J2EIOyEoO2Dne2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ+q4sOuzuCDqtazsobDqsIAg7Jyg7Zqo7ZWY7KeAIOyViuyKteuLiOuLpC4gWUFNTCDtmJXsi53snZgg642w7J207YSwIO2VtOyLnOulvCDsnoXroKXtlZjshLjsmpQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnWUFNTCDrrLjsnpDsl7TsnYAgXCctLS1cJ+uhnCDsi5zsnpHtlbTslbwg7ZWp64uI64ukLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdjb25maWdpdGVtX2xpbmsg7YWM7J2067iU7J2EIOygnOqxsO2VoCDsiJgg7JeG7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn6rSA66CoIOuPmeyggSDtlYTrk5zrpbwg7LC+7J2EIOyImCDsl4bsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnY29uZmlnaXRlbV9saW5rIO2FjOydtOu4lOyXkCDsgr3snoXtlaAg7IiYIOyXhuyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGluayDthYzsnbTruJTsl5Ag7ZaJIDDqsJzrpbwg7IK97J6F7ZaI7Iq164uI64ukLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICftlZjrgpjsnZgg7JqU7IaM7J2YIOy1nOuMgCDqsJzsiJgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAn67KE7KCEIOusuOyekOyXtCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICfsoJXsnZgg64+Z6riw7ZmUIOykkSDsmKTrpZjqsIAg67Cc7IOd7ZaI7Iq164uI64ukLiDroZzqt7jrpbwg7ZmV7J247ZW0IOyjvOyEuOyalC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfrj5nquLDtmZTrkJjsp4Ag7JWK7J2AIElUU01Db25maWdJdGVtIOygleydmOqwgCDsnojsirXri4jri6QuIElUU01Db25maWdJdGVtIOuPmeyggSDtlYTrk5wg67OA6rK9IOyCrO2VreydhCDrsLDtj6ztlZjshLjsmpQuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfrp4zro4zrkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfsnKDsp4Ag6rSA66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn7YyM7J2865+/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfqs4Ttmo3rkJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn7IiY66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfsnYDth7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn6rKA7YagJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfthYzsiqTtirgvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ+qwnOyalCDrsI8g7ZmV7J24JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ+2BtOuemOyKpC/sl63tlaAg67CPIOq0gOugqCDtlYTrk5wg6rCA7KC47Jik6riwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn7YG0656Y7IqkIOqwgOyguOyYpOq4sCDspJHsl5Ag7Jik66WY6rCAIOuwnOyDne2WiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIOyIqOq5gCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g7ZGc7Iuc65CoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJ7JeQ7IScIO2ZleyepSDqsoDsg4kg7KGw6rG07J2EIO2XiOyaqe2VqeuLiOuLpC4g7J20IOq4sOuKpeydhCDsgqzsmqntlZjrqbQg7JiI66W8IOuTpOyWtCAiKCprZXkxKiYmKmtleTIqKSIg65iQ64qUICIoKmtleTEqfHwqa2V5MiopIuyZgCDqsJnsnYAg7KGw6rG07Jy866GcIOq1rOyEsSDtla3rqqkg7J2066aE7J2EIOqygOyDie2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7J2YIOyEpOyglSDtla3rqqkg6rKA7IOJ7JeQ7IScIO2ZleyepSDqsoDsg4kg7KGw6rG07J2EIO2XiOyaqe2VqeuLiOuLpC4g7J20IOq4sOuKpeydhCDsgqzsmqntlZjrqbQg7JiI66W8IOuTpOyWtCAiKCprZXkxKiYmKmtleTIqKSIg65iQ64qUICIoKmtleTEqfHwqa2V5MiopIuyZgCDqsJnsnYAg7KGw6rG07Jy866GcIOq1rOyEsSDtla3rqqkg7J2066aE7J2EIOqygOyDie2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICftlaDri7nrkJwgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAn6rOg6rCd7IKs7JeQIO2VoOuLueuQnCBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ+qzoOqwnSDsgqzsmqnsnpDsl5Dqsowg7ZWg64u565CcIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIOyEpOyglSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn64+Z7J287ZWcIOq1rOyEse2VreuqqSDtgbTrnpjsiqQoXCdjbGFzc1wnKSDrmJDripQg7KCE7JetKFwnZ2xvYmFsXCcpIOuCtOyXkOyEnOunjCDqs6DsnKDtlZwg7J2066aE7J2EIO2ZleyduO2VmOuvgOuhnCDspJHrs7XsnYQg7LC+7J2EIOuVjCDquLDsobTsnZgg66qo65OgIOq1rOyEse2VreuqqeydtCDqs6DroKTrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfrqoXrqoUg7LK06rOE66W8IOyggeyaqe2VoCDrqqjrk4jsnYQg7ISg7YOd7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn67KI7Zi4IOyytOqzhOulvCDsoIHsmqntlaAg66qo65OI7J2EIOyEoO2Dne2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAn67KE7KCEIOusuOyekOyXtCDssrTqs4Trpbwg7KCB7Jqp7ZWgIOuqqOuTiOydhCDshKDtg53tlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn7IOIIOuyhOyghCDsg53shLHsnYQg7Yq466as6rGw7ZWgIOyGjeyEseydhCDshKDtg53tlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ+ydtCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOyXkCDtlaDri7ntlaAg7Lm07YWM6rOg66as66W8IOyEoO2Dne2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfqtazshLEg7ZWt66qpIOqwnOyalOyXkCDrjIDtlZwg7Je0IOq1rOyEsSDtla3rqqkg7ZWE7YSwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqwnOyalOyXkOyEnCDtlYTthLDrp4HtlaAg7IiYIOyeiOuKlCDsl7TsnoXri4jri6QuIOywuOqzoDog6rWs7ISxIO2VreuqqSDsho3shLHqs7wg64+Z7KCBIO2VhOuTnChEeW5hbWljRmllbGRfTmFtZVgpIOunjCDtl4jsmqnrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ+q1rOyEsSDtla3rqqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ+q1rOyEsSDtla3rqqkg7LaU6rCALic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ+q1rOyEsSDtla3rqqkg7Y647KeRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwg6riw66Gd7JeQIOuhnOq5he2VoCDsiJgg7J6I64qUIOq1rOyEsSDtla3rqqkg7J2067Kk7Yq4IOuqqOuTiOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn6rWs7ISxIO2VreuqqeydhCDtmITsnqwg7KCV7J2Y66GcIOyXheuNsOydtO2KuO2VmOuKlCDqtazshLEg7ZWt66qpIOydtOuypO2KuCDrqqjrk4jsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn6rWs7ISxIO2VreuqqSDquLDroZ0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ+q1rOyEsSDtla3rqqkg7J247IeELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ+q1rOyEsSDtla3rqqkg7ZmV64yAL+y2leyGjC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfqtazshLEg7ZWt66qpIO2KuOumrCDrs7TquLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn6rWs7ISxIO2VreuqqSDrsoTsoIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn64uk7J2MIO2BtOuemOyKpOydmCDqtazshLEg7ZWt66qp7J2AIEVsYXN0aWNzZWFyY2gg7ISc67KE7JeQIOyggOyepeuQmOyngCDslYrsirXri4jri6QuIOydtOulvCDquLDsobQgQ0nsl5Ag7KCB7Jqp7ZWY66Ck66m0IOydtCDsmLXshZjsnYQg67OA6rK97ZWcIO2bhCDsvZjshpTsnYQg7Ya17ZW0IENJIOuniOydtOq3uOugiOydtOyFmOydhCDsi6TtlontlbTslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfri6TsnYwg67Cw7Y+sIOyDge2DnOydmCDqtazshLEg7ZWt66qp7J2AIEVsYXN0aWNzZWFyY2gg7ISc67KE7JeQIOyggOyepeuQmOyngCDslYrsirXri4jri6QuIOydtOulvCDquLDsobQgQ0nsl5Ag7KCB7Jqp7ZWY66Ck66m0IOydtCDsmLXshZjsnYQg67OA6rK97ZWcIO2bhCDsvZjshpTsnYQg7Ya17ZW0IENJIOuniOydtOq3uOugiOydtOyFmOydhCDsi6TtlontlbTslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfqtazshLEg7ZWt66qpIOygnO2VnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn7Y6Y7J207KeA64u5IOq1rOyEsSDtla3rqqkg7KCc7ZWcLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn6rWs7ISxIOq0gOumrCDrjbDsnbTthLDrsqDsnbTsiqQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfqtazshLEg7ZWt66qpIOydvOq0hCDrqqjrk4guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg67Cx7JeU65OcIOudvOyasO2EsOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ+q1rOyEsSDtla3rqqnsl5Ag64yA7ZWcIOygleydmOulvCDrp4zrk6Tqs6Ag6rSA66as7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ+2KueyglSDsi5zsoJDsl5Ag6rWs7ISxIO2VreuqqeyXkCDrjIDtlZwg7Yuw7LyT7J2EIOunjOuTreuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn6rOg6rCd7J2AIOqzvOqxsCBDSSDrsoTsoITsnYQg67O8IOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ+qzoOqwneydgCDsnbTsoIQgQ0kg67KE7KCEIOqwhOyXkCDsiJjrj5nsnLzroZwg7KCE7ZmY7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn6rWs7ISxIO2VreuqqSDqsoDsg4kg7ZmU66m07J2YIOyGjeyEseyXkCDsgqzsmqntlaAg6riw67O4IOuNsOydtO2EsOyeheuLiOuLpC4g7JiIOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ+q1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOydmCDsho3shLHsl5Ag7IKs7Jqp7ZWgIOq4sOuzuCDrjbDsnbTthLDsnoXri4jri6QuIOyYiDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ+unge2BrCDqsJ3ssrQg7JyE7KCv7JeQ7IScIOyEpOyglSDrsoTtirzsnYQg7IKs7Jqp7ZWgIOyImOyeiOuKlCDslaHshZgg7KCV7J2YIChMaW5rT2JqZWN0IDo6IFZpZXdNb2RlID0gImNvbXBsZXgiKS4g7J2065+s7ZWcIOyekeyXheydgCDri6TsnYwgSlMg67CPIENTUyDtjIzsnbzsnYQg65Ox66Gd7ZW07JW87ZWp64uI64ukLiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ+uyhOyghCDrrLjsnpDsl7Tsl5Ag64yA7ZWcIO2FnO2UjOumvzo67Yi07YK3IOyytOqzhOulvCDsoJXsnZjtlanri4jri6QuIOuyhOyghCDrrLjsnpDsl7Qg66qo65OI7J20IFRlbXBsYXRlVG9vbGtpdOycvOuhnCDshKTsoJXrkJwg6rK97Jqw7JeQ66eMIOyCrOyaqeuQqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ+qzoOqwneydtCDqtazshLEg7ZWt66qp7J2EIOuzvCDsiJgg7J6I64+E66GdIO2XiOyaqeuQmOuKlCDsobDqsbQg7KeR7ZWp7J2EIOygleydmO2VqeuLiOuLpC4g7KGw6rG07J2AIOyEoO2DneyggeycvOuhnCDtirnsoJUg6rOg6rCdIOq3uOujueycvOuhnCDsoJztlZztlaAg7IiYIOyeiOyKteuLiOuLpC4g7J2066aE7J2AIOycoOydvO2VnCDtlYTsiJgg7IaN7ISx7J6F64uI64ukLiDri6Trpbgg7Ji17IWY7J2EIOyngOygle2VmOyngCDslYrsnLzrqbQg66qo65OgIOq1rOyEsSDtla3rqqnsnbQg7ZW064u5IOy5tO2FjOqzoOumrCDslYTrnpjsl5Ag7ZGc7Iuc65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn7J2867CYIOyduO2EsO2OmOydtOyKpOulvCDsgqzsmqntlZjsl6wgSVRTTSDqtazshLEg7ZWt66qp7J2EIOyCreygnO2VmOuKlCDrjbAg7ZWE7JqU7ZWcIOq2jO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfsnbzrsJgg7J247YSw7Y6Y7J207Iqk66W8IOyCrOyaqe2VmOyXrCBJVFNNIOq1rOyEsSDtla3rqqnsnYQg6rCA7KC47Jik64qUIOuNsCDtlYTsmpTtlZwg6raM7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+ydvOuwmCDsnbjthLDtjpjsnbTsiqTrpbwg7IKs7Jqp7ZWY7JesIElUU00g6rWs7ISxIO2VreuqqeydhCDqsoDsg4ntlZjripQg642wIO2VhOyalO2VnCDqtoztlZzsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn7J2867CYIOyduO2EsO2OmOydtOyKpOulvCDsgqzsmqntlZjsl6wgSVRTTSDqtazshLEg7ZWt66qp7J2EIOyEpOygle2VmOuKlCDrjbAg7ZWE7JqU7ZWcIOq2jO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+q1rOyEsSDtla3rqqkg66qp66Gd7J2YIOyekeydgCDrs7TquLDrpbwg7ZGc7Iuc7ZWY64qUIOqwnOyalCDrqqjrk4jsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICfrhbjrk5wg7Jew6rKw7JeQIOunge2BrCDsnKDtmJUg66CI7J2067iU7J2EIO2RnOyLnO2VoOyngCDsl6zrtoDrpbwg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn6rCBIOq1rOyEsSDtla3rqqkg7YG0656Y7Iqk7JeQIOuMgO2VtCDqsJzrs4TsoIHsnLzroZwg7KCV6rec7Iud7J2EIOygleydmO2VmOyXrCDqtazshLEg7ZWt66qpIOydtOumhOydhCDtmZXsnbjtlZjqs6Ag7ZW064u5IOyYpOulmCDrqZTsi5zsp4Drpbwg7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIO2BtOuemOyKpOyXkCDrlLDrnbwg6rWs7ISxIO2VreuqqSDqsJzsmpTsl5DshJwg7IKs7JqpIOqwgOuKpe2VnCBDSSDsl7TsnYQg7KCV7J2Y7ZWp64uI64ukLiDqsIEg7ZWt66qp7J2AIO2BtOuemOyKpCDsnbTrpoTqs7wg7ZW064u5IO2BtOuemOyKpOyXkOyEnCDsgqzsmqkg6rCA64ql7ZWcIO2VhOuTnCDrsLDsl7TroZwg6rWs7ISx65CY7Ja07JW8IO2VqeuLiOuLpC4g64+Z7KCBIO2VhOuTnCDtla3rqqnsnYAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDsiqTtgqTrp4jrpbwg65Sw65287JW8IO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg6rKw6rO87J2YIOq1rOyEsSDtla3rqqkg7KCV66Cs7J2EIOychO2VnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsho3shLHsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7zsnZgg6rWs7ISxIO2VreuqqSDsoJXroKzsnYQg7JyE7ZWcIOq4sOuzuCDqtazshLEg7ZWt66qpIOyGjeyEseydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn7J20IOyekeyXheydmCDqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7zsnZgg6rWs7ISxIO2VreuqqSDsoJXroKzsl5Ag64yA7ZWcIOq4sOuzuCDqtazshLEg7ZWt66qpIOyGjeyEseydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIOqysOqzvOyXkOyEnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsiJzshJzrpbwg7KCV7J2Y7ZWp64uI64ukLiDsnITsqr06IOqwgOyepSDsmKTrnpjrkJwg7ZWt66qp7J2EIOunqCDsnITsl5Ag67Cw7LmY7ZWp64uI64ukLiDslYTrnpjroZw6IOy1nOyLoCDtla3rqqnsnbQg66eoIOychOyXkCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIOqysOqzvOyXkOyEnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsiJzshJzrpbwg7KCV7J2Y7ZWp64uI64ukLiDsnITsqr06IOqwgOyepSDsmKTrnpjrkJwg7ZWt66qp7J2EIOunqCDsnITsl5Ag7ZGc7Iuc7ZWp64uI64ukLiDslYTrnpjroZw6IOy1nOyLoCDtla3rqqnsnYQg66eoIOychOyXkCDrsLDsuZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSDtgbTrnpjsiqTsl5Ag65Sw6528IOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQIO2RnOyLnOuQmOuKlCBDSeydmCDquLDrs7gg7Je07J2EIOygleydmO2VqeuLiOuLpC4g6rCBIO2VreuqqeydgCDtgbTrnpjsiqQg7J2066aE6rO8IO2VtOuLuSDtgbTrnpjsiqTsl5Ag7IKs7JqpIOqwgOuKpe2VnCDtlYTrk5wg67Cw7Je066GcIOq1rOyEseuQmOyWtOyVvCDtlanri4jri6QuIOuPmeyggSDtlYTrk5wg7ZWt66qp7J2AIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg7Iqk7YKk66eI66W8IOuUsOudvOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ+2RnOyLnO2VoCDquLDrs7gg6rSA6rOEIOq5iuydtOulvCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+q1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOyXkCDquLDrs7jsoIHsnLzroZwg7ZGc7Iuc65CY64qUIOq1rOyEsSDtla3rqqkg6rKA7IOJIOyGjeyEseydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfqtazshLEg7ZWt66qpIOqygOyDiSDtmZTrqbTsl5Ag6riw67O47KCB7Jy866GcIO2RnOyLnOuQmOuKlCDqtazshLEg7ZWt66qpIOqygOyDiSDsho3shLHsnYQg7KCV7J2Y7ZWp64uI64ukLiDsmIg6ICLtgqQi64qUIOuPmeyggSDtlYTrk5zsnZgg7J2066aEKOydtCDqsr3smrAgXCdYXCcpLCAi7L2Y7YWQ7LigIuuKlCDrj5nsoIEg7ZWE65OcIOycoO2YleyXkCDrlLDrnbwg64+Z7KCBIO2VhOuTnOydmCDqsJIo7YWN7Iqk7Yq4OiBcJ+2FjeyKpO2KuFwnLCDrk5zroa3ri6TsmrQ6IFwnMVwnLCDrgqDsp5wv7Iuc6rCEKeydtOyWtOyVvCDtlanri4jri6Q6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMFwnOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIOuwjyDrmJDripQgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnXCdJVFNNQ29uZmlnSXRlbVwnIO2BtOuemOyKpOydmCDquLDrs7gg7ZWY7JyEIOqwneyytOulvCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSDtgbTrnpjsiqTsl5Ag65Sw6528IOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQ7IScIOyCrOyaqSDqsIDriqXtlZwgQ0kg7Je07J2EIOygleydmO2VqeuLiOuLpC4g6rCBIO2VreuqqeydgCDtgbTrnpjsiqQg7J2066aE6rO8IO2VtOuLuSDtgbTrnpjsiqTsl5DshJwg7IKs7JqpIOqwgOuKpe2VnCDtlYTrk5wg67Cw7Je066GcIOq1rOyEseuQmOyWtOyVvCDtlanri4jri6QuIOuPmeyggSDtlYTrk5wg7ZWt66qp7J2AIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg7Iqk7YKk66eI66W8IOuUsOudvOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ+ydtCDtmZTrqbTsnZgg7ISc7Iud7J6I64qUIO2FjeyKpO2KuCDtjrjsp5HquLAg6rWs7ISxIOyalOyGjOydmCDrhpLsnbTrpbwg7KCV7J2Y7ZWp64uI64ukLiDsiKvsnpAgKO2UveyFgCkg65iQ64qUIO2NvOyEvO2KuCDqsJIgKOyDgeuMgCnsnYQg7J6F66Cl7ZWY7Iut7Iuc7JikLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqtIDrpqzsnpAg7J247YSw7Y6Y7J207Iqk7JeQ7IScIENJIOygleydmCDtjrjsp5HquLDsnZgg7ZaJIOyImOulvCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ+yduOyLnOuNmO2KuCDsg4Htg5zsnZgg7Iic7ISc66W8IOuGkuydjCjsmIg6IO2BrOumrOyLnO2DiCnsl5DshJwg64Ku7J2MKOyYiDog6riw64qlKeycvOuhnCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn7Jew6rKw65CcIO2LsOy8k+ydtCBDSeydmCDsg4Htg5zsl5Ag7JiB7Zal7J2EIOykhCDsiJgg7J6I64qUIOq0gOugqCDrsLDtj6wg7IOB7YOc66W8IOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdBZ2VudElUU01Db25maWdJdGVtIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn66qo65OgIENJIO2BtOuemOyKpOyXkCDrjIDtlbQg66eB7YGsIO2FjOydtOu4lCDrs7Xtlakg67O06riw7JeQIO2RnOyLnOuQmOuKlCBDSSDsl7TsnYQg7KCV7J2Y7ZWp64uI64ukLiDtla3rqqnsnbQg7JeG7Jy866m0IOq4sOuzuCDsl7TsnbQg7ZGc7Iuc65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnQ0kg7YG0656Y7Iqk7JeQIOuUsOudvCDrp4Htgawg7YWM7J2067iUIOuzte2VqSDrs7TquLDsl5Ag7ZGc7Iuc65CY64qUIENJIOyXtOydhCDsoJXsnZjtlanri4jri6QuIOqwgSDtla3rqqkg7JWe7JeQ64qUIO2BtOuemOyKpCDsnbTrpoTqs7wg7J207KSRIOy9nOuhoCjsmIg6IOy7tO2TqO2EsDo6KeydtCDsmYDslbwg7ZWp64uI64ukLiDrqqjrk6AgQ0nsl5Ag6rO17Ya17Jy866GcIOyggeyaqeuQmOuKlCDrqocg6rCA7KeAIENJIOyGjeyEseydtCDsnojsirXri4jri6Qo7JiIOiBDb21wdXRlciDtgbTrnpjsiqTsnZgg6rK97JqwOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBDSSDsoJXsnZjsl5Ag7KCV7J2Y65CcIOuMgOuhnCDqsJzrs4QgQ0kg7IaN7ISx7J2EIO2RnOyLnO2VmOugpOuptCDri6TsnYwg7Iqk7YKk66eI66W8IOyCrOyaqe2VtOyVvCDtlanri4jri6Qo7JiIOiBDb21wdXRlciDtgbTrnpjsiqTsnZgg6rK97JqwKTog7Lu07ZOo7YSwOjrtlZjrk5zrlJTsiqTtgaw6OjEsIOy7tO2TqO2EsDo67ZWY65Oc65SU7Iqk7YGsOjoxOjrsmqnrn4k6OjEsIOy7tO2TqO2EsDo67ZWY65Oc65SU7Iqk7YGsOjoyLCDsu7Ttk6jthLA6Ou2VmOuTnOuUlOyKpO2BrDo6Mjo67Jqp65+JOjoxLiBDSSDtgbTrnpjsiqTsl5Ag64yA7ZWcIO2VreuqqeydtCDsl4bripQg6rK97JqwIOq4sOuzuCDsl7TsnbQg7ZGc7Iuc65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g6rWs7ISxIO2VreuqqSBBQ0wg6rWs7KGw7J2YIOyEuCDrsojsp7gg7IiY7KSA7JeQ7IScIFwn64+Z7J6RXCfsl5Ag7IKs7Jqp7ZWgIOyImCDsnojripQg7ZWt66qp7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJVFNNIOq1rOyEsSDtla3rqqkgQUNMIOq1rOyhsOydmCDssqsg67KI7Ke4IOyImOykgOyXkOyEnCDsgqzsmqntlaAg7IiYIOyeiOuKlCDtla3rqqnsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJVFNNIOq1rOyEsSDtla3rqqkgQUNMIOq1rOyhsOydmCDrkZAg67KI7Ke4IOyImOykgOyXkOyEnCDsgqzsmqntlaAg7IiYIOyeiOuKlCDtla3rqqnsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfsl7DqsrDrkJwgQ0nsnZgg7IOB7YOc7JeQIOyYge2WpeydhCDrr7jsuaAg7IiYIOyeiOuKlCDrp4Htgawg7Jyg7ZiVKO2LsOy8kyDqtIDsoJDsl5DshJwg66qF66qF65CoKeydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn7Jew6rKw65CcIENJ7J2YIOyDge2DnOyXkCDsmIHtlqXsnYQg7KSEIOyImCDsnojripQg7Yuw7LyTIOycoO2YleydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn7KCV7J2YIOyXheuNsOydtO2KuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn6rWs7ISxIO2VreuqqSDsgq3soJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfrsLDtj6wg7IOB7YOcIOyDieyDgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfrsLDtj6wg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ+ykkeuztSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ+uPmeyggSDtlYTrk5wg67OA6rK9IOyCrO2VreydtCDtj6ztlajrkJwg6rK97JqwIOq1rOyEsSDtla3rqqkg7KCV7J2Y6rCAIOuPmeq4sO2ZlOuQmOyngCDslYrsnYAg6rKD7Jy866GcIO2RnOyLnO2VmOuKlCDrj5nsoIEg7ZWE65OcIOydtOuypO2KuCDrqqjrk4jsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOy2lOqwgCBJVFNNIO2VhOuTnCDtmZTrqbTsl5Ag7ZGc7Iuc65CY64qUIOuPmeyggSDtlYTrk5zsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+qzoOqwnSDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsJzsmpQg7ZmU66m07JeQIO2RnOyLnOuQmOuKlCDrj5nsoIEg7ZWE65Oc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOyXkCDtkZzsi5zrkJjripQg64+Z7KCBIO2VhOuTnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn7IOB64u07JuQIO2UhOufsO2KuOyXlOuTnOyXkOyEnCDtlZwg67KI7JeQIOuRkCDqsJwg7J207IOB7J2YIOq1rOyEsSDtla3rqqnsl5Ag64yA7ZW0IOyekeyXhe2VoCDsiJgg7J6I64+E66GdIOq1rOyEsSDtla3rqqkg7J286rSEIOyekeyXhSDquLDriqXsnYQg7IKs7JqpIOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+uCmOyXtOuQnCDqt7jro7nsl5Ag64yA7ZW07ISc66eMIOq1rOyEsSDtla3rqqkg7J286rSEIOyekeyXhSDquLDriqXsnYQg7Zmc7ISx7ZmU7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfsnbTrsqTtirgg66qo65OI7J2EIOyCrOyaqe2VmOyXrCDti7DsvJMtY29uZmlnaXRlbS1saW5r7JeQ7IScIGNvbmZpZ2l0ZW0tc3RhdHVz66W8IOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn7KCE7LK0IO2FjeyKpO2KuCDqsoDsg4nsl5Ag7IKs7Jqp65CY64qUIOq1rOyEsSDtla3rqqkg7J24642x7Iqk7J2YIO2VhOuTnOyeheuLiOuLpC4g7ZWE65Oc64+EIOyggOyepeuQmOyngOunjCDsoITssrQg6riw64ql7JeQIO2VhOyImOyggeyduCDqsoPsnYAg7JWE64uZ64uI64ukLiDssqjrtoAg7YyM7J28IO2PrO2VqOydgCDtla3rqqnsnYQgMOycvOuhnCDshKTsoJXtlZjqsbDrgpgg7IKt7KCc7ZWY7JesIOu5hO2ZnOyEse2ZlO2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn7KCE7LK0IO2FjeyKpO2KuCDqsoDsg4kg7Jm47JeQIOuLpOuluCDsmqnrj4TroZwg7IKs7Jqp65CY64qUIOq1rOyEsSDtla3rqqkg7J24642x7Iqk7JeQIOyggOyepeuQnCDtlYTrk5zsnoXri4jri6QuIOyghOyytCDquLDriqXsnYQg7IKs7Jqp7ZWY66Ck66m0IOuqqOuToCDtlYTrk5zqsIAg7ZWE7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCDsnbjrs7Tsu6Qg66CI7J207Ja07JeQIOuMgO2VnCBHZW5lcmljSW50ZXJmYWNlIOuqqOuTiCDrk7HroZ0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIOyduOuztOy7pCDroIjsnbTslrTsl5Ag64yA7ZWcIEdlbmVyaWNJbnRlcmZhY2Ug66qo65OIIOuTseuhnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIOyduOuztOy7pCDroIjsnbTslrTsl5Ag64yA7ZWcIEdlbmVyaWNJbnRlcmZhY2Ug66qo65OIIOuTseuhnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSDqtazshLEg7ZWt66qpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSDqtazshLEg7ZWt66qpIOqwnOyalC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfsnbjsi5zrjZjtirgg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJ7JeQIOuwsO2PrCDsg4Htg5zrpbwg7Y+s7ZWo7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJ7JeQIOyduOyLnOuNmO2KuCDsg4Htg5zrpbwg7Y+s7ZWo7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfsnbQg7J6R7JeF7J2YIOqysOqzvOyXkCDtkZzsi5ztlaAg7LWc64yAIOq1rOyEsSDtla3rqqkg7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ+uqqOuTiOydhCDsgqzsmqntlZjsl6wg7YG0656Y7Iqk66W8IOuLtOuLue2VmOuKlCDqt7jro7nsnYQg7ZmV7J247ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ+uqqOuTiOydhCDtgbTrpq3tlZjsl6wg6rWs7ISxIO2VreuqqeydhCDri7Tri7ntlZjripQg6re466O57J2EIO2ZleyduO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfrqqjrk4jsnYQg7IKs7Jqp7ZWY7JesIElUU00g6rWs7ISxIO2VreuqqSDthrXqs4Trpbwg7IOd7ISx7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ+ydtOumhCDrqqjrk4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ+yIq+yekCDrqqjrk4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCDqsoDsg4kg6rKw6rO87J2YIOqwgSDtjpjsnbTsp4Dsl5Ag7ZGc7Iuc7ZWgIOq1rOyEsSDtla3rqqnsnZgg7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7JeQ7IScIOqygOyDiSDqsrDqs7zsnZgg6rCBIO2OmOydtOyngOyXkCDtkZzsi5ztlaAg6rWs7ISxIO2VreuqqSDsiJjsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ+qygOyDie2VoCDqsJzssrQsIO2RnOyLnO2VoCDtla3rqqkg7IiYLCDtkZzsi5ztlaAg7IaN7ISxLiDqtazshLEg7ZWt66qpIOyGjeyEseydgCBFbGFzdGljc2VhcmNo66W8IO2Gte2VtCDrqoXsi5zsoIHsnLzroZwg7KCA7J6l7ZW07JW8IO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn6rCc7JqULic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOydmCDsubTthYzqs6Drpqzsl5Ag64yA7ZWcIOunpOqwnCDrs4DsiJjsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7J6R7J2AIOq1rOyEsSDtla3rqqkg6rCc7JqU7J2YIOyXtCDtlYTthLDsl5Ag64yA7ZWcIOunpOqwnCDrs4DsiJjsnoXri4jri6QuIOywuOqzoDogXCftmZzshLFcJ+ydhCAw7Jy866GcIOyEpOygle2VmOuptCDsg4Hri7Tsm5DsnbQg6rCc7J24IOq4sOuzuCDshKTsoJXsl5DshJwg7J20IOq3uOujueydmCDshKTsoJXsnYQg7Y647KeR7ZWgIOyImCDsl4bsp4Drp4wg6rSA66as7J6Q6rCAIOuLpOuluCDsgqzsmqnsnpDsnZgg7ISk7KCV7J2EIOuMgOyLoCDtjrjsp5HtlaAg7IiYIOyeiOyKteuLiOuLpC4g7IKs7Jqp7J6QIOyduO2EsO2OmOydtOyKpOyXkOyEnCDsnbTrn6ztlZwg7ISk7KCV7J20IO2RnOyLnOuQoCDsmIHsl63snYQg7KCc7Ja07ZWY66Ck66m0IFwnUHJlZmVyZW5jZUdyb3VwXCfsnYQg7IKs7Jqp7ZWY7IS47JqULic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg67Cw7Y+sIOyDge2DnOydmCDrp6TqsJzrs4DsiJgg7IOJ7IOB7J2EIOyngOygle2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg67Cw7Y+sIOyDge2DnOyXkCDrjIDtlZwg66ek6rCc67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfsnbzrsJgg7Lm07YOI66Gc6re4IOyGjeyEseydmCDsmIjsi5wg6raM7ZWcIOq3uOujueyXkCDrjIDtlZwg66ek6rCc67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsnZgg7J2066aEIOuqqOuTiOyXkCDrjIDtlZwg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsnZgg67KI7Zi4IOuqqOuTiOyXkCDrjIDtlZwg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn7Y6Y7J207KeA7J2YIOunpOqwnOuzgOyImCjqtazshLEg7ZWt66qp7J20IO2RnOyLnOuQmOuKlCDtjpjsnbTsp4Ap7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq4sOuzuCDshKTsoJUg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqkg7YG0656Y7Iqk7JeQIOuMgO2VnCDrsoTsoIQg66y47J6Q7Je0IOuqqOuTiOydmCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsl5Ag64yA7ZWcIOuyhOyghCDrrLjsnpDsl7Qg7YWc7ZSM66a/IO2ItO2CtyDrqqjrk4jsnZgg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOyXkCDrjIDtlZwg67KE7KCEIO2KuOumrOqxsOydmCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ+q2jO2VnCDqt7jro7knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDssqjrtoAg7J6R7JeF7J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg7Yq466asIOuztOq4sCDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDtmZXrjIAg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDstpTqsIAg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCDsnbzqtIQgSVRTTSDqtazshLEg7ZWt66qpIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIO2OuOynkSDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIOq4sOuhnSBJVFNNIOq1rOyEsSDtla3rqqkg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIOyduOyHhCDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn6rWs7ISxIO2VreuqqeydhCDsgq3soJztlZjroKTrqbQg7ZWE7JqU7ZWcIOq2jO2VnOydtCDtlYTsmpTtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn6rWs7ISxIO2VreuqqeydhCDqsoDsg4ntlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICfti7DsvJPsnbQgQ0nsl5Ag7Jew6rKw65CY66m0IOyekOuPmeycvOuhnCBDSeydmCDsnbjsi5zrjZjtirgg7IOB7YOc66W8IOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg7J286rSEIO2ZlOuptOyXkOyEnCDrsLDtj6wg7IOB7YOc66W8IOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOydvOq0hCDtmZTrqbTsl5DshJwg7J247Iuc642Y7Yq4IOyDge2DnOulvCDshKTsoJXtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIO2ZleuMgC/stpXshowg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnYQg64uk66W4IOqwnOyytOyZgCDsl7DqsrDtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQIOyeiOuKlCDqtazshLEg7ZWt66qp7J2YIOq4sOuhneyXkCDslaHshLjsiqTtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn66mU64m07JeQIOyDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg7ZmV64yAIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qp7J2YIOq4sOuhneyXkCDslaHshLjsiqTtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+uplOuJtOyXkCDsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIO2ZleuMgCDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqeydhCDsgq3soJztlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn66mU64m07JeQIOq1rOyEsSDtla3rqqkg66eB7YGs66W8IO2KuOumrCDrs7TquLDroZwg7ZGc7Iuc7ZWY64qUIOunge2BrOulvCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqwnOyalOyXkCDsnojripQg6rWs7ISxIO2VreuqqeydhCDrs7XsoJztlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn66mU64m07JeQIOunge2BrOulvCDtkZzsi5ztlZjsl6wg7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDtmZXrjIAv7LaV7IaMIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qp7J2EIOuzteygnO2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDtmZXrjIAg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnYQg7Y647KeR7ZWgIOyImCDsnojripQg66eB7YGs66W8IOuplOuJtOyXkCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfrqZTribTsl5Ag7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIO2ZleuMgC/stpXshowg67O06riw66GcIOuPjOyVhOqwiCDsiJgg7J6I64qUIOunge2BrOulvCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn66mU64m07JeQIOunge2BrOulvCDtkZzsi5ztlZjsl6wg7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDtmZXrjIAg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnYQg7J247IeE7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqwnOyalOyXkCDsnojripQg6rWs7ISxIO2VreuqqeydhCDtmZXrjIDtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkCDqtazshLEg7ZWt66qpIOq4sOuhneydhCDtkZzsi5ztlanri4jri6Qo7Jet7IicKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn7ISg7YOd65CY7KeAIOyViuydgCDqsr3smrAg7ZGc7Iuc65CY64qUIOq4sOuzuCDsubTthYzqs6DrpqzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfqtazshLEg7ZWt66qp7J2YIOyLneuzhOyekCjsmIg6IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jKeyeheuLiOuLpC4g6riw67O46rCS7J2AIENvbmZpZ0l0ZW0j7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQ29uZmlnSXRlbUZldGNoIOyduOuztOy7pOulvCDsnpDrj5nsnLzroZwg7Yq466as6rGw7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICfrsoTsoIQg66y47J6Q7Je0IO2RnO2YhOyLnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfrsoTsoIQg66y47J6Q7Je0IOuqqOuTiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfrsoTsoIQg7Yq466as6rGwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfsupDsi5zrkJwg7ZWE65OcIOyiheyGjeyEseydhCDtmZXsnbjtlZjsl6wgQ29uZmlnSXRlbUFDTOydmCDsi6TtlonsnYQg7ZS87ZWgIOyImCDsnojripTsp4Ag7Jes67aALiDsnbQg7Ji17IWY7J2AIOyImOyLneydmCDroZzrlKkg7Iuc6rCE7J2EIOqwnOyEoO2VoCDsiJgg7J6I7KeA66eMLCBBQ0xNb2R1bGXsnYQgSVRTTUNvbmZpZ0l0ZW0g67CPIEZvcm0tUmV0dXJuVHlwZXPsl5Ag7IKs7Jqp7ZWY66Ck64qUIOqyveyasCDruYTtmZzshLHtmZTtlbTslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn7Zek642U7JeQIO2RnOyLnOuQmOuKlCDsnbzrsJgg7KCV67O07J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ+2BtOuemOyKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfquIDroZzrsownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICftj6zsiqTtirgg7ZSE66Gc642V7IWYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfsgqzsoIQg7IOd7IKw7ISxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfsg53sgrDshLEnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LjXsnbjsuZgoNDQuNDVjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjHsnbjsuZgoNTMuMzRjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYuMjXsnbjsuZgoNjYuNjhjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMS417J247LmYKDgwLjAxY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE57J247LmYIOuemSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEuNzXsnbjsuZgoNC40NWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM17J247LmYKDg4LjljbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjHsnbjsuZgg656ZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzguNeyduOy5mCg5Ny43OWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyM+yduOy5mCDrnpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMy427J247LmYKDYwMG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDLsnbjsuZgoMTA2LjY4Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0Ny4yNeyduOy5mCgxMjAuMDJjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMuNeyduOy5mCg4Ljg5Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLjXsnbjsuZgoMTMzLjM1Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEuNeyduOy5mCg4MDBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3Ljc17J247LmYKDE0Ni42OGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LjTsnbjsuZgoOTAwbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2M+yduOy5mCgxNjAuMDJjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzkuNOyduOy5mCgxMDAwbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OC4yNeyduOy5mCgxNzMuMzVjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNS4yNeyduOy5mCgxMy4zNGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3My417J247LmYKDE4Ni42OWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMuM+yduOy5mCgxMTAwbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzguNzXsnbjsuZgoMjAwLjAyY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LjLsnbjsuZgoMTIwMG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODTsnbjsuZgoMjEzLjM2Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDfsnbjsuZgoMTcuNzhjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOC43NeyduOy5mCgyMi4yM2NtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMC417J247LmYKDI2LjY3Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMi4yNeyduOy5mCgzMS4xMmNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTTsnbjsuZgoMzUuNTZjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1Ljc17J247LmYKDQwLjAxY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn7ZqM6rOEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAn7KO87IaMIO2VoOuLuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn6rSA66as7J6QJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ+yVhOuCoOuhnOq3uCDsoITtmZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfslrTtlIzrnbzsnbTslrjsiqQg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAn67Cw7YSw66asIOyaqeufiShBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn67Cw7YSw66asIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ+u5jOuUqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn67KE7IqkIOyduO2EsO2OmOydtOyKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSDtgbTrnpjsiqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+yaqeufiShHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICfqt7jrnpjtlL0g7Lm065Oc64u5IOyaqeufiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ+y5tOuTnCDrsojtmLgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfsubTrk5wg66as642UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ+y5tOuTnCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ+2BtOudvOydtOyWuO2KuCDsnbjspp3shJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn7YG065287J207Ja47Yq4IOyGjO2UhO2KuOybqOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfqs6DqsJ0g7Lm07YWM6rOg66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ+yLnOqzhCDsho3rj4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ+yLnOqzhCDsho3rj4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+y9lOuTnCDshJzrqoUg7J247Kad7IScJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICftmozsnZjsmqkg7KCE7ZmUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn7Luo7ISk7YyFIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn7Jew65297LKYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfstJ3tjJAg7Jew65297LKYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn7Luo7YWM7J2064SIIOq0gOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ+qzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn6rOE7JW9IOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ+qzhOyVvSDquLDqsIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAn6rOE7JW9IOq4sOqwhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfrrLTshKAg7KCE7ZmU6riwKERFQ1Qg7KCE7ZmU6riwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfruYTsmqkg64uo7JyEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAn65287J207ISg7IqkIOyImCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAn7IOd7ISxIOuCoOynnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn66ee7Lak7ZiVIOuemSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDsmIjslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUyDshJzrsoQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ+yGoeyepSDrgqDsp5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ+yjvOusuCDrgqDsp5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+uztOymnSDquLDqsIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn7Lac7IucIOuCoOynnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn642w7Iqk7YGs7YaxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAn65SU7Iqk7ZSM66CI7J20IO2PrO2KuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+usuOyEnCDshJzrqoUg7J247Kad7IScJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSDrnpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ+ydtOuplOydvCDsnbjspp3shJwoUy9NSU1FIOyduOymneyEnCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6rOg7JqpIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ+y1nOyihSBJUCDso7zshownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfsp4Dsm5Ag7KKF66OMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn66eM66OMIOuCoOynnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn7Jm47J6lIO2VmOuTnCDrk5zrnbzsnbTruIwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfrsKntmZTrsr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICftjozsm6jslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICftlIzrnbzsnbTtnKAg7JeQ64SI7KeAIOyggOyepSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ+2PvCDtjKnthLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ+2UhOuenOywqOydtOymiCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICftlITrpqzsm6jslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn7J2867CYIOygleuztCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ+q3uOuemO2UvSDsubTrk5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ+q3uOuemO2UvSDsubTrk5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICftlZjrk5zsm6jslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICftlZjrk5zsm6jslrQg66qo6424JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ+2VmOuTnOybqOyWtCDrrLTqsownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ+2XpOuTnOyFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIO2UhOuhnO2GoOy9nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJRCDrsI8g7JWh7IS47IqkIOq0gOumrChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICfsnqzqs6Ag67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfshqHsnqUg67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn7YKk67O065OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCDrqqjri4jthLAo7JWh7KCVIOuUlOyKpO2UjOugiOydtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCDrqqjri4jthLAo67Cc6rSRIOuLpOydtOyYpOuTnCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn7Jyg7ISgIOyghO2ZlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfrhbjtirjrtoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfsnITrj4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfroIjsnbTslrQgMTog66y866as7KCBIOugiOydtOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfroIjsnbTslrQgMjog642w7J207YSwIOunge2BrCDroIjsnbTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ+ugiOydtOyWtCAzOiDrhKTtirjsm4ztgawg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ+ugiOydtOyWtCAzOiDrhKTtirjsm4ztgawg66CI7J207Ja0KOyKiO2NvOuEtyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn66CI7J207Ja0IDQ6IOyghOyGoSDroIjsnbTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ+ugiOydtOyWtCA1OiDshLjshZgg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ+ugiOydtOyWtCA2OiDtlITroIjsoKDthYzsnbTshZgg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAn66CI7J207Ja0IDc6IOyVoO2UjOumrOy8gOydtOyFmCDroIjsnbTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn7J6E64yAIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ+udvOydtOyEoOyKpCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+udvOydtOyEoOyKpCDtgqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn65287J207ISg7IqkIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn65287J207ISg7IqkIOq4sOqwhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+udvOydtOyEoOyKpCDquLDqsIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ+umrO2KrCDsnbjsgrDssqAoTGlGZVBPNCkg67Cw7YSw66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfrpqztiqwg7J207JioKOumrO2KrCDsnbTsmKgpIOuwsO2EsOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ+uMgOy2nCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ+ychOy5mCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfqsr3rj4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICfsoJzsobDsl4XssrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ+y1nOuMgCDrtoDtlZgg7Jqp65+JKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ+uplOuqqOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ+uplOuqqOumrCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ+uvuOuLiCDrnpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ+2ctOuMgO2PsCDrsojtmLgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn66qo67CU7J28L+yehOuyoOuUlOuTnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ+uqqOuNuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ+uqqOuNuCDshKTrqoUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn66qo64uI7YSwIO2VtOyDgeuPhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfrqqjri4jthLAg7YGs6riwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn66eI7Jqw7IqkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfrhKTtirjsm4ztgawnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAn64Sk7Yq47JuM7YGsIOygleuztCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn64Sk7Yq47JuM7YGsIOygleuztCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn64Sk7Yq47JuM7YGsIOqzhOy4tSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ+uLiOy8iCDsubTrk5zrrrQoTmlDZCkg67Cw7YSw66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAn64uI7LyILeq4iOyGjSDsiJjshowg67Cw7YSw66asKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ+q4sOuwgCDsnKDsp4Ag6rOE7JW9KE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfrhbjtirjrtoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdDUFUg7IiYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1JBTSDrqqjrk4gg7IiYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ+q3uOuemO2UvSDsubTrk5wg7IiYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIOuqqOuLiO2EsCjsnKDquLAg67Cc6rSRIOuLpOydtOyYpOuTnCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn7Jq07JiBIOu5hOyaqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICfso7zrrLgg67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn6riw7YOAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfstpzroKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn7YyM7Yq464SI7IutIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ+yghO2ZlOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn7KCE7ZmUIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ+usvOumrOyggSDsvZTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfsoITroKUg6rO16riJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAn64uk7J2M7JeQ7IScIOq1rOunpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn656ZIOq5iuydtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ+uemSDsnKDri5soVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+uwqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSDsubTrk5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIOyduOymneyEnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ+2MkOunpCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn7JyE7ISxIOyghO2ZlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICfrsIDtj5DtmJUg64Kp7LaVKFNMQSkg67Cw7YSw66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn7J2866Co67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ+yEnOuyhCDshoztlITtirjsm6jslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfshJzruYTsiqQg6rOE7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAn7ISc67mE7IqkIO2DnOq3uCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfshozsvJMg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn7IaM7ZSE7Yq47Juo7Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn7Iqk7ZS87LukJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+2RnOykgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnSVAg7KO87IaMIOyLnOyekSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAn7Iqk7Yag66as7KeAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn7Iqk7Yag66as7KeAIO2MjO2LsOyFmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ+yekO2ajOyCrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn7JqU7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn7JSsIO2BtOudvOydtOyWuO2KuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn7Iqk66CI65OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn7I2s642U67O87Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICfstJ0g6re4656Y7ZS9IOy5tOuTnCBSQU0oR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn7LSdIFJBTShHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ+2EsOy5mOyKpO2BrOumsCDrqqjri4jthLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICftg4Dsm4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiDtl4jruIwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiDtl6Trk5zshYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUCDsoITtmZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ+ybuey6oCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/lt_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omx0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdCZW5kcmllamkgdmVpa2ltbyBkdW9tZW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnxK5laW5hbsSNacWzIHXFvmtsYXVzxbMgZHVvbWVuxbMgbnVzdGF0eW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0nFoWVpbmFuxI1pxbMgYXRzYWt5bW8gZHVvbWVuxbMgbnVzdGF0eW1haSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgdmFsZHltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdLZWlzdGkga2xhc8SXcyBhcGlicsSXxb50xK8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0tlaXN0aSB2YWlkbWVucyBhcGlicsSXxb50xK8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICciUmVhZHkySW1wb3J0IiBrbGFzacWzIHBha2V0YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfEjGlhIGdhbGl0ZSBpbXBvcnR1b3RpICJSZWFkeTJJbXBvcnQiIGtsYXNpxbMgcGFrZXR1cywga3VyaXVvc2UgZGVtb25zdHJ1b2phbWkgxK9wcmFzdGluaWFpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkuIEF0a3JlaXBraXRlIGTEl21lc8SvLCBrYWQgZ2FsaSBwcmlyZWlrdGkgdGFtIHRpa3JvcyBwYXBpbGRvbW9zIGtvbmZpZ8WrcmFjaWpvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXRuYXVqaW50aSBlc2FtdXMgc3ViamVrdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0dW90aSAiUmVhZHkyQWRvcHQiIGtsYXPEl3MgcGFrZXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBrbGFzxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byB2YWlkbXVvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnS2xhc2nFsyBmaWx0cmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ05vcsSXZGFtaSBzdWt1cnRpIG5hdWrEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFLCBzxIVyYcWhZSBwYXNpcmlua2l0ZSBrbGFzxJkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc8SXJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEaWVnaW1vIGLFq3NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudG8gYsWrc2VuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdOdW9yb2RhIMSvIGtpdMSFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOZXRlaXNpbmdhcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gbnVtZXJpcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnS2l0byBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8sIHN1IGt1cml1byBub3JpdGUgc3VzaWV0aSwgbnVtZXJpcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdBciB0aWtyYWkgbm9yaXRlIGnFoXRyaW50aSDFocSvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgaW8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhdmFkaW5pbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdQYXZhZGluaW1hcyBqYXUgbmF1ZG9qYW1hcyBDb25maWdJdGVtcyBzdSDFoWl1byAoLWlhaXMpIG51bWVyaXUgKC1pYWlzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaWpvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byB2ZXJzaWpvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lqb3MgbnVtZXJpcyBqYXUgbmF1ZG9qYW1hcyAiQ29uZmlnSXRlbXMiIHN1IMWhaXVvICgtaWFpcykgbnVtZXJpdSAoLWlhaXMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGllZ2ltbyBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSW5jaWRlbnRvIGLFq2tsxJcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpc3RvcmlqYTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSXN0b3Jpam9zIHR1cmlueXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnUHJpdHJhdWt0aSBhcMW+dmFsZ8SFJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkgdmllbmFtZSBwdXNsYXB5amUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBkdW9tZW7FsyBuZXJhc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Bhc2lyaW5raXRlIMWhxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1Z5a2R5dGkgcGFpZcWha8SFJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnIkNvbmZpZ0l0ZW0iIG1lZMW+aW8gcm9kaW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0d5bGlvIGx5Z2lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUGFkaWRpbnRpIC8gc3VtYcW+aW50aSBtYXN0ZWzEryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdQYXNpZWt0YXMgbWFrc2ltYWx1cyBDb25maWdJdGVtIG51b3JvZMWzIGx5Z2lzISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RhYmFydGluxJcgZGllZ2ltbyBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdEYWJhcnRpbsSXIGluY2lkZW50byBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1Bhc2t1dGluxK8ga2FydMSFIHBha2Vpc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1Bhc2t1dGluxK8ga2FydMSFIHBha2VpdMSXJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnSsWrc8WzIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gUGFpZcWha2EnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1b2phbW9zIMWhaW9zIGtsYXPEl3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQnVzIGltcG9ydHVvamFtaSDFoWllIHZhaWRtZW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdBdGtyZWlwa2l0ZSBkxJdtZXPErywga2FkIHRhaXAgcGF0IGJ1cyBzdWt1cnRpIGF0aXRpbmthbWkgZGluYW1pbmlhaSBsYXVrYWkgaXIgIkdlbmVyYWxDYXRhbG9nIiBrbGFzxJdzLCBvIGF1dG9tYXRpbmlvIHBhxaFhbGluaW1vIG5lYnVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0FyIG5vcml0ZSB0xJlzdGk/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1JlaWtpYSBwYXZ5emTFvmnFsyBrbGFzacWzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdBcGlicsSXxb50aXMgbsSXcmEgZ2FsaW9qYW50aXMgWUFNTCBoYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ0Fwxb52YWxnYTogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbnVyb2R5dGFzIGpva3MgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1JlaWtpYSBiZW50IHZpZW5vIHBhc2lyaW5rdG8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0rFq3MgbmV0dXJpdGUgcHJpZWlnb3MgcHJpZSDFoWlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byByYcWheXRpOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc2VpICVzIG5lYXBpYnLEl8W+dGFzIGpva3MgYXBpYnLEl8W+aW1hcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMgIiVzIiBuZXJhc3RhcyBkdW9tZW7FsyBiYXrEl2plISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05lcGF2eWtvIGnFoXRyaW50aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdDb25maWdJdGVtSUQgJXMgdmVyc2lqYSBuZXJhc3RhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZW51cm9keXRhcyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGFyYmEgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1ByaWVpZ2EgbmVzdXRlaWtpYW1hISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZWdhbGltYSByb2R5dGkgaXN0b3Jpam9zLCBuZXBhdGVpa3RhcyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmVnYWxpbWEgcm9keXRpIGlzdG9yaWpvcywgbmVzIG5lc3V0ZWlrdG9zIHByaWVpZ29zIHRlaXPEl3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOYXVqYXMga29uZmlnxatyYWNpam9zIGVsZW1lbnRhcyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOYXVqYSB2ZXJzaWphIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdBdG5hdWppbnRhIGRpZWdpbW8gYsWrc2VuYSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0bmF1amludGEgaW5jaWRlbnRvIGLFq3NlbmEgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMgKElEPSVzKSBpxaF0cmludGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnUHJpZMSXdGEgbnVvcm9kYSDEryAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ051b3JvZGEgxK8gJXMgKHR5cGU9JXMpIHBhxaFhbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0F0bmF1amludGEgQ29uZmlnSXRlbSBhcGlicsSXxb50aXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1BhdmFkaW5pbWFzIGF0bmF1amludGFzIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0YXMgJXMgYXRuYXVqaW50YXMgacWhICIlcyIgxK8gIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaWphICVzIGnFoXRyaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOZW51cm9keXRhcyBDb25maWdJdGVtSUQgYXJiYSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lZ2FsaW1hIHBhcm9keXRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50bywgbmVzIG5lc3V0ZWlrdG9zIHByaWVpZ29zIHRlaXPEl3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnRHVvbWVuxbMgYmF6xJdqZSBuZXJhc3RhIENvbmZpZ0l0ZW1JRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyVzIHNwYXVzZGluYSAlcyBhZHJlc3UgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ051b3JvZGEgKFJlZmVyZW5jZSknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdOZXRlaXNpbmdhcyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05lbnVyb2R5dGFzIGpva3MgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfFoGlhaSBrbGFzZWkgcHJpZWlnb3MgdGVpc8SXcyBuZXN1dGVpa3RvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0pva2lvIHJlenVsdGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcGFpZcWha29zIHJlenVsdGF0YWknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05lZ2FsaW1hIHBhcm9keXRpIGVsZW1lbnRvLCBuZXMgbmVzdXRlaWt0b3MgcHJpZWlnb3MgdGVpc8SXcyBwcmllIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmVyYXN0YXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1ZlcnNpasWzIG5lcmFzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAndmVpa2xvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnxK9zcMSXamltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBkaWVnaW1vIGLFq3NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpbmNpZGVudG8gYsWrc2VuYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0xlaWRpbW8gbsSXcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJhcyBuZWdhbGlvamEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYWllxaFrb3MgcGFyYW1ldHJhaSBuZWdhbGlvamEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnUm9kb21pIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnRGllZ2ltbyBixatzZW5vcyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdEYWJhcnRpbmlzIGluY2lkZW50byBixatzZW5vcyB0aXBhcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdUYXJwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8ga2xhc8SXcyBhcHJpYm9qaW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGFzaXJpbmtpdGUgdmllbsSFIGFyIGRhdWdpYXUga2xhc2nFsywga2FkIGFwcmlib3R1bcSXdGUgcGFzaXJlbmthbXVzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBrbGFzxJdzIGFwcmlib2ppbWFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGFzaXJpbmtpdGUgdmllbsSFIGFyIGRhdWdpYXUga2xhc2nFsywga2FkIGFwcmlib3R1bcSXdGUgcGFzaXJlbmthbXVzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWluaXMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aW5pcyAodmVyc2lqYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTnVvcm9kb3MgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQXIgxaFpIHPEhXNhamEgdGFpa29tYSBDb25maWdJdGVtLCBhciBzdGF0aW5laSBudW9yb2TEhSBwYXRlaWtpYW7EjWlvIG9iamVrdG8gdmVyc2lqYWkuIERhYmFydGluxJdzIGluY2lkZW50byBixatzZW5vcyBza2FpxI1pYXZpbWFzIGF0bGlla2FtYXMgdGlrIGRpbmFtaW7El21zIG51b3JvZG9tcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdQYXNpcmlua2l0ZSBhdHJpYnV0xIUsIHBhZ2FsIGt1csSvIGJ1cyBpZcWha29tYSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXppbsSXIHN0cnVrdMWrcmEgbmVnYWxpb2phLiBQYXRlaWtpdGUgaGFzaCBzdSBkdW9tZW5pbWlzIFlBTUwgZm9ybWF0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdZQU1MIGVpbHV0xJkgcmVpa2lhIHByYWTEl3RpIG51byBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOZXBhdnlrbyBpxaF2YWx5dGkgbGVudGVsxJdzIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05lcmFzdGFzIG7ElyB2aWVuYXMgc3ZhcmJ1cyBkaW5hbWluaXMgbGF1a2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmVwYXZ5a28gxK90ZXJwdGkgxK8gbGVudGVsxJkgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICfEriBsZW50ZWzEmSBjb25maWdpdGVtX2xpbmsgxK90ZXJwdGEgMCBlaWx1xI1pxbMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnRGlkxb5pYXVzaWFzIHZpZW5vIGVsZW1lbnRvIHNrYWnEjWl1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaWpvcyBlaWx1dMSXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0tsYWlkYSBzaW5jaHJvbml6dW9qYW50IGFwaWJyxJfFvnRpcy4gUGF0aWtyaW5raXRlIMW+dXJuYWzEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdUdXJpdGUgSVRTTUNvbmZpZ0l0ZW0gYXBpYnLEl8W+dGlzLCBrdXJpb3MgbsSXcmEgc2luY2hyb25penVvdG9zLiDErmRpZWtpdGUgc2F2byBJVFNNQ29uZmlnSXRlbSBkaW5hbWluacWzIGxhdWvFsyBwYWtlaXRpbXVzLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnUGFzaWJhaWfEmXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdUZWNobmluxJcgcHJpZcW+acWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdCYW5kb21hc2lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFudW9qYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlbW9udGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdJxaHEl2rEmXMgxK8gcGVuc2lqxIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUGVyxb5pxatyxJdraXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0YXZpbWFzIC8ga29reWLEl3MgdcW+dGlrcmluaW1hcyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnQXDFvnZhbGdhIGlyIHBhdHZpcnRpbmltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnS2xhc2nFsyBpciAoYXJiYSkgdmFpZG1lbsWzIGJlaSBzdSBqYWlzIHN1c2lqdXNpxbMgbGF1a8WzIGltcG9ydGF2aW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0ltcG9ydHVvamFudCBrbGFzxJkgxK92eWtvIGtsYWlkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFBhc2zEl3B0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gcGFyb2R5dGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaWTFvmlhIHRhaWt5dGkgacWhcGzEl3N0aW5lcyBwYWllxaFrb3Mgc8SFbHlnYXMgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha2FpLiBOYXVkb2RhbWkgxaFpxIUgZnVua2NpasSFIGdhbGl0ZSBpZcWha290aSwgcHZ6Liwga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhdmFkaW5pbW8gc3UgdG9raW9taXMgc8SFbHlnb21pcywga2FpcCAiKCprZXkxKiYmKmtleTIqKSIgYXJiYSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaWTFvmlhIHRhaWt5dGkgacWhcGzEl3N0aW5lcyBwYWllxaFrb3Mgc8SFbHlnYXMga2xpZW50xbMgc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb2plLiBOYXVkb2RhbWkgxaFpxIUgZnVua2NpasSFIGdhbGl0ZSBpZcWha290aSwgcHZ6Liwga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhdmFkaW5pbW8gc3UgdG9raW9taXMgc8SFbHlnb21pcywga2FpcCAiKCprZXkxKiYmKmtleTIqKSIgYXJiYSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1ByaXNraXJ0aSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdLbGllbnRvIMSvbW9uZWkgcHJpc2tpcnRpIEtJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnS2xpZW50byBuYXVkb3RvanVpIHByaXNraXJ0aSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBudXN0YXR5bWFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdVbmlrYWxhdXMgcGF2YWRpbmltbyB0aWtyaW5hbWEgdGlrIHRvamUgcGHEjWlvamUgQ29uZmlnSXRlbSBrbGFzxJdqZSAoImNsYXNzIikgYXJiYSBwYXNhdWxpbml1IG1hc3R1ICgiZ2xvYmFsIiksIHRvZMSXbCBpZcWha2FudCBwYXNpa2FydG9qaW3FsyBhdHNpxb52ZWxnaWFtYSDEryBraWVrdmllbsSFIGVzYW3EhSBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnUGFzaXJpbmtpdGUgbW9kdWzErywga3VyaXMgdcW+dGlrcmlucyBwYXZhZGluaW3FsyBzY2hlbcSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnUGFzaXJpbmtpdGUgbW9kdWzErywga3VyaXMgdcW+dGlrcmlucyBudW1lcmnFsyBzY2hlbcSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdQYXNpcmlua2l0ZSBtb2R1bMSvLCBrdXJpcyB1xb50aWtyaW5zIHZlcnNpasWzIGVpbHXEjWnFsyBzY2hlbcSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1Bhc2lyaW5raXRlIGF0cmlidXR1cywga2FkIGLFq3TFsyBzdWt1cnRhIG5hdWphIHZlcnNpamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1Bhc2lyaW5raXRlIGthdGVnb3JpamFzLCBrdXJpYXMgbm9yaXRlIHByaXNraXJ0aSDFoWlhaSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGtsYXNlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdTdHVscGVsaW8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBmaWx0cmFpIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTdHVscGVsaWFpLCBrdXJpdW9zIGdhbGltYSBmaWx0cnVvdGkgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXDFvnZhbGdvamUuIFBhc3RhYmE6IExlaWTFvmlhbWkgdGlrIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBhdHJpYnV0YWkgaXIgZGluYW1pbmlhaSBsYXVrYWkgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwcmlkxJdqaW1hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcmVkYWdhdmltYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlnxatydW9raXRlIGVsZW1lbnRvIMSvdnlracWzIG1vZHVsxK8sIGt1cmlzIGxlaWTFvmlhIHJlZ2lzdHJ1b3RpIGlzdG9yaWrEhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIMSvdnlracWzIG1vZHVsaXMsIGt1cmlzIGF0bmF1amluYSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGRhYmFydGluxJkgYXBpYnLEl8W+dMSvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgaXN0b3JpamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBzcGF1c2RpbmltYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnS29uZmlnxatydW90aSBlbGVtZW50byBwcmlhcnRpbmltxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBtZWTFvmlvIHZhaXpkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ8WgacWzIGtsYXNpxbMgQ29uZmlnSXRlbXMgbmVidXMgc2F1Z29taSAiRWxhc3RpY3NlYXJjaCIgc2VydmVyeWplLiBOb3JpbnQgdGFpIHByaXRhaWt5dGkgZXNhbWllbXMgQ0ksIENJIG1pZ3JhY2lqxIUgcmVpa2lhIHBhbGVpc3RpIHBlciBrb25zb2zEmSwgcGFrZWl0dXMgxaFpxIUgcGFyaW5rdMSvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICciRWxhc3RpY3NlYXJjaCIgc2VydmVyeWplIG5lYnVzIHNhdWdvbWkgIkNvbmZpZ0l0ZW1zIiBzdSDFoWlvbWlzIGRpZWdpbW8gYsWrc2Vub21pcy4gTm9yaW50IHRhaSBwcml0YWlreXRpIGVzYW1pZW1zIENJLCBDSSBwZXJrxJdsaW3EhSByZWlraWEgcGFsZWlzdGkgcGVyIGtvbnNvbMSZLCBwYWtlaXR1cyDFoWnEhSBwYXJpbmt0xK8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byByaWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGxpbWl0YXMgdmllbmFtZSBwdXNsYXB5amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWfFq3JhY2lqb3MgdmFsZHltbyBkdW9tZW7FsyBiYXrEly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBtYXNpbmlzIG1vZHVsaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwYWllxaFrYSBhZ2VudG8gc8SFc2Fqb3MgZ2FsaW5pYW1lIG1hcsWhcnV0aXphdG9yaXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ1N1a3Vya2l0ZSBpciB0dmFya3lraXRlIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXBpYnLEl8W+dGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ1N1a3VyaWEgIkNvbmZpZ0l0ZW1zIiBiaWxpZXR1cyB0YW0gdGlrcmFpcyBsYWlrbyBtb21lbnRhaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0tsaWVudGFpIGdhbGkgbWF0eXRpIGlzdG9yaW5lcyBDSSB2ZXJzaWphcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS2xpZW50YWkgdHVyaSBnYWxpbXlixJkgcmFua2luaXUgYsWrZHUgcGVyanVuZ3RpIGlzdG9yaW5lcyBDSSB2ZXJzaWphcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdOdW1hdHl0aWVqaSBkdW9tZW55cywga3VyaXVvcyByZWlraWEgbmF1ZG90aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcGFpZcWha29zIGVrcmFubyBhdHJpYnV0dWkuIFBhdnl6ZHlzOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ051bWF0eXRpZWppIGR1b21lbnlzLCBrdXJpdW9zIHJlaWtpYSBuYXVkb3RpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwYWllxaFrb3MgZWtyYW5vIGF0cmlidXR1aS4gUGF2eXpkeXM6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdBcGlicsSXxb50aSB2ZWlrc211cywga2FpIHN1c2lldMWzIG9iamVrdMWzIHZhbGRpa2x5amUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKSB5cmEgbnVzdGF0eW3FsyBteWd0dWthcy4gQXRrcmVpcGtpdGUgZMSXbWVzxK8sIGthZCDFoWl1b3NlIHZlaWtzbXVvc2UgdHVyaSBixat0aSB1xb5yZWdpc3RydW90aSDFoWllIEpTIGlyIENTUyBmYWlsYWk6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGlyIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmtpdGUgIlRlbXBsYXRlOjpUb29sa2l0IiBzY2hlbcSFLCBza2lydMSFIHZlcnNpasWzIGVpbHV0xJdtcy4gTmF1ZG9qYW1hIHRpayB0YWRhLCBqZWkgdmVyc2lqxbMgZWlsdcSNacWzIG1vZHVsaXMgbnVzdGF0eXRhcyDEryBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdBcGlicsSXxb5raXRlIHPEhWx5Z8WzLCBrdXJpb21pcyBrbGllbnR1aSBsZWlkxb5pYW1hIG1hdHl0aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFLCByaW5raW7Ery4gU8SFbHlnYXMgZ2FsaW1hIGFwcmlib3RpIHRhbSB0aWtyb21zIGtsaWVudMWzIGdydXDEl21zLiBQYXZhZGluaW1hcyB5cmEgdmllbmludGVsaXMgcHJpdmFsb21hcyBhdHJpYnV0YXMuIEplaSBraXTFsyBwYXJpbmvEjWnFsyBuZW51cm9keXRhLCB2aXNpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkgYnVzIG1hdG9taSB0b2plIGthdGVnb3Jpam9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhbWkgcmVpa2FsaW5naSBsZWlkaW1haSBpxaF0cmludGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudHVzIG5hdWRvamFudCBiZW5kcsSFasSFIHPEhXNhasSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWFtaSByZWlrYWxpbmdpIGxlaWRpbWFpIGdhdXRpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnR1cyBuYXVkb2phbnQgYmVuZHLEhWrEhSBzxIVzYWrEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhbWkgcmVpa2FsaW5naSBsZWlkaW1haSBpZcWha290aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgbmF1ZG9qYW50IGJlbmRyxIVqxIUgc8SFc2FqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdBcGlicsSXxb5pYSBSZWlrYWxpbmdpIGxlaWRpbWFpIG51c3RhdHl0aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMgbmF1ZG9qYW50IGJlbmRyxIVqxIUgc8SFc2FqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhIGFwxb52YWxnb3MgbW9kdWzErywgc2tpcnTEhSBtYcW+YWphbSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHPEhXJhxaFvIHZhaXpkdWkgcm9keXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdOdXN0YXRvLCBhciBtYXpnxbMganVuZ3R5c2UgdHVyaSBixat0aSByb2RvbW9zIG51b3JvZG9zIHRpcG8gZXRpa2V0xJdzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWEgcmVndWxpYXJpYXMgacWhcmFpxaFrYXMgYXRza2lyYWkga2lla3ZpZW5haSAiQ29uZmlnSXRlbSIga2xhc2VpLCBrYWQgYsWrdMWzIGdhbGltYSBwYXRpa3JpbnRpICJDb25maWdJdGVtIiBwYXZhZGluaW3EhSBpciByb2R5dGkgYXRpdGlua2FtdXMga2xhaWTFsyBwcmFuZcWhaW11cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOdXN0YXRvIGdhbGltdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdXN0YXRvIG51bWF0eXRvam8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHLFq8WhaWF2aW11aSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgcmV6dWx0YXR1b3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVzdGF0byBudW1hdHl0xIVqxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHLFq8WhaWF2aW11aSBrbGllbnTFsyBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyByZXp1bHRhdHVvc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTnVzdGF0byBudW1hdHl0b2pvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBhdHJpYnV0xIUsIHNraXJ0xIUgxaFpb3Mgb3BlcmFjaWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyByZXp1bHRhdHVpIHLFq8WhaXVvdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdOdXN0YXRvIG51bWF0eXTEhWrEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHR2YXJrxIUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIHJlenVsdGF0dW9zZS4gQXVrxaF0eW46IHNlbmlhdXNpYXMgdmlyxaF1amUuIMW9ZW15bjogbmF1amF1c2lhcyB2aXLFoXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ051c3RhdG8gbnVtYXR5dG9qaSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHR2YXJrYSBrbGllbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIHJlenVsdGF0dW9zZS4gQXVrxaF0eW46IHNlbmlhdXNpYXMgdmlyxaF1amUuIMW9ZW15bjogbmF1amF1c2lhcyB2aXLFoXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ051c3RhdG8gcGFnYWwgbnV0eWzEl2ppbcSFIHJvZG9tdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0FwaWJyxJfFvmlhbWFzIG51bWF0eXRhc2lzIHJvZG9txbMgc2FudHlracWzIGd5bGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdOdXN0YXRvIHBhZ2FsIG51dHlsxJdqaW3EhSByb2RvbcSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdOdXN0YXRvIHBhZ2FsIG51dHlsxJdqaW3EhSByb2RvbcSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuIFBhdnl6ZHlzOiAiS2V5IiAocmFrdGFzKSB0dXJpIHR1csSXdGkgZGluYW1pbmlvIGxhdWtvIHBhdmFkaW5pbcSFLCDFoWl1byBhdHZlanUgIlgiLCAiQ29udGVudCIgKHR1cmlueXMpIHR1cmkgdHVyxJd0aSBkaW5hbWluaW8gbGF1a28gcmVpa8WhbcSZLCBwcmlrbGF1c2FuxI1pxIUgbnVvIGRpbmFtaW5pbyBsYXVrbyB0aXBvLCAiVGV4dCIgKHRla3N0YXMpOiAiYSB0ZXh0IiAodGVrc3RhcyksICJEcm9wZG93biIgKGnFoXNrbGVpZMW+aWFtYSk6ICIxIiAoacWhc2tsZWlkxb5pYW1hKSwgIkRhdGUvVGltZSIgKGRhdGEgaXIgbGFpa2FzKTogUGFpZcWha2FfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGlyIGFyYmEgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9c2F2YWl0xJc7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhIG51bWF0eXTEhWrEryBrbGFzxJdzICJJVFNNQ29uZmlnSXRlbSIgc3Vib2JqZWt0xIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOdXN0YXRvIGdhbGltdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ051c3RhdG8gxaFpbyBla3Jhbm8gdGVrc3RvIHJlZGFrdG9yaWF1cyBrb21wb25lbnRvIGF1a8WhdMSvLiDErnZlc2tpdGUgc2thacSNacWzIChwaWtzZWxpYWkpIGFyYmEgcHJvY2VudGluxJkgdmVydMSZIChzYW50eWtpbsSXKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVzdGF0byBDSSBhcGlicsSXxb5pbW8gcmVkYWt0b3JpYXVzIGVpbHXEjWnFsyBza2FpxI1pxbMgYWRtaW5pc3RyYXRvcmlhdXMgc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdOdXN0YXRvIMSvdnlraW8gYsWrc2VuxbMgZWlsacWha3VtxIUgbnVvIGF1a8WhdMWzIChwdnouLCBrcml0acWha8WzKSBpa2kgxb5lbcWzIChwdnouLCBmdW5rY2luacWzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdBcGlicsSXxb5pYW1vcyBhdGl0aW5rYW1vcyBkaWVnaW1vIGLFq3Nlbm9zLCBrdXJpb3NlIHN1c2lldGkgYmlsaWV0YWkgZ2FsaSB0dXLEl3RpIMSvdGFrb3MgQ0kgYsWrc2VuYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBBZ2VudElUU01Db25maWdJdGVtIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBDdXN0b21lcklUU01Db25maWdJdGVtIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ051c3RhdG8gbnVvcm9kxbMgbGVudGVsxJdzIHN1ZMSXdGluZ2FtZSByb2RpbnlqZSByb2RvbXVzIHZpc8WzIGtsYXNpxbMgS0kgc3R1bHBlbGl1cy4gSmVpIMSvcmHFoW8gbsSXcmEsIHJvZG9taSBudW1hdHl0aWVqaSBzdHVscGVsaWFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTnVzdGF0byBudW9yb2TFsyBsZW50ZWzEl3Mgc3VkxJd0aW5nYW1lIHJvZGlueWplIHJvZG9tdXMgS0kgc3R1bHBlbGl1cywgcHJpa2xhdXNvbWFpIG51byBLSSBrbGFzxJdzLiBQcmllxaEga2lla3ZpZW7EhSDEr3JhxaHEhSB0dXJpIGLFq3RpIMSvcmHFoXl0YXMga2xhc8SXcyBwYXZhZGluaW1hcyBpciBkdmlndWJpIGR2aXRhxaFraWFpICh0LiB5LiBDb21wdXRlcjo6KS4gWXJhIGtlbGV0YXMgQ0kgYXRyaWJ1dMWzLCBrdXJpZSBiZW5kcmkgdmlzaWVtcyBDSSAocGF2eXpkeXMga2xhc8SXcyBDb21wdXRlciAoS29tcGl1dGVyaXMpOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBOb3JpbnQgcGFyb2R5dGkgYXRza2lydXMgQ0kgYXRyaWJ1dHVzLCBhcGlicsSXxb50dXMgQ0kgYXBpYnLEl8W+dHlqZSwgcmVpa2lhIG5hdWRvdGkgdG9racSFIHNjaGVtxIUgKGtsYXPEl3MgQ29tcHV0ZXIgcGF2eXpkeXMpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSmVpIG7El3JhIENJIGtsYXPEl3MgxK9yYcWhbywgcm9kb21pIG51bWF0eXR1b3NpdXMgbnVzdGF0eW11cyBhdGl0aW5rYW50eXMgc3R1bHBlbGlhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdBcGlicsSXxb5pYSwga3VyaXVvcyBlbGVtZW50dXMgZ2FsaW1hIG5hdWRvdGkgIkFjdGlvbiIgdHJlxI1pYWphbWUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyb3MgbHlneWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ051c3RhdG8sIGt1cmllIGVsZW1lbnRhaSB5cmEgcHJpZWluYW1pIHBpcm1vam8gbHlnaW8gSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdOdXN0YXRvLCBrdXJpZSBlbGVtZW50YWkgeXJhIHByaWVpbmFtaSBhbnRyYWphbWUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyb3MgbHlneWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdBcGlicsSXxb5pYSwga29raW8gdGlwbyBudW9yb2RhICjEr3ZhcmR5dGEgacWhIGJpbGlldG8gcGVyc3Bla3R5dm9zKSBnYWxpIHR1csSXdGkgxK90YWtvcyBzdXNpZXRvcyBDSSBixatrbGVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ051c3RhdG8sIGtva2lvIHRpcG8gYmlsaWV0YXMgZ2FsaSB0dXLEl3RpIMSvdGFrb3Mgc3VzaWV0b3MgQ0kgYsWra2xlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBcGlicsSXxb5pbW8gYXRuYXVqaW5pbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdJxaF0cmludGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0RpZWdpbW8gYsWrc2Vub3Mgc3BhbHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RpZWdpbW8gYsWrc2VuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdWJsaWthdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRGluYW1pbmnFsyBsYXVrxbMgxK92eWtpxbMgbW9kdWxpcywga3VyaXMgxb55bWkga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcGlicsSXxb50aXMga2FpcCBuZXNpbmNocm9uaXp1b3RhcywgamVpIHBhc2lrZWnEjWlhIGRpbmFtaW5pYWkgbGF1a2FpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pbmlhaSBsYXVrYWksIHJvZG9taSBhZ2VudG8gc8SFc2Fqb3MgcGFwaWxkb21vIElUU00gbGF1a28gZWtyYW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWluaWFpIGxhdWthaSwgcm9kb21pIGtsaWVudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGFwxb52YWxnb3MgZWtyYW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWluaWFpIGxhdWthaSwgcm9kb21pIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ8SuanVuZ2lhbWEga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIG1hc2luaW8gdmVpa3NtbyBmdW5rY2lqYSwga2FkIGFnZW50byBwcmlla2luxJdqZSBkYWx5amUgdmllbnUgbWV0dSBixat0xbMgZ2FsaW1hIGRpcmJ0aSBzdSBkYXVnaWF1IG5laSB2aWVudSBrb25maWfFq3JhY2lqb3MgZWxlbWVudHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfErmp1bmdpYW1hIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBtYXNpbmlvIHZlaWtzbW8gZnVua2NpamEgdGlrIGnFoXZhcmR5dG9tcyBncnVwxJdtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnxK52eWtpxbMgbW9kdWxpcywgc2tpcnRhcyBudXN0YXR5dGkgInRpY2tldC1jb25maWdpdGVtLWxpbmsiIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBixatzZW7EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGluZGVrc28gbGF1a2FpLCBuYXVkb2phbWkgdmlzbyB0ZWtzdG8gcGFpZcWha2FpLiBMYXVrYWkgdGFpcCBwYXQgc2F1Z29taSwgdGHEjWlhdSBuxJdyYSBwcml2YWxvbWkgYmVuZHJhaSBmdW5rY2lqYWkuIFByaWVkxbMgxK90cmF1a2ltxIUgZ2FsaW1hIGnFoWp1bmd0aSBudXN0YXRhbnQgxK9yYcWhbyByZWlrxaFtxJkgMCBhcmJhIGrEryBpxaF0cmluYW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGluZGVrc2Ugc2F1Z29taSBsYXVrYWksIGt1cmllIG5hdWRvamFtaSBuZSB0aWsgdmlzbyB0ZWtzdG8gcGFpZcWha2FpLCBiZXQgaXIga2l0aWVtcyBkYWx5a2Ftcy4gS2FkIGZ1bmtjaWpvcyBixat0xbMgcGlsbmFpIGnFoW5hdWRvdG9zLCB2aXNpIGxhdWthaSB5cmEgcHJpdmFsb21pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyJHZW5lcmljSW50ZXJmYWNlIiBtb2R1bGlvIHJlZ2lzdHJhY2lqYSAiQ29uZmlnSXRlbUZldGNoIiBpxaFrdmlldMSXam8gc2x1b2tzbml1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICciR2VuZXJpY0ludGVyZmFjZSIgbW9kdWxpbyByZWdpc3RyYWNpamEgIkNvbmZpZ0l0ZW1GZXRjaCIgacWha3ZpZXTEl2pvIHNsdW9rc25pdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyJHZW5lcmljSW50ZXJmYWNlIiBtb2R1bGlvIHJlZ2lzdHJhY2lqYSAiQ29uZmlnSXRlbUZldGNoIiBpxaFrdmlldMSXam8gc2x1b2tzbml1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfErnRyYXVrdGkgZGllZ2ltbyBixatzZW5hcyDEryBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWvEhSBrbGllbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxK50cmF1a3RpIGluY2lkZW50byBixatzZW5hcyDEryBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWvEhSBrbGllbnTFsyBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RpZMW+aWF1c2lhcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzLCBrdXJpZSBidXMgcm9kb21pIMWhaW9zIG9wZXJhY2lqb3MgcmV6dWx0YXRlLCBza2FpxI1pdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxpcywgc2tpcnRhcyB1xb4ga2xhc8SZIGF0c2FraW5nYWkgZ3J1cGVpIHBhdGlrcmludGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxpcywgc2tpcnRhcyBwYXRpa3JpbnRpIGdydXDEmSwgYXRzYWtpbmfEhSB1xb4ga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgc3RhdGlzdGlrb3MgZ2VuZXJhdmltbyBtb2R1bGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ1BhdmFkaW5pbW8gbW9kdWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtZXJpbyBtb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMsIHJvZG9txbMga2lla3ZpZW5hbWUgcGFpZcWha29zIHJlenVsdGF0xbMgcHVzbGFweWplIGFnZW50byBzxIVzYWpvamUsIHNrYWnEjWl1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlnxatyYWNpam9zIGVsZW1lbnTFsywga3VyaWUgYnVzIHJvZG9taSBraWVrdmllbmFtZSBwYWllxaFrb3MgcmV6dWx0YXTFsyBwdXNsYXB5amUga2xpZW50byBzxIVzYWpvamUsIHNrYWnEjWl1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0xbMsIGt1cmnFsyByZWlraWEgaWXFoWtvdGksIGtpZWsgxK9yYcWhxbMgaXIga29raXVzIGF0cmlidXR1cyByb2R5dGkuIENvbmZpZ0l0ZW0gYXRyaWJ1dGFpIHR1cmkgYsWrdGkgYWnFoWtpYWkgc2F1Z29taSBwZXIgIkVsYXN0aWNzZWFyY2giLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdBcMW+dmFsZ2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFpLCBza2lydGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIGthdGVnb3Jpam9tcyBhZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01hxb5vc2lvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb3Mgc3R1bHBlbGnFsyBmaWx0csWzIHBhcmFtZXRyYWkuIEF0a3JlaXBraXRlIGTEl21lc8SvOiBudXN0YcSNaXVzICJBY3RpdmUiIHZlcnTEmSAwLCBhZ2VudGFpIG5lZ2FsxJdzIHJlZGFndW90aSB0aWsgxaFpb3MgZ3J1cMSXcyBudXN0YXR5bcWzIHNhdm8gYXNtZW5pbsSXc2UgcGFyaW5rdHlzZSwgdGHEjWlhdSBhZG1pbmlzdHJhdG9yaWFtcyB2aXMgdGllayBidXMgbGVpZMW+aWFtYSByZWRhZ3VvdGkga2l0byBuYXVkb3Rvam8gbnVzdGF0eW11cy4gTmF1ZG9raXRlICJQcmVmZXJlbmNlR3JvdXAiLCBub3LEl2RhbWkgdmFsZHl0aSwga3VyaW9qZSBzcml0eWplIMWhaWUgbnVzdGF0eW1haSB0dXLEl3TFsyBixat0aSByb2RvbWkgbmF1ZG90b2pvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfErmRpZWdpbW8gYsWrc2VuxbMgcGFyYW1ldHJhaSBudXNwYWx2aW50aSBhZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ2RpZWdpbW8gYsWrc2VuxbMgcGFyYW1ldHJhaSBhZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdCZW5kcsWzasWzIGthdGFsb2dvIGF0cmlidXTFsyBsZWlkaW3FsyBncnVwacWzIHBhdnl6ZMW+acWzIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZSBlc2FuxI1pxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIHZhcmTFsyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplIGVzYW7EjWnFsyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGtsYXNpxbMgbnVtZXJpbyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1B1c2xhcGnFsyAoa3VyaXVvc2Ugcm9kb21pIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkpIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50byBzxIVzYWpvcyBudW9zdGF0xbMgcm9kaW55amUgZXNhbsSNacWzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMga2xhc2nFsyB2ZXJzaWpvcyBlaWx1dMSXcyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZSBlc2FuxI1pxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIGtvbmZpZ8WrcmFjaWpvcyBlaWx1dMSXcyDFoWFibG9ubyDEr3JhbmtpxbMgcmlua2luaW8gbW9kdWxpbyBwYXJhbWV0cmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplIGVzYW7EjWnFsyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGtsYXNpxbMgdmVyc2lqb3MgdHJpZ2VyaW8gcGFyYW1ldHJhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdMZWlkaW3FsyBncnVwxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcHJpanVuZ2ltbyB2ZWlrc23EhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGVrcmFuxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBsYW5nxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbsSFIGtsaWVudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgbWVkxb5pbyBwZXLFvmnFq3JvcyBla3JhbsSFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwcmlhcnRpbmltbyBla3JhbsSFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWTEl2ppbW8gbGFuZ8SFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWksIGthZCBixat0xbMgZ2FsaW1hIG5hdWRvdGkgYWdlbnRvIHPEhXNham9zIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGVrcmFuxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byByZWRhZ2F2aW1vIGVrcmFuxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSwga2FkIGLFq3TFsyBnYWxpbWEgbmF1ZG90aSBhZ2VudG8gc8SFc2Fqb3MgaXN0b3Jpam9zIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGVrcmFuxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpLCBrYWQgYsWrdMWzIGdhbGltYSBuYXVkb3RpIGFnZW50byBzxIVzYWpvcyBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBzcGF1c2RpbmltbyBla3JhbsSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUmVpa2FsaW5nb3MgcHJpdmlsZWdpam9zIG5vcmludCBpxaF0cmludGkga29uZmlnxatyYWNpam9zIGVsZW1lbnR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdJZcWha290aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXV0b21hdGnFoWthaSBudXN0YXR5a2l0ZSBLSSBpbmNpZGVudG8gYsWrc2VuxIUsIGthaSBiaWxpZXRhcyBzdXNpZWphbWFzIHN1IEtJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051c3RhdG8gZGllZ2ltbyBixatzZW7EhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGRpZG1lbmluaWFtZSBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051c3RhdG8gaW5jaWRlbnRvIGLFq3NlbsSFIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gZGlkbWVuaW7El3Mga29uZmlnxatyYWNpam9zIGVrcmFuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5pdSByb2RvbWEgbnVvcm9kYSwgbGVpZMW+aWFudGkgc3VzaWV0aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFIHN1IGtpdHUgb2JqZWt0dSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWFydGluaW1vIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvZG8gbWVuaXUgbnVvcm9kxIUsIHNraXJ0xIUgcGFzaWVrdGkga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGlzdG9yaWrEhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ29qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuaXUgcm9kb21hIG51b3JvZGEsIGt1cmlhIGdhbGltYSBwYXNpZWt0aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gaXN0b3JpasSFIGFnZW50byBzxIVzYWpvcyBwcmlhcnRpbmltbyByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb2RvbWEgbWVuaXUgbnVvcm9kYSwgc2tpcnRhIGnFoXRyaW50aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFIGpvIHByaWFydGludGFtZSBhZ2VudG8gc8SFc2Fqb3Mgcm9kaW55amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdSb2RvIG1lbml1IG51b3JvZMSFLCBrYWQga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBudW9yb2RvcyBixat0xbMgcm9kb21vcyBtZWTFvmlvIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvZG9tYSBtZW5pdSBudW9yb2RhLCBza2lydGEgZHVibGl1b3RpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXDFvnZhbGdvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbml1IHJvZG9tYSBudW9yb2RhLCBza2lydGEga29uZmlnxatyYWNpam9zIGVsZW1lbnR1aSBkdWJsaXVvdGkgYWdlbnRvIHPEhXNham9zIHByaWFydGluaW1vIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kb21hIG1lbml1IG51b3JvZGEsIHNraXJ0YSByZWRhZ3VvdGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSBhZ2VudG8gc8SFc2Fqb3MgcHJpYXJ0aW50YW1lIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuaXUgcm9kb21hIG51b3JvZGEsIGt1cmlhIGdhbGltYSBncsSvxb50aSDEryBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWFydGluaW1vIHJvZGluxK8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kb21hIG1lbml1IG51b3JvZGEsIHNraXJ0YSBzcGF1c2RpbnRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUgYWdlbnRvIHPEhXNham9zIHByaWFydGludGFtZSByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb2RvbWEgbWVuaXUgbnVvcm9kYSwgc2tpcnRhIHByaWFydGludGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ29qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kbyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGlzdG9yaWrEhSAoYXR2aXJrxaF0aW5lIHR2YXJrYSkgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTnVtYXR5dG9qaSBrYXRlZ29yaWphLCBrdXJpIHJvZG9tYSwgamVpIG5lcGFzaXJpbmt0YSBuxJcgdmllbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gaWRlbnRpZmlrYXRvcml1cywgcHZ6LiwgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIE51bWF0eXRvamkgcmVpa8WhbcSXIHlyYSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpxaFrYWkgcGFsZWlkxb5pYSBDb25maWdJdGVtRmV0Y2ggaW52b2thdG9yacWzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaWphIFN0eWdpbmnFsyBlaWx1dMSXIEnFoXJhacWha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lqb3MgZWlsdXTEl3MgbW9kdWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaWphIFRyaWdnZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnQXIgZ2FsaW1hIGnFoXZlbmd0aSAiQ29uZmlnSXRlbUFDTCIgdnlrZHltbyB0aWtyaW5hbnQgdGFscHlrbG9qZSBlc2FuxI1pxbMgbGF1a8WzIHByaWtsYXVzb215YmVzLiBUYWkgZ2FsaSBwYWdlcmludGkgZm9ybXVsaWFyxbMgxK9rxJdsaW1vIGxhaWvEhSwgdGHEjWlhdSB0dXJpIGLFq3RpIGnFoWp1bmd0YSwgamVpIEFDTE1vZHVsZXMgdHVyaSBixat0aSBuYXVkb2phbWkgSVRTTUNvbmZpZ0l0ZW0tIGlyIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdLb2tpYSBiZW5kcmEgaW5mb3JtYWNpamEgcGF0ZWlraWFtYSBhbnRyYcWhdMSXamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2xhc8SXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ3Bhc2F1bGluaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrY2luaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByaWXFoXByb2R1a2NpbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0eXZ1cyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBjb2xpbyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIGNvbGlzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgY29saW8gKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgY29saW8gKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOSBjb2xpxbMgc3RvdmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBjb2xpbyAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBjb2xpYWkgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxIGNvbGlvIHN0b3Zhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgY29saW8gKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMyBjb2xpxbMgc3RvdmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBjb2xpbyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgY29saWFpICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBjb2xpbyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGNvbGlvICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGNvbGlvICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBjb2xpbyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgY29saW8gKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGNvbGlvICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBjb2xpYWkgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBjb2xpbyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IGNvbGlvICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgY29saW8gKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IGNvbGlvICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIGNvbGlvICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGNvbGlvICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgY29saW8gKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBjb2xpYWkgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBjb2xpYWkgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGNvbGlvICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBjb2xpbyAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBjb2xpbyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBjb2xpxbMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgY29saW8gKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0Fwc2thaXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZXPFsyBwcmlza3lyaW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2dpbmlzIHRlbGVmb25hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1ByaWV0YWlzbyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0FrdW11bGlhdG9yaWF1cyB0YWxwYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0FrdW11bGlhdG9yaWF1cyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1Bhc3RhdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdNYWdpc3RyYWzEl3Mgc8SFc2FqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSBrbGFzxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ1RhbHBhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdWaWVub3MgdmFpemRvIHBsb2vFoXTEl3MgdGFscGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLb3J0ZWzEl3MgbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0tvcnRlbGnFsyBza2FpdHl0dXZhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLb3J0ZWzEl3MgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0tsaWVudMWzIHNlcnRpZmlrYXRhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbnRvIHByb2dyYW1pbsSXIMSvcmFuZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS2xpZW50byBrYXRlZ29yaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0xhaWtyb2TFvmlvIHJvZHlrbMSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdMYWlrcm9kxb5pxbMgZ3JlaXRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kbyBwYXNpcmHFoXltbyBzZXJ0aWZpa2F0YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuY2luaXMgdGVsZWZvbmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsdGF2aW1vIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdTdXNpc2lla2l0ZSBzdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnU3VzaXNpZWtpdGUgc3UgcGxhdGludG9qdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnRlaW5lcmnFsyB2YWxkeW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1N1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdTdXRhcnRpZXMgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdTdXRhcnRpZXMgbGFpa290YXJwaXMgbnVvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1N1dGFydGllcyBsYWlrb3RhcnBpcyBpa2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQmVsYWlkaXMgdGVsZWZvbmFzIChERUNUIHRlbGVmb25hcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnScWhbGFpZMWzIHZpZW5ldGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTGljZW5jaWrFsyBza2FpxI1pdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ1N1a8WrcmltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdQYXNpcmlua3RpbmlzIHN0b3Zhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCByZXplcnZ1b3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMgc2VydmVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ1PEhXNrYWl0b3MgZmFrdMWrcm9zIGRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1XFvnNha3ltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdHYXJhbnRpam9zIGnFoWRhdmltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0nFoWxlaWRpbW8gZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnU3RhbGluaXMga29tcGl1dGVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50xbMgcGFzaXJhxaF5bW8gc2VydGlmaWthdGFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBzdGVsYcW+YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0VsLiBwYcWhdG8gc2VydGlmaWthdGFpIChTL01JTUUgc2VydGlmaWthdGFpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdEYXJibyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0dhbGluaXMgSVAgYWRyZXNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1BhcmFtb3MgcGFiYWlnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0dhbGlvamltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdJxaFvcmluaXMga2lldGFzaXMgZGlza2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVWduaWFzaWVuxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdQcm9ncmFtaW7ElyDEr3JhbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnRW5lcmdpam9zIGthdXBpbWFzIHNtYWdyYcSNaXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3Jtb3MgZmFrdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuxaFpesSXcyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ05lbW9rYW1hIHByb2dyYW1pbsSXIMSvcmFuZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnQmVuZHJhIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnVmFpemRvIHBsb2vFoXTEl3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1ZhaXpkbyBwbG9rxaF0xJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdUZWNobmluxJcgxK9yYW5nYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ1RlY2huaW7El3MgxK9yYW5nb3MgbW9kZWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdUZWNobmluxJdzIMSvcmFuZ29zIHN2b3Jpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVzaW7El3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCBwcm90b2tvbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1RhcGF0eWLEl3MgaXIgcHJpZWlnb3MgdmFsZHltYXMgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudG9yaW5pcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdTxIVza2FpdG9zIGZha3TFq3JvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2xhdmlhdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIG1vbml0b3JpdXMgKHNreXN0xbNqxbMga3Jpc3RhbMWzIGVrcmFuYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgbW9uaXRvcml1cyAoxaF2aWVzb3MgZGlvZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdTdGFjaW9uYXJ1c2lzIHRlbGVmb25hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdOZcWhaW9qYW1hc2lzIGtvbXBpdXRlcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnUGxhdHVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJzEgc2x1b2tzbmlzOiBmaXppbmlzIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcyIHNsdW9rc25pczogZHVvbWVuxbMgcnnFoWlvIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnMyBzbHVva3NuaXM6IHRpbmtsbyBzbHVva3NuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnMyBzbHVva3NuaXM6IHRpbmtsbyBzbHVva3NuaXMgKHN1cGVybmV0YXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJzQgc2x1b2tzbmlzOiB0cmFuc3BvcnRvIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnNSBzbHVva3NuaXM6IHNlc2lqb3Mgc2x1b2tzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJzYgc2x1b2tzbmlzOiBwYXRlaWtpbW8gc2x1b2tzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnNyBzbHVva3NuaXM6IHRhaWtvbcWzasWzIHByb2dyYW3FsyBzbHVva3NuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTnVvbW9zIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5jaWpvcyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5jaWpvcyByYWt0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW5jaWpvcyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5jaWpvcyBsYWlrb3RhcnBpcyBudW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbmNpam9zIGxhaWtvdGFycGlzIGlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGnEjWlvIGdlbGXFvmllcyBmb3NmYXRvIChMaUZlUE80KSBha3VtdWxpYXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGnEjWlvIGpvbsWzIChsacSNaW8gam9uxbMpIGFrdW11bGlhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnUGFza29sb3Mgc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ8Suc2lrxatyxJlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0lsZ3VtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0dhbWludG9qYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0RpZMW+aWF1c2lhIGFwa3Jvdm9zIGdhbGlhIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdBdG1pbnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ0F0bWludGllcyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaSBzdGVsYcW+YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsaW9qbyB0ZWxlZm9ubyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsdXNpcyAvIMSvdGVycHRhc2lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsaXMgQXByYcWheW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9yaWF1cyBza2lyaWFtb2ppIGdlYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvcmlhdXMgZHlkaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdQZWzElyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnVGlua2xhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdUaW5rbG8gaW5mb3JtYWNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ1RpbmtsbyBpbmZvcm1hY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnVGlua2xvIGx5Z211byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2VsaW8ta2FkbWlvIChOaUNkKSBha3VtdWxpYXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2VsaW8tbWV0YWxvIGhpZHJpZG8gKE5pTUgpIGFrdW11bGlhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1N1c2l0YXJpbWFzIGTEl2wgaW5mb3JtYWNpam9zIG5lYXRza2xlaWRpbW8gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOZcWhaW9qYW1hc2lzIGtvbXBpdXRlcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnUHJvY2Vzb3JpxbMgc2thacSNaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ09wZXJhdHl2aW9zaW9zIGF0bWludGllcyBtb2R1bGnFsyBza2FpxI1pdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnVmFpemRvIHBsb2vFocSNacWzIHNrYWnEjWl1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBtb25pdG9yaXVzIChvcmdhbmluaXMgxaF2aWVzb3MgZGlvZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdWZWlrbG9zIHPEhW5hdWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdVxb5zYWt5bW8gbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0tpdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0nFocSXamltYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOIEtPREFTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnlzdMSXcyBzdXNpdGFyaW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25vIG51bWVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb25vIHRpcGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRml6aW5pYWkgYnJhbmR1b2xpYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdNYWl0aW5pbW8gdGlla2ltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfErnNpZ3l0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnU3Rvdm8gZ3lsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdTdG92byB2aWVuZXRhaSAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0thbWJhcnlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIGtvcnRlbMSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyBzZXJ0aWZpa2F0YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdQYXJkYXZpbW8gc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnUGFseWRvdmluaXMgdGVsZWZvbmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1NhbmRhcnVzIMWhdmlubyByxatnxaF0aW5pcyAoU0xBKSBha3VtdWxpYXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1Nlcmlqb3MgbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXJpbyBwcm9ncmFtaW7ElyDEr3JhbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnUGFzbGF1Z8WzIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnUGFzbGF1Z29zIMW+eW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ0xpemRvIHRpcGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnUHJvZ3JhbWluxJcgxK9yYW5nYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0dhcnNpYWthbGJpYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcnRpbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdQcmFkaW5pcyBJUCBhZHJlc2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdTYXVneWtsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1NhdWd5a2xvcyBza2lyc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0R1a3RlcmluxJcgxK9tb27Elyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2FudHJhdWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnUGxvbmFzaXMga2xpZW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1NpxatsYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICciVGh1bmRlcmJvbHQiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdJxaEgdmlzbyBncmFmaW7El3MgcGxva8WhdMSXcyBvcGVyYXR5dmlvc2lvcyBhdG1pbnRpZXMgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ0nFoSB2aXNvIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdKdXRpa2xpbmlvIGVrcmFubyBtb25pdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnQm9rxaF0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiDFoWFrb3R1dmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgYXVzaW7El3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUCB0ZWxlZm9uYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0ludGVybmV0byBrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/lv_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omx2X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdWaXNwxIFyxKtnaSBkYXJixKtiYXMgZGF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSWVuxIFrb8WhbyBwaWVwcmFzxKtqdW11IGRhdHUgaWVzdGF0xKtqdW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSXplam/FoW8gYXRiaWxkZXMgZGF0dSBpZXN0YXTEq2p1bWknOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnZhbGTEq2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTWFpbsSrdCBrbGFzZXMgZGVmaW7Eq2NpanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ01haW7Eq3QgbG9tYXMgZGVmaW7Eq2NpanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQga2xhxaF1IGtvbXBsZWt0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ8WgZWl0IHZhcmF0IGltcG9ydMSTdCBSZWFkeTJJbXBvcnQga2xhxaF1IGtvbXBsZWt0dXMsIGt1cm9zIHBhcsSBZMSrdGkgbcWrc3UgdmlzYmllxb7EgWsgaXptYW50b3RpZSBrb25maWd1csSBY2lqYXMgZWxlbWVudGkuIEzFq2R6dSwgxYZlbWlldCB2xJNyxIEsIGthIHZhciBixat0IG5lcGllY2llxaFhbWEgcGFwaWxkdSBrb25maWd1csSBY2lqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXRqYXVuaW7EgXQgZXNvxaHEgXMgdmllbsSrYmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0xJN0IFJlYWR5MkFkb3B0IGtsYXNlcyBrb21wbGVrdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS29uZmlndXLEgWNpamFzIHZpZW51bWEga2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGxvbWEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnS29uZmlndXLEgWNpamFzIHZpZW51bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnS2xhxaF1IGZpbHRycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdMYWkgaXp2ZWlkb3R1IGphdW51IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSwgc2FyYWtzdMSBIGF0bGFzaWV0IGtsYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgZGFyYsSrYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0l6dmlldG/FoWFuYXMgc3TEgXZva2xpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0luY2lkZW50YSBzdMSBdm9rbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1NhaXRlIHV6IGNpdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ05lZGVyxKtncyBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgbnVtdXJzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdDaXRhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBudW11cnMsIGFyIGt1cnUgdGFzIGrEgXNhc2Fpc3RhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZhaSB0aWXFocSBbSB2xJNsYXRpZXMgZHrEk3N0IMWhbyBrb25maWd1csSBY2lqYXMgZWxlbWVudHU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIG5vc2F1a3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTm9zYXVrdW1zIGphdSB0aWVrIGl6bWFudG90cyBDb25maWdJdGVtcyBhciDFocSBZHUoLWllbSkgbnVtdXJ1KC1pZW0pOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpamFzIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnxaDEqyBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdmVyc2lqYXMgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lqYXMgbnVtdXJ1IGphdSBpem1hbnRvIENvbmZpZ0l0ZW1zIGFyIMWhxIFkdSgtaWVtKSBudW11cnUoLWllbSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdJenZpZXRvxaFhbmFzIHN0xIF2b2tsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudGEgdmFsc3RzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgdsSTc3R1cmU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1bEk3N0dXJlcyBzYXR1cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnUGFsaWVsaW7EgXQgc2thdHMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnIFZpZW7Eq2JhcyB1eiBsYXB1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgZGF0aSBuYXYgYXRyYXN0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJenbEk2xpZXRpZXMgxaFvIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1BhbGFpc3QgbWVrbMSTxaFhbnUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtIFRyZWVWaWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnRHppxLx1bWEgbMSrbWVuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQYWxpZWxpbsSBdC9penNsxJNndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdDb25maWdJdGVtIHNhc25pZWd0cyBtYWtzaW3EgWxhaXMgc2FpxaF1IGzEq21lbmlzISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybcSBY2lqYSBwYXIga29uZmlndXLEgWNpamFzIGVsZW1lbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1BhxaFyZWl6xJNqYWlzIGl6dmlldG/FoWFuYXMgc3TEgXZva2xpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnUGHFoXJlaXrEk2phaXMgaW5jaWRlbnRhIHN0xIF2b2tsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnUMSTZMSTasSBcyBpem1hacWGYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnUMSTZMSTam8gcmVpemkgbWFpbsSrdHMgYXInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdKxatzdSBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIG1la2zEk8WhYW5hJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGlrcyBpbXBvcnTEk3RhcyDFocSBZGFzIGtsYXNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdUaWtzIGltcG9ydMSTdGFzIMWhxIFkYXMgbG9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnxYVlbWlldCB2xJNyxIEsIGthIHRpa3MgaXp2ZWlkb3RpIGFyxKsgYXR0aWVjxKtnaWUgZGluYW1pc2tpZSBsYXVraSB1biBHZW5lcmFsQ2F0YWxvZyBrbGFzZXMsIHVuIGF1dG9txIF0aXNrYSBub8WGZW3FoWFuYSBuZW5vdGlrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWYWkgdsSTbGF0aWVzIHR1cnBpbsSBdD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVwaWVjaWXFoWFtYXMgcGllbcSTcnUga2xhc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbsSrY2lqYSBuYXYgZGVyxKtncyBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnUMSBcnNrYXRzOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMgQ29uZmlnSXRlbXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0p1bXMgaXIgbmVwaWVjaWXFoWFtcyB2aXNtYXogdmllbnMgaXp2xJNsxJN0cyBrb25maWd1csSBY2lqYXMgdmllbnVtcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdKdW1zIG5hdiByYWtzdMSrxaFhbmFzIHBpZWvEvHV2ZXMgxaFpbSBrb25maWd1csSBY2lqYXMgZWxlbWVudGFtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc2VpICVzIG5hdiBkZWZpbsSTdGEgZGVmaW7Eq2NpamEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1csSBY2lqYXMgdmllbsSrYmEgIiVzIiBuYXYgYXRyYXN0YSBkYXR1IGLEgXrEkyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOZXZhcsSTamEgaXpkesSTc3Qga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmF2IGF0cmFzdGEgdmVyc2lqYSBDb25maWdJdGVtRU1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCB2YWkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1BpZWvEvHV2ZSBuYXYgZG90YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmV2YXIgcGFyxIFkxKt0IHbEk3N0dXJpLCBuYXYgbm9yxIFkxKt0cyBuZXZpZW5zIENvbmZpZ0l0ZW10ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZXZhciBwYXLEgWTEq3QgdsSTc3R1cmksIG5hdiBwaWXFocS3aXJ0YXMgcGlla8S8dXZlcyB0aWVzxKtiYXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdKYXVucyBrb25maWd1csSBY2lqYXMgZWxlbWVudHMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnSmF1bmEgdmVyc2lqYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQXRqYXVuaW7EgXRzIGl6dmlldG/FoWFuYXMgc3TEgXZva2xpcyAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0amF1bmluxIF0cyBpbmNpZGVudGEgc3TEgXZva2xpcyAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRzIChJRD0lcykgZHrEk3N0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1BpZXZpZW5vdGEgc2FpdGUgdXogJXMgKHRpcHM9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdTYWl0ZSB1eiAlcyAodGlwcz0lcykgZHrEk3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQXRqYXVuaW7EgXRhIENvbmZpZ0l0ZW0gZGVmaW7Eq2NpamEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0amF1bmluxIF0cyBub3NhdWt1bXMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlixat0cyAlcyBhdGphdW5pbsSBdHMgbm8gIiVzIiB1eiAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpamEgJXMgZHrEk3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOYXYgbm9yxIFkxKt0cyBDb25maWdJdGVtSUQgdmFpIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmV2YXIgcGFyxIFkxKt0IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSwgbmF2IHBpZcWhxLdpcnRhcyBwaWVrxLx1dmVzIHRpZXPEq2JhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtRU1JRCAlcyBuYXYgYXRyYXN0cyBkYXR1IGLEgXrEkyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2l6ZHJ1a8SBdHMgJXMgcGllICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdBdHNhdWNlIChlbiknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdOZWRlcsSrZ3Mga2xhc2VzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMga2xhc2VzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnxaBhaSBrbGFzZWkgbmF2IHBpZcWhxLdpcnRhcyBwaWVrxLx1dmVzIHRpZXPEq2JhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05hdiByZXp1bHTEgXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ3VyxJPFoWFuYXMgdmllbnVtYSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmV2YXIgcGFyxIFkxKt0IGVsZW1lbnR1LCBuYXYgcGllxaHEt2lydGFzIHBpZWvEvHV2ZXMgdGllc8SrYmFzIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmF2IGF0cmFzdHMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1ZlcnNpamFzIG5hdiBhdHJhc3RhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdkYXJixKtiYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2JyxKtkaW7EgWp1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGl6dmlldG/FoWFuYXMgc3TEgXZva2xpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGluY2lkZW50YSBzdMSBdm9rbGlzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTmF2IGF0xLxhdWphcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cnMgbmVkZXLEq2dzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnTWVrbMSTxaFhbmFzIHBhcmFtcyBuZWRlcsSrZ3MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnUGFyxIFkxKt0aWUga29uZmlndXLEgWNpamFzIGVsZW1lbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ0l6dmlldG/FoWFuYXMgdmFsc3RzIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnUGHFoXJlaXrEk2phaXMgaW5jaWRlbnRhIHZhbHN0cyB0aXBzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ1N0YXJwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEga2xhc2VzIGllcm9iZcW+b2p1bWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6dsSTbGlldGllcyB2aWVudSB2YWkgdmFpcsSBa2FzIGtsYXNlcywgbGFpIGllcm9iZcW+b3R1IGF0bGFzxIFtb3Mga29uZmlndXLEgWNpamFzIGVsZW1lbnR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBrbGFzZXMgaWVyb2Jlxb5vanVtaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6dsSTbGlldGllcyB2aWVudSB2YWkgdmFpcsSBa2FzIGtsYXNlcywgbGFpIGllcm9iZcW+b3R1IGF0bGFzxIFtb3Mga29uZmlndXLEgWNpamFzIGVsZW1lbnR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWlza3MgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNrcyAodmVyc2lqYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnU2FpdGUgQXRzYXVjZXMgdmVpZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnVmFpIMWhxKsgc2FpdGUgYXR0aWVjYXMgdXogYXRzYXVjZXMgb2JqZWt0YSBDb25maWdJdGVtIHZhaSBzdGF0aXNrbyB2ZXJzaWp1LiBQYcWhcmVpesSTasSBIGluY2lkZW50YSBzdMSBdm9rxLxhIGFwcsSTxLdpbnMgdGllayB2ZWlrdHMgdGlrYWkgZGluYW1pc2thasSBbSBzYWl0xJNtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ0F0bGFzaWV0IGF0cmlixat0dSwgcMSTYyBrdXJhIHRpa3MgbWVrbMSTdGkga29uZmlndXLEgWNpamFzIGVsZW1lbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQsSBemVzIHN0cnVrdMWrcmEgbmF2IGRlcsSrZ2EuIEzFq2R6dSwgbm9yxIFkaWV0IGhhc2ggYXIgZGF0aWVtIFlBTUwgZm9ybcSBdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUwgdmlya25lIGrEgXPEgWsgYXIgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTmVpemRldsSBcyBhdHTEq3LEq3QgdGFidWx1IGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05ldGlrYSBhdHJhc3RpIGF0dGllY8SrZ2llIGRpbmFtaXNraWUgbGF1a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOZXZhciBpZXZpZXRvdCB0YWJ1bMSBIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVGFidWzEgSBjb25maWdpdGVtX2xpbmsgaWV2aWV0b3RhcyAwIHJpbmRhcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYWtzaW3EgWxhaXMgdmllbmEgZWxlbWVudGEgc2thaXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpamFzIHZpcmtuZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdLxLzFq2RhLCBzaW5ocm9uaXrEk2pvdCBkZWZpbsSrY2lqYXMuIEzFq2R6dSwgcMSBcmJhdWRpZXQgxb51cm7EgWx1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0p1bXMgaXIgSVRTTUNvbmZpZ0l0ZW0gZGVmaW7Eq2NpamFzLCBrYXMgbmF2IHNpbmhyb25pesSTdGFzLiBMxatkenUsIGlldmlldG9qaWV0IElUU01Db25maWdJdGVtIGRpbmFtaXNrbyBsYXVrdSBpem1hacWGYXMuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdEYXJixKtiYXMgdGVybWnFhsWhIGJlaWR6aWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVXp0dXLEk8WhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsxIFub3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlbW9udHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1BlbnNpb27Ek3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1DEgXJza2F0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdMSTxaFhbmEgLyBrdmFsaXTEgXRlcyBub2Ryb8WhaW7EgcWhYW5hJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQxIFyc2thdHMgdW4gYXBzdGlwcmluxIFqdW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0tsYcWhdS8gbG9tdSB1biBhciB0xIFtIHNhaXN0xKt0byBsYXVrdSBpbXBvcnTEk8WhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnS2xhc2VzIGltcG9ydMSTxaFhbmFzIGxhaWvEgSBub3Rpa2Ega8S8xatkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNsxJNwdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBhdHTEk2xvdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ8S7YXVqIHBhcGxhxaFpbsSBdCBtZWtsxJPFoWFuYXMgbm9zYWPEq2p1bXVzIGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuxIEuIEl6bWFudG9qb3QgxaFvIGZ1bmtjaWp1LCBqxatzIHZhcmF0IG1la2zEk3QsIHBpZW3Ek3JhbSwga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIG5vc2F1a3VtdSBhciDFocSBZGllbSBub3NhY8SranVtaWVtLCBwaWVtxJNyYW0sICIoKmtleTEqJiYqa2V5MiopIiB2YWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfEu2F1aiBwYXBsYcWhaW7EgXQgbWVrbMSTxaFhbmFzIG5vc2FjxKtqdW11cyBrbGllbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbsSBLiBJem1hbnRvam90IMWhbyBmdW5rY2lqdSwgasWrcyB2YXJhdCBtZWtsxJN0LCBwaWVtxJNyYW0sIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBub3NhdWt1bXUgYXIgxaHEgWRpZW0gbm9zYWPEq2p1bWllbSwgcGllbcSTcmFtLCAiKCprZXkxKiYmJiprZXkyKikiIHZhaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1BpZcWhxLdpcnRpZSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdLbGllbnRhIHV6xYbEk211bWFtIHBpZcWhxLdpcnRpZSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0tsaWVudGEgbGlldG90xIFqYW0gcGllxaHEt2lydGllIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIGllc3RhdMSranVtaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUMSBcmJhdWTEq3QgdW5pa8SBbHUgbm9zYXVrdW11IHRpa2FpIHRhasSBIHBhxaHEgSBDb25maWdJdGVtIGtsYXPEkyAoXCdjbGFzc1wnKSB2YWkgZ2xvYsSBbGkgKFwnZ2xvYmFsXCcpLCBrYXMgbm96xKttxJMsIGthLCBtZWtsxJNqb3QgZHVibGlrxIF0dXMsIHRpZWsgxYZlbXRzIHbEk3LEgSBrYXRycyBlc2/FoWFpcyBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnSXp2xJNsaWV0aWVzIG1vZHVsaSwgbGFpIGlldmllc3R1IG5vc2F1a3VtdSBzaMSTbXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdJenbEk2xpZXRpZXMgbW9kdWxpLCBsYWkgaWV2aWVzdHUgbnVtdXJ1IHNoxJNtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnSXp2xJNsaWV0aWVzIG1vZHVsaSwgbGFpIGlldmllc3R1IHZlcnNpanUgdmlya25lcyBzaMSTbXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnSXp2xJNsaWV0aWVzIGF0cmlixat0dXMsIGthcyBpenJhaXNhIGphdW5hcyB2ZXJzaWphcyBpenZlaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdJenbEk2xpZXRpZXMga2F0ZWdvcmlqYXMsIGtvIHBpZcWhxLdpcnQgxaFhaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhc2VpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0tvbG9ubnUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGZpbHRyaSBDb25maWdJdGVtIFDEgXJza2F0cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbG9ubmFzLCBrdXJhcyB2YXIgZmlsdHLEk3QgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0xIEuIFBpZXrEq21lOiBJciBhdMS8YXV0aSB0aWthaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYXRyaWLFq3RpIHVuIGRpbmFtaXNraWUgbGF1a2kgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIHBpZXZpZW5vxaFhbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIHJlZGnEo8STxaFhbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXLEk2ppZXQgZWxlbWVudHUgbm90aWt1bXUgbW9kdWxpLCBrYXMgYcSjZW50YSBzYXNrYXJuxJMgxLxhdWogcmXEo2lzdHLEk3QgdsSTc3R1cmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBub3Rpa3VtdSBtb2R1bGlzLCBrYXMgYXRqYXVuaW5hIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwYcWhcmVpesSTam8gZGVmaW7Eq2NpanUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXLEk8WhYW5hcyBlbGVtZW50dSB2xJNzdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGRydWvEgcWhYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyxJNqaWV0IHZpZW51bWEgdMSBbHVtbWFpxYZ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gVHJlZSBza2F0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnxaDEgWR1IGtsYcWhdSBDb25maWdJdGVtcyBuZXRpa3Mgc2FnbGFixIF0aSBFbGFzdGljc2VhcmNoIHNlcnZlcsSrLiBMYWkgdG8gcGllbcSTcm90dSBlc2/FoWFqaWVtIENJLCBwxJNjIMWhxKtzIG9wY2lqYXMgbWFpxYZhcyBDSSBtaWdyxIFjaWphIGlyIGrEgXZlaWMsIGl6bWFudG9qb3Qga29uc29saS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgYXIgxaHEgWRpZW0gaXp2aWV0b8WhYW5hcyBzdMSBdm9rxLxpZW0gbmV0aWtzIHNhZ2xhYsSBdGkgRWxhc3RpY3NlYXJjaCBzZXJ2ZXLEqy4gTGFpIHRvIHBpZW3Ek3JvdHUgZXNvxaFhamllbSBDSSwgcMSTYyDFocSrcyBvcGNpamFzIG1hacWGYXMgQ0kgbWlncsSBY2lqYSBpciBqxIF2ZWljLCBpem1hbnRvam90IGtvbnNvbGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGllcm9iZcW+b2p1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGllcm9iZcW+b2p1bXMgdmllbsSBIGxhcMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlndXLEgWNpamFzIHDEgXJ2YWxkxKtiYXMgZGF0dWLEgXplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGxpZWxhIGFwam9tYSBtb2R1bGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgbWVrbMSTxaFhbmEgYcSjZW50YSBpbnRlcmZlaXNhIGFpem11Z3VyxJNqxIEgbWFyxaFydXTEk3TEgWrEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0l6dmVpZG90IHVuIHDEgXJ2YWxkxKt0IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBkZWZpbsSrY2lqYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnSXp2ZWlkbyBDb25maWdJdGVtcyBiacS8ZXRlcyBrb25rcsSTdG9zIGxhaWthIHB1bmt0b3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0tsaWVudGkgdmFyIHNrYXTEq3QgdsSTc3R1cmlza8SBcyBDSSB2ZXJzaWphcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS2xpZW50aWVtIGlyIGllc3DEk2phIG1hbnXEgWxpIHDEgXJzbMSTZ3RpZXMgc3RhcnAgdsSTc3R1cmlza2FqxIFtIENJIHZlcnNpasSBbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdOb2tsdXPEk2p1bWEgZGF0aSwga2FzIGl6bWFudG9qYW1pIGF0cmlixat0YSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbsSBLiBQaWVtxJNyczogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdOb2tsdXPEk2p1bWEgZGF0aSwga2FzIGl6bWFudG9qYW1pIGF0cmlixat0YSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbsSBLiBQaWVtxJNyczogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluxJN0IERhcmLEq2Jhcywga3VyxIFzIHBpZXNhaXN0xKt0byBvYmpla3R1IGxvZ3LEq2vEgSBpciBwaWVlamFtYSBpZXN0YXTEq2p1bXUgcG9nYSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBMxatkenUsIMWGZW1pZXQgdsSTcsSBLCBrYSDFocSrbSBkYXJixKtixIFtIGlyIGrEgWLFq3QgcmXEo2lzdHLEk3RpZW0gxaHEgWRpZW0gSlMgdW4gQ1NTIGZhaWxpZW06IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHVuIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluxJN0IFRlbXBsYXRlOjpUb29sa2l0IHNoxJNtdSB2ZXJzaWp1IHZpcmtuxJNtLiBJem1hbnRvIHRpa2FpIHRhZCwgamEgdmVyc2lqYXMgdmlya25lcyBtb2R1bGlzIGlyIGllc3RhdMSrdHMgdXogVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnTm9zYWtpZXQgbm9zYWPEq2p1bXUga29wdW11LCBzYXNrYcWGxIEgYXIga3VyaWVtIGtsaWVudGFtIGlyIGF0xLxhdXRzIHNrYXTEq3Qga29uZmlndXLEgWNpamFzIGVsZW1lbnR1LiBOb3NhY8SranVtdXMgcMSTYyBpenbEk2xlcyB2YXIgaWVyb2Jlxb5vdCBsxKtkeiBub3RlaWt0xIFtIGtsaWVudHUgZ3J1cMSBbS4gTm9zYXVrdW1zIGlyIHZpZW7Eq2dhaXMgb2JsaWfEgXRhaXMgYXRyaWLFq3RzLiBKYSBuYXYgbm9yxIFkxKt0YXMgY2l0YXMgb3BjaWphcywgxaFhasSBIGthdGVnb3JpasSBIGLFq3MgcmVkemFtaSB2aXNpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluxJMgTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcyBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBkesSTxaFhbmFpLCBpem1hbnRvam90IHZpc3DEgXLEk2pvIHNhc2thcm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW7EkyBOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaWVnxat0dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dXMsIGl6bWFudG9qb3QgdmlzcMSBcsSTam8gc2Fza2FybmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbsSTIE5lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFpLCBpem1hbnRvam90IHZpc3DEgXLEk2pvIHNhc2thcm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW7EkyBOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzIElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGllc3RhdMSrxaFhbmFpLCBpem1hbnRvam90IHZpc3DEgXLEk2pvIHNhc2thcm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbsSTIHDEgXJza2F0YSBtb2R1bGksIGxhaSBwYXLEgWTEq3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBzYXJha3N0YSBtYXpvIHNrYXR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdOb3Nha2EsIHZhaSBtZXpnbHUgc2F2aWVub2p1bW9zIGlyIGrEgW5vcsSBZGEgc2FpdGVzIHRpcGEgZXRpxLdldGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW7EkyByZWd1bMSBcsSBcyBpenRlaWtzbWVzIGthdHJhaSBDb25maWdJdGVtIGtsYXNlaSBhdHNldmnFocS3aSwgbGFpIHDEgXJiYXVkxKt0dSBDb25maWdJdGVtIG5vc2F1a3VtdSB1biBwYXLEgWTEq3R1IGF0Ymlsc3RvxaFvcyBrxLzFq2RhcyB6acWGb2p1bXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ05vc2FrYSBwaWVlamFtxIFzIENJIGtvbG9ubmFzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBIGF0a2FyxKtixIEgbm8gQ0kga2xhc2VzLiBLYXRyYW0gaWVyYWtzdGFtIGrEgXNhc3TEgXYgbm8ga2xhc2VzIG5vc2F1a3VtYSB1biBhdHRpZWPEq2fEgXMga2xhc2VzIHBpZWVqYW1vIGxhdWt1IG1hc8SrdmEuIERpbmFtaXNrbyBsYXVrdSBpZXJha3N0b3MgasSBaWV2xJNybyBzaMSTbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEga29uZmlndXLEgWNpamFzIHZpZW51bWEgYXRyaWLFq3R1IGtvbmZpZ3VyxIFjaWphcyB2aWVudW11IMWhxLdpcm/FoWFuYWkgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIHZpZW51bXUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSBrb25maWd1csSBY2lqYXMgdmllbnVtYSBhdHJpYsWrdHUga2xpZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIHZpZW51bXUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdHUgxaHEt2lyb8WhYW5haS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOb3Nha2Egbm9rbHVzxJNqdW1hIGtvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGF0cmlixat0dSDFocSrcyBvcGVyxIFjaWphcyBrb25maWd1csSBY2lqYXMgdmllbnVtYSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0YSBrb25maWd1csSBY2lqYXMgdmllbnVtYSDFocS3aXJvxaFhbmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2VjxKtidSBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdG9zLiBBdWfFoXVwOiB2ZWPEgWthaXMgaXIgYXVnxaFwdXPEky4gVXogbGVqdTogamF1bsSBa2FpcyBhdWfFoXB1c8STLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2VjxKtidSBrbGllbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdG9zLiBVeiBhdWfFoXU6IHZlY8SBa2FpcyBpciBhdWfFoXB1c8STLiBVeiBsZWp1OiBqYXVuxIFrYWlzIGF1Z8WhcHVzxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOb3Nha2Egbm9rbHVzxJNqdW1hIHLEgWTEq3TEgXMgQ0kga29sb25uYXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0xIEgYXRrYXLEq2LEgSBubyBDSSBrbGFzZXMuIEthdHJhbSBpZXJha3N0YW0gasSBc2FzdMSBdiBubyBrbGFzZXMgbm9zYXVrdW1hIHVuIGF0dGllY8SrZ8SBcyBrbGFzZXMgcGllZWphbW8gbGF1a3UgbWFzxKt2YS4gRGluYW1pc2tvIGxhdWt1IGllcmFrc3RvcyBqxIFpZXbEk3JvIHNoxJNtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdOb3Nha2EgcMSTYyBub2tsdXPEk2p1bWEgcsSBZMSBbW8gYXR0aWVjxKtidSBkemnEvHVtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSByxIFkxKt0byBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGF0cmlixat0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbmFtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSByxIFkxKt0byBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGF0cmlixat0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbmFtLiBQaWVtxJNyczogIktleSIgasSBYsWrdCBkaW5hbWlza8SBIGxhdWthIG5vc2F1a3VtYW0sIMWhYWrEgSBnYWTEq2p1bcSBICJYIiwgIkNvbnRlbnQiIGrEgWLFq3QgZGluYW1pc2vEgSBsYXVrYSB2xJNydMSrYmFpIGF0a2FyxKtixIEgbm8gZGluYW1pc2vEgSBsYXVrYSB0aXBhLCBUZXh0OiAiYSB0ZXh0IiwgRHJvcGRvd246ICIxIiwgRGF0ZS9UaW1lOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyB1biB2YWkgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW7EkyBrbGFzZXMgIklUU01Db25maWdJdGVtIiBub2tsdXPEk2p1bWEgYXBha8Whb2JqZWt0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ05vc2FrYSBwaWVlamFtxIFzIENJIGtvbG9ubmFzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBIGF0a2FyxKtixIEgbm8gQ0kga2xhc2VzLiBLYXRyYW0gaWVyYWtzdGFtIGrEgXNhc3TEgXYgbm8ga2xhc2VzIG5vc2F1a3VtYSB1biBhdHRpZWPEq2fEgXMga2xhc2VzIHBpZWVqYW1vIGxhdWt1IG1hc8SrdmEuIERpbmFtaXNrbyBsYXVrdSBpZXJha3N0b3MgasSBaWV2xJNybyBzaMSTbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTm9zYWthIHRla3N0YSByZWRha3RvcmEga29tcG9uZW50YSBhdWdzdHVtdSDFoWFqxIEgZWtyxIFuxIEuIElldmFkaWV0IHNrYWl0bGkgKHBpa3NlxLxpKSB2YWkgcHJvY2VudHXEgWxvIHbEk3J0xKtidSAocmVsYXTEq3ZpKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9zYWthIHJpbmR1IHNrYWl0dSBDSSBkZWZpbsSrY2lqdSByZWRha3RvcmFtIGFkbWluaXN0cmF0b3JhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnTm9zYWthIGluY2lkZW50dSBzdMSBdm9rxLx1IHNlY8SrYnUgbm8gYXVnc3RhIChwaWVtxJNyYW0sIGNyaWNpdGFsKSBsxKtkeiB6ZW1hbSAocGllbcSTcmFtLCBmdW5rY2lvbsSBbHMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluxJMgYXR0aWVjxKtnb3MgaXp2aWV0b8WhYW5hcyBzdMSBdm9rxLx1cywga3Vyb3Mgc2Fpc3TEq3TEgXMgYmnEvGV0ZXMgdmFyIGlldGVrbcSTdCBLSSBzdGF0dXN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbsSTIHBhcsSBZMSrdMSBcyBDSSBrb2xvbm5hcyBzYWnFoXUgdGFidWxhcyBzYXJlxb7Eo8SrdGFqxIEgc2thdMSBIHZpc8SBbSBDSSBrbGFzxJNtLiBKYSBuYXYgaWVyYWtzdGEsIHRpZWsgcGFyxIFkxKt0YXMgbm9rbHVzxJNqdW1hIGtvbG9ubmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW7EkyBwYXLEgWTEq3TEgXMgQ0kga29sb25uYXMgc2FpxaF1IHRhYnVsYXMgc2FyZcW+xKPEq3RhasSBIHNrYXTEgSBhdGthcsSrYsSBIG5vIENJIGtsYXNlcy4gS2F0cmFtIGllcmFrc3RhbSBqxIFixat0IGFyIHByZWZpa3N1IGtsYXNlcyBub3NhdWt1bWFtIHVuIGR1YnVsdGllbSBkaXZwdW5rdHUga29tdXRhdG9yaWVtICh0LiBpLiwgQ29tcHV0ZXI6OikuIElyIGRhxb5pIENJIGF0cmlixat0aSwga2FzIGlyIGtvcMSrZ2kgdmlzaWVtIENJIChwaWVtxJNycyBrbGFzZWkgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIExhaSBwYXLEgWTEq3R1IGF0c2V2acWhxLd1cyBDSSBhdHJpYsWrdHVzLCBrYXMgZGVmaW7Ek3RpIENJIGRlZmluxKtjaWrEgSwgasSBaXptYW50byDFocSBZGEgc2jEk21hIChwaWVtxJNycyBrbGFzZWkgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSmEgbmF2IGllcmFrc3RhIHBhciBDSSBrbGFzaSwgdGllayBwYXLEgWTEq3RhcyBub2tsdXPEk2p1bWEga29sb25uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTm9zYWthLCBrdXJpIGVsZW1lbnRpIGlyIHBpZWVqYW1pICJBY3Rpb24iIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVrdMWrcmFzIHRyZcWhYWrEgSBsxKttZW7Eqy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdOb3Nha2EsIGt1cmkgZWxlbWVudGkgaXIgcGllZWphbWkgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyYXMgcGlybWFqxIEgbMSrbWVuxKsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ05vc2FrYSwga3VyaSBlbGVtZW50aSBpciBwaWVlamFtaSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1a3TFq3JhcyBvdHJhasSBIGzEq21lbsSrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdOb3Nha2EsIGvEgWRhIHZlaWRhIHNhaXRlIChub3NhdWt0YSBubyBiacS8ZXRlcyBwZXJzcGVrdMSrdmFzKSB2YXIgaWV0ZWttxJN0IHNhaXN0xKt0xIFzIENJIHN0YXR1c3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTm9zYWthLCBrxIFkYSB2ZWlkYSBiacS8ZXRlIHZhciBpZXRla23Ek3Qgc2Fpc3TEq3TEgXMgQ0kgc3RhdHVzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdEZWZpbsSrY2lqYXMgYXRqYXVuaW7EgcWhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgZHrEk8WhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnSXp2aWV0b8WhYW5hcyB2YWxzdHMga3LEgXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdWJsaWvEgXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRGluYW1pc2tvIGxhdWt1IG5vdGlrdW11IG1vZHVsaXMsIGthcyBhdHrEq23EkyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZGVmaW7Eq2NpamFzIGvEgSBuZXNpbmhyb25pesSTdGFzLCBqYSBtYWluxIFzIGRpbmFtaXNraWUgbGF1a2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWlza2llIGxhdWtpLCBrYXMgcmVkemFtaSBhxKNlbnRhIHNhc2thcm5lcyBwYXBpbGR1IElUU00gbGF1a2EgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtaXNraWUgbGF1a2ksIGthcyByZWR6YW1pIGtsaWVudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdGEgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtaXNraWUgbGF1a2ksIGthcyByZWR6YW1pIGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuYXMgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0llc3DEk2pvIGtvbmZpZ3VyxIFjaWphcyB2aWVudW1hIG1hc3ZlaWRhIGRhcmLEq2J1IGZ1bmtjaWp1LCBsYWkgYcSjZW50YSBmcm9udGVuZMSBIHZhcsSTdHUgc3RyxIFkxIF0IGFyIHZhaXLEgWsgbmVrxIEgdmllbnUga29uZmlndXLEgWNpamFzIHZpZW51bXUgdmllbmxhaWt1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0llc2zEk2R6IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtYXN2ZWlkYSBkYXJixKtidSBmdW5rY2lqdSB0aWthaSB1enNrYWl0xKt0YWrEgW0gZ3J1cMSBbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTm90aWt1bXUgbW9kdWxpcywgbGFpIGllc3RhdMSrdHUgY29uZmlnaXRlbS1zdGF0dXMgdXogdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGluZGVrc2EgbGF1a2ksIGthcyB0aWVrIGl6bWFudG90aSBwaWxudGVrc3RhIG1la2zEk8WhYW5haS4gTGF1a2kgYXLEqyB0aWVrIHNhZ2xhYsSBdGksIGJldCB0aWUgbmF2IG9ibGlnxIF0aSBrb3DEk2phaSBmdW5rY2lvbmFsaXTEgXRlaS4gUGllbGlrdW11IGlla8S8YXXFoWFudSB2YXIgYXRzcMSTam90LCBpZXN0YXRvdCBpZXJha3N0YW0gdsSTcnTEq2J1IDAgdmFpIGR6xJPFoW90IHRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGluZGVrc8SBIHNhZ2xhYsSBdGllIGxhdWtpLCBrYXMgdGllayBpem1hbnRvdGkgbmUgdGlrYWkgcGlsbnRla3N0YSBtZWtsxJPFoWFuYWksIGJldCBhcsSrIGNpdMSBbSBsaWV0xIFtLiBQaWxuxKtnYWkgZnVua2Npb25hbGl0xIF0ZWkgdmlzaSBsYXVraSBpciBvYmxpZ8SBdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1xLxhIHJlxKNpc3RyxIFjaWphIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2F0b3JhIHNsxIFuaW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1xLxhIHJlxKNpc3RyxIFjaWphIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2F0b3JhIHNsxIFuaW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdcS8YSByZcSjaXN0csSBY2lqYSBDb25maWdJdGVtRmV0Y2ggaW52b2thdG9yYSBzbMSBbmltLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSWVrxLxhdWogaXp2aWV0b8WhYW5hcyBzdMSBdm9rxLx1cyBrbGllbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJZXR2ZXIgaW5jaWRlbnR1IHN0xIF2b2vEvHVzIGtsaWVudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01ha3NpbcSBbGFpcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2thaXRzLCBrYXMgdGlrcyBwYXLEgWTEq3RzIMWhxKtzIG9wZXLEgWNpamFzIHJlenVsdMSBdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsaXMsIGxhaSBwxIFyYmF1ZMSrdHUgcGFyIGtsYXNpIGF0YmlsZMSrZ28gZ3J1cHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxpcywgbGFpIHDEgXJiYXVkxKt0dSBncnVwdSwga2FzIGlyIGF0YmlsZMSrZ2EgcGFyIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bGlzLCBsYWkgxKNlbmVyxJN0dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBzdGF0aXN0aWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vc2F1a3VtcyBNb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW11cnUgbW9kdWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2thaXRzLCBrYXMgdGlrcyBwYXLEgWTEq3RzIGthdHLEgSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0dSBsYXDEgSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHNrYWl0cywga2FzIHRpa3MgcGFyxIFkxKt0cyBrYXRyxIEgbWVrbMSTxaFhbmFzIHJlenVsdMSBdHUgbGFwxIEga2xpZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdGksIGt1cnVzIG1la2zEk3QsIGNpayBpZXJha3N0dSB1biBrxIFkdXMgYXRyaWLFq3R1cyBwYXLEgWTEq3QuIENvbmZpZ0l0ZW0gYXRyaWLFq3RpIGlyIHNrYWlkcmkgasSBdXpnbGFixIEsIGl6bWFudG9qb3QgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUMSBcnNrYXRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGHFoXUga2F0ZWdvcmlqdSBrYXRlZ29yaWrEgW0gYcSjZW50YSBzYXNrYXJuZXMgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBtYXrEgSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXRhIGtvbG9ubnUgZmlsdHJpZW0uIEzFq2R6dSwgxYZlbWlldCB2xJNyxIE6IGllc3RhdG90ICJBa3TEq3ZzIiB1eiAwLCBhxKNlbnRpIG5ldmFyxJNzIHJlZGnEo8STdCB0aWthaSDFocSrcyBncnVwYXMgaWVzdGF0xKtqdW11cyBzYXbEgXMgcGVyc29uxKtnYWrEgXMgcHJlZmVyZW5jxJNzLCBiZXQgYWRtaW5pc3RyYXRvcmkgam9wcm9qxIFtIHZhcsSTcyByZWRpxKPEk3QgY2l0YSBsaWV0b3TEgWphIGllc3RhdMSranVtdXMgc2F2xIEgdsSBcmTEgS4gSXptYW50b2ppZXQgIlByZWZlcmVuY2VHcm91cCIsIGxhaSBrb250cm9sxJN0dSwga3VyxIEgYXBnYWJhbMSBIMWhaWUgaWVzdGF0xKtqdW1pIGLFq3R1IHJlZHphbWkgbGlldG90xIFqYSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIGl6dmlldG/FoWFuYXMgc3TEgXZva8S8dSBrcsSBc2FpIGHEo2VudGEgc2Fza2FybmVzIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJenZpZXRvxaFhbmFzIHN0xIF2b2vEvHUgcGFyYW1ldHJpIGHEo2VudGEgc2Fza2FybmVzIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnVmlzcMSBcsSrZ28ga2F0YWxvZ2EgYXRyaWLFq3R1IGF0xLxhdWp1IGdydXB1IHBpZW3Ek3J1IHBhcmFtZXRyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgbm9zYXVrdW1hIG1vZHXEvGEgcGFyYW1ldHJpZW0ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYXPEk20gYcSjZW50YSBzYXNrYXJuZXMgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGHFoXUgbnVtdXJ1IG1vZHXEvGEgcGFyYW1ldHJpZW0gYcSjZW50YSBzYXNrYXJuZXMgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdMYXB1IChrdXLEgXMgdGllayBwYXLEgWTEq3RpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50aSkgcGFyYW1ldHJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgdmVyc2lqYXMgdmlya25lcyBtb2R1xLxhIHBhcmFtZXRyaWVtIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGFzxJNtIGHEo2VudGEgaW50ZXJmZWlzYSBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHZlcnNpamFzIHZpcmtuZXMgxaFhYmxvbmEgcsSra3Uga29wdW1hIG1vZHXEvGEgcGFyYW1ldHJpZW0ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYXPEk20gYcSjZW50YSBzYXNrYXJuZXMgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgdmVyc2lqYXMgdHJpZ2VyaW0ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYcWhdSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhc8STbSBhxKNlbnRhIGludGVyZmVpc2EgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0F0xLxhdWp1IGdydXBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBwaWV2aWVub8WhYW5hcyBkYXJixKtidSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaXptYW50b3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBla3LEgW51IGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbnUga2xpZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrb2thIHNrYXTEq2p1bWEgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSB0xIFsdW1tYWnFhmFzIGVrcsSBbnUgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwaWV2aWVub8WhYW5hcyBla3LEgW51IGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgYcSjZW50YSBzYXNrYXJuxJMgaXptYW50b3R1IG1hc3ZlaWRhIElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGVrcsSBbnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcmVkacSjxJPFoWFuYXMgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGHEo2VudGEgc2Fza2FybsSTIGl6bWFudG90dSBla3LEgW51IEhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgYcSjZW50YSBzYXNrYXJuxJMgaXptYW50b3R1IGVrcsSBbnUgZHJ1a8SBdCBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ05lcGllY2llxaFhbcSBcyBwcml2aWzEk8SjaWphcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZHrEk8WhYW5haS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdNZWtsxJN0IGtvbmZpZ3VyxIFjaWphcyB2aWVudW11cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0F1dG9txIF0aXNraSBpZXN0YXRpZXQgS0kgaW5jaWRlbnRhIHN0xIF2b2tsaSwga2FkIGJpxLxldGUgaXIgc2Fpc3TEq3RhIGFyIEtJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0llc3RhdGEgaXp2aWV0b8WhYW5hcyBzdMSBdm9rbGkgYcSjZW50YSBpbnRlcmZlaXNhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrb3B1bWEgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0llc3RhdGEgaW5jaWRlbnRhIHN0xIF2b2tsaSBhxKNlbnRhIGludGVyZmVpc2Ega29uZmlndXLEgWNpamFzIHZpZW51bWEga29wdW1hIGVrcsSBbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RpZWsgcGFyxIFkxKt0YSBzYWl0ZSBpenbEk2xuxJMsIGthcyDEvGF1aiBzYXZpZW5vdCBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYXIgY2l0dSBvYmpla3R1IGHEo2VudGEgaW50ZXJmZWlzYSBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkgcGlla8S8xat0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdsSTc3R1cmVpIGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSBwaWVrxLzFq3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSB2xJNzdHVyZWkgYcSjZW50YSBzYXNrYXJuZXMgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkgZHrEk3N0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYcSjZW50YSBzYXNrYXJuZXMgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2FpdGVzIHRpa3R1IHBhcsSBZMSrdGFzIGvEgSBLb2t1IHNrYXRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIGR1YmzEk3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGllayBwYXLEgWTEq3RhIHNhaXRlIGl6dsSTbG7EkywgbGFpIGR1YmzEk3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhxKNlbnRhIHNhc2thcm5lcyB0xIFsdW1tYWnFhmFzIHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIHJlZGnEo8STdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGHEo2VudGEgc2Fza2FybmVzIHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGllayBwYXLEgWTEq3RhIHNhaXRlIGl6dsSTbG7EkywgbGFpIGF0Z3JpZXp0b3MgYXRwYWthxLwgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIGl6ZHJ1a8SBdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGHEo2VudGEgc2Fza2FybmVzIHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIHBhbGllbGluxIF0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYcSjZW50YSBpbnRlcmZlaXNhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgdsSTc3R1cmkgKHNha8SBcnRvdHUgYXBncmllenTEgSBzZWPEq2LEgSkgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ05va2x1c8STanVtYSBrYXRlZ29yaWphLCBrYXMgdGllayByxIFkxKt0YSwgamEgbmF2IGl6dsSTbMSTdGEgbmV2aWVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBpZGVudGlmaWthdG9ycywgcGllbcSTcmFtLCBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gUMSTYyBub2tsdXPEk2p1bWEgaXIgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBdXRvbcSBdGlza2kgaWVkYXJiaW5hIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2F0b3J1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaWphIFZpcmtuZXMgdmlya25lcyBpenRlaWtzbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lqYXMgdmlya25lcyBtb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpamEgVHJpZ2dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnVmFpIENvbmZpZ0l0ZW1BQ0wgaXpwaWxkaSB2YXIgbm92xJNyc3QsIHDEgXJiYXVkb3Qga2XFoWF0bWnFhsSBIGVzb8WhbyBsYXVrdSBhdGthcsSrYmFzLiBUYXMgdmFyIHV6bGFib3QgdmVpZGxhcHUgaWVsxIFkZXMgbGFpa3UsIGJldCB0YXMgaXIgasSBYXRzbMSTZHosIGphIEFDTE1vZHVsZXMgaXIgasSBaXptYW50byBJVFNNQ29uZmlnSXRlbS0gdW4gRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0vEgWRhIHZpc3DEgXLEq2dhIGluZm9ybcSBY2lqYSBpciBub3LEgWTEq3RhIGdhbHZlbsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2LEgWzEgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWt0xKt2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncGlybXMgcmVwcm9kdWt0xKt2xIEgcGVyaW9kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdMSrdnMnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgY29sbGFzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgY29sbGEgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBjb2xsYXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgY29sbGFzICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkgY29sbHUgc3RhdMSrdnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGNvbGxhcyAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBjb2xsYXMgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxIGNvbGx1IHN0YXTEq3ZzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBjb2xsYXMgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMyBjb2xsdSBwbGF1a3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBjb2xsYXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGNvbGxhcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgY29sbGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgY29sbGFzICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGNvbGxhcyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgY29sbGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBjb2xsYXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGNvbGxhcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgY29sbGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgY29sbGFzICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgY29sbGFzICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgY29sbGFzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBjb2xsYXMgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgY29sbGFzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGNvbGxhcyAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIGNvbGxhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGNvbGxhcyAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGNvbGxhcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgY29sbGFzICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBjb2xsYXMgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgY29sbGFzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IGNvbGxhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBjb2xsYXMgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0dyxIFtYXR2ZWTEq2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZcWhdSBwaWXFocS3aXLFoWFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nYWlzIHTEgWxydW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0llcsSrY2VzIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdBa3VtdWxhdG9yYSBpZXRpbHDEq2JhIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQWt1bXVsYXRvcmEgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ8SSa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0F1dG9idXNzIHNhc2thcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnUHJvY2Vzb3JhIGtsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdKYXVkYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2F0cmFzIGdyYWZpc2vEgXMga2FydGVzIGphdWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS2FydGVzIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0thcsWhdSBsYXPEq3TEgWpzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0thcnRlcyB2ZWlkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpZW50dSBzZXJ0aWZpa8SBdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50YSBwcm9ncmFtbWF0xatyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLbGllbnR1IGthdGVnb3JpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnQ2xvY2tyYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb2RhIHBhcmFrc3TEq8WhYW5hcyBzZXJ0aWZpa8SBdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuxI11IHTEgWxydW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bHTEgWNpanUgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnU2F6aW5pZXRpZXMgYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ1NhemluaWV0aWVzIGFyIGl6cGxhdMSrdMSBanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdLb250ZWluZXJ1IHDEgXJ2YWxkxKtiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0zEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0zEq2d1bWEgdmVpZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdMxKtndW1hIHBlcmlvZHMgbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnTMSrZ3VtYSB0ZXJtacWGxaEgbMSrZHonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQmV6dmFkdSB0xIFscnVuaXMgKERFQ1QgdMSBbHJ1bmlzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdJem1ha3N1IHZpZW7Eq2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTGljZW7EjXUgc2thaXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdJenZlaWRlcyBkYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1BpZWzEgWdvdGFpcyBwbGF1a3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIHJlemVydsSTdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUyBzZXJ2ZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnUsSTxLdpbmEgaXpyYWtzdMSrxaFhbmFzIGRhdHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnUGFzxat0xKtqdW1hIGRhdHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnR2FyYW50aWphcyBkYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnSXpkb8WhYW5hcyBkYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0RhcmJ2aXJzbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdEb2t1bWVudHUgcGFyYWtzdMSrxaFhbmFzIHNlcnRpZmlrxIF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgcGxhdWt0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1wYXN0YSBzZXJ0aWZpa8SBdGkgKFMvTUlNRSBzZXJ0aWZpa8SBdGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0RhcmJhIGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdHYWxhIElQIGFkcmVzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0F0YmFsc3RhIGJlaWdhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RlcsSrZ3VtYSB0ZXJtacWGxaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ8SAcsSTamFpcyBjaWV0YWlzIGRpc2tzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVWd1bnNtxatyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1NwYXJhcmFyYXR1IGVuZXLEo2lqYXMgdXpnbGFixIHFoWFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm1hcyBmYWt0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuxaHEq3plcyBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnQmV6bWFrc2FzIHByb2dyYW1tYXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1Zpc3DEgXLEq2dhIGluZm9ybcSBY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpc2vEgXMga2FydGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaXNrxIEga2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdBcGFyYXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnQXBhcmF0xatyYXMgbW9kZWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdBcGFyYXTFq3JhcyBzdmFycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVzdGnFhmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAgcHJvdG9rb2xzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXTEgXRlcyB1biBwaWVrxLx1dmVzIHDEgXJ2YWxkxKtiYSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50xIFyYSBudW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ1LEk8S3aW5hIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1Rhc3RhdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIG1vbml0b3JzICjFocS3aWRybyBrcmlzdMSBbHUgZGlzcGxlanMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgbW9uaXRvcnMgKGdhaXNtYXMgZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1N0YWNpb27EgXJhaXMgdMSBbHJ1bmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1BvcnRhdMSrdmFpcyBkYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdQbGF0dW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnMS4gc2zEgW5pczogZml6aXNrYWlzIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnMi4gc2zEgW5pczogZGF0dSBzYWl0ZXMgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnMy4gc2zEgW5pczogdMSra2xhIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnMy4gc2zEgW5pczogdMSra2xhIHNsxIFuaXMgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICc0LiBzbMSBbmlzOiB0cmFuc3BvcnRhIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJzUuIHNsxIFuaXM6IHNlc2lqYXMgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICc2LiBzbMSBbmlzOiBQcmV6ZW50xIFjaWphcyBzbMSBbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnNy4gc2zEgW5pczogbGlldG9qdW1wcm9ncmFtbXUgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdOb21hcyBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5jZXMgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5jZXMgYXRzbMSTZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW5jZXMgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5jZXMgcGVyaW9kcyBubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2VuY2VzIGRlcsSrZ3VtYSB0ZXJtacWGxaEgbMSrZHonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGlqYSBkemVsenMgZm9zZsSBdGEgKExpRmVQTzQpIGFrdW11bGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRpamEgam9udSAoTGktaW9uKSBha3VtdWxhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0FpemRldnVtYSBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdBdHJvZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ8SiZW9ncsSBZmlza2FpcyBnYXJ1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdSYcW+b3TEgWpzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW3EgWzEgSBzbG9kemVzIGphdWRhIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdBdG1pxYZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnQXRtacWGYXMgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaSBzdGF0xKt2cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWzEgSB0xIFscnXFhmEgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsYWlzL2llc3RyxIFkxIF0YWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGXEvGEgYXByYWtzdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvcmEgaXrFocS3aXJ0c3DEk2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ01vbml0b3JhIGl6bcSTcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdQZWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdUxKtrbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtxIFjaWphIHBhciB0xKtrbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ1TEq2tsYSBpbmZvcm3EgWNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ1TEq2tsYSBzbMSBbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmnEt2XEvGEta2FkbWlqYSAoTmlDZCkgYWt1bXVsYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOacS3ZcS8YS1tZXTEgWxhIGhpZHLEq2RhIChOaU1IKSBha3VtdWxhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdMxKtndW1zIHBhciBpbmZvcm3EgWNpamFzIG5laXpwYXXFoWFudSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ1BpZXrEq21qZGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnUHJvY2Vzb3J1IHNrYWl0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdPcGVyYXTEq3bEgXMgYXRtacWGYXMgbW9kdcS8dSBza2FpdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnR3JhZmlza28ga2FyxaF1IHNrYWl0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBtb25pdG9ycyAob3JnYW5pc2vEgSBnYWlzbWFzIGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdEYXJixKtiYXMgaXptYWtzYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnUGFzxat0xKtqdW1hIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0NpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0l6ZWphcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4gS09EUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXLEq2JhcyBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVMSBbHJ1xYZhIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVMSBbHJ1xYZhIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGaXppc2tpZSBrb2RvbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdFbmVyxKNpamFzIHBpZWfEgWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnSWVnxIFkxIF0cyB2aWV0bsSTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdTdGF0xKt2YSBkemnEvHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1N0YXTFhnUgdmllbsSrYmFzIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnTnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIGthcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyBzZXJ0aWZpa8SBdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdQxIFyZG/FoWFuYXMgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbMSrdGEgdMSBbHJ1bmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0hlcm3Ek3Rpc2tpIG5vc2zEk2d0cyBzdmluYS1za8SBYmVzIChTTEEpIGFrdW11bGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU8STcmlqYXMgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlcmEgcHJvZ3JhbW1hdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdQYWthbHBvanVtdSBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnUGFrYWxwb2p1bWEgYmlya2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnS29udGFrdGxpZ3pkYXMgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Byb2dyYW1tYXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnU2thxLxydcWGaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFydGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1PEgWt1bWEgSVAgYWRyZXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdVemdsYWLEgcWhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnVXpnbGFixIHFoWFuYXMgbm9kYWzEq2p1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdNZWl0YXN1esWGxJNtdW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdLb3BzYXZpbGt1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdQbMSBbnMga2xpZW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnRGllZ2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnR3JhZmlza8SBcyBrYXJ0ZXMgUkFNIGtvcMSTamFpcyBhcGpvbXMgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ0tvcMSTamFpcyBvcGVyYXTEq3bEgXMgYXRtacWGYXMgYXBqb21zIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ1NrxIFyaWVuZWtyxIFuYSBtb25pdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1Rvcm5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIGtvbmNlbnRyYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBhdXN0acWGYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUCB0xIFscnVuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/mk_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1rX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9Cc0LDQv9C40YDQsNGa0LUg0LfQsCDQtNC+0LHQuNCy0LDRmtC1INC90LAg0LHQsNGA0LDQvdC40YLQtSDQv9C+0LTQsNGC0L7RhtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC/0L7RmNC00L7QstC90Lgg0L7QtNCz0L7QstC+0YAg0L3QsCDQv9C+0LTQsNGC0L7RhtC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0JrQvtC90YTQuNCzINCn0LvQtdC9INCc0LXQvdCw0Z/QvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ9Cf0YDQvtC80LXQvdC4INC00LXRhNC40L3QuNGG0LjRmNCwINC90LAg0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzQtdC90Lgg0LTQtdGE0LjQvdC40YbQuNGY0LAg0L3QsCDQutC70LDRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0L7QvdGE0LjQsyDQp9C70LXQvdC+0LLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn0JrQvtC90YTQuNCzINCn0LvQtdC9JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQsyDQp9C70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfQpNC40LvRgtC10YAg0LfQsCDQmtC70LDRgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9Ce0LTQsdC10YDQuCDQmtC70LDRgdCwINC+0LQg0LvQuNGB0YLQsNGC0LAg0LfQsCDQtNCwINC60YDQtdC40YDQsNGC0LUg0L3QvtCyINCa0L7QvdGE0LjQsyDQp9C70LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfQmtC70LDRgdCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSDQmtC+0L3RhNC40LPQp9C70LXQvSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KDQsNGB0L/QvtGA0LXQtNGD0LLQsNGH0LrQsCDRgdC+0YHRgtC+0ZjQsdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KHQvtGB0L7RgtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn0J/QvtCy0YDQt9C4INGB0L4g0LTRgNGD0LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ9Cd0LXQstCw0LvQuNC00LXQvSDQmtC+0YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQsdGA0L7RmCDQvdCwINCn0LvQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfQkdGA0L7RmNC+0YIg0L3QsCDQtNGA0YPQsyDQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9INGB0L4g0LvQuNC90Log0YjQuNGA0LjQvdCwLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CU0LDQu9C4INGB0YLQtSDRgdC40LPRg9GA0L3QuCDQtNC10LrQsCDRgdCw0LrQsNGC0LUg0LTQsCDRmNCwINC40LfQsdGA0LjRiNC10YLQtSDQvtCy0LDQsCDQkNC60YLQuNCy0L3QvtGB0YI/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LzQtdGC0L4g0L3QsCDQvtCy0L7RmCDQutC+0L3RhNC40LMg0YfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9CY0LzQtdGC0L4g0LUg0LLQtdGc0LUg0LLQviDRg9C/0L7RgtGA0LXQsdCwINC+0LQg0YHRgtGA0LDQvdCwINC90LAg0JrQvtC90YTQuNCz0KfQu9C10L3QvtCy0LjRgtC1INGB0L4g0YHQu9C10LTQvdC+0LIv0YLQtSDQkdGA0L7RmCjQtdCy0LgpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ9CR0YDQvtGYINC90LAg0JLQtdGA0LfQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LzQtdGC0L4g0L3QsCDQvtCy0L7RmCDQutC+0L3RhNC40LMg0YfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQmNC80LXRgtC+INC1INCy0LXRnNC1INCy0L4g0YPQv9C+0YLRgNC10LHQsCDQvtC0INGB0YLRgNCw0L3QsCDQvdCwINCa0L7QvdGE0LjQs9Cn0LvQtdC90L7QstC40YLQtSDRgdC+INGB0LvQtdC00L3QvtCyL9GC0LUg0JHRgNC+0Zgo0LXQstC4KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ch0L7RgdGC0L7RmNCx0LAg0L3QsCDQoNCw0YHQv9C+0YDQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9Ca0YDQtdC40YDQsNGY0JLRgNC10LzQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfQl9GD0LzQuNGA0LDRmCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfQmtC+0L3RhNC40LMg0KfQu9C10L3QvtCy0Lgg0L/QviDRgdGC0YDQsNC90LjRhtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfQn9GA0LXQstCw0YDRg9Cy0LDRmCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0KfQu9C10L0g0JjQvdGE0L7RgNC80LDRhtC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfQodC10LPQsNGI0L3QsCDQodC+0YHRgtC+0ZjQsdCwINC90LAg0KDQsNGB0L/QvtGA0LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KHQtdCz0LDRiNC90LAg0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn0J/QvtGB0LvQtdC00L3QviDQv9GA0L7QvNC10L3QtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn0J/QvtGB0LvQtdC00L3QviDQv9GA0L7QvNC10L3QtdGC0L4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9Cn0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9Cg0LXRhNC10YDQtdC90YbQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ9Ce0L/QtdGA0LDRhtC40YHQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfQn9GA0LXQtNGD0L/RgNC10LTRg9Cy0LDRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn0JjQvdGG0LjQtNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KDQsNGB0L/QvtGA0LXQtNGD0LLQsNGH0LrQsNGC0LAg0YHQvtGB0YLQvtGY0LHQsCDQvdCwINC+0LLQvtGYINC60L7QvdGE0LjQsyDRh9C70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0L3QuNC00LXQvdGCINGB0L7RgdGC0L7RmNCx0LAg0L3QsCDQvtCy0L7RmCDQutC+0L3RhNC40LMg0YfQu9C10L0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfQndC10LzQsNGC0LUg0JTQvtC30LLQvtC70LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LjQvyDQvdCwINCh0L7RgdGC0L7RmNCx0LAg0L3QsCDQoNCw0YHQv9C+0YDQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Ch0LXQs9Cw0YjQtdC9INCi0LjQvyDQvdCwINCh0L7RgdGC0L7RmNCx0LAg0L3QsCDQmNC90YbQuNC00LXQvdGCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ9CY0LfQvNC10ZPRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvQtdC9INCx0YDQvtGYINC90LAg0LXQtNC10L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JjRgdGC0LXRh9C10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Ce0LTRgNC20YPQstCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9Cf0LjQu9C+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9Cf0LvQsNC90LjRgNCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfQn9C+0L/RgNCw0LLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn0J/RgNC10LrQuNC90LDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9Cf0YDQtdCz0LvQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfQotC10YHRgi9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn0J/RgNC+0LLQtdGA0Lgg0LfQsCDRg9C90LjQutCw0YLQvdC+INC40LzQtSDRgdCw0LzQviDQstC+INGA0LDQvNC60LjRgtC1INC90LAg0LjRgdGC0LAg0JrQvtC90YTQuNCz0KfQu9C10L0g0LrQu9Cw0YHQsCAoXCdjbGFzc1wnKSDQuNC70Lgg0LPQu9C+0LHQsNC70L3QviAoXCdnbG9iYWxcJyksINGI0YLQviDQt9C90LDRh9C4INC00LXQutCwINGB0LXQutC+0Zgg0L/QvtGB0YLQvtGY0LDRh9C60Lgg0JrQvtC90YTQuNCz0KfQu9C10L0g0LUg0LfQtdC80LXQvSDQstC+INC/0YDQvtGE0LjQu9C+0YIg0LrQvtCz0LAg0YHQtSDQsdCw0YDQsNCw0YIg0LTRg9C/0LvQuNC60LDRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ9Ca0L7QvdGE0LjQsyDQp9C70LXQvdC+0LLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC90YTQuNCzINGH0LvQtdC9INC90LDRgdGC0LDQvSDQvNC+0LTRg9C70Lgg0LrQvtC4INC+0LLQvtC30LzQvtC20YPQstCw0LDRgiDQt9Cw0L/QuNGI0YPQstCw0LDRgiDQu9C+0LPQvtCy0Lgg0LLQviDQuNGB0YLQvtGA0LjRmNCwINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9INCb0LjQvNC40YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQmtGA0LXQuNGA0LDRmCDQuCDQvNC10L3QsNGf0LjRgNCw0Zgg0LTQtdGE0LjQvdC40YbQuNC4INC30LAg0JrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQp9C70LXQvdC+0LLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQkdCw0YDQsNC90Lgg0L/QtdGA0LzQuNGB0LjQuCDQt9CwICDQtNCwINC30LXQvNC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvdC+0LLQuCDQutC+0YDQuNGB0YLQtdGY0ZzQuCDQk9C10L3QtdGA0LjRh9C60Lgg0JjQvdGC0LXRgNGE0LXRmNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQkdCw0YDQsNC90Lgg0L/QtdGA0LzQuNGB0LjQuCDQt9CwICDQtNCwINC30LXQvNC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvdC+0LLQuCDQutC+0YDQuNGB0YLQtdGY0ZzQuCDQk9C10L3QtdGA0LjRh9C60Lgg0JjQvdGC0LXRgNGE0LXRmNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQkdCw0YDQsNC90Lgg0L/QtdGA0LzQuNGB0LjQuCDQt9CwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvdC+0LLQuCDQutC+0YDQuNGB0YLQtdGY0ZzQuCDQk9C10L3QtdGA0LjRh9C60Lgg0JjQvdGC0LXRgNGE0LXRmNGB0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCR0LDRgNCw0L3QuCDQv9C10YDQvNC40YHQuNC4INC30LAgINC00LAg0LfQtdC80LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC90L7QstC4INC60L7RgNC40YHRgtC10ZjRnNC4INCT0LXQvdC10YDQuNGH0LrQuCDQmNC90YLQtdGA0YTQtdGY0YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/RgNC10LPQu9C10LQg0LzQvtC00YPQuyDQt9CwINC/0YDQuNC60LDQtyDQvdCwINC80LDQuyDQv9GA0LXQs9C70LXQtCDQvdCwINC60L7RhNC40LPRg9GA0LDRhtC40YHQutCwINC70YfQtdC9INC70LjRgdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDRgNC10LPRg9C70LDRgNC90Lgg0LjQt9GA0LDQt9C4INC40L3QtNC40LLQuNC00YPQsNC70L3QviDQt9CwINGB0LXQutC+0ZjQsCDQmtC+0L3RhNC40LPQp9C70LXQvSDQutC70LDRgdCwINC30LAg0LTQsCDQv9GA0L7QstC10YDQuCDQmtC+0L3RhNC40LPQp9C70LXQvSDQuNC80LUg0Lgg0LTQsCDQs9C4INC/0YDQuNC60LDQttC1INCz0YDQtdGI0L3QuNGC0LUg0LrQvtGA0LXRgdC/0L7QvdC00LjRgNCw0YfQutC40YLQtSDQv9C+0YDQsNC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0YHRgtCw0L3QtNCw0YDQtNC10L0g0YHRg9Cx0L7QsdGY0LXQutGCINC30LAg0LrQu9Cw0YHQsNGC0LAgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCx0YDQvtGYINC90LAg0YDQtdC00LjRhtC4INC30LAgQ0kg0LTQtdGE0LjQvdC40YbQuNGB0LrQuNC+0YIg0YPRgNC10LTQvdC40Log0LLQviDQsNC00LzQuNC9INC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LvQuNC80LjRgiDQt9CwINCx0LDRgNCw0ZrQsCDQt9CwIEFnZW50SVRTTUNvbmZpZ0l0ZW0g0LXQutGA0LDQvdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQu9C40LzQuNGCINC30LAg0LHQsNGA0LDRmtCwINC30LAgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCDQtdC60YDQsNC90L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC70LjQvNC40YIg0LfQsCDQsdCw0YDQsNGa0LAg0LfQsCBBZ2VudElUU01Db25maWdJdGVtINC10LrRgNCw0L3QvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LvQuNC80LjRgiDQt9CwINCx0LDRgNCw0ZrQsCDQt9CwIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg0LXQutGA0LDQvdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9GA0LjQutCw0Lcg0L3QsCDQutC+0LvQvtC90Lgg0L7QtCBDSXMg0LLQviDQutC+0L3RhNC40LMg0YfQu9C10L3QvtGCINC/0YDQtdCz0LvQtdC00L7RgiDQstC+INC30LDQstC40YHQvdC+0YHRgiDQvtC0IENJINC60LvQsNGB0LDRgtCwLiDQodC10LrQvtGYINCy0LvQtdC3INC80L7RgNCwINC00LAg0LjQvNCwINC/0YDQtdGE0LjQutGBINGB0L4g0LrQu9Cw0YHQvdC+INC40LzQtSDQuCDQtNCy0L7RmNC90Lgg0LrQvtC70L7QvdC4IChpLmUuIENvbXB1dGVyOjopLiDQmNC80LAg0L3QtdC60L7Qu9C60YMgQ0kt0JDRgtGA0LjQsdGD0YLQuCDQutC+0Lgg0YHQtSDRh9C10YHRgtC4INGB0L4g0YHQuNGC0LUgQ0lzICjQv9GA0LjQvNC10YAg0LfQsCDQutC70LDRgdGC0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCX0LAg0L/RgNC40LrQsNC3INC90LAg0LjQtNC40LLQuNC00YPQsNC70L3QuCBDSS1BdHRyaWJ1dGVzINC60LDQutC+INGI0YLQviDRgdC1INC00LXRhNC40L3QuNGA0LDQvdC4INCy0L4gIENJLdCU0LXRhNC40L3QuNGG0LjRmNCw0YLQsCwg0YHQu9C10LTQvdCw0LLQsCDRiNC10LzQsCDQvNC+0YDQsCDQtNCwINCx0LjQtNC1INC40YHQutC+0YDQuNGB0YLQtdC90LAgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0LDRgtCwICBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQkNC60L4g0L3QtdC80LAg0LLQu9C10Lcg0LfQsCBDSSDQutC70LDRgdCwLCDRgtC+0LPQsNGIINGB0YLQsNC90LTQsNGA0LTQvdC40YLQtSDQutC+0LvQvtC90Lgg0YHQtSDQv9GA0LjQutCw0LbQsNC90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0KfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfQodC+0YHRgtC+0ZjQsdCwINC90LAg0KDQsNGB0L/QvtGA0LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfQodC+0YHRgtC+0ZjQsdCwINC90LAg0KDQsNGB0L/QvtGA0LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfQlNGD0L/Qu9C40LrQsNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQntCy0L7Qt9C80L7QttGD0LLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9IGJ1bGsgYWN0aW9uINC60LDRgNCw0LrRgtC10YDQuNGB0YLQuNC60Lgg0LfQsCDQsNCz0LXQvdGCINC/0YDQtdC00LXQvdC00LXQuyDQt9CwINC00LAg0YDQsNCx0L7RgtC4INGB0L4g0L/QvtCy0LXRmtC1INC+0LQg0LXRhNC10L0g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC40YHRgtC+INCy0YDQvNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn0J7QstC+0LfQvNC+0LbRg9Cy0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSBidWxrIGFjdGlvbiDQutCw0YDQsNC60YLQtdGA0LjRgdGC0LjQutC4INGB0LDQvNC+INC30LAg0LPRgNGD0L/QvdC40YLQtSDQu9C40YHRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9Cn0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ9Ch0L7RgdGC0L7RmNCx0LAg0L3QsCDQmNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfQodC+0YHRgtC+0ZjQsdCwINC90LAg0JjQvdGG0LjQtNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC+0LTQs9C+0LLQvtGA0L3QvtGB0YIg0L3QsCDQs9GA0YPQv9CwINC30LAg0LrQu9Cw0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC+0LTQvtCz0L7QstGA0L3QvtGB0YIg0L3QsCDQs9GA0YPQv9CwINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0LPQtdC90LXRgNC40YDQsNGa0LUgSVRTTSDQutC+0L3RhNC40LMg0YfQu9C10L0g0YHRgtCw0YLQuNGB0YLQuNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn0J/RgNC10LPQu9C10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LHQvtGY0LAg0L3QsCDRgNCw0YHQv9C+0YDQtdC0INGB0L7RgdGC0L7RmNCx0LjRgtC1INCy0L4g0L/RgNC10LPQu9C10LTQvtGCINGB0L4g0L7Qv9GG0LjQuNGC0LUgINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC/0YDQuNC80LXRgCDQtNC+0LfQstC+0LvQuNGC0LUg0LfQsCDQs9GA0YPQv9C4INC+0LQg0LPQtdC90LXRgNCw0LvQvdC4INC60LDRgtCw0LvQvtCzINCw0YLRgNC40LHRg9GC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLRgNCw0L3QuNCy0Lgo0LLQviDQutC+0Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuNGC0LUg0YfQu9C10L3QvtCy0Lgg0YHQtSDQv9GA0LjQutCw0LbQsNC90LgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgNCw0YHQv9C+0YDQtdC0INGB0L7RgdGC0L7RmNCx0LjRgtC1INCy0L4g0L/RgNC10LPQu9C10LTQvtGCINGB0L4g0L7Qv9GG0LjQuNGC0LUgINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INC/0YDQtdCx0LDRgNGD0LLQsNGa0LUg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INC/0YDQtdCx0LDRgNGD0LLQsNGa0LUg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INC/0YDQtdCx0LDRgNGD0LLQsNGa0LUg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC30LPQvtC70LXQvNGD0LLQsNGH0LrQuCDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwINC00L7QtNCw0LLQsNGa0LUg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAg0YPRgNC10LTQuCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwINC40YHRgtC+0YDQuNGY0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCDQv9GA0LjQvdGCINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodC10YLQuNGA0LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSBidWxrINC10LrRgNCw0L3QvtGCINC+0LQg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodC10YLQuNGA0LAg0LjQvdGG0LjQtNC10L3RgiDRgdC+0YHRgtC+0ZjQsdCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSBidWxrINC10LrRgNCw0L3QvtGCINC+0LQg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQutC+0LUg0L7QstC+0LfQvNC+0LbRg9Cy0LAg0L/QvtCy0YDQt9GD0LLQsNGa0LUg0YHQviDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INGB0L4g0LTRgNGD0LMg0L7QsdGY0LXQutGCINCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC9ICDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQutC+0LUg0L/RgNC40YHRgtCw0L/Rg9Cy0LAg0LLQviDQuNGB0YLQvtGA0LjRmNCw0YLQsCDQvdCwICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LrQvtC1INC+0LLQvtC30LzQvtC20YPQstCwINC/0YDQuNGB0YLQsNC/INC00L4g0LjRgdGC0L7RgNC40ZjQsNGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC9ICDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQt9CwINGD0YDQtdC00YPQstCw0ZrQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INGB0L4g0LTRg9C/0LvQuNC60LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0YHQviDQtNGD0L/Qu9C40LrQsNGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INC30LAg0YPRgNC10LTRg9Cy0LDRmtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC30LPQvtC70LXQvNC10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LLQviDQvNC10L3QuNGC0L4g0LvQuNC90LrQvtGCINC30LAg0LLRgNCw0ZzQsNGa0LUg0LLQviDQtNC10YLQsNC70LXQvSDQv9C+0LPQu9C10LQg0LLQviDQuNC90YLQtdGA0YTQtdGY0YHQvtGCINC90LAg0LDQs9C10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LfQsCDQv9C10YfQsNGC0LXRmtC1INCy0L4g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDRgdC+INC30LPQvtC70LXQvNGD0LLQsNGa0LUg0L3QsCDQutC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+ICDQutC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwICDQutC+0L3RhNC40LMg0YfQu9C10L0g0LjRgdGC0L7RgNC40ZjQsCAo0LLQviDQvtCx0YDQsNGC0LXQvSDRgNC10LTQvtGB0LvQtdC0KSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQmNC00L3QtdGC0LjRhNC40LrRg9Cy0LDRh9C+0YIg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9LCDQvy7RgC4gIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDQodGC0LDQvdC00LDRgNC00L7RgiDQtSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfQmtC70LDRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfQnNC10L3QsNGf0LzQtdC90YIg0L3QsCDQktGA0LXQvNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9CT0YDQsNC00LXRmNGc0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9CY0L3RgtC10YDRhNC10ZjRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfQn9GA0L7RhtC10YHQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ9Cg0LDQsdC+0YLQvdCwINC/0L7QstGA0YjQuNC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn0JHQtdGB0L/Qu9Cw0YLQtdC9INGB0L7RhNGC0LLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ9Ci0LDRgdGC0LDRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn0JvQsNC/0YLQvtC/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfQnNC+0LTQtdC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQk9C70YPRiNC10YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ9CU0YDRg9Cz0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9CY0LfQu9C10LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfQodC+0LHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINC30LAg0J3QuNCy0L4g0L3QsCDQo9GB0LvRg9Cz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9Ch0YLQsNC90LTQsNGA0LTQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/ms_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1zX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ1BlbWV0YWFuIHVudHVrIHBlcm1pbnRhYW4gbWFzdWsgZGF0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdQZW1ldGFhbiB1bnR1ayB0aW5kYWsgYmFsYXMgZGF0YSB5YW5nIGtlbHVhci4nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdQZW5ndXJ1c2FuIENvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnVWJhaCBkZWZpbmlzaSBrZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnVWJhaCBkZWZpbmlzaSBrZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdCYXJhbmdhbiBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnTWVuYXBpcyBLZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdQaWxpaCBLZWxhcyBkYXJpIHNlbmFyYWkgdW50dWsgbWV3dWp1ZGthbiBQZXJrYXJhIENvbmZpZyBiYXJ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tlbGFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSXRlbUtvbmZpZyBJVFNNIFRpbmRha2FuIFB1a2FsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdLZWFkYWFuIHBlcnR1a2FyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdLZWFkYWFuIGluc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnUGF1dCBrZSBsYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOb21ib3IgQmFyYW5nYW4gS29uZmlndXJhc2kgVGlkYWsgU2FoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdOb21ib3IgQmFyYW5nYW4gS29uZmlndXJhc2kgbGFpbiB1bnR1ayBkaXBhdXRrYW4gZGVuZ2FuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0FuZGEgYmVuYXIgaW5naW4gbWVtYnVhbmcgaXRlbSBjb25maWcgaW5pPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1hIGNvbmZpZyBpdGVtIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtYSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tYm9yKG5vbWJvci1ub21ib3IpIGJlcmlrdXQ6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnQmlsYW5nYW4gdmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ05hbWEgY29uZmlnIGl0ZW0gaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtYSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tYm9yKG5vbWJvci1ub21ib3IpIGJlcmlrdXQ6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdLZWFkYWFuIFBlcnR1a2FyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdpbnNpZGVuIGtlYWRhYW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdLYW5kdW5nYW4gc2VqYXJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ2lwdGEgbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQYW5kYW5nYW4gZGliZXNhcmthbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVtIGNvbmZpZyBwZXIgaGFsYW1hbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnSmFsYW5rYW4gQ2FyaWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BlcmthcmEga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnTWFrbHVtYXQgQmFyYW5nYW4gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnUGVydHVrYXJhbiBrZWFkYWFuIHNlbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnSW5zaWRlbiBrZWFkYWFuIHNlbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdUZXJraW5pIGJlcnViYWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVGVyYWtoaXIgZGl1YmFoIG9sZWgnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdBZGFrYWggYW5kYSBpbmdpbiBtZW5lcnVza2FuPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ1RpYWRhIEl0ZW1JRCBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnVGlkYWsgbWFtcHUgdW50dWsgbWVtYnVhbmcgYmFoYXNhICVzIGl0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1RpYWRhICVzIGRpYmVyaWthbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYm9sZWggbWVudW5qdWtrYW4gc2VqYXJhaCwgc2ViYWdhaSB0aWFkYSBJdGVtSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnVGlkYWsgYm9sZWggbWVudW5qdWtrYW4gc2VqYXJhaCwgc2ViYWdhaSB0aWFkYSBJdGVtSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnVGlkYWsgYm9sZWggbWVudW5qdWtrYW4gc2VqYXJhaCwgc2ViYWdhaSB0aWFkYSBJdGVtSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1J1anVrYW4oZW4pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgJXMgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnVGlhZGEgS2VwdXR1c2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0hhc2lsIGNhcmlhbiBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ0FtYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0tlYWRhYW4gcGVuZW1wYXRhbiBpdGVtIGluaSBjb25maWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdLZWFkYWFuIGluc2lkZW4gYmFnaSBjb25maWcgaXRlbSBpbmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdUaWFkYSBrZWJlbmFyYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ0plbmlzIFBlcnR1a2FyYW4gS2VhZGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdOeWF0YWthbiBKZW5pcyBJbnNpZGVuIFNlbWFzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdCZXR3ZWVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnQmlsYW5nYW4gbWFrc2ltdW0gc2F0dSBlbGVtZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnVGFtYXQgVGVtcG9oJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAncGVueWVsZW5nZ2FyYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ0RpcmFuY2FuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdNZW1iYWlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnYmVyc2FyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdtZW5na2FqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVWppYW4vUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1NlbWFrIG5hbWEgeWFuZyB1bmlrIHNhaGFqYSBkaSBkYWxhbSBrZWxhcyBDb25maWdJdGVtIHlhbmcgc2FtYSAoXCdrZWxhc1wnKSBhdGF1IGRpIHBlcmluZ2thdCBnbG9iYWwgKFwnZ2xvYmFsXCcpLCB5YW5nIGJlcm1ha3N1ZCBzZXRpYXAgQ29uZmlnSXRlbSBzZWRpYSBhZGEgZGlhbWJpbCBraXJhIGtldGlrYSBtZW5jYXJpIHBlbmR1YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdCYXJhbmdhbiBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnVGFtYmFoIGl0ZW0gY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXQgaXRlbSBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgYWNhcmEgYmFyYW5nYW4ga29uZmlndXJhc2kgeWFuZyBtZW1iZW5hcmthbiB1bnR1ayBsb2cga2Ugc2VqYXJhaCBkYWxhbSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdTZWphcmFoIGl0ZW0gY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDZXRhayBpdGVtIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdadW0gaXRlbSBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0hhZCBCYXJhbmdhbiBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWd1cmFzaSBQZW5ndXJ1c2FuIFBhbmdrYWxhbiBEYXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXJhc2kgaXRlbSBtb2R1bCBwdWthbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnIFJvdXRlciBjYXJpYW4gYmVsYWthbmcgYmFyYW5nYW4ga29uZmlndXJhc2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NpcHRhIGRhbiB1cnVzIHRha3JpZmFuIHVudHVrIEJhcmFuZ2FuIEtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0YSBhc2FsIGRpZ3VuYWthbiB1bnR1ayBzaWZhdCBiYWdpIHNrcmluIGNhcmlhbiB0aWtldC4gQ29udG9oOiBUaWNrZXRDcmVhdGVUaW1lUG9pbnRGb3JtYXQ9dGFodW47VGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQ9VGVyYWtoaXI7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRhIGFzYWwgZGlndW5ha2FuIHVudHVrIHNpZmF0IGJhZ2kgc2tyaW4gY2FyaWFuIHRpa2V0LiBDb250b2g6IFRpY2tldENyYXRlVGltZVN0YXJ0WWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO1RpY2tldENyZWF0ZVRpbWVTdGFydERheT00O1RpY2tldENyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdG9wTW9udGg9MTE7VGlja2V0Q3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnVGFrcmlma2FuIFRpbmRha2FuIGRpbWFuYSBidXRhbmcgdGV0YXBhbiBpdHUgYWRhIGRhbGFtIHdpZGdldCBvYmplayBiZXJzYW1idW5nIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFNpbGEgcGFzdGlrYW4geWFuZyBUaW5kYWthbiBpbmkgcGVybHUgZGlkYWZ0YXJrYW4geWFuZyBiZXJpa3V0IGZhaWwtZmFpbCBKUyBkYW4gQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBrZWl6aW5hbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVtYnVhbmcgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFyYW11a2EgVW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmRhcGF0a2FuIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJhIE11a2EgR2VuZXJpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmNhcmkgYmFyYW5nYW4ga29uZmlndXJhc2kgSVRTTSBtZW5nZ3VuYWthbiBBbnRhcmEgTXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGtlYmVuYXJhbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZGFwYXRrYW4gYmFyYW5nYW4ga29uZmlndXJhc2kgSVRTTSBtZW5nZ3VuYWthbiBBbnRhcmEgTXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gbW9kdWwgZ2FtYmFyYW4gdW50dWsgbWVudW5qdWtrYW4gcGFuZGFuZ2FuIHlhbmcga2VjaWwgc2VuYXJhaSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB1bmdrYXBhbiBiaWFzYSBzZWNhcmEgaW5kaXZpZHUgdW50dWsgc2V0aWFwIGtlbGFzIEl0ZW1Lb25maWcgdW50dWsgbWVtZXJpa3NhIG5hbWEgSXRlbUtvbmZpZyBkYW4gdW50dWsgbWVudW5qdWtrYW4gbWVzZWogcmFsYXQgc2VwYWRhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBzaWZhdCB0aWtldCBhc2FsIHVudHVrIGF0dXJhbiB0aWtldCBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gdGlrZXQgZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgdGlrZXQgYXNhbCB1bnR1ayBhdHVyYW4gdGlrZXQgZGFsYW0gaGFzaWwgcGVuY2FyaWFuIHRpa2V0IGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBzaWZhdCB0aWtldCBkZWZhdWx0IHVudHVrIHBlbmdrZWxhc2FuIHRpa2V0IGRhbGFtIGhhc2lsIGNhcmlhbiB0aWtldCBvcGVyYXNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB0dXJ1dGFuIHRpa2V0IGFzYWwgZGFsYW0gaGFzaWwgY2FyaWFuIHRpa2V0IGRhcmkgcGFwYXJhbiBlamVuLiBBdGFzOiB5YW5nIGxhbWEgZGkgYXRhcy4gQmF3YWg6IHlhbmcgdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHR1cnV0YW4gdGlrZXQgYXNhbCBkYWxhbSBoYXNpbCBjYXJpYW4gZGFyaSBwYXBhcmFuIHBlbGFuZ2dhbi4gQXRhczogeWFuZyBsYW1hIGRpIGF0YXMuIEJhd2FoOiB5YW5nIHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHNpZmF0IHBlbmNhcmlhbiB0aWtldCB5YW5nIGRpdHVuanVrIHlhbmcgYXNhbCB1bnR1ayBza3JpbiBjYXJpYW4gdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gZGVmYXVsdCB5YW5nIGRpdHVuanVra2FuIHRpa2V0IHNpZmF0IHBlbmNhcmlhbiBza3JpbiBjYXJpYW4gdGlrZXQuIENvbnRvaDogIlV0YW1hIiBtZXN0aSBtZW1wdW55YWkgbmFtYSBtZWRhbiBkaW5hbWlrIGRhbGFtIGtlcyBpbmkgXCdYXCcsICJLYW5kdW5nYW4iIG1lc3RpIG1lbXB1bnlhaSBuaWxhaSBtZWRhbiBkaW5hbWlrIGJlcmdhbnR1bmcga2VwYWRhIGplbmlzIE1lZGFuIERpbmFtaWssIFRla3M6IFwndGVrc1wnLCBqYXR1aCB0dXJ1bjogXCcxXCcsIFRhcmlraC9NYXNhOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyID0gMTk3NDsKU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1TdWJvYmplY3QgZGVyIEtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB0aW5nZ2kgdW50dWsga29tcG9uZW4gZWRpdG9yIHRla3Mga2F5YSB1bnR1ayBza3JpbiBpbmkuIE1hc3Vra2FuIG5vbWJvciAocGlrc2VsKSBhdGF1IG5pbGFpIHBlcmF0dXMgKHJlbGF0aWYpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGJpbGFuZ2FuIGJhcmlzIHVudHVrIGVkaXRvciBkZWZpbmlzaSBDSSBkYWxhbSBhbnRhcmEgbXVrYSBhZG1pbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnVGFrcmlma2FuIHN1c3VuYW4ga2VhZGFhbiBpbnNpZGVuIGRhcmlwYWRhIHRpbmdnaSAoY3RoLiBrcml0aWthbCkga2UgcmVuZGFoIChjdGguIGZ1bmdzaWFuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdUYWtyaWZrYW4ga2VhZGFhbiBwZW5lbXBhdGFuIHlhbmcgcmVsZXZlbiBkaW1hbmEgdGlrZXQgYmVyc2FtYnVuZyBib2xlaCBtZW5qZWphc2thbiBzdGF0dXMgYmFnaSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gaGFkIGNhcmlhbiB1bnR1ayBza3JpbiBJdGVtS29uZmlnSVRTTUFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGhhZCBjYXJpYW4gdW50dWsgc2tyaW4gQ2FyaWFuSXRlbUtvbmZpZ0lUU01BZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBoYWQgY2FyaWFuIHVudHVrIHNrcmluIEl0ZW1Lb25maWdJVFNNQWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gaGFkIGNhcmlhbiB1bnR1ayBza3JpbiBDYXJpYW5JdGVtS29uZmlnSVRTTUFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHJ1YW5nYW4gZGl0dW5qdWtrYW4gQ0lzIGRhbGFtIHBhbmRhbmdhbiBwYXV0YW4gamFkdWFsIGtvbXBsZWtzLCBiZXJnYW50dW5nIGtlcGFkYSBrZWxhcyBDSSAuIFNldGlhcCBwZW55ZXJ0YWFuIGhlbmRha2xhaCBkaW11bGFrYW4gZGVuZ2FuIG5hbWEga2VsYXMgZGFuIHRpdGlrIGJlcnRpbmRpaCBkdWEgKGlhaXR1IEtvbXB1dGVyOjopLiBUZXJkYXBhdCBiZWJlcmFwYSBTaWZhdC1zaWZhdC1DSSB5YW5nIHNhbWEga2VwYWRhIHNlbXVhIENJcyAoY29udG9oIHVudHVrIGtlbGFzIEtvbXB1dGVyOktvbXB1dGVyOjpOYW1hLCBLb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBLb21wdXRlcjo6Q3JlYXRlVGltZSkuIFVudHVrIG1lbnVuanVra2FuIHNpZmF0IGluZGl2aWR1IENJIHNlYmFnYWltYW5hIHlhbmcgZGl0YWtyaWZrYW4gZGFsYW0gRGVmaW5pc2ktQ0ksIHNraW0gYmVyaWt1dCBtZXN0aSBkaWd1bmFrYW4gKGNvbnRvaCB1bnR1ayBrZWxhcyBLb21wdXRlcik6IEtvbXB1dGVyOjpoYXJkZGlzazo6MSwgS29tcHV0ZXI6OmhhcmRkaXNrOjoxOjpLYXBhc2l0aTo6MSwga29tcHV0ZXI6OmhhcmRkaXNrOjoyLCBLb21wdXRlcjo6aGFyZGRpc2s6OjI6OkthcGFzaXRpOjoxLiBKaWthIHRpYWRhIHBlbnllcnRhYW4gdW50dWsga2VsYXMgQ0ksIG1ha2EgcnVhbmdhbiBkZWZhdWx0IGRpcGFwYXJrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVudGFrcmlmIGJhcmFuZ2FuIG1hbmEgYm9sZWggZGlkYXBhdGkgdW50dWsgXCdUaW5kYWthblwnIGRpIHBlcmluZ2thdCBrZXRpZ2Egc3RydWt0dXIgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBiYXJhbmdhbiBtYW5hIHlhbmcgdGVyZGFwYXQgcGFkYSB0YWhhcCBwZXJ0YW1hIHN0cnVrdHVyIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGJhcmFuZ2FuIG1hbmEgeWFuZyB0ZXJkYXBhdCBwYWRhIHRhaGFwIGtlZHVhIHN0cnVrdHVyIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnVGFrcmlma2FuIGplbmlzIHNhbWJ1bmdhbiB5YW5nIG1hbmEgKGRpbmFtYWthbiBkYXJpcGFkYSBwZXJzcGVrdGlmIHRpa2V0KSBib2xlaCBtZW5qZWphc2thbiBzdGF0dXMgYmFnaSBzYXR1IHNhbWJ1bmdhbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdUYWtyaWZrYW4gamVuaXMgdGlrZXQgeWFuZyBtYW5hIGJvbGVoIG1lbmplamFza2FuIHN0YXR1cyBiYWdpIHNhdHUgc2FtYnVuZ2FuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnUGVya2FyYSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ1BlbmVtcGF0YW4gS2VhZGFhbiBXYXJuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnS2VhZGFhbiBQZXJ0dWthcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0dhbmRha2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBiaWRhbmcgdGFqdWsgZGFsYW0gc2tyaW4gYmlkYW5nIElUU00gdGFtYmFoYW4gYmFnaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBiaWRhbmcgdGFqdWsgZGFsYW0gc2tyaW4gYmlkYW5nIElUU00gdGFtYmFoYW4gYmFnaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBiaWRhbmcgdGFqdWsgZGFsYW0gc2tyaW4gYmlkYW5nIElUU00gdGFtYmFoYW4gYmFnaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdNZW1ib2xlaGthbiBjaXJpIHRpbmRha2FuIHB1a2FsIGl0ZW0ga29uZmlndXJhc2kgdW50dWsgZnJvbnRlbmQgZWplbiB1bnR1ayBiZWtlcmphIHBhZGEgbGViaWggZGFyaXBhZGEgc2F0dSBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgc2F0dSBtYXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnTWVtYm9sZWhrYW4gY2lyaSBpdGVtIGtvbmZpZ3VyYXNpIHRpbmRha2FuIHB1a2FsIGhhbnlhIHVudHVrIGt1bXB1bGFuIHlhbmcgZGlzZW5hcmFpa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2RlbCBhY2FyYSB1bnR1ayBtZW55ZWRpYWthbiBzdGF0dXMtaXRlbWNvbmZpZyBhdGFzIHNhbWJ1bmdhbi1pdGVtY29uZmlnLXRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIEdlbmVyaWNJbnRlcmZhY2UgdW50dWsgbGFwaXNhbiBwZW5jZXR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdQZW5kYWZ0YXJhbiBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVuY2V0dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIEdlbmVyaWNJbnRlcmZhY2UgdW50dWsgbGFwaXNhbiBwZW5jZXR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ3BhbmRhbmdhbiBpdGVtIGNvbmZpZyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdpbnNpZGVuIGtlYWRhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ2luc2lkZW4ga2VhZGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdKdW1sYWggdGlrZXQgbWFrc2ltdW0gdW50dWsgZGlwYW1lcmthbiBkaSBrZXB1dHVzYW4gb3BlcmFzaSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgdW50dWsgbWVueWVtYWsga3VtcHVsYW4gYmVydGFuZ2d1bmdqYXdhYiB1bnR1ayBrZWxhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCB1bnR1ayBtZW55ZW1hayBrdW1wdWxhbiBiZXJ0YW5nZ3VuZ2phd2FiIHVudHVrIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgdW50dWsgbWVuamFuYSBzdGF0aXN0aWsga29uZmlnIGl0ZW0gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggdGlrZXQgeWFuZyBha2FuIGRpcGFtZXJrYW4gZGFsYW0gc2V0aWFwIGhhbGFtYW4gZGFyaSBoYXNpbCBjYXJpYW4gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggdGlrZXQgeWFuZyBha2FuIGRpcGFtZXJrYW4gZGFsYW0gc2V0aWFwIGhhbGFtYW4gZGFyaSBoYXNpbCBjYXJpYW4gZGFsYW0gcGFwYXJhbiBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQYW5kYW5nYW4ga2VzZWx1cnVoYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsga2VhZGFhbiBtZW5nYXR1ciBrZWR1ZHVrYW4gZGFsYW0gcGFwYXJhbiBwaWxpaGFuIGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayB3YXJuYSBrZWFkYWFuIG1lbmdhdHVyIGtlZHVkdWthbiBkYWxhbSBwYXBhcmFuIHBpbGloYW4gZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGNvbnRvaCBrdW1wdWxhbiB5YW5nIGRpYmVuYXJrYW4gcGFkYSBjaXJpLWNpcmkga2F0YWxvZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsga2VhZGFhbiBtZW5nYXR1ciBrZWR1ZHVrYW4gZGFsYW0gcGFwYXJhbiBwaWxpaGFuIGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG11a2Egc3VyYXQgKGRpIG1hbmEgaXRlbSBrb25maWd1cmFzaSBkaXR1bmp1a2thbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBrZWFkYWFuIG1lbmdhdHVyIGtlZHVkdWthbiBkYWxhbSBwYXBhcmFuIHBpbGloYW4gZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBjYXJpYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4genVtIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gdGFtYmFoIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGVkaXQgaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gc2VqYXJhaCBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gY2V0YWsgaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ0tlaXN0aW1ld2Fhbi1rZWlzdGltZXdhYW4gZGlrZWhlbmRha2kgdW50dWsgbWVtYWRhbWthbiBiYXJhbmctYmFyYW5nIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdDYXJpIGJhcmFuZy1iYXJhbmcgY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnTWVuZW50dWthbiBrZWFkYWFuIGluc2lkZW4gYmFnaSBDSSBzZWNhcmEgYXV0b21hdGlrIGFwYWJpbGEgc3VhdHUgVGlrZXQgZGlzYW1idW5na2FuIGtlcGFkYSBzdWF0dSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXQga2VhZGFhbiBwZW5lbXBhdGFuIGRhbGFtIHNrcmluIHB1a2FsIGl0ZW0ga29uZmlndXJhc2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0IGtlYWRhYW4gaW5zaWRlbiBkYWxhbSBza3JpbiBwdWthbCBpdGVtIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgeWFuZyBtZW1ib2xlaGthbiBtZW5naHVidW5na2FuIGl0ZW0ga29uZmlndXJhc2kgZGVuZ2FuIG9iamVrIGxhaW4gZGFsYW0gcGFuZGFuZ2FuIHp1bSBpdGVtIGtvbmZpZyBiYWdpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVHVuanVrIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbmdha3NlcyBzZWphcmFoIGl0ZW0ga29uZmlndXJhc2kgZGkgZGFsYW0gZ2FtYmFyYW4ga2VzZWx1cnVoYW4gaXRlbSBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW5nYWtzZXMgc2VqYXJhaCBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHBhbmRhbmdhbiB6dW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBzYXR1IHNhbWJ1bmdhbiBrZXBhZGEgbWVudSB1bnR1ayBtZW1hZGFtIHNhdHUgYmFyYW5nIGtvbmZpZ3VyYXNpICBkYWxhbSBwYW5kYW5nYW4genVtbnlhIGRhcmlwYWRhIGFudGFyYW11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1R1bmp1ayBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW55YWxpbiBpdGVtIGtvbmZpZ3VyYXNpIGRpIGRhbGFtIGdhbWJhcmFuIGtlc2VsdXJ1aGFuIGl0ZW0ga29uZmlndXJhc2kgYW50YXJhIG11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVueWFsaW4gYmFyYW5nYW4ga29uZmlndXJhc2kgZGFsYW0gcGFuZGFuZ2FuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgZWRpdCBiYXJhbmdhbiBrb25maWd1cmFzaSBkYWxhbSBwYW5kYW5nYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdtZW51bmp1a2thbiBzdWF0dSBzYW1idW5nYW4gcGFkYSBtZW51IHVudHVrIGtlbWJhbGkgZGFsYW0gem9vbSBpdGVtIGtvbmZpZ3VyYXNpIGRhcmlwYWRhIGFudGFyYSBtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW5jZXRhayBiYXJhbmdhbiBrb25maWd1cmFzaSBkYWxhbSBwYW5kYW5nYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVHVuanVrIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIHp1bSBrZSBkYWxhbSBiYXJhbmdhbiBrb25maWd1cmFzaSBkaSBkYWxhbSBnYW1iYXJhbiBrZXNlbHVydWhhbiBiYXJhbmdhbiBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWsgc2VqYXJhaCBiYXJhbmdhbiBrb25maWcgKHVydXRhbiB0ZXJiYWxpaykgZGFsYW0gYW50YXJhIG11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdQZW5nZWNhbSB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpLCBjb250b2g6IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBEZWZhdWx0IGlhbGFoIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tlbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdNYXNhIFBlcmFrYXVuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1BlbnRhZGJpcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCYW5ndW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnUGFwYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdKdXJ1dGVrbmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICd0ZXRpa3VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdsYWluLWxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ091dHB1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0JpbGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnVGFoYXAgUGVyc2V0dWp1YW4gUGVya2hpZG1hdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdQaWF3YWlhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/nb_NO_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5iX05PX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmVsbGUgZHJpZnRzZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSW5uc3RpbGxpbmdlciBmb3IgaW5ua29tbWVuZGUgZm9yZXNww7hyc2Vsc2RhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdJbm5zdGlsbGluZ2VyIGZvciB1dGfDpWVuZGUgc3ZhcmRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdBZG1pbmlzdHJhc2pvbiBhdiBrb25maWd1cmFzam9uc2VuaGV0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdFbmRyZSBrbGFzc2VkZWZpbmlzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdFbmRyZSByb2xsZWRlZmluaXNqb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQta2xhc3NlcGFra2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnSGVyIGthbiBkdSBpbXBvcnRlcmUgUmVhZHkySW1wb3J0LWtsYXNzZXBha2tlciBzb20gdmlzZXIgZGUgdmFubGlnc3RlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVuZSB2w6VyZS4gVsOmciBvcHBtZXJrc29tIHDDpSBhdCBkZXQga2FuIHbDpnJlIG7DuGR2ZW5kaWcgbWVkIHl0dGVybGlnZXJlIGtvbmZpZ3VyYXNqb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ09wcGRhdGVyIGVrc2lzdGVyZW5kZSBlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0ZXIgUmVhZHkyQWRvcHQta2xhc3NlcGFra2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldHNrbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3VyZXJpbmdzZWxlbWVudGV0cyByb2xsZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3Iga2xhc3Nlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWZWxnIGVuIGtsYXNzZSBmcmEgbGlzdGVuIGZvciDDpSBvcHByZXR0ZSBlbiBueSBrb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3NlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnTWFzc2VyZWRpZ2VyaW5nIGF2IGtvbmZpZ3VyYXNqb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnUHJvZHVrc2pvbnNzZXR0aW5nc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSGVuZGVsc2VzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnS29ibGUgdGlsIGVuIGFubmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdVZ3lsZGlnIGtvbmZpZ3VyYXNqb25zZWxlbWVudG51bW1lciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTnVtbWVyZXQgcMOlIGV0IGFubmV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBzb20gc2thbCBrb2JsZXMgdGlsLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZpbCBkdSB2aXJrZWxpZyBmamVybmUgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYXZuZXQgdGlsIGRlbm5lIGtvbmZpZ3VyYXNqb25zZW5oZXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmF2bmV0IGVyIGFsbGVyZWRlIGkgYnJ1ayBhdiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWZXJzam9uc251bW1lciBmb3IgZGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzam9uc251bW1lcmV0IGVyIGFsbGVyZWRlIGkgYnJ1ayBhdiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1Byb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0hlbmRlbHNlc3RpbHN0YW5kJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpZW4gdGlsIGtvbmZpZ3VyYXNqb25zZW5oZXRlbjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWtrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdPcHByZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWm9vbSB2aXNuaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYXNqb25zZW5oZXRlciBwZXIgc2lkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gZGF0YSBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXQgZnVubmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlbGcgZGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdVdGbDuHIgc8O4a2V0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdEeWJkZW5pdsOlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBpbm4vdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWFrcyBsZW5rZW5pdsOlIG7DpWRkIGZvciBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ3VyYXNqb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnT3BwbHlzbmluZ2VyIG9tIGtvbmZpZ3VyYXNqb25zZW5oZXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdOw6V2w6ZyZW5kZSBwcm9kdWtzam9uc3NldHRpbmdzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ07DpXbDpnJlbmRlIGhlbmRlbHNlc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1Npc3QgZW5kcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1Npc3QgZW5kcmV0IGF2JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnRGluZSBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtLXPDuGsnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdGw7hsZ2VuZGUga2xhc3NlciB2aWwgYmxpIGltcG9ydGVydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdGw7hsZ2VuZGUgcm9sbGVyIHZpbCBibGkgaW1wb3J0ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1bDpnIgb3BwbWVya3NvbSBww6UgYXQgb2dzw6UgdGlsc3ZhcmVuZGUgZHluYW1pc2tlIGZlbHQgb2cgR2VuZXJhbENhdGFsb2cta2xhc3NlciBibGlyIG9wcHJldHRldCwgb2cgYXQgZGUgaWtrZSBmamVybmVzIGF1dG9tYXRpc2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnw5huc2tlciBkdSDDpSBmb3J0c2V0dGU/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1RyZW5nZXIgZWtzZW1wZWxrbGFzc2VyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmlzam9uZW4gZXIgaW5nZW4gZ3lsZGlnIFlBTUwtaGFzaC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdPdmVyc2lrdDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENvbmZpZ0l0ZW1JRCBlciBvcHBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0R1IHRyZW5nZXIgbWluc3QgZXR0IHZhbGd0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdEdSBoYXIgaWtrZSBza3JpdmV0aWxnYW5nIHRpbCBkZXR0ZSBrb25maWd1cmFzam9uc2VsZW1lbnRldDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0luZ2VuIGRlZmluaXNqb24gYmxlIGRlZmluZXJ0IGZvciBrbGFzc2VuICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnS29uZmlndXJlcmluZ3NlbGVtZW50ZXQgIiVzIiBibGUgaWtrZSBmdW5uZXQgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnS3VubmUgaWtrZSBzbGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50LUlEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnSW5nZW4gdmVyc2pvbiBmdW5uZXQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZW4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBlbGxlciBDbGFzc0lEIGVyIG9wcGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdJbmdlbiB0aWxnYW5nIGVyIGdpdHQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0thbiBpa2tlIHZpc2UgaGlzdG9yaWtrLCBpbmdlbiBDb25maWdJdGVtSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaWtrZSB2aXNlIGhpc3RvcmlraywgaW5nZW4gdGlsZ2FuZ3NyZXR0aWdoZXRlciBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnl0dCBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ055IHZlcnNqb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ09wcGRhdGVyaW5nIGF2IGRpc3RyaWJ1c2pvbnNzdGF0dXMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdIZW5kZWxzZXNzdGF0dXMgb3BwZGF0ZXJ0IChueT0lcywgZ2FtbWVsPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGVua2UgdGlsICVzICh0eXBlPSVzKSBsYWd0IHRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnS29ibGluZyB0aWwgJXMgKHR5cGU9JXMpIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0tZGVmaW5pc2pvbiBvcHBkYXRlcnQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hdm4gb3BwZGF0ZXJ0IChueT0lcywgZ2FtbWVsPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0dCAlcyBvcHBkYXRlcnQgZnJhICIlcyIgdGlsICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2pvbiAlcyBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENvbmZpZ0l0ZW1JRCBlbGxlciBWZXJzaW9uSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGlra2UgdmlzZSBrb25maWd1cmFzam9uc2VsZW1lbnRldCwgaW5nZW4gdGlsZ2FuZ3NyZXR0aWdoZXRlciBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBibGUgaWtrZSBmdW5uZXQgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdLb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdza3JldmV0IHV0IGF2ICVzIHDDpSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJhbnNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnVWd5bGRpZyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENsYXNzSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdJbmdlbiB0aWxnYW5nc3JldHRpZ2hldGVyIGZvciBkZW5uZSBrbGFzc2VuIGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdJbmdlbiByZXN1bHRhdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnU8O4a2VyZXN1bHRhdGVyIGZvciBrb25maWd1cmVyaW5nc2VsZW1lbnRlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnS2FuIGlra2UgdmlzZSBlbGVtZW50ZXQsIGluZ2VuIHRpbGdhbmdzcmV0dGlnaGV0ZXIgZm9yIENvbmZpZ0l0ZW0gZXIgZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBibGUgaWtrZSBmdW5uZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0luZ2VuIHZlcnNqb25lciBmdW5uZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2FkdmFyc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaGVuZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Byb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCBmb3IgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSGVuZGVsc2VzdGlsc3RhbmRlbiBmb3IgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnSW5nZW4gdGlsbGF0ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgdWd5bGRpZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1PDuGtlcGFyYW1ldGVyZSB1Z3lsZGlnZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdWaXN0ZSBrb25maWd1cmFzam9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIHByb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdOw6V2w6ZyZW5kZSB0eXBlIGhlbmRlbHNlc3RpbHN0YW5kJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lbGxvbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlYmVncmVuc25pbmdlciBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZlbGcgw6luIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIMOlIGJlZ3JlbnNlIHZhbGdiYXJlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2ViZWdyZW5zbmluZ2VyIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZlbGcgw6luIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIMOlIGJlZ3JlbnNlIHZhbGdiYXJlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pc2sgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNrICh2ZXJzam9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIGxlbmtlaGVudmlzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdPbSBkZW5uZSBrb2JsaW5nZW4gZ2plbGRlciBDb25maWdJdGVtIGVsbGVyIGRlbiBzdGF0aXNrZSB2ZXJzam9uZW4gYXYgcmVmZXJhbnNlb2JqZWt0ZXQuIEJlcmVnbmluZyBhdiBnamVsZGVuZGUgaGVuZGVsc2Vzc3RhdHVzIHV0ZsO4cmVzIGJhcmUgcMOlIGR5bmFtaXNrZSBrb2JsaW5nZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnVmVsZyBhdHRyaWJ1dHRldCBzb20ga29uZmlndXJhc2pvbnNlbGVtZW50ZW5lIHNrYWwgc8O4a2VzIGV0dGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNpc3N0cnVrdHVyZW4gZXIgaWtrZSBneWxkaWcuIE9wcGdpIGVuIGhhc2ggbWVkIGRhdGEgaSBZQU1MLWZvcm1hdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdEZXQgZXIgbsO4ZHZlbmRpZyDDpSBzdGFydGUgWUFNTC1zdHJlbmdlbiBtZWQgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnS3VubmUgaWtrZSByZW5zZSB0YWJlbGxlbiBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdJbmdlbiByZWxldmFudGUgZHluYW1pc2tlIGZlbHQgYmxlIGZ1bm5ldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0t1bm5lIGlra2Ugc2V0dGUgaW5uIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdTYXR0ZSBpbm4gMCByYWRlciBpIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYWtzLiBhbnRhbGwgYXYgZXR0IGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2pvbnNzdHJlbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRmVpbCB2ZWQgc3lua3JvbmlzZXJpbmcgYXYgZGVmaW5pc2pvbmVuZS4gVmVubmxpZ3N0IHNqZWtrIGxvZ2dlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdEdSBoYXIgSVRTTUNvbmZpZ0l0ZW0tZGVmaW5pc2pvbmVyIHNvbSBpa2tlIGVyIHN5bmtyb25pc2VydC4gVmVubmxpZ3N0IGRpc3RyaWJ1ZXIgZW5kcmluZ2VuZSBpIGRlIGR5bmFtaXNrZSBmZWx0ZW5lIGkgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdVdGfDpXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVmVkbGlrZWhvbGQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmxhZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnVXRmYXNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdFdmFsdWVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L0t2YWxpdGV0c2tvbnRyb2xsJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdPdmVyc2lrdCBvZyBiZWtyZWZ0ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRlcmUga2xhc3Nlci9yb2xsZXIgb2cgdGlsaMO4cmVuZGUgZmVsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0RldCBvcHBzdG9kIGVuIGZlaWwgdW5kZXIga2xhc3NlaW1wb3J0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa2p1bHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIFZpc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGxhdGVyIHV0dmlkZWRlIHPDuGtlYmV0aW5nZWxzZXIgaSBrb25maWd1cmFzam9uc29iamVrdHPDuGsgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuIE1lZCBkZW5uZSBmdW5rc2pvbmVuIGthbiBkdSBmLmVrcy4gc8O4a2UgZXR0ZXIgbmF2biBww6Uga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgbWVkIGRlbm5lIHR5cGVuIGJldGluZ2Vsc2VyIHNvbSAiKCpuw7hra2VsMSomJipuw7hra2VsMiopIiBlbGxlciAiKCpuw7hra2VsMSp8fCpuw7hra2VsMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVGlsbGF0ZXIgdXR2aWRlZGUgc8O4a2ViZXRpbmdlbHNlciBpIGtvbmZpZ3VyZXJpbmdzZWxlbWVudC1zw7hrIGkga3VuZGVncmVuc2Vzbml0dGV0LiBNZWQgZGVubmUgZnVua3Nqb25lbiBrYW4gZHUgZi5la3MuIHPDuGtlIGV0dGVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudG5hdm4gbWVkIGRlbm5lIHR5cGVuIGJldGluZ2Vsc2VyIHNvbSAiKCpuw7hra2VsMSomJipuw7hra2VsMiopIiBlbGxlciAiKCpuw7hra2VsMSp8fCpuw7hra2VsMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnVGlsZGVsdGUgS0ktZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0ktZXIgc29tIGVyIHRpbGRlbHQga3VuZGVzZWxza2FwZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSS1lciB0aWxvcmRuZXQga3VuZGVicnVrZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREItaW5uc3RpbGxpbmdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU2UgZXR0ZXIgZXQgdW5pa3QgbmF2biBiYXJlIGlubmVuZm9yIHNhbW1lIENvbmZpZ0l0ZW0ta2xhc3NlIChcJ2NsYXNzXCcpIGVsbGVyIGdsb2JhbHQgKFwnZ2xvYmFsXCcpLCBub2Ugc29tIGJldHlyIGF0IGFsbGUgZWtzaXN0ZXJlbmRlIENvbmZpZ0l0ZW1zIHRhcyBtZWQgaSBiZXRyYWt0bmluZ2VuIG7DpXIgbWFuIGxldGVyIGV0dGVyIGR1cGxpa2F0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdWZWxnIGVuIG1vZHVsIGZvciDDpSBow6VuZGhldmUgZXQgbmF2bmVza2plbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWZWxnIGVuIG1vZHVsIGZvciDDpSBow6VuZGhldmUgZXQgdGFsbHNramVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnVmVsZyBlbiBtb2R1bCBmb3Igw6UgaMOlbmRoZXZlIGV0IHZlcnNqb25zc3RyZW5nc2tqZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1ZlbGcgYXR0cmlidXR0ZXIgc29tIHNrYWwgdXRsw7hzZSBvcHByZXR0ZWxzZW4gYXYgZW4gbnkgdmVyc2pvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnVmVsZyBrYXRlZ29yaWVyIHNvbSBza2FsIHRpbG9yZG5lcyBkZW5uZSBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0tvbG9ubmVrb25maWd1cmFzam9uc2VsZW1lbnRmaWx0cmUgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdLb2xvbm5lciBzb20ga2FuIGZpbHRyZXJlcyBpIG92ZXJzaWt0ZW4gb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4gTWVyazogQmFyZSBhdHRyaWJ1dHRlciBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgb2cgZHluYW1pc2tlIGZlbHQgKER5bmFtaWNGaWVsZF9OYW1lWCkgZXIgdGlsbGF0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdMZWdnIHRpbCBrb25maWd1cmVyaW5nc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnUmVkaWdlciBrb25maWd1cmVyaW5nc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJlciBoZW5kZWxzZXNtb2R1bCBmb3Iga29uZmlndXJlcmluZ3NlbGVtZW50ZXQgc29tIG11bGlnZ2rDuHIgbG9nZ2luZyB0aWwgaGlzdG9yaWtrIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdIZW5kZWxzZXNtb2R1bCBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgc29tIG9wcGRhdGVyZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZW5lIHRpbCBkZXJlcyBnamVsZGVuZGUgZGVmaW5pc2pvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdLb25maWd1cmVyIGVsZW1lbnRoaXN0b3Jpa2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0tvbmZpZ3VyZXIgZWxlbWVudHV0c2tyaWZ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyZXIgZWxlbWVudHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnS29uZmlnSXRlbS10cmV2aXNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBhdiBmw7hsZ2VuZGUga2xhc3NlciB2aWwgaWtrZSBibGkgbGFncmV0IHDDpSBFbGFzdGljc2VhcmNoLXNlcnZlcmVuLiBIdmlzIGR1IHZpbCBicnVrZSBkZXR0ZSBww6UgZWtzaXN0ZXJlbmRlIENJLWVyLCBtw6UgQ0ktbWlncmVyaW5nZW4ga2rDuHJlcyB2aWEga29uc29sbGVuIGV0dGVyIGF0IGR1IGhhciBlbmRyZXQgZGV0dGUgYWx0ZXJuYXRpdmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIGRpc3RyaWJ1c2pvbnNzdGF0dXMgdmlsIGlra2UgYmxpIGxhZ3JldCBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJlbi4gRm9yIMOlIGJydWtlIGRldHRlIHDDpSBla3Npc3RlcmVuZGUgQ0ktZXIgbcOlIENJLW1pZ3JlcmluZ2VuIGtqw7hyZXMgdmlhIGtvbnNvbGxlbiBldHRlciBhdCBkdSBoYXIgZW5kcmV0IGRldHRlIGFsdGVybmF0aXZldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlndXJhc2pvbiBFbGVtZW50Z3JlbnNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmFzam9uIEVsZW1lbnRiZWdyZW5zbmluZyBwZXIgc2lkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiYXNlIGZvciBrb25maWd1cmFzam9uc3N0eXJpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdLb25maWd1cmFzam9uc2VsZW1lbnRldHMgYnVsa21vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmFzam9uc2VsZW1lbnQgZm9yIHPDuGsgaSBiYWNrZW5kLXJ1dGVyZW4gdGlsIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ09wcHJldHQgb2cgYWRtaW5pc3RyZXIgZGVmaW5pc2pvbmVuZSBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnT3BwcmV0dGVyIGJpbGxldHRlciBmb3IgQ29uZmlnSXRlbXMgcMOlIGJlc3RlbXRlIHRpZHNwdW5rdGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdLdW5kZXIga2FuIHNlIGhpc3Rvcmlza2UgQ0ktdmVyc2pvbmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLdW5kZW5lIGhhciBtdWxpZ2hldCB0aWwgw6UgYnl0dGUgbWFudWVsdCBtZWxsb20gaGlzdG9yaXNrZSBDSS12ZXJzam9uZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnU3RhbmRhcmRkYXRhIHNvbSBza2FsIGJydWtlcyBww6UgYXR0cmlidXR0ZXQgZm9yIHPDuGtlc2tqZXJtZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLiBFa3NlbXBlbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYWwgYnJ1a2VzIHDDpSBhdHRyaWJ1dHRldCBmb3Igc8O4a2Vza2plcm1lbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuIEVrc2VtcGVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5lciBoYW5kbGluZ2VyIGRlciBlbiBpbm5zdGlsbGluZ3NrbmFwcCBlciB0aWxnamVuZ2VsaWcgaSB3aWRnZXRlbiBmb3Iga29ibGVkZSBvYmpla3RlciAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBWw6ZyIG9wcG1lcmtzb20gcMOlIGF0IGRpc3NlIGhhbmRsaW5nZW5lIG3DpSBoYSByZWdpc3RyZXJ0IGbDuGxnZW5kZSBKUy0gb2cgQ1NTLWZpbGVyOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZXIgZXQgVGVtcGxhdGU6OlRvb2xraXQtc2tqZW1hIGZvciB2ZXJzam9uc3N0cmVuZ2VyLiBCcnVrZXMgYmFyZSBodmlzIFZlcnNqb25zc3RyZW5nbW9kdWwgZXIgc2F0dCB0aWwgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lciBldCBzZXR0IG1lZCBiZXRpbmdlbHNlciBmb3IgYXQgZW4ga3VuZGUgc2thbCBrdW5uZSBzZSBldCBrb25maWd1cmFzam9uc2VsZW1lbnQuIEJldGluZ2Vsc2VuZSBrYW4gZXZlbnR1ZWx0IGJlZ3JlbnNlcyB0aWwgYmVzdGVtdGUga3VuZGVncnVwcGVyLiBOYXZuIGVyIGRldCBlbmVzdGUgb2JsaWdhdG9yaXNrZSBhdHRyaWJ1dHRldC4gSHZpcyBpbmdlbiBhbmRyZSBhbHRlcm5hdGl2ZXIgZXIgYW5naXR0LCB2aWwgYWxsZSBrb25maWd1cmFzam9uc2VsZW1lbnRlciB2w6ZyZSBzeW5saWdlIHVuZGVyIGRlbiBha3R1ZWxsZSBrYXRlZ29yaWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBzbGV0dGUgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciB2ZWQgaGplbHAgYXYgZGV0IGdlbmVyaXNrZSBncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBoZW50ZSBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIHZlZCBoamVscCBhdiBkZXQgZ2VuZXJpc2tlIGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgbsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIHPDuGtlIGkgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciB2ZWQgaGplbHAgYXYgZGV0IGdlbmVyaXNrZSBncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBhbmdpIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgdmVkIGhqZWxwIGF2IGRldCBnZW5lcmlza2UgZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lcmVyIGVuIG92ZXJzaWt0c21vZHVsIHNvbSB2aXNlciBkZW4gbGlsbGUgdmlzbmluZ2VuIGF2IGVuIGxpc3RlIG1lZCBrb25maWd1cmFzam9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnQW5naXIgb20gbGVua2V0eXBlZXRpa2V0dGVuZSBza2FsIHZpc2VzIGkgbm9kZWZvcmJpbmRlbHNlbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmVyZXIgcmVndWzDpnJlIHV0dHJ5a2sgaW5kaXZpZHVlbHQgZm9yIGh2ZXIgQ29uZmlnSXRlbS1rbGFzc2UgZm9yIMOlIGtvbnRyb2xsZXJlIENvbmZpZ0l0ZW0tbmF2bmV0IG9nIHZpc2UgdGlsc3ZhcmVuZGUgZmVpbG1lbGRpbmdlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgdGlsZ2plbmdlbGlnZSBrb2xvbm5lciBtZWQgQ0ktZXIgaSBvdmVyc2lrdGVuIG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgYXZoZW5naWcgYXYgQ0kta2xhc3Nlbi4gSHZlciBvcHBmw7hyaW5nIG3DpSBiZXN0w6UgYXYgZXQga2xhc3NlbmF2biBvZyBlbiBtYXRyaXNlIG1lZCB0aWxnamVuZ2VsaWdlIGZlbHQgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2VuLiBEeW5hbWlza2UgZmVsdG9wcGbDuHJpbmdlciBtw6UgZsO4bGdlIHNramVtYWV0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmQga29uZmlnLWVsZW1lbnRhdHRyaWJ1dHQgZm9yIHNvcnRlcmluZyBhdiBrb25maWctZWxlbWVudGVyIGkgc8O4a2VyZXN1bHRhdGV0IGZvciBrb25maWctZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkIGtvbmZpZ3VyYXNqb25zZWxlbWVudGF0dHJpYnV0dCBmb3Igc29ydGVyaW5nIGF2IGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgc8O4a2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmQga29uZmlnLWVsZW1lbnRhdHRyaWJ1dHQgZm9yIHNvcnRlcmluZyBhdiBrb25maWctZWxlbWVudGV0IGkgc8O4a2VyZXN1bHRhdGV0IGZvciBkZW5uZSBvcGVyYXNqb25lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHJla2tlZsO4bGdlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBzw7hrZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0LiBPcHA6IGVsZHN0IHDDpSB0b3BwZW4uIE5lZDogbnllc3RlIMO4dmVyc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRyZWtrZWbDuGxnZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgc8O4a2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4gT3BwOiBlbGRzdCBww6UgdG9wcGVuLiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJka29sb25uZW5lIHNvbSB2aXNlcyBmb3IgQ0ktZXIgaSBvdmVyc2lrdGVuIG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIsIGF2aGVuZ2lnIGF2IENJLWtsYXNzZW4uIEh2ZXIgb3BwZsO4cmluZyBtw6UgYmVzdMOlIGF2IGV0IGtsYXNzZW5hdm4gb2cgZW4gbWF0cmlzZSBtZWQgdGlsZ2plbmdlbGlnZSBmZWx0IGZvciBkZW4gdGlsc3ZhcmVuZGUga2xhc3Nlbi4gRHluYW1pc2tlIGZlbHRvcHBmw7hyaW5nZXIgbcOlIGbDuGxnZSBza2plbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmVyZXIgc3RhbmRhcmQgcmVsYXNqb25zZHliZGUgc29tIHNrYWwgdmlzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZGF0dHJpYnV0dGV0IGZvciBzw7hrZWF0dHJpYnV0dGV0IHNvbSB2aXNlcyBmb3Igc2tqZXJtYmlsZGV0IGZvciBrb25maWd1cmFzam9uc29iamVrdHPDuGsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRhdHRyaWJ1dHRldCBzb20gdmlzZXMgZm9yIHPDuGtlYXR0cmlidXR0ZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0IHDDpSBzw7hrZXNramVybWVuLiBFa3NlbXBlbDogIktleSIgbcOlIGhhIG5hdm5ldCBww6UgZGV0IGR5bmFtaXNrZSBmZWx0ZXQsIGkgZGV0dGUgdGlsZmVsbGV0ICJYIiwgIkNvbnRlbnQiIG3DpSBoYSB2ZXJkaWVuIHRpbCBkZXQgZHluYW1pc2tlIGZlbHRldCwgYXZoZW5naWcgYXYgZGVuIGR5bmFtaXNrZSBmZWx0dHlwZW4sIFRleHQ6ICJlbiB0ZWtzdCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIG9nIGVsbGVyIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHVuZGVyb2JqZWt0ZXQgZm9yIGtsYXNzZW4gXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHRpbGdqZW5nZWxpZ2Uga29sb25uZXIgbWVkIENJLWVyIGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGF2aGVuZ2lnIGF2IENJLWtsYXNzZW4uIEh2ZXIgb3BwZsO4cmluZyBtw6UgYmVzdMOlIGF2IGV0IGtsYXNzZW5hdm4gb2cgZW4gbWF0cmlzZSBtZWQgdGlsZ2plbmdlbGlnZSBmZWx0IGZvciBkZW4gdGlsc3ZhcmVuZGUga2xhc3Nlbi4gRHluYW1pc2tlIGZlbHRvcHBmw7hyaW5nZXIgbcOlIGbDuGxnZSBza2plbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmVyZXIgaMO4eWRlbiBmb3IgcmVkaWdlcmluZ3Nrb21wb25lbnRlbiBmb3IgcmlrIHRla3N0IGZvciBkZW5uZSBza2plcm1lbi4gU2tyaXYgaW5uIHRhbGwgKHBpa3NsZXIpIGVsbGVyIHByb3NlbnR2ZXJkaSAocmVsYXRpdikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBhbnRhbGwgcmFkZXIgZm9yIENJLWRlZmluaXNqb25zcmVkaWdlcmluZ3Nwcm9ncmFtbWV0IGkgYWRtaW5pc3RyYXRvcmdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciByZWtrZWbDuGxnZW4gYXYgaGVuZGVsc2VzdGlsc3RhbmRlciBmcmEgaMO4eSAoZi5la3MuIGtyaXRpc2spIHRpbCBsYXYgKGYuZWtzLiBmdW5rc2pvbmVsbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHJlbGV2YW50ZSBkaXN0cmlidXNqb25zc3RhdHVzZW5lIGRlciB0aWxrbnl0dGVkZSB0aWNrZXRzIGthbiBww6V2aXJrZSBzdGF0dXNlbiB0aWwgZW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBodmlsa2Uga29sb25uZXIgc29tIHNrYWwgdmlzZXMgZm9yIENJLWVyIGkgZGVuIGtvbXBsZWtzZSB2aXNuaW5nZW4gYXYga29ibGluZ3N0YWJlbGxlbiBmb3IgYWxsZSBDSS1rbGFzc2VyLiBIdmlzIGRldCBpa2tlIGZpbm5lcyBub2VuIG9wcGbDuHJpbmcsIHZpc2VzIHN0YW5kYXJka29sb25uZW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHZpc3RlIGtvbG9ubmVuZSBtZWQgQ0ktZXIgaSBkZW4ga29tcGxla3NlIHZpc25pbmdlbiBhdiBrb2JsaW5nc3RhYmVsbGVuLCBhdmhlbmdpZyBhdiBDSS1rbGFzc2VuLiBIdmVyIG9wcGbDuHJpbmcgbcOlIGlubmxlZGVzIG1lZCBrbGFzc2VuYXZuZXQgb2cgdG8ga29sb24gKGYuZWtzLiBDb21wdXRlcjo6KS4gRGV0IGZpbm5lcyBub2VuIGbDpSBDSS1hdHRyaWJ1dHRlciBzb20gZXIgZmVsbGVzIGZvciBhbGxlIENJLWVyIChla3NlbXBlbCBmb3Iga2xhc3NlbiBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gRm9yIMOlIHZpc2UgaW5kaXZpZHVlbGxlIENJLWF0dHJpYnV0dGVyIHNvbSBkZWZpbmVydCBpIENJLWRlZmluaXNqb25lbiwgbcOlIGbDuGxnZW5kZSBza2plbWEgYnJ1a2VzIChla3NlbXBlbCBmb3Iga2xhc3NlbiBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBIdmlzIGRldCBpa2tlIGZpbm5lcyBub2VuIG9wcGbDuHJpbmcgZm9yIGVuIENJLWtsYXNzZSwgdmlzZXMgc3RhbmRhcmRrb2xvbm5lbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGh2aWxrZSBlbGVtZW50ZXIgc29tIGVyIHRpbGdqZW5nZWxpZ2UgZm9yICJIYW5kbGluZyIgcMOlIHRyZWRqZSBuaXbDpSBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGh2aWxrZSBlbGVtZW50ZXIgc29tIGVyIHRpbGdqZW5nZWxpZ2UgcMOlIGbDuHJzdGUgbml2w6UgaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgaHZpbGtlIGVsZW1lbnRlciBzb20gZXIgdGlsZ2plbmdlbGlnZSBww6UgYW5kcmUgbml2w6UgaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVyZXIgaHZpbGtlbiB0eXBlIGtvYmxpbmcgKG5hdm5naXR0IGZyYSB0aWNrZXQtcGVyc3Bla3RpdmV0KSBzb20ga2FuIHDDpXZpcmtlIHN0YXR1c2VuIHRpbCBldCBrb2JsZXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGh2aWxrZW4gdHlwZSBiaWxsZXR0IHNvbSBrYW4gcMOldmlya2Ugc3RhdHVzZW4gdGlsIGVuIGtvYmxldCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdPcHBkYXRlcmluZyBhdiBkZWZpbmlzam9uZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1NsZXR0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0ZhcmdlIGZvciBwcm9kdWtzam9uc3NldHRpbmdzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpc8Opcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIGZvciBkeW5hbWlza2UgZmVsdGhlbmRlbHNlciBzb20gbWFya2VyZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZGVmaW5pc2pvbmVyIHNvbSB1c3lua3JvbmlzZXJ0ZSBodmlzIGRlIGR5bmFtaXNrZSBmZWx0ZW5lIGVuZHJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0IHNvbSB2aXNlcyBpIHNramVybWJpbGRldCBmb3IgSVRTTS10aWxsZWdnc2ZlbHQgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0IHNvbSB2aXNlcyBpIHNramVybWJpbGRldCBmb3Igb3ZlcnNpa3Qgb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2tlIGZlbHQgc29tIHZpc2VzIGkgc2tqZXJtYmlsZGV0IGZvciBzw7hrIGV0dGVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBa3RpdmVyZXIgZnVua3Nqb25lbiBmb3IgbWFzc2VoYW5kbGluZ2VyIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciwgc2xpayBhdCBhZ2VudGVucyBmcm9udGVuZCBrYW4gYXJiZWlkZSBtZWQgbWVyIGVubiBldHQga29uZmlndXJhc2pvbnNlbGVtZW50IG9tIGdhbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FrdGl2ZXJlciBmdW5rc2pvbmVuIGZvciBtYXNzZWhhbmRsaW5nIGF2IGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGJhcmUgZm9yIGRlIG9wcGbDuHJ0ZSBncnVwcGVuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnSGVuZGVsc2VzbW9kdWwgZm9yIMOlIGFuZ2kgY29uZmlnaXRlbS1zdGF0dXMgcMOlIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0ZlbHQgaSBrb25maWd1cmFzam9uc2VsZW1lbnRpbmRla3Nlbiwgc29tIGJydWtlcyB0aWwgZnVsbHRla3N0c8O4ay4gRmVsdGVuZSBsYWdyZXMgb2dzw6UsIG1lbiBlciBpa2tlIG9ibGlnYXRvcmlza2UgZm9yIGRlbiBnZW5lcmVsbGUgZnVua3Nqb25hbGl0ZXRlbi4gSW5rbHVkZXJpbmcgYXYgdmVkbGVnZyBrYW4gZGVha3RpdmVyZXMgdmVkIMOlIHNldHRlIG9wcGbDuHJpbmdlbiB0aWwgMCBlbGxlciBzbGV0dGUgZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnRmVsdCBzb20gZXIgbGFncmV0IGkga29uZmlndXJhc2pvbnNlbGVtZW50aW5kZWtzZW4sIG9nIHNvbSBicnVrZXMgdGlsIGFuZHJlIHRpbmcgZW5uIGZ1bGx0ZWtzdHPDuGsuIEFsbGUgZmVsdGVuZSBlciBvYmxpZ2F0b3Jpc2tlIGZvciDDpSBmw6UgZnVsbCBmdW5rc2pvbmFsaXRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bGVuIGZvciBDb25maWdJdGVtRmV0Y2gtaW52b2tlcmluZ3NsYWdldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bGVuIGZvciBDb25maWdJdGVtRmV0Y2gtaW52b2tlcmluZ3NsYWdldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmVyaW5nIGF2IEdlbmVyaWNJbnRlcmZhY2UtbW9kdWxlbiBmb3IgQ29uZmlnSXRlbUZldGNoLWludm9rZXJpbmdzbGFnZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ092ZXJzaWt0IG92ZXIgSVRTTSBrb25maWd1cmFzam9uc2VuaGV0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5rbHVkZXJlciBkaXN0cmlidXNqb25zc3RhdHVzIGkgc8O4a2V0IGV0dGVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkga3VuZGVncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmVyIGhlbmRlbHNlc3RpbHN0YW5kZXIgaSBrb25maWd1cmFzam9uc3PDuGtldCBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWFrc2ltYWx0IGFudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBpIHJlc3VsdGF0ZXQgYXYgZGVubmUgb3BlcmFzam9uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgZm9yIMOlIHNqZWtrZSBodmlsa2VuIGdydXBwZSBzb20gZXIgYW5zdmFybGlnIGZvciBlbiBrbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgZm9yIMOlIHNqZWtrZSBodmlsa2VuIGdydXBwZSBzb20gZXIgYW5zdmFybGlnIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgZm9yIMOlIGdlbmVyZXJlIHN0YXRpc3Rpa2sgb3ZlciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hdm4gTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lcm1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGF2IGV0IHPDuGtlcmVzdWx0YXQgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGF2IGV0IHPDuGtlcmVzdWx0YXQgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdGVyIGRldCBza2FsIHPDuGtlcyBldHRlciwgaHZvciBtYW5nZSBvcHBmw7hyaW5nZXIgb2cgaHZpbGtlIGF0dHJpYnV0dGVyIHNvbSBza2FsIHZpc2VzLiBDb25maWdJdGVtLWF0dHJpYnV0dGVyIG3DpSBsYWdyZXMgZWtzcGxpc2l0dCB2aWEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnT3ZlcnNpa3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBrYXRlZ29yaWVuZSBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50a2xhc3NlciBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3Iga29sb25uZWZpbHRyZW5lIGkgb3ZlcnNpa3RlbiBvdmVyIHNtw6Uga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuIE1lcms6IEh2aXMgZHUgc2V0dGVyICJBY3RpdmUiIHRpbCAwLCB2aWwgZGV0IGJhcmUgaGluZHJlIGFnZW50ZXIgaSDDpSByZWRpZ2VyZSBpbm5zdGlsbGluZ2VuZSBmb3IgZGVubmUgZ3J1cHBlbiBpIHNpbmUgcGVyc29ubGlnZSBwcmVmZXJhbnNlciwgbWVuIGRldCB2aWwgZm9ydHNhdHQgdsOmcmUgbXVsaWcgZm9yIGFkbWluaXN0cmF0b3JlciDDpSByZWRpZ2VyZSBpbm5zdGlsbGluZ2VuZSBww6UgdmVnbmUgYXYgZW4gYW5uZW4gYnJ1a2VyLiBCcnVrICJQcmVmZXJlbmNlR3JvdXAiIHRpbCDDpSBrb250cm9sbGVyZSBpIGh2aWxrZXQgb21yw6VkZSBkaXNzZSBpbm5zdGlsbGluZ2VuZSBza2FsIHZpc2VzIGkgYnJ1a2VyZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBmYXJnZW5lIGZvciBkaXN0cmlidXNqb25zc3RhdHVzZW5lIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBkaXN0cmlidXNqb25zc3RhdHVzZW5lIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgdGlsZ2FuZ3NncnVwcGUtZWtzZW1wZWwgaSBhdHRyaWJ1dHRlbmUgZm9yIGdlbmVyZWxsIGthdGFsb2cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgbmF2bmVtb2R1bGVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VyIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIG51bW1lcm1vZHVsZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGtsYXNzZXIgaSBwcmVmZXJhbnNldmlzbmluZ2VuIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBzaWRlbmUgKGRlciBrb25maWd1cmFzam9uc2VsZW1lbnRlbmUgdmlzZXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciB2ZXJzam9uc3N0cmVuZ21vZHVsZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGtsYXNzZXIgaSBwcmVmZXJhbnNldmlzbmluZ2VuIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIHZlcnNqb25zc3RyZW5nbWFsdmVya3TDuHltb2R1bGVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VyIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgdmVyc2pvbnN1dGzDuHNlcmVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VyIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdUaWxsYXRlbHNlc2dydXBwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGV0cyB2ZWRsZWdnc2hhbmRsaW5nIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHNramVybWJpbGRldCBmb3IgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IGZvciBzw7hrIGV0dGVyIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHPDuGtlc2tqZXJtZW4gZm9yIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHNramVybWJpbGRldCBmb3IgdHJldmlzbmluZyBhdiBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugem9vbXNramVybWJpbGRldCBmb3IgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IExlZ2cgdGlsIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50IGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IGZvciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IFJlZGlnZXIgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnQgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgZm9yIGhpc3RvcmlrayBmb3IgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgZm9yIHV0c2tyaWZ0IGF2IElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdOw7hkdmVuZGlnZSByZXR0aWdoZXRlciBmb3Igw6Ugc2xldHRlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1PDuGsgZXR0ZXIga29uZmlndXJhc2pvbnNlbmhldGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQW5naSBoZW5kZWxzZXNzdGF0dXMgZm9yIGVuIENJIGF1dG9tYXRpc2sgbsOlciBlbiBUaWNrZXQga29ibGVzIHRpbCBlbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdpciBkaXN0cmlidXNqb25zc3RhdHVzIGkgc2tqZXJtYmlsZGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW5naXIgaGVuZGVsc2Vzc3RhdHVzIGkgc2tqZXJtYmlsZGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRldCBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBzb20gZ2rDuHIgZGV0IG11bGlnIMOlIGtvYmxlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCB0aWwgZXQgYW5uZXQgb2JqZWt0IGkgem9vbXZpc25pbmdlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZW4gbGVua2UgaSBtZW55ZW4gZm9yIMOlIGbDpSB0aWxnYW5nIHRpbCBoaXN0b3Jpa2tlbiBmb3IgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgZsOlIHRpbGdhbmcgdGlsIGhpc3Rvcmlra2VuIHRpbCBldCBrb25maWd1cmFzam9uc2VsZW1lbnQgaSB6b29tdmlzbmluZ2VuIGF2IGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6Ugc2xldHRlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYXYgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnVmlzZXIgZW4gbGVua2UgaSBtZW55ZW4gZm9yIMOlIHZpc2Uga29uZmlndXJhc2pvbnNlbGVtZW50bGVua2VuZSBzb20gZW4gdHJldmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgZHVwbGlzZXJlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIG92ZXJzaWt0ZW4gb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZW4ga29ibGluZyBpIG1lbnllbiBmb3Igw6UgZHVwbGlzZXJlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYXYgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZW4gbGVua2UgaSBtZW55ZW4gZm9yIMOlIHJlZGlnZXJlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYXYgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZW4gbGVua2UgaSBtZW55ZW4gZm9yIMOlIGfDpSB0aWxiYWtlIGkgem9vbXZpc25pbmdlbiBhdiBrb25maWd1cmFzam9uc2VsZW1lbnRldCBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6Ugc2tyaXZlIHV0IGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYXYgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSB6b29tZSBpbm4gcMOlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIG92ZXJzaWt0ZW4gb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIga29uZmlndXJlcmluZ3NlbGVtZW50ZXRzIGhpc3RvcmlrayAoaSBvbXZlbmR0IHJla2tlZsO4bGdlKSBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnU3RhbmRhcmRrYXRlZ29yaWVuIHNvbSB2aXNlcyBodmlzIGluZ2VuIGVyIHZhbGd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmlrYXRvcmVuIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQsIGYuZWtzLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gU3RhbmRhcmRpbm5zdGlsbGluZ2VuIGVyIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVXRsw7hzZXIgQ29uZmlnSXRlbUZldGNoLWludm9rYXRvcmVuIGF1dG9tYXRpc2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNqb25zc3RyZW5ndXR0cnlrayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzam9uc3N0cmVuZ21vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNqb25zdXRsw7hzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnT20gZmVsdCBza2FsIGZ5bGxlcyB1dCBhdXRvbWF0aXNrICgxKSwgb2cgaSBzw6UgZmFsbCBvZ3PDpSBza2p1bGVzIGZvciBzYWtzZm9ybWxlbmUgKDIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdPbSBrasO4cmluZ2VuIGF2IENvbmZpZ0l0ZW1BQ0wga2FuIHVubmfDpXMgdmVkIMOlIHNqZWtrZSBidWZyZWRlIGZlbHRhdmhlbmdpZ2hldGVyLiBEZXR0ZSBrYW4gZm9yYmVkcmUgaW5ubGFzdGluZ3N0aWRlbiBmb3IgZm9ybXVsYXJlciwgbWVuIG3DpSBkZWFrdGl2ZXJlcyBodmlzIEFDTE1vZHVsZXMgc2thbCBicnVrZXMgZm9yIElUU01Db25maWdJdGVtLSBvZyBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnSHZpbGtlbiBnZW5lcmVsbCBpbmZvcm1hc2pvbiBzb20gdmlzZXMgaSB0b3BwdGVrc3Rlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0aXYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDQ0LDQ1IGNtICgxNyw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogNTMsMzQgY20gKDIxIHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiA4MCwwMSBjbSAoMzEsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LXRvbW1lcnMgc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogODgsOSBjbSAoMzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS10b21tZXJzIHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgdG9tbWVyICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtdG9tbWVycyBzdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHRvbW1lciAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogMTA2LDY4IGNtICg0MiB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSB0b21tZXIgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDEzMywzNSBjbSAoNTIsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSB0b21tZXIgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDE0Niw2OCBjbSAoNTcsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgdG9tbWVyICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiAxNjAsMDIgY20gKDYzIHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCB0b21tZXIgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHRvbW1lciAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyB0b21tZXIgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgdG9tbWVyICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDE3LDc4IGNtICg3IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMzUsNTYgY20gKDE0IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnUmVnbnNrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZHJlc3NldGlsZGVsaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZyB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwZSBhcHBhcmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQmF0dGVyaWthcGFzaXRldCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0JhdHRlcml0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnlnbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzc2dyZW5zZXNuaXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdQcm9zZXNzb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXNpdGV0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhc2l0ZXQgcGVyIGdyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLb3J0bnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS29ydGxlc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0tvcnR0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGllbnRzZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50cHJvZ3JhbXZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS3VuZGVrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdLbG9ra2VmcmVrdmVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kZXNpZ25lcmluZ3NzZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmFuc2V0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsZW50YXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IGRpc3RyaWJ1dMO4cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0NvbnRhaW5lcmjDpW5kdGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnS29udHJha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0tvbnRyYWt0c3R5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdLb250cmFrdHNwZXJpb2RlIGZyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdLb250cmFrdHNwZXJpb2RlIGZyZW0gdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1Ryw6VkbMO4cyB0ZWxlZm9uIChERUNULXRlbGVmb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0tvc3RuYWRzZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdBbnRhbGwgbGlzZW5zZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ09wcHJldHRlbHNlc2RhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1RpbHBhc3NldCBzdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGYWt0dXJhZGF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0byBmb3IgYmVzdGlsbGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0byBmb3IgZ2FyYW50aXN0aWxsZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRvIGZvciB1dGdpdmVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ1N0YXNqb27DpnInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50c2lnbmVyaW5nc3NlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0ktc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLXBvc3RzZXJ0aWZpa2F0ZXIgKFMvTUlNRS1zZXJ0aWZpa2F0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0FyYmVpZHNhdnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdTbHV0dCBJUC1hZHJlc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnU2x1dHQgcMOlIHN0w7h0dGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVXRsw7hwc2RhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Vrc3Rlcm4gaGFyZGRpc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdCcmFubm11cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zhc3R2YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnRW5lcmdpbGFncmluZyBtZWQgc3ZpbmdoanVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybWZha3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNlYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnR3JhdGlzIHByb2dyYW12YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0dlbmVyZWxsIGluZm9ybWFzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ01hc2tpbnZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNYXNraW52YXJlbW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ01hc2tpbnZhcmUgVmVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnSG9kZXRlbGVmb25lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQLXByb3Rva29sbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZXRzLSBvZyB0aWxnYW5nc3N0eXJpbmcgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudGFybnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdGYWt0dXJhbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENELXNramVybSAoZmx5dGVuZGUga3J5c3RhbGxza2plcm0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQtc2tqZXJtIChseXNkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnRmFzdHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnQsOmcmJhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0JyZWRkZWdyYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYWcgMTogRnlzaXNrIGxhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdMYWcgMjogRGF0YWxpbmstbGFnZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xhZyAzOiBOZXR0dmVya3NsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnTGFnIDM6IE5ldHR2ZXJrc2xhZyAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xhZyA0OiBUcmFuc3BvcnRsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xhZyA1OiBTZXNqb25zbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xhZyA2OiBQcmVzZW50YXNqb25zbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGFnIDc6IEFwcGxpa2Fzam9uc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdMZWllYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGlzZW5zYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaXNlbnNuw7hra2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpc2VucyB0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaXNlbnNwZXJpb2RlIGZyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpc2Vuc3BlcmlvZGUgZnJlbSB0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGl1bS1qZXJuZm9zZmF0YmF0dGVyaSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGl1bS1pb24tYmF0dGVyaSAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0zDpW5lYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdMaWdnZXIgaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMZW5nZGVncmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnUHJvZHVzZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW1hbCBiZWxhc3RuaW5nc2thcGFzaXRldCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnSHVrb21tZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ01pbm5ldHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsbGJlc2tyaXZlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1NramVybW9wcGzDuHNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1NramVybXN0w7hycmVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ05ldHR2ZXJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ05ldHR2ZXJrc2luZm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ05ldHR2ZXJrc2luZm9ybWFzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOZXR0dmVya3NsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtrZWwta2FkbWl1bS1iYXR0ZXJpIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1tZXRhbGxoeWRyaWQtYmF0dGVyaSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQXZ0YWxlIG9tIHRhdXNoZXRzcGxpa3QgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RhdGJvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0FudGFsbCBwcm9zZXNzb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdBbnRhbGwgUkFNLW1vZHVsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnQW50YWxsIGdyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtc2tqZXJtIChvcmdhbmlzayBseXNkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnRHJpZnRza29zdG5hZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ0Jlc3RpbGxpbmdzbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQW5uZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1V0Z2FuZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTi1LT0RFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNrYXBzYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbnR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXNpc2tlIGtqZXJuZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdHLDuG1mb3JzeW5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdLasO4cHQgcMOlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdTdGF0aXZkeWJkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JhY2stZW5oZXRlciAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1JvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1rb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUy1zZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdTYWxnc2tvbnRyYWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGl0dGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdGb3JzZWdsZXQgYmx5c3lyZWJhdHRlcmkgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXJwcm9ncmFtdmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NlcnZpY2VhdnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNlIFRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXBlIHN0aWtrb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnUHJvZ3JhbXZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdIw7h5dHRhbGVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQgSVAtYWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnTGFncmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ0xhZ3JpbmdzcGFydGlzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRGF0dGVyc2Vsc2thcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2FtbWVuZHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1R5bm4ga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdUcsOlZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVG9yZGVuYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWx0IGdyYWZpa2tvcnQtUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhbHQgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0JlcsO4cmluZ3Nza2plcm0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUw6Vybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSLWhvZGVzZXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Via2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/nl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5sX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGdlbWVuZSBiZWRyaWpmc2dlZ2V2ZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdJbnN0ZWxsaW5nZW4gdm9vciBpbmtvbWVuZGUgYWFudnJhYWdnZWdldmVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0luc3RlbGxpbmdlbiB2b29yIHVpdGdhYW5kZSByZXNwb25zZ2VnZXZlbnMnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWd1cmF0aWUtaXRlbSBiZWhlZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdXaWp6aWcgZGVmaW5pdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdSb2xkZWZpbml0aWUgd2lqemlnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQga2xhc3NlbmJ1bmRlbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdIaWVyIGt1bnQgdSBSZWFkeTJJbXBvcnQga2xhc3NlYnVuZGVscyBpbXBvcnRlcmVuIGRpZSBvbnplIG1lZXN0IGdlYnJ1aWtlbGlqa2UgY29uZmlndXJhdGllLWl0ZW1zIHRvbmVuLiBIb3VkIGVyIHJla2VuaW5nIG1lZSBkYXQgc29tbWlnZSBhYW52dWxsZW5kZSBjb25maWd1cmF0aWVzIG5vZGlnIGt1bm5lbiB6aWpuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdCZXN0YWFuZGUgZW50aXRlaXRlbiBiaWp3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdSZWFkeTJBZG9wdCBrbGFzc2VidW5kZWxzIGltcG9ydGVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWd1cmF0aWUgSXRlbSBLbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWd1cmF0aWUtaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0ZXIgb3Aga2xhc3Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3RlZXIgZWVuIGtsYXNzZSB1aXQgZGUgbGlqc3Qgb20gZWVuIG5pZXV3IGNvbmZpZ3VyYXRpZS1pdGVtIGFhbiB0ZSBtYWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNLWNvbmZpZ0l0ZW0gYnVsa2FjdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaW5rIG5hYXIgZWVuIGFuZGVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnT25nZWxkaWcgQ29uZmlndXJhdGllIEl0ZW0gbnVtbWVyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdIZXQgbnVtbWVyIHZhbiBlZW4gYW5kZXIgY29uZmlndXJhdGllLWl0ZW0gb20gbWVlIHRlIGxpbmtlbi4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdXaWx0IHUgZGl0IGNvbmZpZ3VyYXRpZS1pdGVtIGVjaHQgdmVyd2lqZGVyZW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RlIG5hYW0gdmFuIGRpdCBjb25maWd1cmF0aWUtaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFhbSBpcyBhbCBpbiBnZWJydWlrIGRvb3IgZGUgQ29uZmlnSXRlbXMgbWV0IGRlIHZvbGdlbmRlIE51bW1lcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpZW51bW1lciB2YW4gZGl0IGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2llbnVtbWVyIGlzIGFsIGluIGdlYnJ1aWsgZG9vciBkZSBDb25maWdJdGVtcyBtZXQgaGV0IHZvbGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50c3RhdHVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdHZXNjaGllZGVuaXMgdmFuIENvbmZpZ3VyYXRpZS1pdGVtOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJbmhvdWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0FhbmdlbWFha3Qgb3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnRGV0YWlsb3ZlcnppY2h0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0FhbnRhbCBjb25maWd1cmF0aWUtaXRlbXMgcGVyIHBhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnR2VlbiBjb25maWcgaXRlbSBnZWdldmVucyBnZXZvbmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY3RlZXIgZGl0IGNvbmZpZ3VyYXRpZS1pdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnWm9la2VuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgdm9vciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnRGllcHRlIE5pdmVhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ0luLS91aXR6b29tZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWF4LiBrb3BwZWxpbmdzbml2ZWF1IGJlcmVpa3Qgdm9vciBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIGluZm9ybWF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnQWN0dWVsZSBzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FjdHVlbGUgaW5jaWRlbnRzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnTGFhc3RlIHdpanppZ2luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdMYWFzdGUgd2lqemlnaW5nIGRvb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdVdyBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIHpvZWtlbic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0RlIHZvbGdlbmRlIGtsYXNzZW4gd29yZGVuIGdlw69tcG9ydGVlcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRGUgdm9sZ2VuZGUgcm9sbGVuIHdvcmRlbiBnZcOvbXBvcnRlZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ01lcmsgb3AgZGF0IG9vayBvdmVyZWVua29tc3RpZ2UgZHluYW1pc2NoZSB2ZWxkZW4gZW4gR2VuZXJhbENhdGFsb2cga2xhc3NlbiB3b3JkZW4gYWFuZ2VtYWFrdCBlbiBkYXQgZGV6ZSBuaWV0IGF1dG9tYXRpc2NoIHdvcmRlbiB2ZXJ3aWpkZXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1dpbCBqZSBkb29yZ2Fhbj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnVm9vcmJlZWxka2xhc3NlbiBub2RpZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pdGllIGlzIGdlZW4gZ2VsZGlnZSBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnT3ZlcnppY2h0OiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnRXIgaXMgZ2VlbiBDb25maWdJdGVtSUQgb3BnZWdldmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0plIGhlYnQgdGVuIG1pbnN0ZSDDqcOpbiBnZXNlbGVjdGVlcmQgY29uZmlndXJhdGllLWl0ZW0gbm9kaWchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnSmUgaGVidCBnZWVuIHNjaHJpamZ0b2VnYW5nIHRvdCBkaXQgY29uZmlndXJhdGllLWl0ZW06ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdFciBpcyBnZWVuIGRlZmluaXRpZSBnZWRlZmluaWVlcmQgdm9vciBrbGFzc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWcgaXRlbSAiJXMiIG5pZXQgZ2V2b25kZW4gaW4gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnRGVmaW5pZWVydCBoZXQgYWFudGFsIHJpamVuIHZvb3IgZGUgQ0ktZGVmaW5pdGllLWVkaXRvciBpbiBkZSBiZWhlZXJpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdHZWVuIHZlcnNpZSBnZXZvbmRlbiB2b29yIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnRXIgaXMgZ2VlbiBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9mIENsYXNzSUQgb3BnZWdldmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnRXIgd29yZHQgZ2VlbiB0b2VnYW5nIGdlZ2V2ZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0thbiBnZXNjaGllZGVuaXMgbmlldCB3ZWVyZ2V2ZW4sIGVyIGlzIGdlZW4gQ29uZmlnSXRlbUlEIG9wZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gZ2VzY2hpZWRlbmlzIG5pZXQgd2VlcmdldmVuLCBnZWVuIHRvZWdhbmdzcmVjaHRlbiBnZWdldmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmlldXcgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOaWV1d2UgdmVyc2llIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF0aW9uc3RhdHVzIGJpamdld2Vya3QgKG5pZXV3PSVzLCBvdWQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW50IHN0YXR1cyBiaWpnZXdlcmt0IChuaWV1dz0lcywgb3VkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSB2ZXJ3aWpkZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGluayBuYWFyICVzICh0eXBlPSVzKSB0b2VnZXZvZWdkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5rIG5hYXIgJXMgKHR5cGU9JXMpIHZlcndpamRlcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0gZGVmaW5pdGllIGJpamdld2Vya3QgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hYW0gYmlqZ2V3ZXJrdCAobmlldXc9JXMsIG91ZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dXQgJXMgYmlqZ2V3ZXJrdCB2YW4gIiVzIiBuYWFyICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2llICVzIHZlcndpamRlcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnRXIgaXMgZ2VlbiBDb25maWdJdGVtSUQgb2YgVmVyc2lvbklEIG9wZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGNvbmZpZyBpdGVtIG5pZXQgdG9uZW4sIGdlZW4gdG9lZ2FuZ3NyZWNodGVuIGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG5pZXQgZ2V2b25kZW4gaW4gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdhZmdlZHJ1a3QgZG9vciAlcyBvcCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbnRpZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ09uZ2VsZGlnZSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0VyIGlzIGdlZW4gQ2xhc3NJRCBnZWdldmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0dlZW4gdG9lZ2FuZ3NyZWNodGVuIHZvb3IgZGV6ZSBrbGFzc2UgZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0dlZW4gcmVzdWx0YWF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0NvbmZpZyBpdGVtIHpvZWtyZXN1bHRhdGVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdLYW4gaXRlbSBuaWV0IHdlZXJnZXZlbiwgZXIgemlqbiBnZWVuIHRvZWdhbmdzcmVjaHRlbiB2b29yIENvbmZpZ0l0ZW0gZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBuaWV0IGdldm9uZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdHZWVuIHZlcnNpZXMgZ2V2b25kZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aW9uZWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICd3YWFyc2NodXdpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGUgc3RhdHVzIHZhbiBkaXQgY29uZmlndXJhdGllLWl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZSBpbmNpZGVudHN0YXR1cyB2YW4gZGl0IGNvbmZpZ3VyYXRpZS1pdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnR2VlbiB0b2VzdGVtbWluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgb25nZWxkaWchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdab2VrcGFyYW1ldGVycyBvbmdlbGRpZyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdXZWVyZ2VnZXZlbiBjb25maWd1cmF0aWUtaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBpbnpldHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGh1aWRpZyBpbmNpZGVudCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdUdXNzZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzZWJlcGVya2luZ2VuIHZvb3IgaGV0IGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RlZXIgZWVuIG9mIG1lZXIga2xhc3NlbiBvbSBzZWxlY3RlZXJiYXJlIGNvbmZpZ3VyYXRpZS1pdGVtcyB0ZSBiZXBlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlYmVwZXJraW5nZW4gdm9vciBoZXQgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RlZXIgZWVuIG9mIG1lZXIga2xhc3NlbiBvbSBzZWxlY3RlZXJiYXJlIGNvbmZpZ3VyYXRpZS1pdGVtcyB0ZSBiZXBlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaXNjaCAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpc2NoICh2ZXJzaWUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cGUgdmVyd2lqemluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdPZiBkZXplIGxpbmsgdmFuIHRvZXBhc3NpbmcgaXMgb3AgaGV0IENvbmZpZ0l0ZW0gb2YgZGUgc3RhdGlzY2hlIHZlcnNpZSB2YW4gaGV0IG9iamVjdCB3YWFybmFhciB2ZXJ3ZXplbiB3b3JkdC4gRGUgYmVyZWtlbmluZyB2YW4gZGUgaHVpZGlnZSBpbmNpZGVudHRvZXN0YW5kIHdvcmR0IGFsbGVlbiB1aXRnZXZvZXJkIG9wIGR5bmFtaXNjaGUgbGlua3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWN0ZWVyIGhldCBhdHRyaWJ1dXQgd2Fhcm9wIGRlIGNvbmZpZ3VyYXRpZS1pdGVtcyBtb2V0ZW4gd29yZGVuIGRvb3J6b2NodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFzaXNzdHJ1Y3R1dXIgaXMgb25nZWxkaWcuIEdlZWYgZWVuIGhhc2ggbWV0IGdlZ2V2ZW5zIGluIFlBTUwtaW5kZWxpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnRGUgWUFNTC1zdHJpbmcgYmVnaW5uZW4gbWV0IFwnLS0tXCcgaXMgdmVyZWlzdC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnS29uIGRlIHRhYmVsIGNvbmZpZ2l0ZW1fbGluayBuaWV0IHZlcndpamRlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnRXIgemlqbiBnZWVuIHJlbGV2YW50ZSBkeW5hbWlzY2hlIHZlbGRlbiBnZXZvbmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0tvbiBuaWV0IGludm9lZ2VuIGluIGRlIHRhYmVsIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnMCByaWplbiBpbmdldm9lZ2QgaW4gZGUgdGFiZWwgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltYWxlIGhvZXZlZWxoZWlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpZSBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRm91dCBiaWogaGV0IHN5bmNocm9uaXNlcmVuIHZhbiBkZSBkZWZpbml0aWVzLiBDb250cm9sZWVyIGhldCBsb2dib2VrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0plIGhlYnQgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGllcyBkaWUgbmlldCBnZXN5bmNocm9uaXNlZXJkIHppam4uIEltcGxlbWVudGVlciBqZSBJVFNNQ29uZmlnSXRlbSBkeW5hbWlzY2hlIHZlbGR3aWp6aWdpbmdlbi4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1ZlcmxvcGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnSW4gb25kZXJob3VkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ0dlcGxhbm5lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdJbiByZXBhcmF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1VpdGdlZmFzZWVyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ092ZXJ6aWNodCBlbiBiZXZlc3RpZ2luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdLbGFzc2VuL3JvbGxlbiBlbiBodW4gZ2VyZWxhdGVlcmRlIHZlbGRlbiBpbXBvcnRlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnRXIgaXMgZWVuIGZvdXQgb3BnZXRyZWRlbiB0aWpkZW5zIGhldCBpbXBvcnRlcmVuIHZhbiBkZSBrbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBWZXJib3JnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIEFmZ2ViZWVsZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTWFha3QgdWl0Z2VicmVpZGUgem9la3Zvb3J3YWFyZGVuIG1vZ2VsaWprIGJpaiBoZXQgem9la2VuIG5hYXIgY29uZmlnIGl0ZW1zIGluIGRlIGFnZW50IGludGVyZmFjZS4gTWV0IGRlemUgZnVuY3RpZSBrdW4gamUgYmlqdm9vcmJlZWxkIHpvZWtlbiBvcCBjb25maWcgaXRlbSBuYWFtIG1ldCBkaXQgc29vcnQgY29uZGl0aWVzIHpvYWxzICIoKmtleTEqJiYqa2V5MiopIiBvZiAiKCprZXkxKnwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTWFha3QgdWl0Z2VicmVpZGUgem9la3Zvb3J3YWFyZGVuIG1vZ2VsaWprIGJpaiBoZXQgem9la2VuIG5hYXIgY29uZmlndXJhdGllcyBpbiBkZSBrbGFudGVuaW50ZXJmYWNlLiBNZXQgZGV6ZSBmdW5jdGllIGt1biBqZSBiaWp2b29yYmVlbGQgem9la2VuIG9wIGNvbmZpZyBpdGVtIG5hYW0gbWV0IGRpdCBzb29ydCBjb25kaXRpZXMgem9hbHMgIigqa2V5MSomJiprZXkyKikiIG9mICIoKmtleTEqfCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdUb2VnZXdlemVuIENJXCdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJXCdzIHRvZWdld2V6ZW4gYWFuIGtsYW50YmVkcmlqZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJXCdzIHRvZWdld2V6ZW4gYWFuIGtsYW50Z2VicnVpa2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCLWluc3RlbGxpbmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQ29udHJvbGVlciBhbGxlZW4gb3AgZWVuIHVuaWVrZSBuYWFtIGJpbm5lbiBkZXplbGZkZSBDb25maWdJdGVtLWtsYXNzZSAoXCdjbGFzc1wnKSBvZiBnbG9iYWFsIChcJ2dsb2JhbFwnKSwgd2F0IGJldGVrZW50IGRhdCBlbGsgYmVzdGFhbmQgQ29uZmlnSXRlbSBpbiBhYW5tZXJraW5nIHdvcmR0IGdlbm9tZW4gYmlqIGhldCB6b2VrZW4gbmFhciBkdXBsaWNhdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnS2llcyBlZW4gbW9kdWxlIG9tIGVlbiBuYWFtZ2V2aW5nc3NjaGVtYSBhZiB0ZSBkd2luZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnS2llcyBlZW4gbW9kdWxlIG9tIGVlbiBjaWpmZXJzY2hlbWEgYWYgdGUgZHdpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnS2llcyBlZW4gbW9kdWxlIG9tIGVlbiB2ZXJzaWVzY2hlbWEgYWYgdGUgZHdpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdLaWVzIGtlbm1lcmtlbiBvbSBoZXQgYWFubWFrZW4gdmFuIGVlbiBuaWV1d2UgdmVyc2llIHRlIGFjdGl2ZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnS2llcyBjYXRlZ29yaWXDq24gb20gdG9lIHRlIHdpanplbiBhYW4gZGV6ZSBjb25maWcgaXRlbSBrbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnS29sb20gY29uZmlnIGl0ZW0gZmlsdGVycyB2b29yIENvbmZpZ0l0ZW0gT3ZlcnppY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnS29sb21tZW4gZGllIGt1bm5lbiB3b3JkZW4gZ2VmaWx0ZXJkIGluIGhldCBjb25maWcgaXRlbSBvdmVyemljaHQgdmFuIGRlIGFnZW50IGludGVyZmFjZS4gT3BtZXJraW5nOiBBbGxlZW4gQ29uZmlnIEl0ZW0gYXR0cmlidXRlbiBlbiBEeW5hbWlzY2hlIHZlbGRlbiAoRHluYW1pY0ZpZWxkX05hbWVYKSB6aWpuIHRvZWdlc3RhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gdG9ldm9lZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIGJld2Vya2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpZS1pdGVtIGdlYmV1cnRlbmlzbW9kdWxlIGRpZSBoZXQgbG9nZ2VuIG5hYXIgZ2VzY2hpZWRlbmlzIGluIGRlIGFnZW50aW50ZXJmYWNlIG1vZ2VsaWprIG1hYWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdDb25maWcgaXRlbSBldmVudCBtb2R1bGUgZGllIGNvbmZpZyBpdGVtcyBiaWp3ZXJrdCBuYWFyIGh1biBodWlkaWdlIGRlZmluaXRpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdDb25maWd1cmF0aWUtaXRlbSBnZXNjaGllZGVuaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIGFmZHJ1a2tlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmF0aWUtaXRlbSB6b29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gYm9vbXN0cnVjdHV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyB2YW4gZGUgdm9sZ2VuZGUga2xhc3NlbiB3b3JkZW4gbmlldCBvcGdlc2xhZ2VuIG9wIGRlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBPbSBkaXQgdG9lIHRlIHBhc3NlbiBvcCBiZXN0YWFuZGUgQ0lzLCBtb2V0IGRlIENJLW1pZ3JhdGllIHdvcmRlbiB1aXRnZXZvZXJkIHZpYSBkZSBjb25zb2xlLCBuYSBoZXQgd2lqemlnZW4gdmFuIGRlemUgb3B0aWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG1ldCBkZSB2b2xnZW5kZSBkZXBsb3ltZW50IHN0YXRlcyB3b3JkZW4gbmlldCBvcGdlc2xhZ2VuIG9wIGRlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBPbSBkaXQgdG9lIHRlIHBhc3NlbiBvcCBiZXN0YWFuZGUgQ0lzLCBtb2V0IGRlIENJLW1pZ3JhdGllIHdvcmRlbiB1aXRnZXZvZXJkIHZpYSBkZSBjb25zb2xlLCBuYSBoZXQgd2lqemlnZW4gdmFuIGRlemUgb3B0aWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYXRpZSBJdGVtIExpbWlldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhdGllIEl0ZW0gbGltaWV0IHBlciBwYWdpbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdEYXRhYmFzZSB2b29yIGNvbmZpZ3VyYXRpZWJlaGVlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIGJ1bGttb2R1bGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpZS1pdGVtIHpvZWsgYmFja2VuZCByb3V0ZXIgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQWFubWFrZW4gZW4gYmVoZXJlbiB2YW4gZGVmaW5pdGllcyB2b29yIGNvbmZpZ3VyYXRpZS1pdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmXDq2VydCB0aWNrZXRzIHZvb3IgQ29uZmlnSXRlbXMgb3Agc3BlY2lmaWVrZSB0aWpkc3RpcHBlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS2xhbnRlbiBrdW5uZW4gaGlzdG9yaXNjaGUgQ0ktdmVyc2llcyB6aWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLbGFudGVuIGhlYmJlbiBkZSBtb2dlbGlqa2hlaWQgb20gaGFuZG1hdGlnIHRlIHdpc3NlbGVuIHR1c3NlbiBoaXN0b3Jpc2NoZSBDSS12ZXJzaWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYWFyZCBnZWdldmVucyBvbSB0ZSBnZWJydWlrZW4gb3AgYXR0cmlidXV0IHZvb3IgY29uZmlnIGl0ZW0gem9la3NjaGVybS4gVm9vcmJlZWxkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYWFyZCBnZWdldmVucyBvbSB0ZSBnZWJydWlrZW4gb3AgYXR0cmlidXV0IHZvb3IgY29uZmlnIGl0ZW0gem9la3NjaGVybS4gVm9vcmJlZWxkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pZWVyIGFjdGllcyB3YWFyYmlqIGVlbiBpbnN0ZWxsaW5nZW5rbm9wIGJlc2NoaWtiYWFyIGlzIGluIGRlIHdpZGdldCB2YW4gZ2Vrb3BwZWxkZSBvYmplY3RlbiAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBIb3VkIGVyIHJla2VuaW5nIG1lZSBkYXQgZGV6ZSBhY3RpZXMgZGUgdm9sZ2VuZGUgSlMtIGVuIENTUy1iZXN0YW5kZW4gbW9ldGVuIGhlYmJlbiBnZXJlZ2lzdHJlZXJkOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBlbiBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmllZXIgZWVuIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtYSB2b29yIHZlcnNpZXN0cmluZ3MuIEFsbGVlbiBnZWJydWlrdCBhbHMgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIGluZ2VzdGVsZCBvcCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmllZXIgZWVuIHNldCB2b29yd2FhcmRlbiB3YWFyb25kZXIgZWVuIGtsYW50IGVlbiBjb25maWd1cmF0aWUtaXRlbSBtYWcgemllbi4gVm9vcndhYXJkZW4ga3VubmVuIG9wdGlvbmVlbCB3b3JkZW4gYmVwZXJrdCB0b3QgYmVwYWFsZGUga2xhbnRncm9lcGVuLiBOYWFtIGlzIGhldCBlbmlnZSB2ZXJwbGljaHRlIGF0dHJpYnV1dC4gQWxzIGVyIGdlZW4gYW5kZXJlIG9wdGllcyB3b3JkZW4gZ2VnZXZlbiwgenVsbGVuIGFsbGUgY29uZmlndXJhdGllLWl0ZW1zIHppY2h0YmFhciB6aWpuIG9uZGVyIGRpZSBjYXRlZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBJVFNNLWNvbmZpZ3VyYXRpZS1pdGVtcyB0ZSB2ZXJ3aWpkZXJlbiBtZXQgYmVodWxwIHZhbiBkZSBHZW5lcmlla2UgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB2ZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgb3AgdGUgaGFsZW4gbWV0IGRlIEdlbmVyaWVrZSBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBJVFNNLWNvbmZpZ3VyYXRpZS1pdGVtcyB0ZSBkb29yem9la2VuIG1ldCBiZWh1bHAgdmFuIGRlIEdlbmVyaWVrZSBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBJVFNNLWNvbmZpZ3VyYXRpZS1pdGVtcyBpbiB0ZSBzdGVsbGVuIG1ldCBiZWh1bHAgdmFuIGRlIEdlbmVyaWVrZSBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZWVuIG92ZXJ6aWNodHNtb2R1bGUgb20gZGUga2xlaW5lIHdlZXJnYXZlIHZhbiBlZW4gbGlqc3QgbWV0IGNvbmZpZ3VyYXRpZS1pdGVtcyB3ZWVyIHRlIGdldmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IG9mIGRlIGxhYmVscyB2YW4gaGV0IGxpbmt0eXBlIG1vZXRlbiB3b3JkZW4gd2VlcmdlZ2V2ZW4gaW4gZGUga25vb3BwdW50dmVyYmluZGluZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5pZWVydCByZWd1bGllcmUgZXhwcmVzc2llcyBhZnpvbmRlcmxpamsgdm9vciBlbGtlIENvbmZpZ0l0ZW0ta2xhc3NlIG9tIGRlIENvbmZpZ0l0ZW0tbmFhbSB0ZSBjb250cm9sZXJlbiBlbiBvdmVyZWVua29tc3RpZ2UgZm91dG1lbGRpbmdlbiB3ZWVyIHRlIGdldmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgYmVzY2hpa2JhcmUga29sb21tZW4gdmFuIENJcyBpbiBoZXQgY29uZmlnIGl0ZW0gb3ZlcnppY2h0IGFmaGFua2VsaWprIHZhbiBkZSBDSSBrbGFzc2UuIEVsa2UgZW50cnkgbW9ldCBiZXN0YWFuIHVpdCBlZW4gY2xhc3NuYWFtIGVuIGVlbiBhcnJheSB2YW4gYmVzY2hpa2JhcmUgdmVsZGVuIHZvb3IgZGUgb3ZlcmVlbnN0ZW1tZW5kZSBjbGFzcy4gRHluYW1pc2NoZSB2ZWxkcmVnZWxzIG1vZXRlbiBoZXQgc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgcmVzcGVjdGVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgY29uZmlnIGl0ZW0gYXR0cmlidXV0IHZvb3IgaGV0IHNvcnRlcmVuIHZhbiBoZXQgY29uZmlnIGl0ZW0gdmFuIGhldCB6b2VrcmVzdWx0YWF0IHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgY29uZmlnIGl0ZW0gYXR0cmlidXV0IHZvb3IgY29uZmlnIGl0ZW0gc29ydGVyaW5nIHZhbiBoZXQgY29uZmlnIGl0ZW0gem9la3Jlc3VsdGFhdCB2YW4gZGUga2xhbnRlbmludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgY29uZmlnIGl0ZW0gYXR0cmlidXV0IHZvb3IgaGV0IHNvcnRlcmVuIHZhbiBoZXQgY29uZmlnIGl0ZW0gem9la3Jlc3VsdGFhdCB2YW4gZGV6ZSBiZXdlcmtpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHN0YW5kYWFyZCB2b2xnb3JkZSB2YW4gY29uZmlnIGl0ZW1zIGluIGhldCB6b2VrcmVzdWx0YWF0IHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuIE9taG9vZzogb3Vkc3RlIGJvdmVuYWFuLiBPbWxhYWc6IG5pZXV3c3RlIGJvdmVuYWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSBzdGFuZGFhcmQgdm9sZ29yZGUgdmFuIGNvbmZpZyBpdGVtcyBpbiBoZXQgem9la3Jlc3VsdGFhdCB2YW4gZGUga2xhbnRlbmludGVyZmFjZS4gT21ob29nOiBvdWRzdGUgYm92ZW5hYW4uIE9tbGFhZzogbmlldXdzdGUgYm92ZW5hYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHN0YW5kYWFyZCBnZXRvb25kZSBrb2xvbW1lbiB2YW4gQ0lzIGluIGhldCBjb25maWd1cmF0aWUtaXRlbSBvdmVyemljaHQsIGFmaGFua2VsaWprIHZhbiBkZSBDSSBrbGFzc2UuIEVsayBpdGVtIG1vZXQgYmVzdGFhbiB1aXQgZWVuIGNsYXNzbmFhbSBlbiBlZW4gYXJyYXkgdmFuIGJlc2NoaWtiYXJlIHZlbGRlbiB2b29yIGRlIG92ZXJlZW5zdGVtbWVuZGUgY2xhc3MuIER5bmFtaXNjaGUgdmVsZHJlZ2VscyBtb2V0ZW4gdm9sZG9lbiBhYW4gaGV0IHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdCZXBhYWx0IGRlIHN0YW5kYWFyZCB0ZSB0b25lbiByZWxhdGllZGllcHRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgZ2V0b29uZGUgY29uZmlnIGl0ZW0gem9la2tlbm1lcmsgdm9vciBoZXQgY29uZmlnIGl0ZW0gem9la3NjaGVybS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IHN0YW5kYWFyZCBnZXRvb25kZSBjb25maWcgaXRlbSB6b2Vra2VubWVyayB2b29yIGhldCBjb25maWcgaXRlbSB6b2Vrc2NoZXJtLiBWb29yYmVlbGQ6ICJLZXkiIG1vZXQgZGUgbmFhbSBoZWJiZW4gdmFuIGhldCBkeW5hbWlzY2hlIHZlbGQgaW4gZGl0IGdldmFsIFwnWFwnLCAiQ29udGVudCIgbW9ldCBkZSB3YWFyZGUgaGViYmVuIHZhbiBoZXQgZHluYW1pc2NoZSB2ZWxkIGFmaGFua2VsaWprIHZhbiBoZXQgZHluYW1pc2NoZSB2ZWxkdHlwZSwgVGV4dDogImVlbiB0ZWtzdCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGVuIG9mIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IHN0YW5kYWFyZCBzdWJvYmplY3QgdmFuIGRlIGtsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIGJlc2NoaWtiYXJlIGtvbG9tbWVuIHZhbiBDSXMgaW4gaGV0IGNvbmZpZyBpdGVtIG92ZXJ6aWNodCBhZmhhbmtlbGlqayB2YW4gZGUgQ0kga2xhc3NlLiBFbGtlIGVudHJ5IG1vZXQgYmVzdGFhbiB1aXQgZWVuIGNsYXNzbmFhbSBlbiBlZW4gYXJyYXkgdmFuIGJlc2NoaWtiYXJlIHZlbGRlbiB2b29yIGRlIG92ZXJlZW5zdGVtbWVuZGUgY2xhc3MuIER5bmFtaXNjaGUgdmVsZHJlZ2VscyBtb2V0ZW4gaGV0IHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lIHJlc3BlY3RlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdCZXBhYWx0IGRlIGhvb2d0ZSB2b29yIGRlIHJpY2ggdGV4dCBlZGl0b3Jjb21wb25lbnQgdm9vciBkaXQgc2NoZXJtLiBWb2VyIGVlbiBnZXRhbCAocGl4ZWxzKSBvZiBlZW4gcHJvY2VudHVlbGUgd2FhcmRlIChyZWxhdGllZikgaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IGFhbnRhbCByaWplbiB2b29yIGRlIENJLWRlZmluaXRpZS1lZGl0b3IgaW4gZGUgYmVoZWVyaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHZvbGdvcmRlIHZhbiBkZSBpbmNpZGVudHRvZXN0YW5kZW4gdmFuIGhvb2cgKGJpanYuIGNyaWNpdGFhbCkgbmFhciBsYWFnIChiaWp2LiBmdW5jdGlvbmVlbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSByZWxldmFudGUgZGVwbG95bWVudCBzdGF0ZXMgd2FhciBnZWtvcHBlbGRlIHRpY2tldHMgZGUgc3RhdHVzIHZhbiBlZW4gQ0kga3VubmVuIGJlw69udmxvZWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHpvZWtsaW1pZXQgdm9vciBoZXQgc2NoZXJtIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB6b2VrbGltaWV0IHZvb3IgaGV0IHNjaGVybSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgem9la2xpbWlldCB2b29yIGhldCBzY2hlcm0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHpvZWtsaW1pZXQgdm9vciBoZXQgc2NoZXJtIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgZ2V0b29uZGUga29sb21tZW4gdmFuIENJXCdzIGluIGRlIGtvcHBlbHRhYmVsIGNvbXBsZXhlIHdlZXJnYXZlIHZvb3IgYWxsZSBDSS1rbGFzc2VuLiBBbHMgZXIgZ2VlbiBpbnZvZXIgaXMsIGRhbiB3b3JkZW4gZGUgc3RhbmRhYXJkIGtvbG9tbWVuIGdldG9vbmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIGdldG9vbmRlIGtvbG9tbWVuIHZhbiBDSXMgaW4gZGUgbGlua3RhYmVsIGNvbXBsZXhlIHdlZXJnYXZlLCBhZmhhbmtlbGlqayB2YW4gZGUgQ0kta2xhc3NlLiBFbGsgaXRlbSBtb2V0IHZvb3JhZmdlZ2FhbiB3b3JkZW4gZG9vciBkZSBuYWFtIHZhbiBkZSBrbGFzc2UgZW4gZHViYmVsZSBkdWJiZWxlIHB1bnRlbiAoYnYuIENvbXB1dGVyOjopLiBFciB6aWpuIGVlbiBwYWFyIENJLWF0dHJpYnV0ZW4gZGllIGdlbWVlbnNjaGFwcGVsaWprIHppam4gdm9vciBhbGxlIENJXCdzICh2b29yYmVlbGQgdm9vciBkZSBrbGFzc2UgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIE9tIGluZGl2aWR1ZWxlIENJLUF0dHJpYnV0ZW4gdGUgdG9uZW4gem9hbHMgZ2VkZWZpbmllZXJkIGluIGRlIENJLWRlZmluaXRpZSwgbW9ldCBoZXQgdm9sZ2VuZGUgc2NoZW1hIGdlYnJ1aWt0IHdvcmRlbiAodm9vcmJlZWxkIHZvb3IgZGUga2xhc3NlIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXRlaXQ6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0ZWl0OjoxLiBBbHMgZXIgZ2VlbiBpbnZvZXIgaXMgdm9vciBlZW4gQ0kta2xhc3NlLCBkYW4gd29yZGVuIGRlIHN0YW5kYWFyZGtvbG9tbWVuIHdlZXJnZWdldmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgd2Vsa2UgaXRlbXMgYmVzY2hpa2JhYXIgemlqbiB2b29yIFwnQWN0aWVcJyBvcCBoZXQgZGVyZGUgbml2ZWF1IHZhbiBkZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCB3ZWxrZSBpdGVtcyBiZXNjaGlrYmFhciB6aWpuIGluIGhldCBlZXJzdGUgbml2ZWF1IHZhbiBkZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgd2Vsa2UgaXRlbXMgYmVzY2hpa2JhYXIgemlqbiBpbiBoZXQgdHdlZWRlIG5pdmVhdSB2YW4gZGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IHdlbGsgdHlwZSBsaW5rIChnZW5vZW1kIHZhbnVpdCBoZXQgdGlja2V0cGVyc3BlY3RpZWYpIGRlIHN0YXR1cyB2YW4gZWVuIGdla29wcGVsZGUgQ0kga2FuIGJlw69udmxvZWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IHdlbGsgdHlwZSB0aWNrZXQgZGUgc3RhdHVzIHZhbiBlZW4gZ2Vrb3BwZWxkZSBDSSBrYW4gYmXDr252bG9lZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0RlZmluaXRpZSBiaWp3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIHZlcndpamRlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnS2xldXIgdmFuIGRlIGluemV0c3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkIGV2ZW50IG1vZHVsZSBkaWUgY29uZmlnIGl0ZW0gZGVmaW5pdGllcyBtYXJrZWVydCBhbHMgbmlldCBnZXN5bmNocm9uaXNlZXJkLCBhbHMgZGUgZHluYW1pc2NoZSB2ZWxkZW4gZGllIGhldCBiZXZhdCB2ZXJhbmRlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkZW4gZGllIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgZXh0cmEgSVRTTS12ZWxkc2NoZXJtIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkZW4gZGllIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgc2NoZXJtIENvbmZpZyBpdGVtb3ZlcnppY2h0IHZhbiBkZSBrbGFudGVuaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlIHZlbGRlbiBkaWUgd29yZGVuIHdlZXJnZWdldmVuIGluIGhldCB6b2Vrc2NoZXJtIHZvb3IgY29uZmlnIGl0ZW1zIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnTWFha3QgYnVsa2FjdGllIHZvb3IgY29uZmlndXJhdGllLWl0ZW1zIG1vZ2VsaWprLCB6b2RhdCBkZSBhZ2VudCBmcm9udGVuZCBhYW4gbWVlciBkYW4gw6nDqW4gY29uZmlndXJhdGllLWl0ZW0gdGVnZWxpamsga2FuIHdlcmtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1NjaGFrZWx0IGRlIGZ1bmN0aWUgYnVsa2FjdGllIHZvb3IgY29uZmlndXJhdGllLWl0ZW1zIGFsbGVlbiBpbiB2b29yIGRlIHZlcm1lbGRlIGdyb2VwZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0dlYmV1cnRlbmlzbW9kdWxlIG9tIGNvbmZpZ2l0ZW0tc3RhdHVzIGluIHRlIHN0ZWxsZW4gb3AgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnVmVsZGVuIHZhbiBkZSBjb25maWd1cmF0aWUtaXRlbWluZGV4LCBnZWJydWlrdCB2b29yIGhldCB6b2VrZW4gaW4gZGUgdm9sbGVkaWdlIHRla3N0LiBWZWxkZW4gd29yZGVuIG9vayBvcGdlc2xhZ2VuLCBtYWFyIHppam4gbmlldCB2ZXJwbGljaHQgdm9vciBkZSBhbGdlbWVuZSBmdW5jdGlvbmFsaXRlaXQuIEhldCBvcG5lbWVuIHZhbiBiaWpsYWdlbiBrYW4gd29yZGVuIHVpdGdlc2NoYWtlbGQgZG9vciBoZXQgaXRlbSBvcCAwIHRlIHpldHRlbiBvZiB0ZSB2ZXJ3aWpkZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1ZlbGRlbiBkaWUgemlqbiBvcGdlc2xhZ2VuIGluIGRlIGluZGV4IHZhbiBoZXQgY29uZmlndXJhdGllLWl0ZW0gZW4gZGllIHdvcmRlbiBnZWJydWlrdCB2b29yIGFuZGVyZSBkaW5nZW4gZGFuIHpvZWtlbiBpbiBkZSB2b2xsZWRpZ2UgdGVrc3QuIFZvb3IgZGUgdm9sbGVkaWdlIGZ1bmN0aW9uYWxpdGVpdCB6aWpuIGFsbGUgdmVsZGVuIHZlcnBsaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZXJlZ2lzdHJhdGllIHZvb3IgZGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGFhZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZXJlZ2lzdHJhdGllIHZvb3IgZGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGFhZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGVyZWdpc3RyYXRpZSB2b29yIGRlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxhYWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ092ZXJ6aWNodCB2YW4gSVRTTS1jb25maWd1cmF0aWUtaXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT212YXQgZGVwbG95bWVudCBzdGF0ZXMgaW4gaGV0IHpvZWtlbiBuYWFyIGNvbmZpZ3VyYXRpZS1pdGVtcyBpbiBkZSBrbGFudGVuaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXNpZWYgaW5jaWRlbnR0b2VzdGFuZGVuIGluIGhldCB6b2VrZW4gbmFhciBjb25maWd1cmF0aWVzIGluIGRlIGtsYW50ZW5pbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltdW1hYW50YWwgY29uZmlndXJhdGllLWl0ZW1zIGRhdCBtb2V0IHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgcmVzdWx0YWF0IHZhbiBkZXplIGJld2Vya2luZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGUgb20gZGUgZ3JvZXAgdGUgY29udHJvbGVyZW4gZGllIHZlcmFudHdvb3JkZWxpamsgaXMgdm9vciBlZW4ga2xhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bGUgb20gZGUgZ3JvZXAgdGUgY29udHJvbGVyZW4gZGllIHZlcmFudHdvb3JkZWxpamsgaXMgdm9vciBlZW4gY29uZmlndXJhdGllLWl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHZvb3IgaGV0IGdlbmVyZXJlbiB2YW4gSVRTTS1jb25maWd1cmF0aWVzdGF0aXN0aWVrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFhbSBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lciBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWFudGFsIGNvbmZpZ3VyYXRpZS1pdGVtcyBkYXQgbW9ldCB3b3JkZW4gd2VlcmdlZ2V2ZW4gb3AgZWxrZSBwYWdpbmEgdmFuIGVlbiB6b2VrcmVzdWx0YWF0IGluIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBYW50YWwgY29uZmlndXJhdGllLWl0ZW1zIGRhdCBtb2V0IHdvcmRlbiB3ZWVyZ2VnZXZlbiBvcCBlbGtlIHBhZ2luYSB2YW4gZWVuIHpvZWtyZXN1bHRhYXQgaW4gZGUga2xhbnRlbmludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWN0ZW4gd2Fhcm5hYXIgZ2V6b2NodCBtb2V0IHdvcmRlbiwgaG9ldmVlbCBpdGVtcyBlbiB3ZWxrZSBhdHRyaWJ1dGVuIGdldG9vbmQgbW9ldGVuIHdvcmRlbi4gQ29uZmlnSXRlbS1hdHRyaWJ1dGVuIG1vZXRlbiBleHBsaWNpZXQgd29yZGVuIG9wZ2VzbGFnZW4gdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJ6aWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBjYXRlZ29yaWXDq24gdm9vciBjb25maWcgaXRlbSBrbGFzc2VuIGluIGRlIHZvb3JrZXVyZW4gd2VlcmdhdmUgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUga29sb21maWx0ZXJzIHZhbiBoZXQga2xlaW5lIGNvbmZpZ3VyYXRpZS1pdGVtb3ZlcnppY2h0LiBMZXQgb3A6IGFscyBqZSBcJ0FjdGllZlwnIG9wIDAgemV0LCBrdW5uZW4gYWdlbnRzIGFsbGVlbiBkZSBpbnN0ZWxsaW5nZW4gdmFuIGRlemUgZ3JvZXAgbmlldCBiZXdlcmtlbiBpbiBodW4gcGVyc29vbmxpamtlIHZvb3JrZXVyZW4sIG1hYXIga3VubmVuIGJlaGVlcmRlcnMgd2VsIGRlIGluc3RlbGxpbmdlbiB2YW4gZWVuIGFuZGVyZSBnZWJydWlrZXIgYmV3ZXJrZW4uIEdlYnJ1aWsgXCdQcmVmZXJlbmNlR3JvdXBcJyBvbSB0ZSBiZXBhbGVuIGluIHdlbGsgZ2ViaWVkIGRlemUgaW5zdGVsbGluZ2VuIG1vZXRlbiB3b3JkZW4gd2VlcmdlZ2V2ZW4gaW4gZGUgZ2VicnVpa2Vyc2ludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgaW56ZXRzdGF0dXNzZW4ga2xldXJlbiBpbiBkZSB2b29ya2V1cmVud2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBpbnpldHN0YXR1c3NlbiBpbiBkZSB2b29ya2V1cmVud2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgdm9vcmJlZWxkIHBlcmltc3NpZWdyb2VwZW4gdmFuIGRlIGFsZ2VtZW5lIGNhdGFsb2cgYXR0cmlidXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgbmFhbW1vZHVsZSB2b29yIGNvbmZpZyBpdGVtIGtsYXNzZW4gaW4gZGUgdm9vcmtldXJlbndlZXJnYXZlIHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgbnVtbWVybW9kdWxlIHZvb3IgY29uZmlnIGl0ZW1rbGFzc2VuIGluIGRlIHZvb3JrZXVyZW53ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBwYWdpbmFcJ3MgKHdhYXJvcCBkZSBjb25maWd1cmF0aWUtaXRlbXMgd29yZGVuIHdlZXJnZWdldmVuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIHZlcnNpZSBzdHJpbmcgbW9kdWxlIHZvb3IgY29uZmlnIGl0ZW0ga2xhc3NlbiBpbiBkZSB2b29ya2V1cmVuIHdlZXJnYXZlIHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIHZlcnNpZSBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgdm9vciBjb25maWcgaXRlbSBrbGFzc2VuIGluIGRlIHZvb3JrZXVyZW4gd2VlcmdhdmUgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIHZlcnNpZWFjdGl2ZXJpbmcgdm9vciBjb25maWcgaXRlbWtsYXNzZW4gaW4gZGUgdm9vcmtldXJlbndlZXJnYXZlIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzaWUgZ3JvZXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gZGUgSVRTTSBjb25maWd1cmF0aWUgaXRlbSBhdHRhY2htZW50IGFjdGllIHRlIGdlYnJ1aWtlbiBpbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IElUU00tY29uZmlndXJhdGllLWl0ZW0gc2NoZXJtIGluIGRlIGFnZW50IGludGVyZmFjZSB0ZSBnZWJydWlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCB6b2Vrc2NoZXJtIHZvb3IgSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgaW4gZGUgYWdlbnRpbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgem9la3NjaGVybSB2b29yIElUU00tY29uZmlndXJhdGllLWl0ZW1zIGluIGRlIGtsYW50ZW5pbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgSVRTTS1jb25maWd1cmF0aWUgaXRlbSBib29tc3RydWN0dXVyIHNjaGVybSB0ZSBnZWJydWlrZW4gaW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IElUU00tY29uZmlndXJhdGllIGl0ZW0gem9vbXNjaGVybSB0ZSBnZWJydWlrZW4gaW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgc2NoZXJtIElUU00tY29uZmlndXJhdGllLWl0ZW0gdG9ldm9lZ2VuIGluIGRlIGFnZW50aW50ZXJmYWNlIHRlIGdlYnJ1aWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCBidWxrIElUU00tY29uZmlndXJhdGllLWl0ZW0gc2NoZXJtIGluIGRlIGFnZW50IGludGVyZmFjZSB0ZSBnZWJydWlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgc2NoZXJtIElUU00tY29uZmlndXJhdGllLWl0ZW0gYmV3ZXJrZW4gaW4gZGUgYWdlbnRpbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IElUU00tY29uZmlndXJhdGllLWl0ZW0gZ2VzY2hpZWRlbmlzIHNjaGVybSBpbiBkZSBhZ2VudCBpbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCBzY2hlcm0gbWV0IElUU00tY29uZmlndXJhdGllLWl0ZW1zIGFmZHJ1a2tlbiB0ZSBnZWJydWlrZW4gaW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdWZXJlaXN0ZSBwcml2aWxlZ2VzIG9tIGNvbmZpZyBpdGVtcyB0ZSB2ZXJ3aWpkZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdDb25maWd1cmF0aWUtaXRlbXMgem9la2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU3RlbCBkZSBpbmNpZGVudHN0YXR1cyB2YW4gZWVuIENJIGF1dG9tYXRpc2NoIGluIHdhbm5lZXIgZWVuIHRpY2tldCBpcyBnZWtvcHBlbGQgYWFuIGVlbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTdGVsdCBkZSB1aXRyb2xzdGF0dXMgaW4gaGV0IGJ1bGtzY2hlcm0gdm9vciBjb25maWd1cmF0aWUtaXRlbXMgdmFuIGRlIGFnZW50aW50ZXJmYWNlIGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTdGVsdCBkZSBpbmNpZGVudHN0YXR1cyBpbiBpbiBoZXQgYnVsa3NjaGVybSB2b29yIGNvbmZpZ3VyYXRpZS1pdGVtcyB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgd2Fhcm1lZSBlZW4gY29uZmlndXJhdGllLWl0ZW0ga2FuIHdvcmRlbiBnZWtvcHBlbGQgYWFuIGVlbiBhbmRlciBvYmplY3QgaW4gZGUgem9vbXdlZXJnYXZlIHZhbiBoZXQgY29uZmlndXJhdGllLWl0ZW0gaW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgdm9vciB0b2VnYW5nIHRvdCBkZSBnZXNjaGllZGVuaXMgdmFuIGVlbiBjb25maWd1cmF0aWUtaXRlbSBpbiBoZXQgY29uZmlndXJhdGllLWl0ZW1vdmVyemljaHQgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgdm9vciB0b2VnYW5nIHRvdCBkZSBnZXNjaGllZGVuaXMgdmFuIGVlbiBjb25maWd1cmF0aWUtaXRlbSBpbiBkZSB6b29td2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIGVlbiBjb25maWd1cmF0aWUtaXRlbSB0ZSB2ZXJ3aWpkZXJlbiBpbiBkZSB6b29td2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gZGUgbGlua3MgbmFhciBjb25maWd1cmF0aWUtaXRlbXMgd2VlciB0ZSBnZXZlbiBhbHMgZWVuIGJvb21zdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gZWVuIGNvbmZpZ3VyYXRpZSBpdGVtIHRlIGR1cGxpY2VyZW4gaW4gaGV0IGNvbmZpZ3VyYXRpZSBpdGVtIG92ZXJ6aWNodCB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSBvbSBlZW4gY29uZmlndXJhdGllIGl0ZW0gdGUgZHVwbGljZXJlbiBpbiBkZSB6b29tIHdlZXJnYXZlIHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSBvbSBlZW4gY29uZmlndXJhdGllLWl0ZW0gdGUgYmV3ZXJrZW4gaW4gZGUgem9vbXdlZXJnYXZlIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIHRlcnVnIHRlIGdhYW4gaW4gZGUgY29uZmlndXJhdGllIGl0ZW0gem9vbSB3ZWVyZ2F2ZSB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIGVlbiBjb25maWd1cmF0aWUtaXRlbSBhZiB0ZSBkcnVra2VuIGluIGRlIHpvb213ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gaW4gdGUgem9vbWVuIG9wIGVlbiBjb25maWd1cmF0aWUtaXRlbSBpbiBoZXQgY29uZmlndXJhdGllLWl0ZW1vdmVyemljaHQgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZGUgY29uZmlnIGl0ZW0gZ2VzY2hpZWRlbmlzIChvbWdla2VlcmQgZ2VvcmRlbmQpIGluIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnRGUgc3RhbmRhYXJkY2F0ZWdvcmllIGRpZSB3b3JkdCB3ZWVyZ2VnZXZlbiBhbHMgZXIgZ2VlbiBpcyBnZXNlbGVjdGVlcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdEZSBpZGVudGlmaWVyIHZvb3IgZWVuIGNvbmZpZ3VyYXRpZS1pdGVtLCBiaWp2LiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gRGUgc3RhbmRhYXJkd2FhcmRlIGlzIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVHJpZ2dlcnQgYXV0b21hdGlzY2ggQ29uZmlnSXRlbUZldGNoIGludm9rZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpZSBTdHJpbmcgVWl0ZHJ1a2tpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2llIFN0cmluZyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2llIHRyZWtrZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ09mIGhldCB1aXR2b2VyZW4gdmFuIENvbmZpZ0l0ZW1BQ0wgdmVybWVkZW4ga2FuIHdvcmRlbiBkb29yIHZlbGRhZmhhbmtlbGlqa2hlZGVuIGluIGRlIGNhY2hlIHRlIGNvbnRyb2xlcmVuLiBEaXQga2FuIGRlIGxhYWR0aWpkIHZhbiBmb3JtdWxpZXJlbiB2ZXJiZXRlcmVuLCBtYWFyIG1vZXQgdWl0Z2VzY2hha2VsZCB3b3JkZW4gYWxzIEFDTE1vZHVsZXMgZ2VicnVpa3QgbW9ldGVuIHdvcmRlbiB2b29yIElUU01Db25maWdJdGVtLSBlbiBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnV2Vsa2UgYWxnZW1lbmUgaW5mb3JtYXRpZSB3b3JkdCB3ZWVyZ2VnZXZlbiBpbiBkZSBrb3B0ZWtzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnd2VyZWxkd2lqZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aWVmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aWVmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aWVmJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGluY2ggKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiA1MywzNCBjbSAoMjEgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgaW5jaCAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBpbmNoICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktaW5jaCByZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IGluY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogODgsOSBjbSAoMzUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtaW5jaCByZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGluY2ggKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1pbmNoIHJlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaW5jaCAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgaW5jaCAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgaW5jaCAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGluY2ggKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgaW5jaCAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgaW5jaCAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaW5jaCAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgaW5jaCAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgaW5jaCAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGluY2ggKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IGluY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDEzLDM0IGNtICg1LDI1IGluY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgaW5jaCAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBpbmNoICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBpbmNoICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCBpbmNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGluY2ggKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGluY2ggKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGluY2ggKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgaW5jaCAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbmNoICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IGluY2ggKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0JvZWtob3VkaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZXN0b2V3aWp6aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdCZWhlZXJkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nZSB0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cGUgYXBwYXJhYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdBY2N1Y2FwYWNpdGVpdCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0JhdHRlcmlqdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0dlYm91dyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzaW50ZXJmYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpdGVpdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpdGVpdCBwZXIgZ3JhZmlzY2hlIGthYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS2FhcnRudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLYWFydGxlemVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0thYXJ0dHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xhbnRjZXJ0aWZpY2F0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgdm9vciBrbGFudGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NhdGVnb3JpZSBrbGFudGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0tsb2tzbmVsaGVpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnS2xva3NuZWxoZWlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDb2RlIG9uZGVydGVrZW5lbmRlIGNlcnRpZmljYXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnQ29uZmVyZW50aWV0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0Fkdmllc292ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnTmVlbSBjb250YWN0IG9wIG1ldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnTmVlbSBjb250YWN0IG9wIG1ldCBkaXN0cmlidXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdCZWhlZXIgdmFuIGNvbnRhaW5lcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVHlwZSBjb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0NvbnRyYWN0cGVyaW9kZSB2YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnQ29udHJhY3RwZXJpb2RlIHRvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdEcmFhZGxvemUgdGVsZWZvb24gKERFQ1QtdGVsZWZvb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0tvc3RlbmVlbmhlaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdBYW50YWwgbGljZW50aWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdBYW5tYWFrZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1JlayBvcCBtYWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIEdlcmVzZXJ2ZWVyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLXNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0dW0gZmFjdHV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0dW0gYmVzdGVsbGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0dW0gdmFuIGdhcmFudGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdHVtIHZhbiB1aXRnYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0ZW4gdm9vciBkb2N1bWVudG9uZGVydGVrZW5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJLXJlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1tYWlsY2VydGlmaWNhdGVuIChTL01JTUUtY2VydGlmaWNhdGVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdBcmJlaWRzb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnSVAtYWRyZXMgZWluZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdFaW5kZSBvbmRlcnN0ZXVuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVmVydmFsZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0V4dGVybmUgaGFyZGUgc2NoaWpmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1ZsaWVnd2llbCBFbmVyZ2llb3BzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnVm9ybWZhY3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNlb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnQWxnZW1lbmUgaW5mb3JtYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpc2NoZSBrYWFydGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaXNjaGUga2FhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0hhcmR3YXJlbW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnR2V3aWNodCBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnSG9vZmR0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQLXByb3RvY29sJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXRlaXRzLSBlbiB0b2VnYW5nc2JlaGVlciAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJpc251bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnRmFjdHV1cm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RvZXRzZW5ib3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRC1tb25pdG9yICh2bG9laWJhYXIta3Jpc3RhbHNjaGVybSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRC1tb25pdG9yIChsaWNodGVtaXR0ZXJlbmRlIGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdWYXN0ZSB0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdCcmVlZHRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnTGFhZyAxOiBGeXNpZWtlIGxhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGFhZyAyOiBEYXRhbGlua2xhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xhYWcgMzogbmV0d2Vya2xhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnTGFhZyAzOiBuZXR3ZXJrbGFhZyAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xhYWcgNDogVHJhbnNwb3J0bGFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnTGFhZyA1OiBTZXNzaWVsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xhYWcgNjogUHJlc2VudGF0aWVsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGFhZyA3OiBUb2VwYXNzaW5nc2xhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnSHV1cm92ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2VudGllb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbnRpZXNsZXV0ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW50aWUgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW50aWVwZXJpb2RlIHZhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2VudGllcGVyaW9kZSB0b3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGhpdW0taWp6ZXJmb3NmYWF0YmF0dGVyaWogKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLUlvbiAoTGktaW9uKSBiYXR0ZXJpaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0xlbmluZ3NvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0dldmVzdGlnZCBpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMZW5ndGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWthbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltYWFsIGRyYWFndmVybW9nZW4gKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0dlaGV1Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVHlwZSBnZWhldWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpZWwgbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmllbCBpbmdlYmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbCBCZXNjaHJpanZpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvcnJlc29sdXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdBZm1ldGluZyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTXVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0d2Vyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdOZXR3ZXJrIGluZm9ybWF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ05ldHdlcmtpbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOZXR3ZXJrbGFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1jYWRtaXVtYmF0dGVyaWogKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlra2VsbWV0YWFsaHlkcmlkZSAoTmlNSCkgYmF0dGVyaWonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnR2VoZWltaG91ZGluZ3NvdmVyZWVua29tc3QgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0FhbnRhbCBDUFVcJ3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnQWFudGFsIFJBTS1tb2R1bGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0FhbnRhbCBncmFmaXNjaGUga2FhcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC1tb25pdG9yIChvcmdhbmlzY2hlIGxpY2h0ZW1pdHRlcmVuZGUgZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0JlZHJpamZza29zdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ0Jlc3RlbG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ092ZXJpZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1VpdGdhbmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyc2NoYXBzb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvb25udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb29uIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXNpZWtlIGtlcm5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N0cm9vbXZvb3J6aWVuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnR2Vrb2NodCBiaWonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0RpZXB0ZSByZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdFZW5oZWRlbiByZWsgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdLYW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1rYWFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtY2VydGlmaWNhdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnVmVya29vcGNvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGlldCB0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdWZXJ6ZWdlbGRlIGxvb2R6dXVyYmF0dGVyaWogKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXIgU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTZXJ2aWNlb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmljZXRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXBlIHN0b3Bjb250YWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdMdWlkc3ByZWtlcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTdGFydCBJUC1hZHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnT3BzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnT3BzbGFncGFydGl0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdEb2NodGVyb25kZXJuZW1pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1NhbWVudmF0dGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RoaW4gQ2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdEcmFkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWFsIFJBTS1nZWhldWdlbiBncmFmaXNjaGUga2FhcnQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFhbCBSQU0tZ2VoZXVnZW4gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnVG91Y2hzY3JlZW4gbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0ItaHViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIta29wdGVsZWZvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC10ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/pl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnBsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdPZ8OzbG5lIGRhbmUgb3BlcmFjeWpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnVXN0YXdpZW5pYSBkbGEgcHJ6eWNob2R6xIVjeWNoIGRhbnljaCDFvMSFZGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdVc3Rhd2llbmlhIHd5Y2hvZHrEhWN5Y2ggZGFueWNoIG9kcG93aWVkemknOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdabWllxYQgZGVmaW5pY2rEmSBrbGFzeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnWm1pYW5hIGRlZmluaWNqaSByb2xpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFraWV0eSBrbGFzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1R1dGFqIG1vxbxuYSBpbXBvcnRvd2HEhyBwYWtpZXR5IGtsYXMgUmVhZHkySW1wb3J0IHByZXplbnR1asSFY2UgbmFzemUgbmFqYmFyZHppZWogdHlwb3dlIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaS4gTmFsZcW8eSBwYW1pxJl0YcSHLCDFvGUgbW/FvGUgYnnEhyB3eW1hZ2FuYSBkb2RhdGtvd2Ega29uZmlndXJhY2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBa3R1YWxpemFjamEgaXN0bmllasSFY3ljaCBwb2RtaW90w7N3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0dWogcGFraWV0eSBrbGFzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS2xhc2EgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1JvbGEgZWxlbWVudHUga29uZmlndXJhY2ppJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyIGRsYSBrbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1phem5hY3oga2xhc8SZIG5hIGxpxZtjaWUgYWJ5IHV0d29yennEhyBub3dlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnQWtjamEgZ3J1cG93YSBuYSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhbiB6ZGFyemVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnUG/FgsSFY3ogeiBpbm55bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmllcHJhd2lkxYJvd3kgbnVtZXIgQ0khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bWVyIGlubmVnbyBlbGVtZW50dSBrb25maWd1cmFjamksIHoga3TDs3J5bSBuYWxlxbx5IHNpxJkgcG/FgsSFY3p5xIcuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQ3p5IG5hcHJhd2TEmSBjaGNlc3ogdXN1bsSFxIcgdGVuIGVsZW1lbnQga29uZmlndXJhY2ppPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYXp3YSB0ZWdvIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOYXp3YSBqZXN0IGp1xbwgdcW8eXdhbmEgcHJ6ZXogQ0kgbyBuYXN0xJlwdWrEhWN5Y2ggbnVtZXJhY2g6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnV2Vyc2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOdW1lciB3ZXJzamkgdGVnbyBlbGVtZW50dSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOdW1lciB3ZXJzamkgamVzdCBqdcW8IHXFvHl3YW55IHByemV6IENvbmZpZ0l0ZW1zIHogbmFzdMSZcHVqxIVjeW0gbnVtZXJlbSAobnVtZXJhbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhbiB6ZGFyemVuaWEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnWmF3YXJ0b8WbxIcgaGlzdG9yaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1V0d29yem9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdXaWRvayBzemN6ZWfDs8WCb3d5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0xpY3piYSBDSSBuYSBzdHJvbmllJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOaWUgem5hbGV6aW9ubyBkYW55Y2ggZWxlbWVudHUga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1d5YmllcnogdGVuIGVsZW1lbnQga29uZmlndXJhY2ppJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnVXJ1Y2hvbSB3eXN6dWtpd2FuaWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBkbGEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1BvemlvbSBnxYLEmWJva2/Fm2NpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUG93acSZa3N6YW5pZS91c3V3YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdPc2nEhWduacSZdG8gbWFrc3ltYWxueSBwb3ppb20gbGlua8OzdyBkbGEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2plIG8gQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnQWt0dWFsbnkgc3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdBa3R1YWxueSBzdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ09zdGF0bmlvIHptaWVuaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdPc3RhdG5pbyB6bWllbmlvbmUgcHJ6ZXonOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdFbGVtZW50eSBrb25maWd1cmFjamknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnV3lzenVraXdhbmllIENvbmZpZ0l0ZW0nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdaYWltcG9ydG93YW5lIHpvc3RhbsSFIG5hc3TEmXB1asSFY2Uga2xhc3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnWmFpbXBvcnRvd2FuZSB6b3N0YW7EhSBuYXN0xJlwdWrEhWNlIHJvbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnTmFsZcW8eSBwYW1pxJl0YcSHLCDFvGUgem9zdGFuxIUgcsOzd25pZcW8IHV0d29yem9uZSBvZHBvd2llZG5pZSBwb2xhIGR5bmFtaWN6bmUgaSBrbGFzeSBHZW5lcmFsQ2F0YWxvZywga3TDs3JlIG5pZSB6b3N0YW7EhSBhdXRvbWF0eWN6bmllIHVzdW5pxJl0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdDenkgY2hjZXN6IGtvbnR5bnVvd2HEhz8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pY2phIG5pZSBqZXN0IHByYXdpZMWCb3d5bSBoYXNoZW0gWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQcnplZ2zEhWQ6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOaWUgcG9kYW5vIGlkZW50eWZpa2F0b3JhIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdQb3RyemVibnkgamVzdCBjbyBuYWptbmllaiBqZWRlbiB3eWJyYW55IGVsZW1lbnQga29uZmlndXJhY2ppISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05pZSBtYXN6IGRvc3TEmXB1IGRvIHphcGlzdSB0ZWdvIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaTogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ05pZSB6ZGVmaW5pb3dhbm8gZGVmaW5pY2ppIGRsYSBrbGFzeSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0VsZW1lbnQga29uZmlndXJhY2ppICIlcyIgbmllIHpvc3RhxYIgem5hbGV6aW9ueSB3IGJhemllIGRhbnljaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOaWUgdWRhxYJvIHNpxJkgdXN1bsSFxIcgZWxlbWVudHUga29uZmlndXJhY2ppIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmllIHpuYWxlemlvbm8gd2Vyc2ppIGRsYSBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pZSBwb2Rhbm8gaWRlbnR5ZmlrYXRvcmEgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBhbmkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0JyYWsgZG9zdMSZcHUhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pZSBtb8W8bmEgd3nFm3dpZXRsacSHIGhpc3RvcmlpLCBuaWUgcG9kYW5vIGlkZW50eWZpa2F0b3JhIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOaWUgbW/FvG5hIHd5xZt3aWV0bGnEhyBoaXN0b3JpaSwgbmllIHBvZGFubyBwcmF3IGRvc3TEmXB1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm93eSBlbGVtZW50IGtvbmZpZ3VyYWNqaSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3dhIHdlcnNqYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnWmFrdHVhbGl6b3dhbm8gc3RhbiB3ZHJvxbxlbmlhIChub3d5PSVzLCBzdGFyeT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnWmFrdHVhbGl6b3dhbm8gc3RhbiBpbmN5ZGVudHUgKG5vd3k9JXMsIHN0YXJ5PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ1VzdW5pxJl0byBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdEb2Rhbm8gbGluayBkbyAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpbmsgZG8gJXMgKHR5cGU9JXMpIHVzdW5pxJl0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnWmFrdHVhbGl6b3dhbm8gZGVmaW5pY2rEmSBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYXp3YSB6YWt0dWFsaXpvd2FuYSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyeWJ1dCAlcyB6YWt0dWFsaXpvd2FueSB6ICIlcyIgZG8gIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdXZXJzamEgJXMgdXN1bmnEmXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05pZSBwb2Rhbm8gaWRlbnR5ZmlrYXRvcmEgQ29uZmlnSXRlbUlEIGx1YiBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05pZSBtb8W8bmEgd3nFm3dpZXRsacSHIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSwgbmllIHBvZGFubyBwcmF3IGRvc3TEmXB1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBuaWUgem9zdGHFgiB6bmFsZXppb255IHcgYmF6aWUgZGFueWNoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3d5ZHJ1a293YW55IHByemV6ICVzIHcgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1BvZHBvd2llZHppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnTmllcHJhd2lkxYJvd3kgaWRlbnR5ZmlrYXRvciBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pZSBwb2Rhbm8gaWRlbnR5ZmlrYXRvcmEgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOaWUgcHJ6eXpuYW5vIHByYXcgZG9zdMSZcHUgZGxhIHRlaiBrbGFzeSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0JyYWsgV3luaWvDs3chJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnV3luaWtpIHd5c3p1a2l3YW5pYSBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmllIG1vxbxuYSB3ecWbd2lldGxpxIcgZWxlbWVudHUsIG5pZSBwb2Rhbm8gcHJhdyBkb3N0xJlwdSBkbyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdOaWUgem5hbGV6aW9ubyBlbGVtZW50dSBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOaWUgem5hbGV6aW9ubyDFvGFkbnljaCB3ZXJzamkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmFjeWpueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnb3N0cnplxbxlbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jeWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YW4gd2Ryb8W8ZW5pYSB0ZWdvIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhbiB6ZGFyemVuaWEgdGVnbyBDSSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0JyYWsgdXByYXduaWXFhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ciBuaWVwcmF3aWTFgm93eSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcmFtZXRyeSB3eXN6dWtpd2FuaWEgc8SFIG5pZXByYXdpZMWCb3dlISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1d5xZt3aWV0bGFuZSBlbGVtZW50eSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwIHN0YW51IHdkcm/FvGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnQWt0dWFsbnkgdHlwIHN0YW51JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ1BvbWnEmWR6eSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT2dyYW5pY3plbmlhIGtsYXN5IGRsYSBlbGVtZW50dSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1d5YmllcnogamVkbsSFIGx1YiB3acSZY2VqIGtsYXMsIGFieSBvZ3JhbmljennEhyB3eWJpZXJhbmUgZWxlbWVudHkga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPZ3JhbmljemVuaWEga2xhc3kgZGxhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1d5YmllcnogamVkbsSFIGx1YiB3acSZY2VqIGtsYXMsIGFieSBvZ3JhbmljennEhyB3eWJpZXJhbmUgZWxlbWVudHkga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pY3pueSAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAod2Vyc2phKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXAgb2Rub8WbbmlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdPa3JlxZtsYSwgY3p5IHBvd2nEhXphbmllIGRvdHljenkgQ29uZmlnSXRlbSwgY3p5IHN0YXR5Y3puZWogd2Vyc2ppIG9iaWVrdHUgb2RuaWVzaWVuaWEuIE9ibGljemFuaWUgYmllxbzEhWNlZ28gc3RhbnUgaW5jeWRlbnR1IGplc3Qgd3lrb255d2FuZSB0eWxrbyB3IHByenlwYWRrdSDFgsSFY3p5IGR5bmFtaWN6bnljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdXeWJpZXJ6IGF0cnlidXQsIHdlZMWCdWcga3TDs3JlZ28gYsSZZMSFIHd5c3p1a2l3YW5lIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnU3RydWt0dXJhIGJhem93YSBqZXN0IG5pZXByYXdpZMWCb3dhLiBQb2RhaiBoYXNoIHogZGFueW1pIHcgZm9ybWFjaWUgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdXeW1hZ2FuZSBqZXN0IHJvenBvY3rEmWNpZSBjacSFZ3UgWUFNTCBvZCAiLS0tIi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTmllIG1vxbxuYSB3eWN6ecWbY2nEhyB0YWJlbGkgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTmllIHpuYWxlemlvbm8gb2Rwb3dpZWRuaWNoIHDDs2wgZHluYW1pY3pueWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmllIG1vxbxuYSB3c3Rhd2nEhyBkbyB0YWJlbGkgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdXc3Rhd2lvbm8gMCB3aWVyc3p5IGRvIHRhYmVsaSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWFrc3ltYWxuYSBsaWN6YmEgd3lzdMSFcGllxYQgcG9qZWRueWN6ZWdvIGVsZW1ldG50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdDacSFZyB6bmFrw7N3IHdlcnNqaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdCxYLEhWQgc3luY2hyb25pemFjamkgZGVmaW5pY2ppLiBTcHJhd2TFuiBkemllbm5pay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdNYXN6IGRlZmluaWNqZSBJVFNNQ29uZmlnSXRlbSwga3TDs3JlIG5pZSBzxIUgenN5bmNocm9uaXpvd2FuZS4gTmFsZcW8eSB3ZHJvxbx5xIcgem1pYW55IHBvbGEgZHluYW1pY3puZWdvIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnV3lnYXPFgm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdVdHJ6eW1hbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RhxbwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5vd2FueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdOYXByYXdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdXeWNvZmFueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQcnplZ2zEhWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1ByemVnbMSFZCBpIHBvdHdpZXJkemVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0b3dhbmllIGtsYXMvcsOzbCBpIHBvd2nEhXphbnljaCB6IG5pbWkgcMOzbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1d5c3TEhXBpxYIgYsWCxIVkIHBvZGN6YXMgaW1wb3J0b3dhbmlhIGtsYXN5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gVWtyeXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBwb2themFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVW1vxbxsaXdpYSByb3pzemVyem9uZSB3YXJ1bmtpIHd5c3p1a2l3YW5pYSB3IGludGVyZmVqc2llIGFnZW50YS4gRHppxJlraSB0ZWogZnVua2NqaSBtb8W8bmEgd3lzenVraXdhxIcgbnAuIG5henfEmSBlbGVtZW50dSBrb25maWd1cmFjamkgemEgcG9tb2PEhSB0ZWdvIHJvZHphanUgd2FydW5rw7N3LCB0YWtpY2ggamFrICIoKmtleTEqJiYqa2V5MiopIiBsdWIgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvGxpd2lhIHJvenN6ZXJ6b25lIHdhcnVua2kgd3lzenVraXdhbmlhIHcgaW50ZXJmZWpzaWUga2xpZW50YS4gRHppxJlraSB0ZWogZnVua2NqaSBtb8W8bmEgd3lzenVraXdhxIcgbnAuIG5henfEmSBlbGVtZW50dSBrb25maWd1cmFjamkgemEgcG9tb2PEhSB0ZWdvIHJvZHphanUgd2FydW5rw7N3LCB0YWtpY2ggamFrICIoKmtleTEqJiYqa2V5MiopIiBsdWIgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQcnp5cGlzYW5lIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHByenlwaXNhbmkgZG8gZmlybXkga2xpZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHByenlwaXNhbmUgZG8gdcW8eXRrb3duaWthIGtsaWVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1VzdGF3aWVuaWEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU3ByYXdkemFuaWUgdW5pa2FsbmVqIG5hend5IHR5bGtvIHcgb2JyxJliaWUgdGVqIHNhbWVqIGtsYXN5IENvbmZpZ0l0ZW0gKCJjbGFzcyIpIGx1YiBnbG9iYWxuaWUgKCJnbG9iYWwiKSwgY28gb3puYWN6YSwgxbxlIGthxbxkeSBpc3RuaWVqxIVjeSBDb25maWdJdGVtIGplc3QgYnJhbnkgcG9kIHV3YWfEmSBwb2RjemFzIHd5c3p1a2l3YW5pYSBkdXBsaWthdMOzdy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1d5YmllcnogbW9kdcWCLCBhYnkgd3ltdXNpxIcgc2NoZW1hdCBuYXpld25pY3R3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1d5YmllcnogbW9kdcWCLCBhYnkgd3ltdXNpxIcgc2NoZW1hdCBsaWN6Ym93eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnV3liaWVyeiBtb2R1xYIsIGFieSB3eW11c2nEhyBzY2hlbWF0IGNpxIVnw7N3IHdlcnNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdXeWJpZXJ6IGF0cnlidXR5LCBhYnkgdXJ1Y2hvbWnEhyB0d29yemVuaWUgbm93ZWogd2Vyc2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdXeWJpZXJ6IGthdGVnb3JpZSwga3TDs3JlIGNoY2VzeiBwcnp5cGlzYcSHIGRvIHRlaiBrbGFzeSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cnkga29sdW1uIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGRsYSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnS29sdW1ueSwga3TDs3JlIG1vxbxuYSBmaWx0cm93YcSHIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLiBVd2FnYTogRG96d29sb25lIHPEhSB0eWxrbyBhdHJ5YnV0eSBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSBpIHBvbGEgZHluYW1pY3puZSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnRWxlbWVudHkga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdEb2RhbmllIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZHljamEgZWxlbWVudHUga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHXFgiB6ZGFyemXFhCBlbGVtZW50dSBrb25maWd1cmFjamksIGt0w7NyeSB1bW/FvGxpd2lhIHJlamVzdHJvd2FuaWUgZG8gaGlzdG9yaWkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHXFgiB6ZGFyemXFhCBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSwga3TDs3J5IGFrdHVhbGl6dWplIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSBkbyBpY2ggYmllxbzEhWNlaiBkZWZpbmljamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1d5ZHJ1ayBlbGVtZW50dSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnUG93acSZa3N6ZW5pZSBlbGVtZW50dSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnV2lkb2sgZHJ6ZXdhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBuYXN0xJlwdWrEhWN5Y2gga2xhcyBuaWUgYsSZZMSFIHByemVjaG93eXdhbmUgbmEgc2Vyd2VyemUgRWxhc3RpY3NlYXJjaC4gQWJ5IHphc3Rvc293YcSHIHRvIGRvIGlzdG5pZWrEhWN5Y2ggQ0ksIG1pZ3JhY2phIENJIG11c2kgem9zdGHEhyB1cnVjaG9taW9uYSB6YSBwb8WbcmVkbmljdHdlbSBrb25zb2xpLCBwbyB6bWlhbmllIHRlaiBvcGNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnRWxlbWVudHkgQ29uZmlnSXRlbXMgeiBuYXN0xJlwdWrEhWN5bWkgc3RhbmFtaSB3ZHJvxbxlbmlhIG5pZSBixJlkxIUgcHJ6ZWNob3d5d2FuZSBuYSBzZXJ3ZXJ6ZSBFbGFzdGljc2VhcmNoLiBBYnkgemFzdG9zb3dhxIcgdG8gZG8gaXN0bmllasSFY3ljaCBDSSwgbWlncmFjamEgQ0kgbXVzaSB6b3N0YcSHIHVydWNob21pb25hIHphIHBvxZtyZWRuaWN0d2VtIGtvbnNvbGksIHBvIHptaWFuaWUgdGVqIG9wY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdCBsaWN6YnkgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0IHBvenljamkga29uZmlndXJhY2ppIG5hIHN0cm9uxJkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXphIGRhbnljaCB6YXJ6xIVkemFuaWEga29uZmlndXJhY2rEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ01vZHXFgiB6YmlvcmN6eSBlbGVtZW50dSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnQga29uZmlndXJhY2ppIHd5c3p1a2l3YW5pYSByb3V0ZXJhIHphcGxlY3phIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnVHdvcnplbmllIGkgemFyesSFZHphbmllIGRlZmluaWNqYW1pIGVsZW1lbnTDs3cga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ1R3b3J6eSBiaWxldHkgZGxhIENvbmZpZ0l0ZW1zIHcgb2tyZcWbbG9ueWNoIHB1bmt0YWNoIGN6YXNvd3ljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS2xpZW5jaSBtb2fEhSB6b2JhY3p5xIcgaGlzdG9yeWN6bmUgd2Vyc2plIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLbGllbmNpIG1hasSFIG1vxbxsaXdvxZvEhyByxJljem5lZ28gcHJ6ZcWCxIVjemFuaWEgc2nEmSBtacSZZHp5IGhpc3Rvcnljem55bWkgd2Vyc2phbWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRG9tecWbbG5lIGRhbmUgZG8gdcW8eWNpYSB3IGF0cnlidWNpZSBkbGEgZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4gUHJ6eWvFgmFkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RvbXnFm2xuZSBkYW5lIGRvIHXFvHljaWEgdyBhdHJ5YnVjaWUgZGxhIGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkuIFByenlrxYJhZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBha2NqZSwgdyBrdMOzcnljaCBwcnp5Y2lzayB1c3Rhd2llxYQgamVzdCBkb3N0xJlwbnkgdyB3aWTFvGVjaWUgcG/FgsSFY3pvbnljaCBvYmlla3TDs3cgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTmFsZcW8eSBwYW1pxJl0YcSHLCDFvGUgdGUgYWtjamUgbXVzesSFIG1pZcSHIHphcmVqZXN0cm93YW5lIG5hc3TEmXB1asSFY2UgcGxpa2kgSlMgaSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5pdWplIHNjaGVtYXQgVGVtcGxhdGU6OlRvb2xraXQgZGxhIGNpxIVnw7N3IHdlcnNqaS4gVcW8eXdhbmUgdHlsa28gamXFm2xpIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBqZXN0IHVzdGF3aW9ueSBuYSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbml1amUgemVzdGF3IHdhcnVua8OzdywgbmEgcG9kc3Rhd2llIGt0w7NyeWNoIGtsaWVudCBtb8W8ZSB6b2JhY3p5xIcgZWxlbWVudCBrb25maWd1cmFjamkuIFdhcnVua2kgbW9nxIUgYnnEhyBvcGNqb25hbG5pZSBvZ3Jhbmljem9uZSBkbyBva3JlxZtsb255Y2ggZ3J1cCBrbGllbnTDs3cuIE5hendhIGplc3QgamVkeW55bSBvYm93acSFemtvd3ltIGF0cnlidXRlbS4gSmXFm2xpIG5pZSBwb2Rhbm8gxbxhZG55Y2ggaW5ueWNoIG9wY2ppLCB3c3p5c3RraWUgZWxlbWVudHkga29uZmlndXJhY2ppIGLEmWTEhSB3aWRvY3puZSB3IHRlaiBrYXRlZ29yaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdPa3JlxZtsYSB3eW1hZ2FuZSB1cHJhd25pZW5pYSBkbyB1c3V3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHByenkgdcW8eWNpdSBpbnRlcmZlanN1IG9nw7NsbmVnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3eW1hZ2FuZSB1cHJhd25pZW5pYSBkbyB1enlza2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHByenkgdcW8eWNpdSBpbnRlcmZlanN1IG9nw7NsbmVnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3eW1hZ2FuZSB1cHJhd25pZW5pYSBkbyB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSBwcnp5IHXFvHljaXUgaW50ZXJmZWpzdSBvZ8OzbG5lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbml1amUgd3ltYWdhbmUgdXByYXduaWVuaWEgZG8gdXN0YXdpYW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHByenkgdcW8eWNpdSBpbnRlcmZlanN1IG9nw7NsbmVnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pdWplIG1vZHXFgiBwcnplZ2zEhWR1IGRvIHd5xZt3aWV0bGFuaWEgbWHFgmVnbyB3aWRva3UgbGlzdHkgZWxlbWVudMOzdyBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBjenkgZXR5a2lldHkgdHlwdSDFgsSFY3phIG11c3rEhSBiecSHIHd5xZt3aWV0bGFuZSB3IHBvxYLEhWN6ZW5pYWNoIHfEmXrFgsOzdy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3eXJhxbxlbmlhIHJlZ3VsYXJuZSBpbmR5d2lkdWFsbmllIGRsYSBrYcW8ZGVqIGtsYXN5IENvbmZpZ0l0ZW0gdyBjZWx1IHNwcmF3ZHplbmlhIG5hend5IENvbmZpZ0l0ZW0gaSB3ecWbd2lldGxlbmlhIG9kcG93aWVkbmljaCBrb211bmlrYXTDs3cgbyBixYLEmWRhY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvc3TEmXBuZSBrb2x1bW55IENJIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgemFsZcW8bm/Fm2NpIG9kIGtsYXN5IENJLiBLYcW8ZHkgd3BpcyBtdXNpIHNrxYJhZGHEhyBzacSZIHogbmF6d3kga2xhc3kgaSB0YWJsaWN5IGRvc3TEmXBueWNoIHDDs2wgZGxhIG9kcG93aWVkbmllaiBrbGFzeS4gV3Bpc3kgcMOzbCBkeW5hbWljem55Y2ggbXVzesSFIGJ5xIcgemdvZG5lIHplIHNjaGVtYXRlbSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvbXnFm2xueSBhdHJ5YnV0IGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBkbGEgc29ydG93YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHd5bmlrYWNoIHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBkb215xZtsbnkgYXRyeWJ1dCBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSBkbGEgc29ydG93YW5pYSBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSB3IHd5bmlrYWNoIHd5c3p1a2l3YW5pYSBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG55IGF0cnlidXQgZWxlbWVudHUga29uZmlndXJhY2ppIGRsYSBzb3J0b3dhbmlhIHd5bmlrw7N3IHd5c3p1a2l3YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgdGVqIG9wZXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG7EhSBrb2xlam5vxZvEhyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHd5bmlrYWNoIHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IGludGVyZmVqc2llIGFnZW50YS4gVyBnw7NyxJk6IG5hanN0YXJzenkgbmEgZ8OzcnplLiBXIGTDs8WCOiBuYWpub3dzemUgbmEgZ8OzcnplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG7EhSBrb2xlam5vxZvEhyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHd5bmlrYWNoIHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IGludGVyZmVqc2llIGtsaWVudGEuIFcgZ8OzcsSZOiBuYWpzdGFyc3plIG5hIGfDs3J6ZS4gVyBkw7PFgjogbmFqbm93c3plIG5hIGfDs3J6ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBkb215xZtsbmllIHd5xZt3aWV0bGFuZSBrb2x1bW55IENJIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgemFsZcW8bm/Fm2NpIG9kIGtsYXN5IENJLiBLYcW8ZHkgd3BpcyBtdXNpIHNrxYJhZGHEhyBzacSZIHogbmF6d3kga2xhc3kgaSB0YWJsaWN5IGRvc3TEmXBueWNoIHDDs2wgZGxhIG9kcG93aWVkbmllaiBrbGFzeS4gV3Bpc3kgcMOzbCBkeW5hbWljem55Y2ggbXVzesSFIGJ5xIcgemdvZG5lIHplIHNjaGVtYXRlbSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdPa3JlxZtsYSBkb215xZtsbsSFIGfFgsSZYm9rb8WbxIcgd3nFm3dpZXRsYW55Y2ggcmVsYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG5pZSB3ecWbd2lldGxhbnkgYXRyeWJ1dCB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgZGxhIGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbmllIHd5xZt3aWV0bGFueSBhdHJ5YnV0IHd5c3p1a2l3YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgZGxhIGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudHUga29uZmlndXJhY2ppLiBQcnp5a8WCYWQ6ICJLbHVjeiIgbXVzaSBtaWXEhyBuYXp3xJkgcG9sYSBkeW5hbWljem5lZ28sIHcgdHltIHByenlwYWRrdSAiWCIsICJaYXdhcnRvxZvEhyIgbXVzaSBtaWXEhyB3YXJ0b8WbxIcgcG9sYSBkeW5hbWljem5lZ28gdyB6YWxlxbxub8WbY2kgb2QgdHlwdSBwb2xhIGR5bmFtaWN6bmVnbywgVGVrc3Q6ICJ0ZWtzdCIsIExpc3RhIHJvendpamFuYTogIjEiLCBEYXRhL2dvZHppbmE6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBpIGx1YiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbml1amUgZG9tecWbbG55IHBvZG9iaWVrdCBrbGFzeSAiSVRTTUNvbmZpZ0l0ZW0iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvc3TEmXBuZSBrb2x1bW55IENJIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgemFsZcW8bm/Fm2NpIG9kIGtsYXN5IENJLiBLYcW8ZHkgd3BpcyBtdXNpIHNrxYJhZGHEhyBzacSZIHogbmF6d3kga2xhc3kgaSB0YWJsaWN5IGRvc3TEmXBueWNoIHDDs2wgZGxhIG9kcG93aWVkbmllaiBrbGFzeS4gV3Bpc3kgcMOzbCBkeW5hbWljem55Y2ggbXVzesSFIGJ5xIcgemdvZG5lIHplIHNjaGVtYXRlbSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdPa3JlxZtsYSB3eXNva2/Fm8SHIGVsZW1lbnR1IGVkeXRvcmEgdGVrc3R1IHNmb3JtYXRvd2FuZWdvIGRsYSB0ZWdvIGVrcmFudS4gV3Byb3dhZMW6IGxpY3pixJkgKHBpa3NlbGUpIGx1YiB3YXJ0b8WbxIcgcHJvY2VudG93xIUgKHd6Z2zEmWRuxIUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPa3JlxZtsYSBsaWN6YsSZIHdpZXJzenkgZWR5dG9yYSBkZWZpbmljamkgQ0kgdyBpbnRlcmZlanNpZSBhZG1pbmlzdHJhdG9yYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnT2tyZcWbbGEga29sZWpub8WbxIcgc3RhbsOzdyB6ZGFyemVuaWEgb2Qgd3lzb2tpZWdvIChucC4gc3RhbiBrcnl0eWN6bnkpIGRvIG5pc2tpZWdvIChucC4gc3RhbiBmdW5rY2pvbmFsbnkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBvZHBvd2llZG5pZSBzdGFueSB3ZHJvxbxlbmlhLCB3IGt0w7NyeWNoIHBvd2nEhXphbmUgemfFgm9zemVuaWEgbW9nxIUgd3DFgnl3YcSHIG5hIHN0YW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnT2tyZcWbbGEgbGltaXQgd3lzenVraXdhbmlhIGRsYSBla3JhbnUgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdPa3JlxZtsYSBsaW1pdCB3eXN6dWtpd2FuaWEgZGxhIGVrcmFudSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGxpbWl0IHd5c3p1a2l3YW5pYSBkbGEgZWtyYW51IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnT2tyZcWbbGEgbGltaXQgd3lzenVraXdhbmlhIGRsYSBla3JhbnUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnT2tyZcWbbGEgd3nFm3dpZXRsYW5lIGtvbHVtbnkgQ0kgdyB3aWRva3UgesWCb8W8b255bSB0YWJlbGkgbGlua8OzdyBkbGEgd3N6eXN0a2ljaCBrbGFzIENJLiBKZcWbbGkgbmllIG1hIHdwaXN1LCB3ecWbd2lldGxhbmUgc8SFIGtvbHVtbnkgZG9tecWbbG5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pdWplIHd5xZt3aWV0bGFuZSBrb2x1bW55IENJIHcgd2lkb2t1IHrFgm/FvG9ueW0gdGFiZWxpIGxpbmvDs3csIHcgemFsZcW8bm/Fm2NpIG9kIGtsYXN5IENJLiBLYcW8ZHkgd3BpcyBtdXNpIGJ5xIcgcG9wcnplZHpvbnkgbmF6d8SFIGtsYXN5IGkgcG9kd8Ozam55bWkgZHd1a3JvcGthbWkgKG5wLiBDb21wdXRlcjo6KS4gSXN0bmllamUga2lsa2EgYXRyeWJ1dMOzdyBDSSwga3TDs3JlIHPEhSB3c3DDs2xuZSBkbGEgd3N6eXN0a2ljaCBDSSAocHJ6eWvFgmFkIGRsYSBrbGFzeSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gQWJ5IHd5xZt3aWV0bGnEhyBwb3N6Y3plZ8OzbG5lIGF0cnlidXR5IENJIHpkZWZpbmlvd2FuZSB3IGRlZmluaWNqaSBDSSwgbmFsZcW8eSB1xbx5xIcgbmFzdMSZcHVqxIVjZWdvIHNjaGVtYXR1IChwcnp5a8WCYWQgZGxhIGtsYXN5IENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEplxZtsaSBuaWUgbWEgd3Bpc3UgZGxhIGtsYXN5IENJLCB3ecWbd2lldGxhbmUgc8SFIGtvbHVtbnkgZG9tecWbbG5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBrdMOzcmUgZWxlbWVudHkgc8SFIGRvc3TEmXBuZSBkbGEgIkFjdGlvbiIgbmEgdHJ6ZWNpbSBwb3ppb21pZSBzdHJ1a3R1cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGt0w7NyZSBlbGVtZW50eSBzxIUgZG9zdMSZcG5lIG5hIHBpZXJ3c3p5bSBwb3ppb21pZSBzdHJ1a3R1cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBrdMOzcmUgZWxlbWVudHkgc8SFIGRvc3TEmXBuZSBuYSBkcnVnaW0gcG96aW9taWUgc3RydWt0dXJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdPa3JlxZtsYSwga3TDs3J5IHR5cCBwb3dpxIV6YW5pYSAobmF6d2FueSB6IHBlcnNwZWt0eXd5IHpnxYJvc3plbmlhKSBtb8W8ZSB3cMWCeXdhxIcgbmEgc3RhdHVzIHBvd2nEhXphbmVnbyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdPa3JlxZtsYSwga3TDs3J5IHR5cCB6Z8WCb3N6ZW5pYSBtb8W8ZSB3cMWCeXdhxIcgbmEgc3RhdHVzIHBvd2nEhXphbmVnbyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBa3R1YWxpemFjamEgZGVmaW5pY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdVc3XFhCBlbGVtZW50IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0tvbG9yIHN0YW51IHdkcm/FvGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdcWCIHpkYXJ6ZcWEIHDDs2wgZHluYW1pY3pueWNoLCBrdMOzcnkgb3puYWN6YSBkZWZpbmljamUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgamFrbyBuaWV6c3luY2hyb25pem93YW5lLCBqZcWbbGkgemF3aWVyYWrEhWNlIGplIHBvbGEgZHluYW1pY3puZSB1bGVnbsSFIHptaWFuaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb2xhIGR5bmFtaWN6bmUgd3nFm3dpZXRsYW5lIG5hIGVrcmFuaWUgZG9kYXRrb3d5Y2ggcMOzbCBJVFNNIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljem5lIHBvbGEgd3nFm3dpZXRsYW5lIG5hIGVrcmFuaWUgcHJ6ZWdsxIVkdSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWN6bmUgcG9sYSB3ecWbd2lldGxhbmUgbmEgZWtyYW5pZSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ1fFgsSFY3phIGZ1bmtjasSZIG1hc293ZWogYWtjamkgZWxlbWVudHUga29uZmlndXJhY2ppIGRsYSBpbnRlcmZlanN1IGFnZW50YSwgYWJ5IHByYWNvd2HEhyBuYSB3acSZY2VqIG5pxbwgamVkbnltIGVsZW1lbmNpZSBrb25maWd1cmFjamkgbmFyYXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdXxYLEhWN6YSBmdW5rY2rEmSBha2NqaSB6YmlvcmN6ZWogZWxlbWVudHUga29uZmlndXJhY2ppIHR5bGtvIGRsYSB3eW1pZW5pb255Y2ggZ3J1cC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdcWCIHpkYXJ6ZcWEIGRvIHVzdGF3aWFuaWEgc3RhdHVzdSBlbGVtZW50dSBrb25maWd1cmFjamkgbmEgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnUG9sYSBpbmRla3N1IHBvenljamkga29uZmlndXJhY2ppLCB1xbx5d2FuZSBkbyB3eXN6dWtpd2FuaWEgcGXFgm5vdGVrc3Rvd2Vnby4gUG9sYSBzxIUgcsOzd25pZcW8IHByemVjaG93eXdhbmUsIGFsZSBuaWUgc8SFIG9ib3dpxIV6a293ZSBkbGEgb2fDs2xuZWogZnVua2Nqb25hbG5vxZtjaS4gRG/FgsSFY3phbmllIHphxYLEhWN6bmlrw7N3IG1vxbxuYSB3ecWCxIVjennEhywgdXN0YXdpYWrEhWMgd2FydG/Fm8SHIHdwaXN1IG5hIDAgbHViIHVzdXdhasSFYyBnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1BvbGEgcHJ6ZWNob3d5d2FuZSB3IGluZGVrc2llIHBvenljamkga29uZmlndXJhY2ppLCBrdMOzcmUgc8SFIHd5a29yenlzdHl3YW5lIGRvIGlubnljaCBjZWzDs3cgbmnFvCB3eXN6dWtpd2FuaWUgcGXFgm5vdGVrc3Rvd2UuIERsYSBwZcWCbmVqIGZ1bmtjam9uYWxub8WbY2kgd3N6eXN0a2llIHBvbGEgc8SFIG9ib3dpxIV6a293ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWplc3RyYWNqYSBtb2R1xYJ1IEdlbmVyaWNJbnRlcmZhY2UgZGxhIHdhcnN0d3kgd3l3b8WCdWrEhWNlaiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVqZXN0cmFjamEgbW9kdcWCdSBHZW5lcmljSW50ZXJmYWNlIGRsYSB3YXJzdHd5IHd5d2/FgnVqxIVjZWogQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWplc3RyYWNqYSBtb2R1xYJ1IEdlbmVyaWNJbnRlcmZhY2UgZGxhIHdhcnN0d3kgd3l3b8WCdWrEhWNlaiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByemVnbMSFZCBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09iZWptdWplIHN0YW55IHdkcm/FvGVuaWEgdyB3eXN6dWtpd2FuaXUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBrbGllbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPYmVqbXVqZSBzdGFueSBpbmN5ZGVudMOzdyB3IHd5c3p1a2l3YW5pdSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01ha3N5bWFsbmEgbGljemJhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGRvIHd5xZt3aWV0bGVuaWEgdyB3eW5pa3UgdGVqIG9wZXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHXFgiBzcHJhd2R6YWrEhWN5IGdydXDEmSBvZHBvd2llZHppYWxuxIUgemEga2xhc8SZLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHXFgiBkbyBzcHJhd2R6YW5pYSBncnVweSBvZHBvd2llZHppYWxuZWogemEgZWxlbWVudCBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdcWCIGRvIGdlbmVyb3dhbmlhIHN0YXR5c3R5ayBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hendhIG1vZHXFgnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ01vZHXFgiBudW1lcnljem55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpY3piYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3ecWbd2lldGxhbnljaCBuYSBrYcW8ZGVqIHN0cm9uaWUgd3luaWvDs3cgd3lzenVraXdhbmlhIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaWN6YmEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgd3nFm3dpZXRsYW55Y2ggbmEga2HFvGRlaiBzdHJvbmllIHd5bmlrw7N3IHd5c3p1a2l3YW5pYSB3IGludGVyZmVqc2llIGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iaWVrdHkgZG8gd3lzenVrYW5pYSwgaWxlIHdwaXPDs3cgaSBrdMOzcmUgYXRyeWJ1dHkgcG9rYXphxIcuIEF0cnlidXR5IENvbmZpZ0l0ZW0gbXVzesSFIGJ5xIcgamF3bmllIHByemVjaG93eXdhbmUgcHJ6ZXogRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUHJ6ZWdsxIVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IGRsYSBrYXRlZ29yaWkga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIGZpbHRyw7N3IGtvbHVtbiB3IG1hxYJ5bSBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkuIFV3YWdhOiB1c3Rhd2llbmllICJBY3RpdmUiIG5hIDAgdW5pZW1vxbxsaXdpIGFnZW50b20gZWR5Y2rEmSB1c3Rhd2llxYQgdGVqIGdydXB5IHcgaWNoIG9zb2Jpc3R5Y2ggcHJlZmVyZW5jamFjaCwgYWxlIG5hZGFsIHBvendvbGkgYWRtaW5pc3RyYXRvcm9tIGVkeXRvd2HEhyB1c3Rhd2llbmlhIHcgaW1pZW5pdSBpbm5lZ28gdcW8eXRrb3duaWthLiBVxbx5aiAiUHJlZmVyZW5jZUdyb3VwIiwgYWJ5IGtvbnRyb2xvd2HEhywgdyBrdMOzcnltIG9ic3phcnplIHRlIHVzdGF3aWVuaWEgcG93aW5ueSBiecSHIHd5xZt3aWV0bGFuZSB3IGludGVyZmVqc2llIHXFvHl0a293bmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkga29sb3LDs3cgc3RhbsOzdyB3ZHJvxbxlbmlhIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBzdGFuw7N3IHdkcm/FvGVuaWEgdyB3aWRva3UgcHJlZmVyZW5jamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgcHJ6eWvFgmFkb3d5Y2ggZ3J1cCB1cHJhd25pZcWEIGF0cnlidXTDs3cga2F0YWxvZ3UgZ8WCw7N3bmVnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgbW9kdcWCdSBuYXp3eSBkbGEga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgbW9kdcWCdSBsaWN6YnkgZGxhIGtsYXMgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3aWRva3UgcHJlZmVyZW5jamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgc3Ryb24gKG5hIGt0w7NyeWNoIHd5xZt3aWV0bGFuZSBzxIUgZWxlbWVudHkga29uZmlndXJhY2ppKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IGRsYSBtb2R1xYJ1IMWCYcWEY3VjaGEgd2Vyc2ppIGRsYSBrbGFzIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgbW9kdcWCdSBzemFibG9udSDFgmHFhGN1Y2hhIHdlcnNqaSBkbGEga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHd5endhbGFjemEgd2Vyc2ppIGRsYSBrbGFzIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBhIFVwcmF3bmllxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGFrY2ppIGRvxYLEhWN6YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUga2xpZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSB3aWRva3UgZHJ6ZXdhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IHBvd2nEmWtzemVuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgZG9kYXdhbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBlbGVtZW50dSBrb25maWd1cmFjamkgemJpb3JjemVqIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwcmF3bmllbmlhIHd5bWFnYW5lIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IGVkeWNqaSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXByYXduaWVuaWEgd3ltYWdhbmUgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgZWxlbWVudHUga29uZmlndXJhY2ppIElUU00gaGlzdG9yaWkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBkcnVrb3dhbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8gdXN1d2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnV3lzenVrYWogZWxlbWVudHkga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnVXN0YXcgc3RhbiBpbmN5ZGVudHUgQ0kgYXV0b21hdHljem5pZSwgZ2R5IFRpY2tldCBqZXN0IHBvd2nEhXphbnkgeiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVc3Rhd2lhIHN0YW4gd2Ryb8W8ZW5pYSBuYSBla3JhbmllIHpiaW9yY3p5bSBlbGVtZW50dSBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VzdGF3aWEgc3RhbiB6ZGFyemVuaWEgbmEgZWtyYW5pZSB6YmlvcmN6eW0gZWxlbWVudHUga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUsIGt0w7NyZSB1bW/FvGxpd2lhIHBvd2nEhXphbmllIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB6IGlubnltIG9iaWVrdGVtIHcgd2lkb2t1IHBvd2nEmWtzemVuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdW1vxbxsaXdpYWrEhWNlIGRvc3TEmXAgZG8gaGlzdG9yaWkgZWxlbWVudHUga29uZmlndXJhY2ppIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSBkb3N0xJlwIGRvIGhpc3RvcmlpIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwb3dpxJlrc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdW1vxbxsaXdpYWrEhWNlIHVzdW5pxJljaWUgZWxlbWVudHUga29uZmlndXJhY2ppIHcgd2lkb2t1IHBvd2nEmWtzemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51LCBhYnkgd3nFm3dpZXRsacSHIMWCxIVjemEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3aWRva3UgZHJ6ZXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgZG8gZHVwbGlrb3dhbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHByemVnbMSFZHppZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB3IGNlbHUgcG93aWVsZW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgdyB3aWRva3UgcG93acSZa3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdW1vxbxsaXdpYWrEhWNlIGVkeWNqxJkgZWxlbWVudHUga29uZmlndXJhY2ppIHcgd2lkb2t1IHBvd2nEmWtzemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSBwb3dyw7N0IGRvIHdpZG9rdSBwb3dpxJlrc3plbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSB3eWRydWtvd2FuaWUgZWxlbWVudHUga29uZmlndXJhY2ppIHcgd2lkb2t1IHBvd2nEmWtzemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB1bW/FvGxpd2lhasSFY2UgcG93acSZa3N6ZW5pZSBlbGVtZW50dSBrb25maWd1cmFjamkgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgaGlzdG9yacSZIGVsZW1lbnTDs3cga29uZmlndXJhY2ppICh3IG9kd3JvdG5laiBrb2xlam5vxZtjaSkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0RvbXnFm2xuYSBrYXRlZ29yaWEsIGt0w7NyYSBqZXN0IHd5xZt3aWV0bGFuYSwgamXFm2xpIG5pZSB3eWJyYW5vIMW8YWRuZWouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudHlmaWthdG9yIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSwgbnAuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBEb215xZtsbmllIGplc3QgdG8gQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBdXRvbWF0eWN6bmllIHVydWNoYW1pYSB3eXdvxYJhbmllIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnV2Vyc2phIFd5cmHFvGVuaWUgxYJhxYRjdWNob3dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ01vZHXFgiBjacSFZ3Ugd2Vyc2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1d5endhbGFjeiB3ZXJzamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0N6eSBtb8W8bmEgdW5pa27EhcSHIHd5a29uYW5pYSBDb25maWdJdGVtQUNMIHBvcHJ6ZXogc3ByYXdkemVuaWUgemFsZcW8bm/Fm2NpIHDDs2wgdyBwYW1pxJljaSBwb2RyxJljem5lai4gTW/FvGUgdG8gcG9wcmF3acSHIGN6YXMgxYJhZG93YW5pYSBmb3JtdWxhcnp5LCBhbGUgbXVzaSBiecSHIHd5xYLEhWN6b25lLCBqZcWbbGkgQUNMTW9kdWxlcyBtYWrEhSBiecSHIHXFvHl3YW5lIGRsYSBJVFNNQ29uZmlnSXRlbS0gaSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnSW5mb3JtYWNqZSBvZ8OzbG5lIHPEhSB3ecWbd2lldGxhbmUgdyBuYWfFgsOzd2t1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbG55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a2N5am55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcnplZHByb2R1a2N5am55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0eXdueSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBjYWxhICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgY2FsaSAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IGNhbGEgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgY2FsYSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LWNhbG93eSBzdG9qYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGNhbGEgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgY2FsaSAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtY2Fsb3d5IHN0b2phayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgY2FsYSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLWNhbG93eSBzdG9qYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IGNhbGEgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGNhbGUgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IGNhbGEgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBjYWxhICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGNhbGEgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IGNhbGEgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IGNhbGEgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGNhbGEgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGNhbGUgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBjYWxhICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgY2FsYSAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IGNhbGEgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IGNhbGEgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgY2FsYSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBjYWxhICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgY2FsYSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGNhbGUgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBjYWxpICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBjYWxhICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBjYWxhICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IGNhbGEgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgY2FsaSAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBjYWxhICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdLc2nEmWdvd2/Fm8SHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnUHJ6eWR6aWHFgiBhZHJlc8Ozdyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWxlZm9uIGFuYWxvZ293eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cCB1cnrEhWR6ZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ1BvamVtbm/Fm8SHIGFrdW11bGF0b3JhIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVHlwIGFrdW11bGF0b3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnVkeW5layc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmZWpzIG1hZ2lzdHJhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ1Byb2Nlc29yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0tsYXNhIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnUG9qZW1ub8WbxIcgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ1BvamVtbm/Fm8SHIG5hIGthcnTEmSBncmFmaWN6bsSFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTnVtZXIga2FydHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdDenl0bmlrIGthcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVHlwIGthcnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0eWZpa2F0eSBrbGllbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ09wcm9ncmFtb3dhbmllIGtsaWVuY2tpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLYXRlZ29yaWEga2xpZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdDbG9ja3JhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnR5ZmlrYXR5IHBvZHBpc3l3YW5pYSBrb2R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWxlZm9uIGtvbmZlcmVuY3lqbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdVbW93YSBrb25zdWx0aW5nb3dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IHogZHlzdHJ5YnV0b3JlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ1phcnrEhWR6YW5pZSBrb250ZW5lcmFtaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1Vtb3dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUeXAgdW1vd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdPa3JlcyBvYm93acSFenl3YW5pYSB1bW93eSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdPa3JlcyBvYm93acSFenl3YW5pYSB1bW93eSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUZWxlZm9uIGJlenByemV3b2Rvd3kgKHRlbGVmb24gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnSmVkbm9zdGthIGtvc3p0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0xpY3piYSBsaWNlbmNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0YSB1dHdvcnplbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdOaWVzdGFuZGFyZG93eSBzdG9qYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgWmFyZXplcndvd2FuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2Vyd2VyIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0YSBmYWt0dXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRhIHphbcOzd2llbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRhIGd3YXJhbmNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRhIHd5ZGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnR5ZmlrYXR5IHBvZHBpc3l3YW5pYSBkb2t1bWVudMOzdyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ1N0b2phayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0eWZpa2F0eSBwb2N6dHkgZS1tYWlsIChjZXJ0eWZpa2F0eSBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1Vtb3dhIG8gcHJhY8SZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnS2/FhGNvd3kgYWRyZXMgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdLb25pZWMgd3NwYXJjaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEYXRhIHd5Z2HFm25pxJljaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ1pld27EmXRyem55IGR5c2sgdHdhcmR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdPcHJvZ3JhbW93YW5pZSB1a8WCYWRvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdNYWdhenlub3dhbmllIGVuZXJnaWkgdyBrb2xlIHphbWFjaG93eW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdXc3DDs8WCY3p5bm5payBrc3p0YcWCdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ1Vtb3dhIGZyYW5jenl6eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjamUgb2fDs2xuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0thcnR5IGdyYWZpY3puZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnS2FydGEgZ3JhZmljem5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnU3ByesSZdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsIHNwcnrEmXR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1dhZ2Egc3ByesSZdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ1plc3RhdyBzxYJ1Y2hhd2tvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2vDs8WCIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1phcnrEhWR6YW5pZSB0b8W8c2Ftb8WbY2nEhSBpIGRvc3TEmXBlbSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTnVtZXIgaW53ZW50YXJ6b3d5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOdW1lciBmYWt0dXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2xhd2lhdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdG9yIExDRCAod3nFm3dpZXRsYWN6IGNpZWvFgm9rcnlzdGFsaWN6bnkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoZGlvZGEgZWxla3Ryb2x1bWluZXNjZW5jeWpuYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsZWZvbiBzdGFjam9uYXJueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdTemVyb2tvxZvEhyBnZW9ncmFmaWN6bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdXYXJzdHdhIDE6IFdhcnN0d2EgZml6eWN6bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnV2Fyc3R3YSAyOiBXYXJzdHdhIMWCxIVjemEgZGFueWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdXYXJzdHdhIDM6IFdhcnN0d2Egc2llY2lvd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnV2Fyc3R3YSAzOiBXYXJzdHdhIHNpZWNpb3dhIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnV2Fyc3R3YSA0OiBXYXJzdHdhIHRyYW5zcG9ydG93YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnV2Fyc3R3YSA1OiBXYXJzdHdhIHNlc2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ1dhcnN0d2EgNjogV2Fyc3R3YSBwcmV6ZW50YWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ1dhcnN0d2EgNzogV2Fyc3R3YSBhcGxpa2FjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnVW1vd2EgbmFqbXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdVbW93YSBsaWNlbmN5am5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdLbHVjeiBsaWNlbmN5am55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1R5cCBsaWNlbmNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnT2tyZXMgbGljZW5jamkgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdPa3JlcyBsaWNlbmNqaSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQWt1bXVsYXRvciBsaXRvd28txbxlbGF6b3dvLWZvc2ZvcmFub3d5IChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQWt1bXVsYXRvciBsaXRvd28tam9ub3d5IChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnVW1vd2EgcG/FvHljemtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdabmFqZHVqZSBzacSZIHcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnRMWCdWdvxZvEhyBnZW9ncmFmaWN6bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdQcm9kdWNlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01ha3N5bWFsbmUgb2JjacSFxbxlbmllIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdQYW1pxJnEhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1R5cCBwYW1pxJljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOdW1lciB0ZWxlZm9udSBrb23Ds3Jrb3dlZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxlL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdPcGlzIG1vZGVsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSb3pkemllbGN6b8WbxIcgbW9uaXRvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnUm96bWlhciBtb25pdG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ015c3prYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnU2llxIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYWNqZSBvIHNpZWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2plIG8gc2llY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ1dhcnN0d2Egc2llY2lvd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdBa3VtdWxhdG9yIG5pa2xvd28ta2FkbW93eSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdBa3VtdWxhdG9yIG5pa2xvd28td29kb3Jrb3d5IChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdVbW93YSBvIHphY2hvd2FuaXUgcG91Zm5vxZtjaSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGF0bmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTGljemJhIHByb2Nlc29yw7N3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0xpY3piYSBtb2R1xYLDs3cgcGFtacSZY2kgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0xpY3piYSBrYXJ0IGdyYWZpY3pueWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKG9yZ2FuaWN6bmEgZGlvZGEgZWxla3Ryb2x1bWluZXNjZW5jeWpuYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnS29zenR5IG9wZXJhY3lqbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTnVtZXIgemFtw7N3aWVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdJbm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdXeWrFm2NpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdVbW93YSBwYXJ0bmVyc2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTnVtZXIgdGVsZWZvbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1R5cCB0ZWxlZm9udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ1JkemVuaWUgZml6eWN6bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdaYXNpbGFuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdaYWt1cGlvbmUgdyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnR8WCxJlib2tvxZvEhyBzdG9qYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmVnYcWCeSAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1Bva8Ozaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ0thcnRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnR5ZmlrYXR5IFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdVbW93YSBzcHJ6ZWRhxbx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbGVmb24gc2F0ZWxpdGFybnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnVXN6Y3plbG5pb255IGFrdW11bGF0b3Iga3dhc293by1vxYJvd2lvd3kgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOdW1lciBzZXJ5am55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ09wcm9ncmFtb3dhbmllIHNlcndlcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdVbW93YSBvIMWbd2lhZGN6ZW5pZSB1c8WCdWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdabmFjem5payB1c8WCdWdpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cCBnbmlhemRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnT3Byb2dyYW1vd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdHxYJvxZtuaWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdQb2N6xIV0a293eSBhZHJlcyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnUHJ6ZWNob3d5d2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0eWNqYSBwYW1pxJljaSBtYXNvd2VqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnSmVkbm9zdGthIHphbGXFvG5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdQb2RzdW1vd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDaWVua2kga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdOaWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0NhxYJrb3dpdGEgcGFtacSZxIcgUkFNIGthcnR5IGdyYWZpY3puZWogKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ0NhxYJrb3dpdGEgcGFtacSZxIcgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgeiBla3JhbmVtIGRvdHlrb3d5bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1dpZcW8YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnS29uY2VudHJhdG9yIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1plc3RhdyBzxYJ1Y2hhd2tvd3kgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsZWZvbiBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdLYW1lcmEgaW50ZXJuZXRvd2EnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/pt_BR_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYWRvcyBnZXJhaXMgZGUgb3BlcmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnQ29uZmlndXJhw6fDtWVzIHBhcmEgZGFkb3MgZGUgc29saWNpdGHDp8OjbyBkZSBlbnRyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnQ29uZmlndXJhw6fDtWVzIHBhcmEgZGFkb3MgZGUgcmVzcG9zdGEgZGUgc2HDrWRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VyZW5jaWFtZW50byBkZSBJdGVucyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ011ZGFyIGRlZmluacOnw6NvIGRlIGNsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnQWx0ZXJhciBhIGRlZmluacOnw6NvIGRhIGZ1bsOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFjb3RlcyBkZSBjbGFzc2VzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0FxdWkgdm9jw6ogcG9kZSBpbXBvcnRhciBvcyBwYWNvdGVzIGRlIGNsYXNzZXMgZG8gUmVhZHkySW1wb3J0IHF1ZSBhcHJlc2VudGFtIG5vc3NvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBtYWlzIGNvbXVucy4gT2JzZXJ2ZSBxdWUgcG9kZSBzZXIgbmVjZXNzw6FyaWEgYWxndW1hIGNvbmZpZ3VyYcOnw6NvIGFkaWNpb25hbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXR1YWxpemFyIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgb3MgcGFjb3RlcyBkZSBjbGFzc2VzIGRvIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc3NlIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0Z1bsOnw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnSXRlbSBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGFyYSBDbGFzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjaW9uZSB1bWEgY2xhc3NlIGEgcGFydGlyIGRhIGxpc3RhIHBhcmEgY3JpYXIgdW0gbm92byBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0HDp8OjbyBlbSBNYXNzYSBlbSBJQ3MgSVRTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGUgaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0Fzc29jaWFyIGEgb3V0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ07Dum1lcm8gZGUgSXRlbSBkZSBDb25maWd1cmHDp8OjbyBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ08gbsO6bWVybyBkZSBvdXRybyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIHBhcmEgYXNzb2NpYXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRGVzZWphIHJlYWxtZW50ZSBleGNsdWlyIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBub21lIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05vbWUgasOhIGVtIHVzbyBwZWxvcyBJQ3MgY29tIG9zIHNlZ3VpbnRlcyBOw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGEgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkYSB2ZXJzw6NvIGRlc3NlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG7Dum1lcm8gZGEgdmVyc8OjbyBqw6EgZXN0w6Egc2VuZG8gdXNhZG8gcGVsb3MgQ29uZmlnSXRlbXMgY29tIG8ocykgc2VndWludGUocykgbsO6bWVybyhzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBJbXBsYW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEluY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmljbyBkbyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZcO6ZG8gZG8gSGlzdMOzcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzw6NvIGRlIGRldGFsaGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnSXRlbnMgZGUgY29uZmlndXJhw6fDo28gcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05lbmh1bSBkYWRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZm9pIGVuY29udHJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNpb25lIGVzc2UgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0V4ZWN1dGFyIFBlc3F1aXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTsOtdmVsIGRlIHByb2Z1bmRpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ0F1bWVudGFyIGUgZGltaW51aXIgbyB6b29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ07DrXZlbCBtw6F4aW1vIGRlIGxpbmtzIGF0aW5naWRvIHBhcmEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8OjbyBkbyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBJbXBsYW50YcOnw6NvIEF0dWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZG8gSW5jaWRlbnRlIEF0dWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ8OabHRpbWEgbW9kaWZpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfDmmx0aW1hIG1vZGlmaWNhw6fDo28gcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnU2V1cyBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdQZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQXMgc2VndWludGVzIGNsYXNzZXMgc2Vyw6NvIGltcG9ydGFkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQXMgc2VndWludGVzIGZ1bsOnw7VlcyBzZXLDo28gaW1wb3J0YWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdPYnNlcnZlIHF1ZSBvcyBjYW1wb3MgZGluw6JtaWNvcyBlIGFzIGNsYXNzZXMgR2VuZXJhbENhdGFsb2cgY29ycmVzcG9uZGVudGVzIHRhbWLDqW0gc2Vyw6NvIGNyaWFkb3MgZSBuw6NvIGhhdmVyw6EgcmVtb8Onw6NvIGF1dG9tw6F0aWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1ZvY8OqIHF1ZXIgcHJvc3NlZ3Vpcj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnUHJlY2lzYSBkZSBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnQSBkZWZpbmnDp8OjbyBuw6NvIMOpIHVtIGhhc2ggWUFNTCB2w6FsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Zpc8OjbyBnZXJhbDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBDb25maWdJdGVtSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdWb2PDqiBwcmVjaXNhIHNlbGVjaW9uYXIgcGVsbyBtZW5vcyB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1ZvY8OqIG7Do28gdGVtIGFjZXNzbyBkZSBlc2NyaXRhIHBhcmEgZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTmVuaHVtYSBkZWZpbmnDp8OjbyBwYXJhIGEgY2xhc3NlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnSXRlbSBkZSBjb25maWd1cmHDp8OjbyAiJXMiIG7Do28gZW5jb250cmFkbyBuYSBiYXNlIGRlIGRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBleGNsdWlyIG8gSUQgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05lbmh1bWEgdmVyc8OjbyBlbmNvbnRyYWRhIHBhcmEgbyBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG91IENsYXNzSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBhY2Vzc28gw6kgZGFkbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgZXhpYmlyIGhpc3TDs3JpY28uIE5lbmh1bSBDb25maWdJdGVtSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOw6NvIMOpIHBvc3PDrXZlbCBleGliaXIgaGlzdMOzcmljby4gTmVuaHVtIGRpcmVpdG8gZGUgYWNlc3NvIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3ZvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm92YSB2ZXJzw6NvIChJRCA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkZSBpbXBsZW1lbnRhw6fDo28gYXR1YWxpemFkbyAobm92bz0lcyAsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRlIGluY2lkZW50ZSBhdHVhbGl6YWRvIChub3ZvPSVzLCBhbnRpZ289JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnSXRlbSBkZSBDb25maWd1cmHDp8OjbyAoSUQ9JXMpIGV4Y2x1w61kbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1bDrW5jdWxvIHBhcmEgJXMgKHRpcG89JXMpIGFkaWNpb25hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ1bDrW5jdWxvIHBhcmEgJXMgKHRpcG89JXMpIGRlbGV0YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmnDp8OjbyBkZSBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIChJRD0lcykgYXR1YWxpemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWUgYXR1YWxpemFkbyAobm92bz0lcywgYW50aWdvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlidXRvICVzIGF0dWFsaXphZG8gZGUgIiVzIiBwYXJhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc8OjbyAlcyBleGNsdcOtZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIENvbmZpZ0l0ZW1JRCBvdSBWZXJzaW9uSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGV4aWJpciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLiBOZW5odW0gZGlyZWl0byBkZSBhY2Vzc28gw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbsOjbyBlbmNvbnRyYWRvIG5hIGJhc2UgZGUgZGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdJbXByZXNzbyBwb3IgJXMgZW0gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyw6puY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnQ2xhc3NJRCBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIENsYXNzSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOZW5odW0gZGlyZWl0byBkZSBhY2Vzc28gcGFyYSBlc3RhIGNsYXNzZSDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTmVuaHVtIHJlc3VsdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdSZXN1bHRhZG9zIGRhIHBlc3F1aXNhIGRlIEl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdOw6NvIGZvaSBwb3Nzw612ZWwgZXhpYmlyIGl0ZW0uIE5lbmh1bSBkaXJlaXRvIGRlIGFjZXNzbyBwYXJhIENvbmZpZ0l0ZW0gw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBuw6NvIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05lbmh1bWEgdmVyc8OjbyBlbmNvbnRyYWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhY2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmlzbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBlc3RhZG8gZGUgaW1wbGFudGHDp8OjbyBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBlc3RhZG8gZGUgaW5jaWRlbnRlIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdTZW0gUGVybWlzc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOibWV0cm9zIGRlIHBlc3F1aXNhIGludsOhbGlkb3MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnRXhpYmlyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgRXN0YWRvIGRlIEltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnRXN0YWRvIEF0dWFsIGRlIEluY2lkZW50ZSBwb3IgdGlwbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpw6fDtWVzIGRlIGNsYXNzZSBwYXJhIG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWNpb25lIHVtYSBvdSBtYWlzIGNsYXNzZXMgcGFyYSByZXN0cmluZ2lyIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlbGVjaW9uw6F2ZWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmnDp8O1ZXMgZGUgY2xhc3NlIHBhcmEgbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWNpb25lIHVtYSBvdSBtYWlzIGNsYXNzZXMgcGFyYSByZXN0cmluZ2lyIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlbGVjaW9uw6F2ZWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluw6JtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljICh2ZXJzw6NvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRlIHJlZmVyw6puY2lhIGRlIGxpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2UgZXNzZSBsaW5rIHNlIGFwbGljYSBhbyBDb25maWdJdGVtIG91IMOgIHZlcnPDo28gZXN0w6F0aWNhIGRvIG9iamV0byBkZSByZWZlcsOqbmNpYS4gTyBjw6FsY3VsbyBkbyBlc3RhZG8gYXR1YWwgZG8gaW5jaWRlbnRlIHPDsyDDqSByZWFsaXphZG8gZW0gbGlua3MgZGluw6JtaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTZWxlY2lvbmUgbyBhdHJpYnV0byBwZWxvIHF1YWwgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc2Vyw6NvIHBlc3F1aXNhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdBIGVzdHJ1dHVyYSBiw6FzaWNhIG7Do28gw6kgdsOhbGlkYS4gRm9ybmXDp2EgdW0gaGFzaCBjb20gZGFkb3Mgbm8gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ8OJIG5lY2Vzc8OhcmlvIGluaWNpYXIgYSBzdHJpbmcgWUFNTCBjb20gXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGxpbXBhciBhIHRhYmVsYSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZG9zIGNhbXBvcyBkaW7Dom1pY29zIHJlbGV2YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgaW5zZXJpciBuYSB0YWJlbGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcml1IDAgbGluaGFzIG5hIHRhYmVsYSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVtIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ0NhZGVpYSBkZSBjYXJhY3RlcmVzIGRhIHZlcnPDo28nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJybyBhbyBzaW5jcm9uaXphciBhcyBkZWZpbmnDp8O1ZXMuIFZlcmlmaXF1ZSBvIHJlZ2lzdHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1ZvY8OqIHRlbSBkZWZpbmnDp8O1ZXMgZGUgSVRTTUNvbmZpZ0l0ZW0gcXVlIG7Do28gZXN0w6NvIHNpbmNyb25pemFkYXMuIEltcGxlbWVudGUgc3VhcyBhbHRlcmHDp8O1ZXMgZGUgY2FtcG8gZGluw6JtaWNvIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYW51dGVuw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5lamFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0ZSBkZSBRdWFsaWRhZGUnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Zpc8OjbyBnZXJhbCBlIGNvbmZpcm1hw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YcOnw6NvIGRlIGNsYXNzZXMvZnVuw6fDtWVzIGUgc2V1cyBjYW1wb3MgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnT2NvcnJldSB1bSBlcnJvIGR1cmFudGUgYSBpbXBvcnRhw6fDo28gZGEgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gT2N1bHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBNb3N0cmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kacOnw7VlcyBkZSBwZXNxdWlzYSBlc3RlbmRpZGFzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIENvbSBlc3NlIHJlY3Vyc28sIHZvY8OqIHBvZGUgcGVzcXVpc2FyLCBwb3IgZXhlbXBsbywgbyBub21lIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIGVzc2UgdGlwbyBkZSBjb25kacOnw6NvLCBjb21vICIoKmtleTEqJiYqa2V5MiopIiBvdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGnDp8O1ZXMgZGUgcGVzcXVpc2EgZXN0ZW5kaWRhcyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQ29tIGVzc2UgcmVjdXJzbywgdm9jw6ogcG9kZSBwZXNxdWlzYXIsIHBvciBleGVtcGxvLCBvIG5vbWUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBjb20gZXNzZSB0aXBvIGRlIGNvbmRpw6fDo28sIGNvbW8gIigqa2V5MSomJiprZXkyKikiIG91ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnSUNzIGF0cmlidcOtZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0lDIGF0cmlidWlkbyDDoCBlbXByZXNhIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdJQyBhdHJpYnVpZG8gYW8gdXN1w6FyaW8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ29uZmlndXJhw6fDtWVzIGRvIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1ZlcmlmaXF1ZSBzZSBvIG5vbWUgw6kgw7puaWNvIGFwZW5hcyBkZW50cm8gZGEgbWVzbWEgY2xhc3NlIGRlIElDIChcJ2NsYXNzZSkgb3UgZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBvIHF1ZSBzaWduaWZpY2EgcXVlIGNhZGEgSUMgZXhpc3RlbnRlIMOpIGxldmFkbyBlbSBjb250YSBhbyBwcm9jdXJhciBwb3IgZHVwbGljYcOnw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0VzY29saGEgdW0gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW0gZXNxdWVtYSBkZSBub21lbmNsYXR1cmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdFc2NvbGhhIHVtIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVtIGVzcXVlbWEgbnVtw6lyaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdFc2NvbGhhIHVtIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVtIGVzcXVlbWEgZGUgc3RyaW5nIGRlIHZlcnPDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnRXNjb2xoYSBhdHJpYnV0b3MgcGFyYSBhY2lvbmFyIGEgY3JpYcOnw6NvIGRlIHVtYSBub3ZhIHZlcnPDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0VzY29saGEgYXMgY2F0ZWdvcmlhcyBhIHNlcmVtIGF0cmlidcOtZGFzIGEgZXNzYSBjbGFzc2UgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cm9zIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGUgY29sdW5hIHBhcmEgVmlzw6NvIGdlcmFsIGRvIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bmFzIHF1ZSBwb2RlbSBzZXIgZmlsdHJhZGFzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIE9ic2VydmHDp8OjbzogU29tZW50ZSBhdHJpYnV0b3MgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBlIGNhbXBvcyBkaW7Dom1pY29zIChEeW5hbWljRmllbGRfTmFtZVgpIHPDo28gcGVybWl0aWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnSXRlbnMgZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0FkaWNpb25hciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXRhciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcXVlIHBlcm1pdGUgcmVnaXN0cmFyIG8gaGlzdMOzcmljbyBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBhdHVhbGl6YSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBwYXJhIHN1YSBkZWZpbmnDp8OjbyBhdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0w7NyaXZvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJlc3PDo28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdab29tIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdWFsaXphw6fDo28gZW0gw6Fydm9yZSBkbyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ1ZlcnPDo28gZG8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdPcyBDb25maWdJdGVtcyBkYXMgc2VndWludGVzIGNsYXNzZXMgbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzc28gYW9zIENJcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gQ0kgZGV2ZSBzZXIgZXhlY3V0YWRhIHBvciBtZWlvIGRvIGNvbnNvbGUsIGFww7NzIGEgYWx0ZXJhw6fDo28gZGVzc2Egb3DDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnT3MgQ29uZmlnSXRlbXMgY29tIG9zIHNlZ3VpbnRlcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzc28gYW9zIENJcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gQ0kgZGV2ZSBzZXIgZXhlY3V0YWRhIHBvciBtZWlvIGRvIGNvbnNvbGUsIGFww7NzIGEgYWx0ZXJhw6fDo28gZGVzc2Egb3DDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTGltaXRlIGRlIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0ZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBvciBww6FnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQ29uZmlndXJhw6fDo28gZG8gR2VyZW5jaWFtZW50byBkbyBCYW5jbyBkZSBEYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgYcOnw6NvIGVtIG1hc3NhIGVtIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb3RlYWRvciBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmlhciBlIGdlcmVuY2lhciBhcyBkZWZpbmnDp8O1ZXMgZGUgSXRlbnMgZGUgQ29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JpYSB0w61xdWV0ZXMgcGFyYSBDb25maWdJdGVtcyBlbSBwb250b3MgZGUgdGVtcG8gZXNwZWPDrWZpY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdPcyBjbGllbnRlcyBwb2RlbSB2ZXIgbyBoaXN0w7NyaWNvIGRhcyB2ZXJzw7VlcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnT3MgY2xpZW50ZXMgdMOqbSBhIHBvc3NpYmlsaWRhZGUgZGUgYWx0ZXJuYXIgbWFudWFsbWVudGUgZW50cmUgYXMgdmVyc8O1ZXMgaGlzdMOzcmljYXMgZGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGFkb3MgcGFkcsOjbyBhIHNlcmVtIHVzYWRvcyBubyBhdHJpYnV0byBwYXJhIGEgdGVsYSBkZSBwZXNxdWlzYSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLiBFeGVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhZG9zIHBhZHLDo28gYSBzZXJlbSB1c2Fkb3Mgbm8gYXRyaWJ1dG8gcGFyYSBhIHRlbGEgZGUgcGVzcXVpc2EgZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluYSBBw6fDtWVzIG9uZGUgdW0gYm90w6NvIGRlIGNvbmZpZ3VyYcOnw7VlcyBlc3TDoSBkaXNwb27DrXZlbCBubyB3aWRnZXQgZGUgb2JqZXRvcyB2aW5jdWxhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZT0iY29tcGxleCIpLiBPYnNlcnZlIHF1ZSBlc3NhcyBhw6fDtWVzIGRldmVtIHRlciByZWdpc3RyYWRvIG9zIHNlZ3VpbnRlcyBhcnF1aXZvcyBKUyBlIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgZSBDb3JlLkFnZW50IC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIGVzcXVlbWEgVGVtcGxhdGU6OlRvb2xraXQgcGFyYSBjYWRlaWFzIGRlIGNhcmFjdGVyZXMgZGUgdmVyc8Ojby4gVXNhZG8gc29tZW50ZSBzZSBvIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBlc3RpdmVyIGRlZmluaWRvIGNvbW8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIGNvbmp1bnRvIGRlIGNvbmRpw6fDtWVzIHNvYiBhcyBxdWFpcyB1bSBjbGllbnRlIHRlbSBwZXJtaXNzw6NvIHBhcmEgdmVyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uIEFzIGNvbmRpw6fDtWVzIHBvZGVtLCBvcGNpb25hbG1lbnRlLCBzZXIgcmVzdHJpdGFzIGEgZGV0ZXJtaW5hZG9zIGdydXBvcyBkZSBjbGllbnRlcy4gTyBub21lIMOpIG8gw7puaWNvIGF0cmlidXRvIG9icmlnYXTDs3Jpby4gU2UgbmVuaHVtYSBvdXRyYSBvcMOnw6NvIGZvciBmb3JuZWNpZGEsIHRvZG9zIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGZpY2Fyw6NvIHZpc8OtdmVpcyBuZXNzYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYSBwZXJtaXNzw6NvIG5lY2Vzc8OhcmlvIHBhcmEgcmVtb3ZlciBJdGVucyBkZSBDb25maWd1cmHDp8OjbyB1c2FuZG8gYSBJbnRlcmZhY2UgR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIHJlcXVlcmlkYXMgcGFyYSBvYnRlciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHVzYW5kbyBhIEludGVyZmFjZSBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgcmVxdWVyaWRhcyBwYXJhIGxvY2FsaXphciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHVzYW5kbyBhIEludGVyZmFjZSBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgZGVmaW5pciBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyBJVFNNIHVzYW5kbyBhIGludGVyZmFjZSBnZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHZpc8OjbyBnZXJhbCBwYXJhIG1vc3RyYXIgYSB2aXPDo28gcGVxdWVuYSBkYSBsaXN0YSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNlIG9zIHLDs3R1bG9zIGRlIHRpcG8gZGUgbGluayBkZXZlbSBzZXIgZXhpYmlkb3MgbmFzIGNvbmV4w7VlcyBkZSBuw7MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmllIGV4cHJlc3PDtWVzIHJlZ3VsYXJlcyBpbmRpdmlkdWFsbWVudGUgcGFyYSBjYWRhIGNsYXNzZSBkZSBJQyBwYXJhIHZlcmlmaWNhciBvIG5vbWUgZG8gSUMgZSBwYXJhIGV4aWJpciBhcyBtZW5zYWdlbnMgZGUgZXJybyBjb3JyZXNwb25kZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGlzcG9uw612ZWlzIGRlIElDcyBuYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIGNvbnNpc3RpciBlbSB1bSBub21lIGRlIGNsYXNzZSBlIHVtYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbsOtdmVpcyBwYXJhIGEgY2xhc3NlIGNvcnJlc3BvbmRlbnRlLiBBcyBlbnRyYWRhcyBkZSBjYW1wbyBkaW7Dom1pY28gZGV2ZW0gcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwYWRyw6NvIHBhcmEgYSBjbGFzc2lmaWNhw6fDo28gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZG8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBhZHLDo28gcGFyYSBhIGNsYXNzaWZpY2HDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwYWRyw6NvIHBhcmEgYSBjbGFzc2lmaWNhw6fDo28gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZG8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRlc3NhIG9wZXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIEFjaW1hOiBtYWlzIGFudGlnbyBubyB0b3BvLiBQYXJhIGJhaXhvOiBvIG1haXMgcmVjZW50ZSBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQWNpbWE6IG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBwYWRyw6NvIGV4aWJpZGFzIGRlIElDcyBuYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIGNvbnNpc3RpciBlbSB1bSBub21lIGRlIGNsYXNzZSBlIHVtYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbsOtdmVpcyBwYXJhIGEgY2xhc3NlIGNvcnJlc3BvbmRlbnRlLiBBcyBlbnRyYWRhcyBkZSBjYW1wbyBkaW7Dom1pY28gZGV2ZW0gcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgYSBwcm9mdW5kaWRhZGUgcGFkcsOjbyBkYXMgcmVsYcOnw7VlcyBhIHNlcmVtIG1vc3RyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG1vc3RyYWRvIHBhcmEgYSB0ZWxhIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbW9zdHJhZG8gcGFyYSBhIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIktleSIgKENoYXZlKSBkZXZlIHRlciBvIG5vbWUgZG8gY2FtcG8gZGluw6JtaWNvLCBuZXNzZSBjYXNvIFwnWFwnLCAiQ29udGVudCIgKENvbnRlw7pkbykgZGV2ZSB0ZXIgbyB2YWxvciBkbyBjYW1wbyBkaW7Dom1pY28sIGRlcGVuZGVuZG8gZG8gdGlwbyBkZSBjYW1wbyBkaW7Dom1pY28sIFRleHQgKFRleHRvKTogXCd1bSB0ZXh0b1wnLCBEcm9wZG93biAoTWVudSBzdXNwZW5zbyk6IFwnMVwnLCBEYXRlL1RpbWUgKERhdGEvSG9yYSk6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBlIG91IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHN1Ym9iamV0byBwYWRyw6NvIGRhIGNsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkaXNwb27DrXZlaXMgZGUgSUNzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgY29uc2lzdGlyIGVtIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvIGRpbsOibWljbyBkZXZlbSByZXNwZWl0YXIgbyBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGFsdHVyYSBkbyBjb21wb25lbnRlIGRlIGVkacOnw6NvIHJpY2ggdGV4dCBkZXN0YSB0ZWxhLiBSZWdpc3RyZSB1bSBuw7ptZXJvIChwaXhlbHMpIG91IHVtYSBwb3JjZW50YWdlbSAocmVsYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBuw7ptZXJvIGRlIGxpbmhhcyBkbyBlZGl0b3IgZGUgZGVmaW5pw6fDo28gZG8gSUMgbmEgaW50ZXJmYWNlIGRlIGFkbWluaXN0cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gZG9zIGVzdGFkb3MgZGUgaW5jaWRlbnRlIGRlIGFsdG8gKGV4OiBjcsOtdGljbykgcGFyYSBiYWl4byAoZXg6IGZ1bmNpb25hbCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgb3MgZXN0YWRvcyBkZSBpbXBsYW50YcOnw6NvIG9uZGUgY2hhbWFkb3MgYXNzb2NpYWRvcyBwb2RlbSBhZmV0YXIgbyBlc3RhZG9zIGRlIHVtIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgbW9zdHJhZGFzIG5hIHZpc3VhbGl6YcOnw6NvIGNvbXBsZXhhIGRhIHRhYmVsYSBkZSBsaW5rcyBwYXJhIHRvZGFzIGFzIGNsYXNzZXMgZGUgSUNzLiBTZSBuw6NvIGhvdXZlciBuZW5odW1hIGVudHJhZGEsIGFzIGNvbHVuYXMgcGFkcsOjbyBzZXLDo28gbW9zdHJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGUgSUNzIGV4aWJpZGFzIG5hIHRlbGEgZGUgdGFiZWxhIGNvbXBsZXhhIGRlIGxpbmtzLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgc2VyIHByZWZpeGFkYSBjb20gbyBub21lIGRhIGNsYXNzZSBlIGR1cGxvIGRvaXMgcG9udG9zIChleC4gQ29tcHV0YWRvcjo6KS4gSMOhIGFsZ3VucyBhdHJpYnV0b3MgZGUgSUMgcXVlIHPDo28gY29tdW5zIGEgdG9kb3Mgb3MgSUNzICh0YWwgY29tbyBhIGNsYXNzZSBDb21wdXRhZG9yOiBDb21wdXRhZG9yOjpOb21lLCBDb21wdXRhZG9yOjpFc3RhZG9JbXBsQXR1YWwsIENvbXB1dGFkb3I6OkhvcmFDcmlhY2FvKS4gUGFyYSBleGliaXIgYXRyaWJ1dG9zIGRlIElDIGluZGl2aWR1YWxtZW50ZSBjb21vIGRlZmluaWRvIG5hIGRlZmluacOnw6NvIGRvIElDLCBvIHNlZ3VpbnRlIGVzcXVlbWEgZGV2ZSBzZXIgdXNhZG8gKGNsYXNzZSBDb21wdXRhZG9yLCBwb3IgZXhlbXBsbyk6IENvbXB1dGFkb3I6OkRpc2NvUmlnaWRvOjoxLCBDb21wdXRhZG9yOjpEaXNjb1JpZ2lkbzo6MTo6Q2FwYWNpZGFkZTo6MSwgQ29tcHV0YWRvcjo6RGlzY29SaWdpZG86OjIsIENvbXB1dGFkb3I6OkRpc2NvUmlnaWRvOjoyOjpDYXBhY2lkYWRlOjoxLiBTZSBuw6NvIGjDoSBlbnRyYWRhIHBhcmEgYSBjbGFzc2UgSUMsIGVudMOjbyBhcyBjb2x1bmFzIHBhZHLDo28gc8OjbyBleGliaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXVhaXMgaXRlbnMgZXN0w6NvIGRpc3BvbsOtdmVpcyBwYXJhICJBw6fDo28iIG5vIHRlcmNlaXJvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1YWlzIGl0ZW5zIGVzdMOjbyBkaXNwb27DrXZlaXMgbm8gcHJpbWVpcm8gbsOtdmVsIGRhIGVzdHJ1dHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1YWlzIGl0ZW5zIGVzdMOjbyBkaXNwb27DrXZlaXMgbm8gc2VndW5kbyBuw612ZWwgZGEgZXN0cnV0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXVhbCB0aXBvIGRlIGFzc29jaWHDp8OjbyAobm9tZWFkbyBhIHBhcnRpciBkYSBwZXJzcGVjdGl2YSBkbyBjaGFtYWRvKSBwb2RlIGFmZXRhciBvIGVzdGFkbyBkZSB1bSBJQyBhc3NvY2lhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1YWwgdGlwbyBkZSBjaGFtYWRvIHBvZGUgYWZldGFyIG8gZXN0YWRvIGRlIHVtIElDIGFzc29jaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBdHVhbGl6YcOnw6NvIGRhIGRlZmluacOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFeGNsdWlyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb3IgZG8gRXN0YWRvIGRlIEltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRhIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBjYW1wbyBkaW7Dom1pY28gcXVlIG1hcmNhIGFzIGRlZmluacOnw7VlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBjb21vIGZvcmEgZGUgc2luY3JvbmlhLCBzZSBvcyBjYW1wb3MgZGluw6JtaWNvcyBjb250aWRvcyBmb3JlbSBhbHRlcmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3Mgbm8gY2FtcG8gZGUgdGVsYSBJVFNNIGFkaWNpb25hbCBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnSGFiaWxpdGEgYSBmdW7Dp8OjbyBkZSBhw6fDo28gZW0gbWFzc2EgZW0gaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZSBwYXJhIHRyYWJhbGhhciBlbSBtYWlzIGRlIHVtIElDIHBvciB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bsOnw6NvIGRlIGHDp8OjbyBlbSBtYXNzYSBlbSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhcGVuYXMgcGFyYSBncnVwb3MgbGlzdGFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgRXZlbnRvIHBhcmEgY29uZmlndXJhciBvIGVzdGFkbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1YW5kbyB1bSBjaGFtYWRvIGZvciBhc3NvY2lhZG8gYSB1bSBJQy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2FtcG9zIGRvIMOtbmRpY2UgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgdXNhZG9zIHBhcmEgYSBwZXNxdWlzYSBkZSB0ZXh0byBjb21wbGV0by4gT3MgY2FtcG9zIHRhbWLDqW0gc8OjbyBhcm1hemVuYWRvcywgbWFzIG7Do28gc8OjbyBvYnJpZ2F0w7NyaW9zIHBhcmEgYSBmdW5jaW9uYWxpZGFkZSBnZXJhbC4gQSBpbmNsdXPDo28gZGUgYW5leG9zIHBvZGUgc2VyIGRlc2F0aXZhZGEgZGVmaW5pbmRvIGEgZW50cmFkYSBjb21vIDAgb3UgZXhjbHVpbmRvLWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdDYW1wb3MgYXJtYXplbmFkb3Mgbm8gw61uZGljZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBzw6NvIHVzYWRvcyBwYXJhIG91dHJhcyBjb2lzYXMgYWzDqW0gZGUgcGVzcXVpc2FzIGRlIHRleHRvIGNvbXBsZXRvLiBQYXJhIGEgZnVuY2lvbmFsaWRhZGUgY29tcGxldGEsIHRvZG9zIG9zIGNhbXBvcyBzw6NvIG9icmlnYXTDs3Jpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZG8gbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgYSBjYW1hZGEgZG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RybyBkbyBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBhIGNhbWFkYSBkbyBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RybyBkbyBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBhIGNhbWFkYSBkbyBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdWaXPDo28gR2VyYWwgIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnRXN0YWRvIGRvIGluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVpIGVzdGFkb3MgZGUgaW1wbGFudGHDp8OjbyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVpIGVzdGFkb3MgZGUgaW5jaWRlbnRlcyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgc2VyZW0gZXhpYmlkb3Mgbm8gcmVzdWx0YWRvIGRlc3NhIG9wZXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBvIGdydXBvIHJlc3BvbnPDoXZlbCBwb3IgdW1hIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNw7NkdWxvIHBhcmEgdmVyaWZpY2FyIG8gZ3J1cG8gcmVzcG9uc8OhdmVsIHBvciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ03Ds2R1bG8gcGFyYSBnZXJhciBlc3RhdMOtc3RpY2FzIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb21lIGRvIG3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ07Dum1lcm8gZG8gbcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgc2VyZW0gZXhpYmlkb3MgZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgc2VyZW0gZXhpYmlkb3MgZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZXRvcyBhIHNlcmVtIHBlc3F1aXNhZG9zLCBxdWFudGFzIGVudHJhZGFzIGUgcXVhaXMgYXRyaWJ1dG9zIGRldmVtIHNlciBleGliaWRvcy4gT3MgYXRyaWJ1dG9zIGRvIENvbmZpZ0l0ZW0gZGV2ZW0gc2VyIGFybWF6ZW5hZG9zIGV4cGxpY2l0YW1lbnRlIHBvciBtZWlvIGRvIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Zpc8OjbyBHZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgYXMgY2F0ZWdvcmlhcyBkZSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3VhbGl6YcOnw6NvIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG9zIGZpbHRyb3MgZGUgY29sdW5hIGRhIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBlcXVlbmEuIE9ic2VydmHDp8OjbzogYSBkZWZpbmnDp8OjbyBkZSAiQWN0aXZlIiBjb21vIDAgaW1wZWRpcsOhIGFwZW5hcyBxdWUgb3MgYWdlbnRlcyBlZGl0ZW0gYXMgY29uZmlndXJhw6fDtWVzIGRlc3NlIGdydXBvIGVtIHN1YXMgcHJlZmVyw6puY2lhcyBwZXNzb2FpcywgbWFzIGFpbmRhIHBlcm1pdGlyw6EgcXVlIG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0ZW0gYXMgY29uZmlndXJhw6fDtWVzIGVtIG5vbWUgZGUgb3V0cm8gdXN1w6FyaW8uIFVzZSAiUHJlZmVyZW5jZUdyb3VwIiBwYXJhIGNvbnRyb2xhciBlbSBxdWUgw6FyZWEgZXNzYXMgY29uZmlndXJhw6fDtWVzIGRldmVtIHNlciBtb3N0cmFkYXMgbmEgaW50ZXJmYWNlIGRvIHVzdcOhcmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgYSBjb3IgZG9zIGVzdGFkb3MgZGUgaW1wbGFudGHDp8OjbyBuYSB0ZWxhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBlc3RhZG8gZGUgaW1wbGFudGHDp8OjbyBuYXMgcHJlZmVyw6puY2lhcyBkZSBleGliacOnw6NvIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRvIGdydXBvcyBkZSBwZXJtaXNzw6NvIGRlIGV4ZW1wbG8gZG9zIGF0cmlidXRvcyBkbyBjYXTDoWxvZ28gZ2VyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgbm9tZSBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdWFsaXphw6fDo28gZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgbsO6bWVyb3MgcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3VhbGl6YcOnw6NvIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGFzIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc8OjbyBtb3N0cmFkb3MpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gbcOzZHVsbyBkZSBzdHJpbmcgZGUgdmVyc8OjbyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdWFsaXphw6fDo28gZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRvIGtpdCBkZSBmZXJyYW1lbnRhcyBkZSBtb2RlbG8gZGUgc3RyaW5nIGRlIHZlcnPDo28gcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3VhbGl6YcOnw6NvIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGFjaW9uYWRvciBkZSB2ZXJzw6NvIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN1YWxpemHDp8OjbyBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3J1cG8gZGUgcGVybWlzc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSBhw6fDo28gZGUgYW5leGHDp8OjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIElUU00gbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgdmlzdWFsaXphw6fDo28gZW0gw6Fydm9yZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgZGV0YWxoZXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgYWRpw6fDo28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIElUU00gZW0gbWFzc2EgbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgZWRpw6fDo28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGhpc3TDs3JpY28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBpbXByZXNzw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsw6lnaW9zIG5lY2Vzc8OhcmlvcyBwYXJhIGFwYWdhciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdQcm9jdXJhciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXIgbyBlc3RhZG8gZGUgdW0gSUMgYXV0b21hdGljYW1lbnRlIHF1YW5kbyB1bSBDaGFtYWRvIGZvciBhc3NvY2lhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhIG8gZXN0YWRvIGRlIGltcGxhbnRhw6fDo28gbmEgdGVsYSBkZSBhw6fDo28gZW0gbWFzc2EgZGUgSUNzIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYSBvIGVzdGFkbyBkZSBpbmNpZGVudGUgbmEgdGVsYSBkZSBhw6fDo28gZW0gbWFzc2EgZGUgSUNzIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBxdWUgcGVybWl0ZSBhc3NvY2lhciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbSB1bSBvdXRybyBvYmpldG8gbmEgdmlzw6NvIGRlIGRldGFsaGVzIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgYWNlc3NhciBvIGhpc3TDs3JpY28gZGUgdW0gSUMgbmEgdmlzw6NvIGdlcmFsIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhY2Vzc2FyIG8gaGlzdMOzcmljbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc8OjbyBkZSBkZXRhbGhlcyBkbyBtZXNtbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhcGFnYXIgbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIFZpc8OjbyBEZXRhbGhhZGEgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBleGliaXIgb3MgbGlua3MgZG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbW8gdW1hIHZpc3VhbGl6YcOnw6NvIGVtIMOhcnZvcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIElDIG5hIHZpc8OjbyBnZXJhbCBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZHVwbGljYXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXPDo28gZGUgZGV0YWxoZXMgZG8gbWVzbW8gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXPDo28gZGUgZGV0YWxoZXMgZG8gbWVzbW8gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSByZXRvcm5hciDDoCB0ZWxhIGRlIHZpc8OjbyBkZSBkZXRhbGhlcyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGltcHJpbWlyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzw6NvIGRlIGRldGFsaGVzIGRvIG1lc21vIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGRldGFsaGFyIHVtIElDIG5hIHZpc8OjbyBnZXJhbCBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgbyBoaXN0w7NyaWNvIGRvIGl0ZW0gY29uZmlndXJhw6fDo28gKG9yZGVtIHJldmVyc2EpIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0EgY2F0ZWdvcmlhIHBhZHLDo28gcXVlIMOpIG1vc3RyYWRhLCBzZSBuZW5odW1hIGZvciBzZWxlY2lvbmFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ08gaWRlbnRpZmljYWRvciBwYXJhIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGV4LiBJdGVtQ29uZmlnIywgTWV1SXRlbUNvbmZpZyMuIE8gcGFkcsOjbyDDqSBJdGVtQ29uZmlnIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjaW9uYSBvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2ggYXV0b21hdGljYW1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdFeHByZXNzw6NvIGRlIGNhZGVpYSBkZSBjYXJhY3RlcmVzIGRhIHZlcnPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc8OjbyBTdHJpbmcgTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ0FjaW9uYWRvciBkZSB2ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTZSBhIGV4ZWN1w6fDo28gZG8gQ29uZmlnSXRlbUFDTCBwb2RlIHNlciBldml0YWRhIHBlbGEgdmVyaWZpY2HDp8OjbyBkYXMgZGVwZW5kw6puY2lhcyBkZSBjYW1wbyBlbSBjYWNoZS4gSXNzbyBwb2RlIG1lbGhvcmFyIG8gdGVtcG8gZGUgY2FycmVnYW1lbnRvIGRvcyBmb3JtdWzDoXJpb3MsIG1hcyBkZXZlIHNlciBkZXNhdGl2YWRvIHNlIG9zIEFDTE1vZHVsZXMgZm9yZW0gdXNhZG9zIHBhcmEgSVRTTUNvbmZpZ0l0ZW0tIGUgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1F1YWlzIGluZm9ybWHDp8O1ZXMgZ2VyYWlzIHPDo28gbW9zdHJhZGFzIG5vIGNhYmXDp2FsaG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncMOzcy1wcm9kdXRpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ2ltcHJvZHV0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdXRpdm8nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDQ0LDQ1IGNtICgxNyw1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgcG9sZWdhZGFzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHBvbGVnYWRhcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgZGUgMTkgcG9sZWdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcG9sZWdhZGFzICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDIxIHBvbGVnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgcG9sZWdhZGFzICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnUmFjayBkZSAyMyBwb2xlZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBvbGVnYWRhcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcG9sZWdhZGFzICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwb2xlZ2FkYXMgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcG9sZWdhZGFzICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwb2xlZ2FkYXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHBvbGVnYWRhcyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcG9sZWdhZGFzICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwb2xlZ2FkYXMgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwb2xlZ2FkYXMgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBwb2xlZ2FkYXMgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwb2xlZ2FkYXMgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwb2xlZ2FkYXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzEyMDAgbW0gKDQ3LDIgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcG9sZWdhZGFzICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgcG9sZWdhZGFzICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0Fsb2Nhw6fDo28gZGUgZW5kZXJlw6dvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWxlZm9uZSBhbmFsw7NnaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVGlwbyBkZSBhcGFyZWxobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaWRhZGUgZGEgYmF0ZXJpYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1RpcG8gZGUgYmF0ZXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1ZlcnPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmFjZSBkZSBiYXJyYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdQcm9jZXNzYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzc2UgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2lkYWRlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2lkYWRlIHBvciBwbGFjYSBkZSB2w61kZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOw7ptZXJvIGRvIGNhcnTDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdMZWl0b3IgZGUgY2FydMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUaXBvIGRlIGNhcnTDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmlhIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnVGF4YSBkZSByZWzDs2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVmVsb2NpZGFkZSBkbyByZWzDs2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGFzc2luYXR1cmEgZGUgY8OzZGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsZWZvbmUgZGUgY29uZmVyw6puY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgY29uc3VsdG9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0NvbnRhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0VudHJlIGVtIGNvbnRhdG8gY29tIG8gZGlzdHJpYnVpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VyZW5jaWFtZW50byBkZSBjb250w6ppbmVyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwbyBkZSBjb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRvIGNvbnRyYXRvIGEgcGFydGlyIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1BlcsOtb2RvIGRvIGNvbnRyYXRvIGF0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVGVsZWZvbmUgc2VtIGZpbyAodGVsZWZvbmUgREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pZGFkZSBkZSBjdXN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0NvbnRhZ2VtIGRlIGxpY2Vuw6dhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0YSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1JhY2sgcGVyc29uYWxpemFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZpZG9yIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0YSBkYSBmYXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGEgZG8gcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRhIGRhIGdhcmFudGlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGEgZGUgbGFuw6dhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBhc3NpbmF0dXJhIGRlIGRvY3VtZW50b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYWRvcyBkZSBlLW1haWwgKGNlcnRpZmljYWRvcyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHRyYWJhbGhvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRW5kZXJlw6dvIElQIGZpbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRmltIGRvIHN1cG9ydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEYXRhIGRlIGV4cGlyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdEaXNjbyByw61naWRvIGV4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnQXJtYXplbmFtZW50byBkZSBlbmVyZ2lhIG5vIHZvbGFudGUgZG8gbW90b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYXRvciBkZSBmb3JtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgZnJhbnF1aWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdMaXZyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDtWVzIGdlcmFpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1BsYWNhcyBkZSB2w61kZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1BsYWNhIGRlIHbDrWRlbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWxvIGRlIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1Blc28gZG8gaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0ZvbmUgZGUgb3V2aWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xvIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0dlcmVuY2lhbWVudG8gZGUgaWRlbnRpZGFkZSBlIGFjZXNzbyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBpbnZlbnTDoXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTsO6bWVybyBkYSBmYXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEICh0ZWxhIGRlIGNyaXN0YWwgbMOtcXVpZG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIGRlIExFRCAoZGlvZG8gZW1pc3NvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbGVmb25lIGZpeG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTm90ZWJvb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdMYXRpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0NhbWFkYSAxOiBDYW1hZGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYW1hZGEgMjogQ2FtYWRhIGRlIGVubGFjZSBkZSBkYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnQ2FtYWRhIDM6IENhbWFkYSBkZSByZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhbWFkYSAzOiBDYW1hZGEgZGUgcmVkZSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0NhbWFkYSA0OiBDYW1hZGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FtYWRhIDU6IENhbWFkYSBkZSBzZXNzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0NhbWFkYSA2OiBDYW1hZGEgZGUgYXByZXNlbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYW1hZGEgNzogQ2FtYWRhIGRlIGFwbGljYXRpdm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGxvY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGxpY2Vuw6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDaGF2ZSBkZSBsaWNlbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUaXBvIGRlIGxpY2Vuw6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdQZXLDrW9kbyBkZSBsaWNlbsOnYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ1BlcsOtb2RvIGRlIGxpY2Vuw6dhIGF0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgZGUgZm9zZmF0byBkZSBmZXJybyBlIGzDrXRpbyAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgZGUgw61vbi1sw610aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBFbXByw6lzdGltbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTG9jYWxpemFkbyBlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWNhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2lkYWRlIG3DoXhpbWEgZGUgY2FyZ2EgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbcOzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW3Ds3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGNlbHVsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTcOzdmVsL2luY29ycG9yYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3Jpw6fDo28gZG8gbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdcOnw6NvIGRvIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnVGFtYW5obyBkbyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYcOnw7VlcyBzb2JyZSBhIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8O1ZXMgZGUgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQ2FtYWRhIGRlIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIG7DrXF1ZWwtY8OhZG1pbyAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIGhpZHJldG8gbWV0w6FsaWNvIGRlIG7DrXF1ZWwgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0NvbnRyYXRvIGRlIGNvbmZpZGVuY2lhbGlkYWRlIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQ2FkZXJubyBkZSBhbm90YcOnw7Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ07Dum1lcm8gZGUgQ1BVcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOw7ptZXJvIGRlIG3Ds2R1bG9zIGRlIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOw7ptZXJvIGRlIHBsYWNhcyBkZSB2w61kZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3Jnw6JuaWNvIGVtaXNzb3IgZGUgbHV6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdDdXN0b3Mgb3BlcmFjaW9uYWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ07Dum1lcm8gZG8gcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3V0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1Nhw61kYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgcGFyY2VyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbGVmb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUaXBvIGRlIHRlbGVmb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnTsO6Y2xlb3MgZsOtc2ljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdGb3JuZWNpbWVudG8gZGUgZW5lcmdpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0NvbXByYWRvIGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mdW5kaWRhZGUgZG8gcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaWRhZGVzIGRlIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdTYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnQ2FydMOjbyBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHZlbmRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdUZWxlZm9uZSB2aWEgc2F0w6lsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgc2VsYWRhIGRlIGNodW1iby3DoWNpZG8gKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHPDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBkZSBzZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIHNlcnZpw6dvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpcXVldGEgZGUgc2VydmnDp28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVGlwbyBkZSBzb3F1ZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRvLWZhbGFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1BhZHLDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0VuZGVyZcOnbyBJUCBpbmljaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdBcm1hemVuYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGnDp8OjbyBkZSBhcm1hemVuYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnU3Vic2lkacOhcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSZXN1bW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDbGllbnRlIGZpbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0Zpb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIGRhIHBsYWNhIGdyw6FmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciBjb20gdGVsYSBzZW5zw612ZWwgYW8gdG9xdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnSHViIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ0ZvbmUgZGUgb3V2aWRvIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb25lIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/pt_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYWRvcyBnZXJhaXMgZGUgZnVuY2lvbmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnRGVmaW5pw6fDtWVzIHBhcmEgZGFkb3MgZGUgcGVkaWRvcyByZWNlYmlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdEZWZpbmnDp8O1ZXMgcGFyYSBvcyBkYWRvcyBkZSByZXNwb3N0YSBkZSBzYcOtZGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXVkYXIgZGVmaW5pw6fDo28gZGUgY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNb2RpZmljYXIgZGVmaW5pw6fDo28gZGUgZnVuw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdQYWNvdGVzIGRlIGNsYXNzZXMgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnQXF1aSBwb2RlIGltcG9ydGFyIG9zIHBhY290ZXMgZGUgY2xhc3NlcyBSZWFkeTJJbXBvcnQgcXVlIGFwcmVzZW50YW0gb3Mgbm9zc29zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG1haXMgY29tdW5zLiBUZW5oYSBlbSBhdGVuw6fDo28gcXVlIHBvZGVyw6Egc2VyIG5lY2Vzc8OhcmlhIGFsZ3VtYSBjb25maWd1cmHDp8OjbyBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0F0dWFsaXphciBlbnRpZGFkZXMgZXhpc3RlbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGFyIG9zIHBhY290ZXMgZGUgY2xhc3NlcyBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NsYXNzZSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIEZ1bsOnw6NvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0l0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJvIHBhcmEgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY2lvbmUgdW1hIGNsYXNzZSBhIHBhcnRpciBkYSBsaXN0YSBwYXJhIGNyaWFyIHVtIG5vdm8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdBw6fDo28gZW0gbWFzc2EgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGUgSW1wbGVtZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaWdhw6fDo28gYSBvdXRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTsO6bWVybyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTyBuw7ptZXJvIGRlIG91dHJvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28gYSBsaWdhci4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdQcmV0ZW5kZSBtZXNtbyBlbGltaW5hciBlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ08gbm9tZSBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG5vbWUgasOhIGVzdMOhIGEgc2VyIHV0aWxpemFkbyBwZWxvcyBDb25maWdJdGVtcyBjb20gbyhzKSBzZWd1aW50ZShzKSBuw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGEgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkYSB2ZXJzw6NvIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG7Dum1lcm8gZGEgdmVyc8OjbyBqw6EgZXN0w6EgYSBzZXIgdXRpbGl6YWRvIHBlbG9zIENvbmZpZ0l0ZW1zIGNvbSBvKHMpIHNlZ3VpbnRlKHMpIG7Dum1lcm8ocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGUgSW1wbGVtZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEluY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmljbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0w7NyaWNvIGRvIGNvbnRlw7pkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzdGEgZGUgZGV0YWxoZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVucyBkZSBjb25maWd1cmHDp8OjbyBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY2lvbmFyIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0V4ZWN1dGFyIFBlc3F1aXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTsOtdmVsIGRlIHByb2Z1bmRpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ0F1bWVudGFyIGUgZGltaW51aXIgbyB6b29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ07DrXZlbCBtw6F4aW1vIGRlIGxpZ2HDp8O1ZXMgYXRpbmdpZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEltcGxlbWVudGHDp8OjbyBBdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBBdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1hIG1vZGlmaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ09zIHNldXMgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnUGVzcXVpc2EgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlcsOjbyBpbXBvcnRhZGFzIGFzIHNlZ3VpbnRlcyBjbGFzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlcsOjbyBpbXBvcnRhZGFzIGFzIHNlZ3VpbnRlcyBmdW7Dp8O1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnTm90ZS1zZSBxdWUgdGFtYsOpbSBzZXLDo28gY3JpYWRvcyBvcyBjYW1wb3MgZGluw6JtaWNvcyBlIGFzIGNsYXNzZXMgR2VuZXJhbENhdGFsb2cgY29ycmVzcG9uZGVudGVzIGUgbsOjbyBow6EgcmVtb8Onw6NvIGF1dG9tw6F0aWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1F1ZXJlcyBjb250aW51YXI/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ05lY2Vzc2l0YSBkZSBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnQSBkZWZpbmnDp8OjbyBuw6NvIMOpIHVtIGhhc2ggWUFNTCB2w6FsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Zpc8OjbyBnZXJhbDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgZm9ybmVjaWRvIG5lbmh1bSBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnw4kgbmVjZXNzw6FyaW8gcGVsbyBtZW5vcyB1bSBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIHNlbGVjaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ07Do28gdGVtIGFjZXNzbyBkZSBlc2NyaXRhIGEgZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTsOjbyBmb2kgZGVmaW5pZGEgbmVuaHVtYSBkZWZpbmnDp8OjbyBwYXJhIGEgY2xhc3NlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnSXRlbSBkZSBjb25maWd1cmHDp8OjbyAiJXMiIG7Do28gZW5jb250cmFkbyBuYSBiYXNlIGRlIGRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBlbGltaW5hciBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdOw6NvIGZvaSBlbmNvbnRyYWRhIG5lbmh1bWEgdmVyc8OjbyBwYXJhIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBmb3JuZWNpZG8gbmVuaHVtIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3UgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgZGFkbyBhY2Vzc28hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgcG9zc8OtdmVsIG1vc3RyYXIgbyBoaXN0w7NyaWNvLCBuw6NvIMOpIGZvcm5lY2lkbyBuZW5odW0gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ07Do28gw6kgcG9zc8OtdmVsIG1vc3RyYXIgbyBoaXN0w7NyaWNvLCBuw6NvIGZvcmFtIGRhZG9zIGRpcmVpdG9zIGRlIGFjZXNzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdm8gQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3ZhIHZlcnPDo28gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkYSBpbXBsYW50YcOnw6NvIGF0dWFsaXphZG8gKG5vdm89JXMsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRvIGluY2lkZW50ZSBhdHVhbGl6YWRvIChub3ZvPSVzLCBhbnRpZ289JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGVsaW1pbmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpZ2HDp8OjbyBhICVzICh0aXBvPSVzKSBhZGljaW9uYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaWdhw6fDo28gYSAlcyAodGlwbz0lcykgZWxpbWluYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmnDp8OjbyBkZSBDb25maWdJdGVtIGFjdHVhbGl6YWRhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21lIGF0dWFsaXphZG8gKG5vdm89JXMsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0byAlcyBhdHVhbGl6YWRvIGRlICIlcyIgcGFyYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnPDo28gJXMgZWxpbWluYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgaW5kaWNhZG8gbmVuaHVtIENvbmZpZ0l0ZW1JRCBvdSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ07Do28gw6kgcG9zc8OtdmVsIG1vc3RyYXIgbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCBuw6NvIGZvcmFtIGRhZG9zIGRpcmVpdG9zIGRlIGFjZXNzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbsOjbyBmb2kgZW5jb250cmFkbyBuYSBiYXNlIGRlIGRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnSXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnaW1wcmVzc28gcG9yICVzIGVtICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcsOqbmNpYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgaW52w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgaW5kaWNhZG8gbmVuaHVtIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTsOjbyBzw6NvIGNvbmNlZGlkb3MgZGlyZWl0b3MgZGUgYWNlc3NvIGEgZXN0YSBjbGFzc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdTZW0gcmVzdWx0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1Jlc3VsdGFkb3MgZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ07Do28gw6kgcG9zc8OtdmVsIG1vc3RyYXIgbyBpdGVtLCBuw6NvIGZvcmFtIGRhZG9zIGRpcmVpdG9zIGRlIGFjZXNzbyBwYXJhIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbsOjbyBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZGFzIHZlcnPDtWVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhY2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmlzbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBlc3RhZG8gZGUgaW1wbGVtZW50YcOnw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdPIGVzdGFkbyBkZSBpbmNpZGVudGUgZGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1NlbSBwZXJtaXNzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRybyBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXLDom1ldHJvcyBkZSBwZXNxdWlzYSBpbnbDoWxpZG9zISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0l0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGFwcmVzZW50YWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIEVzdGFkbyBkZSBJbXBsZW1lbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnRXN0YWRvIEF0dWFsIGRlIEluY2lkZW50ZSBwb3IgdGlwbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpw6fDtWVzIGRlIGNsYXNzZSBwYXJhIG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWNjaW9uZSB1bWEgb3UgbWFpcyBjbGFzc2VzIHBhcmEgcmVzdHJpbmdpciBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBzZWxlY2Npb27DoXZlaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyacOnw7VlcyBkZSBjbGFzc2UgcGFyYSBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVtYSBvdSBtYWlzIGNsYXNzZXMgcGFyYSByZXN0cmluZ2lyIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlbGVjY2lvbsOhdmVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbsOibWljbyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ0VzdMOhdGljbyAoVmVyc8OjbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVGlwbyBkZSByZWZlcsOqbmNpYSBkZSBsaWdhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2UgZXN0YSBsaWdhw6fDo28gc2UgYXBsaWNhIGFvIENvbmZpZ0l0ZW0gb3Ugw6AgdmVyc8OjbyBlc3TDoXRpY2EgZG8gb2JqZXRvIGRlIHJlZmVyw6puY2lhLiBPIGPDoWxjdWxvIGRvIGVzdGFkbyBhdHVhbCBkbyBpbmNpZGVudGUgc8OzIMOpIGVmZWN0dWFkbyBlbSBsaWdhw6fDtWVzIGRpbsOibWljYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWNjaW9uZSBvIGF0cmlidXRvIHBlbG8gcXVhbCBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBzZXLDo28gcGVzcXVpc2Fkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0EgZXN0cnV0dXJhIGRlIGJhc2UgbsOjbyDDqSB2w6FsaWRhLiBGb3JuZcOnYSB1bSBoYXNoIGNvbSBkYWRvcyBlbSBmb3JtYXRvIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnw4kgbmVjZXNzw6FyaW8gaW5pY2lhciBhIGNhZGVpYSBZQU1MIGNvbSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgcHVyZ2FyIGEgdGFiZWxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkb3MgY2FtcG9zIGRpbsOibWljb3MgcmVsZXZhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBpbnNlcmlyIG5hIHRhYmVsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VyaXUgMCBsaW5oYXMgbmEgdGFiZWxhIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgdW0gZWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc8OjbyBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJybyBhbyBzaW5jcm9uaXphciBhcyBkZWZpbmnDp8O1ZXMuIFZlcmlmaWNhciBvIHJlZ2lzdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGVtIGRlZmluacOnw7VlcyBJVFNNQ29uZmlnSXRlbSBxdWUgbsOjbyBlc3TDo28gc2luY3Jvbml6YWRhcy4gUG9yIGZhdm9yLCBpbXBsZW1lbnRlIGFzIGFsdGVyYcOnw7VlcyBkbyBjYW1wbyBkaW7Dom1pY28gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnV0ZW7Dp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmVhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0ZSBkZSBRdWFsaWRhZGUnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Zpc8OjbyBnZXJhbCBlIGNvbmZpcm1hw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YcOnw6NvIGRlIGNsYXNzZXMvZnVuw6fDtWVzIGUgcmVzcGVjdGl2b3MgY2FtcG9zIHJlbGFjaW9uYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ09jb3JyZXUgdW0gZXJybyBkdXJhbnRlIGEgaW1wb3J0YcOnw6NvIGRhIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIE9jdWx0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gTW9zdHJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGnDp8O1ZXMgZGUgcGVzcXVpc2EgYWxhcmdhZGFzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIENvbSBlc3RhIGZ1bmNpb25hbGlkYWRlLCDDqSBwb3Nzw612ZWwgcGVzcXVpc2FyLCBwb3IgZXhlbXBsbywgbyBub21lIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIGVzdGUgdGlwbyBkZSBjb25kacOnw7VlcywgY29tbyAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpw6fDtWVzIGRlIHBlc3F1aXNhIGFsYXJnYWRhcyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQ29tIGVzdGEgZnVuY2lvbmFsaWRhZGUsIHBvZGUgcGVzcXVpc2FyLCBwb3IgZXhlbXBsbywgbyBub21lIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIGVzdGUgdGlwbyBkZSBjb25kacOnw7VlcywgY29tbyAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdJQ3MgYXRyaWJ1w61kb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnSUNzIGF0cmlidcOtZGFzIMOgIGVtcHJlc2EgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0lDcyBhdHJpYnXDrWRhcyBhbyB1dGlsaXphZG9yIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0RlZmluacOnw7VlcyBkYSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdWZXJpZmljYSB1bSBub21lIMO6bmljbyBhcGVuYXMgZGVudHJvIGRhIG1lc21hIGNsYXNzZSBkZSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIG91IGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbyBxdWUgc2lnbmlmaWNhIHF1ZSB0b2RvcyBvcyBDb25maWdJdGVtIGV4aXN0ZW50ZXMgc8OjbyB0aWRvcyBlbSBjb250YSBhbyBwcm9jdXJhciBkdXBsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnRXNjb2xoYSB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIGRlIG5vbWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnU2VsZWNpb25hciB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIG51bcOpcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnRXNjb2xoYSB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIGRlIGNhZGVpYSBkZSB2ZXJzw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdTZWxlY2lvbmFyIGF0cmlidXRvcyBwYXJhIGFjaW9uYXIgYSBjcmlhw6fDo28gZGUgdW1hIG5vdmEgdmVyc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnRXNjb2xoYSBjYXRlZ29yaWFzIHBhcmEgYXRyaWJ1aXIgYSBlc3RhIGNsYXNzZSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyb3MgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGUgY29sdW5hIHBhcmEgVmlzw6NvIGdlcmFsIGRvIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bmFzIHF1ZSBwb2RlbSBzZXIgZmlsdHJhZGFzIG5hIHPDrW50ZXNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIE5vdGE6IEFwZW5hcyBzw6NvIHBlcm1pdGlkb3MgYXRyaWJ1dG9zIGRlIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvIGUgQ2FtcG9zIERpbsOibWljb3MgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0l0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBZGljaW9uYXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0YXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBwZXJtaXRlIHJlZ2lzdGFyIG8gaGlzdMOzcmljbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBhY3R1YWxpemEgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gcGFyYSBhIHN1YSBkZWZpbmnDp8OjbyBhdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0w7NyaWNvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdJbXByaW1pciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYXIgbyB6b29tIGRvIGl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdGEgZW0gw6Fydm9yZSBkbyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdPcyBDb25maWdJdGVtcyBkYXMgc2VndWludGVzIGNsYXNzZXMgbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzdG8gYW9zIElDcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gSUMgdGVtIGRlIHNlciBleGVjdXRhZGEgYXRyYXbDqXMgZGEgY29uc29sYSwgZGVwb2lzIGRlIGFsdGVyYXIgZXN0YSBvcMOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdPcyBDb25maWdJdGVtcyBjb20gb3Mgc2VndWludGVzIGVzdGFkb3MgZGUgaW1wbGFudGHDp8OjbyBuw6NvIHNlcsOjbyBhcm1hemVuYWRvcyBubyBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgaXN0byBhb3MgSUNzIGV4aXN0ZW50ZXMsIGEgbWlncmHDp8OjbyBkbyBJQyB0ZW0gZGUgc2VyIGV4ZWN1dGFkYSBhdHJhdsOpcyBkYSBjb25zb2xhLCBkZXBvaXMgZGUgYWx0ZXJhciBlc3RhIG9ww6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0ZSBkZSBJdGVtcyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhw6fDo28gTGltaXRlIGRlIGl0ZW5zIHBvciBww6FnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzZSBkZSBkYWRvcyBkZSBnZXN0w6NvIGRhIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTcOzZHVsbyBlbSBibG9jbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb3V0ZXIgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JpYXIgZSBnZXJpciBhcyBkZWZpbmnDp8O1ZXMgZGUgSXRlbnMgZGUgQ29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JpYSBiaWxoZXRlcyBwYXJhIENvbmZpZ0l0ZW1zIGVtIHBvbnRvcyBkZSB0ZW1wbyBlc3BlY8OtZmljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ09zIGNsaWVudGVzIHBvZGVtIHZlciB2ZXJzw7VlcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnT3MgY2xpZW50ZXMgdMOqbSBhIHBvc3NpYmlsaWRhZGUgZGUgYWx0ZXJuYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc8O1ZXMgaGlzdMOzcmljYXMgZGUgSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGFkb3MgcHJlZGVmaW5pZG9zIGEgdXRpbGl6YXIgbm8gYXRyaWJ1dG8gcGFyYSBvIGVjcsOjIGRlIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLiBFeGVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhZG9zIHByZWRlZmluaWRvcyBhIHV0aWxpemFyIG5vIGF0cmlidXRvIHBhcmEgbyBlY3LDoyBkZSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgQWPDp8O1ZXMgb25kZSB1bSBib3TDo28gZGUgY29uZmlndXJhw6fDtWVzIGVzdMOhIGRpc3BvbsOtdmVsIG5hIHdpZGdldCB0aGUgb2JqZWN0b3MgbGlnYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiAgRXN0YXMgQWPDp8O1ZXMgZGV2ZW0gZXN0YXIgcmVnaXN0YWRhcyBub3Mgc2VndWludGVzIGZpY2hlaXJvcyBKUyBlIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBlc3F1ZW1hIFRlbXBsYXRlOjpUb29sa2l0IHBhcmEgc3RyaW5ncyBkZSB2ZXJzw6NvLiBBcGVuYXMgdXRpbGl6YWRvIHNlIG8gbcOzZHVsbyBWZXJzaW9uIFN0cmluZyBlc3RpdmVyIGRlZmluaWRvIGNvbW8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIGNvbmp1bnRvIGRlIGNvbmRpw6fDtWVzIHNvYiBhcyBxdWFpcyB1bSBjbGllbnRlIMOpIGF1dG9yaXphZG8gYSB2ZXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gQXMgY29uZGnDp8O1ZXMgcG9kZW0sIG9wY2lvbmFsbWVudGUsIHNlciByZXN0cmluZ2lkYXMgYSBkZXRlcm1pbmFkb3MgZ3J1cG9zIGRlIGNsaWVudGVzLiBPIG5vbWUgw6kgbyDDum5pY28gYXRyaWJ1dG8gb2JyaWdhdMOzcmlvLiBTZSBuw6NvIGZvcmVtIGRhZGFzIG91dHJhcyBvcMOnw7VlcywgdG9kb3Mgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc2Vyw6NvIHZpc8OtdmVpcyBuZXNzYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgZWxpbWluYXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB1dGlsaXphbmRvIGEgaW50ZXJmYWNlIGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSBvYnRlciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHV0aWxpemFuZG8gYSBpbnRlcmZhY2UgZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHBlc3F1aXNhciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHV0aWxpemFuZG8gYSBJbnRlcmZhY2UgR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIGRlZmluaXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB1dGlsaXphbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgdmlzdGEgZ2VyYWwgcGFyYSBtb3N0cmFyIGEgdmlzdGEgcGVxdWVuYSBkYSBsaXN0YSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNlIGFzIGV0aXF1ZXRhcyBkbyB0aXBvIGRlIGxpZ2HDp8OjbyBkZXZlbSBzZXIgYXByZXNlbnRhZGFzIG5hcyBsaWdhw6fDtWVzIGRvcyBuw7NzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lIGV4cHJlc3PDtWVzIHJlZ3VsYXJlcyBpbmRpdmlkdWFsbWVudGUgcGFyYSBjYWRhIGNsYXNzZSBDb25maWdJdGVtIHBhcmEgdmVyaWZpY2FyIG8gbm9tZSBkbyBDb25maWdJdGVtIGUgbW9zdHJhciBhcyBtZW5zYWdlbnMgZGUgZXJybyBjb3JyZXNwb25kZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGlzcG9uw612ZWlzIGRlIElDcyBuYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIHNlciBjb21wb3N0YSBwb3IgdW0gbm9tZSBkZSBjbGFzc2UgZSB1bWEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb27DrXZlaXMgcGFyYSBhIGNsYXNzZSBjb3JyZXNwb25kZW50ZS4gQXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOibWljb3MgdMOqbSBkZSByZXNwZWl0YXIgbyBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHByZWRlZmluaWRvIHBhcmEgYSBvcmRlbmHDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcHJlZGVmaW5pZG8gcGFyYSBhIG9yZGVuYcOnw6NvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHByZWRlZmluaWRvIHBhcmEgYSBvcmRlbmHDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGVzdGEgb3BlcmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHByZWRlZmluaWRhIGRvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQWNpbWE6IG8gbWFpcyBhbnRpZ28gbm8gdG9wby4gUGFyYSBiYWl4bzogbyBtYWlzIHJlY2VudGUgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHByZWRlZmluaWRhIGRvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBvIG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgZXhpYmlkYXMgcG9yIHBhZHLDo28gbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgY29tcG9zdGEgcG9yIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7Dom1pY29zIHTDqm0gZGUgcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgYSBwcm9mdW5kaWRhZGUgZGFzIHJlbGHDp8O1ZXMgcHJlZGVmaW5pZGFzIGEgc2VyZW0gbW9zdHJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG1vc3RyYWRvIHBvciBkZWZlaXRvIHBhcmEgbyBlY3LDoyBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBtb3N0cmFkbyBwb3IgZGVmZWl0byBwYXJhIG8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIktleSIgKENoYXZlKSBkZXZlIHRlciBvIG5vbWUgZG8gY2FtcG8gZGluw6JtaWNvLCBuZXN0ZSBjYXNvICJYIiwgIkNvbnRlbnQiIChDb250ZcO6ZG8pIGRldmUgdGVyIG8gdmFsb3IgZG8gY2FtcG8gZGluw6JtaWNvLCBkZXBlbmRlbmRvIGRvIHRpcG8gZGUgY2FtcG8gZGluw6JtaWNvLCBUZXh0IChUZXh0byk6ICJ1bSB0ZXh0byIsIERyb3Bkb3duIChNZW51IHN1c3BlbnNvKTogIjEiLCBEYXRlL1RpbWUgKERhdGEvSG9yYSk6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBlIG91IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHN1Ym9iamV0byBwb3Igb21pc3PDo28gZGEgY2xhc3NlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRpc3BvbsOtdmVpcyBkZSBJQ3MgbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgY29tcG9zdGEgcG9yIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7Dom1pY29zIHTDqm0gZGUgcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmUgYSBhbHR1cmEgZG8gY29tcG9uZW50ZSBkbyBlZGl0b3IgZGUgcmljaCB0ZXh0IHBhcmEgZXN0ZSBlY3LDoy4gSW50cm9kdXphIG8gbsO6bWVybyAocGl4w6lpcykgb3UgbyB2YWxvciBwZXJjZW50dWFsIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIG7Dum1lcm8gZGUgbGluaGFzIHBhcmEgbyBlZGl0b3IgZGUgZGVmaW5pw6fDo28gZGUgSUMgbmEgaW50ZXJmYWNlIGRlIGFkbWluaXN0cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gZG9zIGVzdGFkb3MgaW5jaWRlbnRlcyBkZSBhbHRvIChwb3IgZXhlbXBsbywgY3JpY2l0YWwpIHBhcmEgYmFpeG8gKHBvciBleGVtcGxvLCBmdW5jaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gcmVsZXZhbnRlcyBvbmRlIG9zIHRpY2tldHMgdmluY3VsYWRvcyBwb2RlbSBhZmV0YXIgbyBzdGF0dXMgZGUgdW0gSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgbyBlY3LDoyBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIG8gZWNyw6MgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBsaW1pdGUgZGUgcGVzcXVpc2EgcGFyYSBvIGVjcsOjIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgbyBlY3LDoyBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgYXByZXNlbnRhZGFzIG5hIHZpc3RhIGNvbXBsZXhhIGRhIHRhYmVsYSBkZSBsaWdhw6fDtWVzIHBhcmEgdG9kYXMgYXMgY2xhc3NlcyBkZSBJQ3MuIFNlIG7Do28gaG91dmVyIG5lbmh1bWEgZW50cmFkYSwgZW50w6NvIGFzIGNvbHVuYXMgcGFkcsOjbyBzw6NvIG1vc3RyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBkb3MgSUNzIG5hIHZpc8OjbyBjb21wbGV4YSBkYSB0YWJlbGEgZGUgbGlnYcOnw7VlcywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIHNlciBwcmVmaXhhZGEgY29tIG8gbm9tZSBkYSBjbGFzc2UgZSBkb2lzIHBvbnRvcyBkdXBsb3MgKHBvciBleGVtcGxvLCBDb21wdXRhZG9yOjopLiBFeGlzdGVtIGFsZ3VucyBhdHJpYnV0b3MgZGUgSUMgcXVlIHPDo28gY29tdW5zIGEgdG9kb3Mgb3MgSUNzIChleGVtcGxvIHBhcmEgYSBjbGFzc2UgQ29tcHV0YWRvcjogQ29tcHV0YWRvcjo6Tm9tZSwgQ29tcHV0YWRvcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRhZG9yOjpDcmVhdGVUaW1lKS4gUGFyYSBtb3N0cmFyIGF0cmlidXRvcyBkZSBJQyBpbmRpdmlkdWFpcywgdGFsIGNvbW8gZGVmaW5pZG9zIG5hIGRlZmluacOnw6NvIGRlIElDLCBkZXZlIHNlciB1dGlsaXphZG8gbyBzZWd1aW50ZSBlc3F1ZW1hIChleGVtcGxvIHBhcmEgYSBjbGFzc2UgQ29tcHV0YWRvcik6IENvbXB1dGFkb3I6OkhhcmREaXNrOjoxLCBDb21wdXRhZG9yOjpIYXJkRGlzazo6MTo6Q2FwYWNpZGFkZTo6MSwgQ29tcHV0YWRvcjo6SGFyZERpc2s6OjIsIENvbXB1dGFkb3I6OkhhcmREaXNrOjoyOjpDYXBhY2lkYWRlOjoxLiBTZSBuw6NvIGV4aXN0aXIgcXVhbHF1ZXIgcmVnaXN0byBwYXJhIHVtYSBjbGFzc2UgZGUgSUMsIHPDo28gYXByZXNlbnRhZGFzIGFzIGNvbHVuYXMgcHJlZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBpdGVucyBxdWUgZXN0w6NvIGRpc3BvbsOtdmVpcyBwYXJhICJBw6fDo28iIG5vIHRlcmNlaXJvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIG9zIGl0ZW5zIHF1ZSBlc3TDo28gZGlzcG9uw612ZWlzIG5vIHByaW1laXJvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBpdGVucyBxdWUgZXN0w6NvIGRpc3BvbsOtdmVpcyBubyBzZWd1bmRvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdWUgdGlwbyBkZSBsaWdhw6fDo28gKG5vbWVhZGEgYSBwYXJ0aXIgZGEgcGVyc3BldGl2YSBkbyBiaWxoZXRlKSBwb2RlIGFmZXRhciBvIGVzdGFkbyBkZSB1bSBJQyBsaWdhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1ZSB0aXBvIGRlIGJpbGhldGUgcG9kZSBhZmV0YXIgbyBlc3RhZG8gZGUgdW0gSUMgbGlnYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0F0dWFsaXphw6fDo28gZGEgZGVmaW5pw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsaW1pbmFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb3IgZG8gZXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBjYW1wbyBkaW7Dom1pY28gcXVlIG1hcmNhIGFzIGRlZmluacOnw7VlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBjb21vIGZvcmEgZGUgc2luY3JvbmlhLCBzZSBvcyBjYW1wb3MgZGluw6JtaWNvcyBjb250aWRvcyBmb3JlbSBhbHRlcmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3Mgbm8gZWNyw6IgYWRpY2lvbmFsIElUU00gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgYXByZXNlbnRhZG9zIG5vIGVjcsOjIGRlIHPDrW50ZXNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBhcHJlc2VudGFkb3Mgbm8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBhw6fDo28gZW0gbWFzc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gcGFyYSBxdWUgbyBmcm9udGVuZCBkbyBhZ2VudGUgdHJhYmFsaGUgZW0gbWFpcyBkbyBxdWUgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkZSBjYWRhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0F0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgYcOnw6NvIGVtIG1hc3NhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGFwZW5hcyBwYXJhIG9zIGdydXBvcyBsaXN0YWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIHBhcmEgZGVmaW5pciBvIGVzdGFkbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5vIGxpbmsgdGlja2V0LWNvbmZpZ2l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkbyDDrW5kaWNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLCB1dGlsaXphZG9zIHBhcmEgYSBwZXNxdWlzYSBkZSB0ZXh0byBpbnRlZ3JhbC4gT3MgY2FtcG9zIHRhbWLDqW0gc8OjbyBhcm1hemVuYWRvcywgbWFzIG7Do28gc8OjbyBvYnJpZ2F0w7NyaW9zIHBhcmEgYSBmdW5jaW9uYWxpZGFkZSBnZXJhbC4gQSBpbmNsdXPDo28gZGUgYW5leG9zIHBvZGUgc2VyIGRlc2FjdGl2YWRhIGRlZmluaW5kbyBhIGVudHJhZGEgY29tbyAwIG91IGVsaW1pbmFuZG8tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhcm1hemVuYWRvcyBubyDDrW5kaWNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBzw6NvIHV0aWxpemFkb3MgcGFyYSBvdXRyYXMgY29pc2FzIHBhcmEgYWzDqW0gZGUgcGVzcXVpc2FzIGRlIHRleHRvIGludGVncmFsLiBQYXJhIHVtYSBmdW5jaW9uYWxpZGFkZSBjb21wbGV0YSwgdG9kb3Mgb3MgY2FtcG9zIHPDo28gb2JyaWdhdMOzcmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0byBkbyBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBhIGNhbWFkYSBkbyBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1PDrW50ZXNlIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdFc3RhZG8gZG8gaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWkgZXN0YWRvcyBkZSBpbXBsYW50YcOnw6NvIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWkgZXN0YWRvcyBkZSBpbmNpZGVudGVzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gYSBhcHJlc2VudGFyIG5vIHJlc3VsdGFkbyBkZXN0YSBvcGVyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgbyBncnVwbyByZXNwb25zw6F2ZWwgcG9yIHVtYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBvIGdydXBvIHJlc3BvbnPDoXZlbCBwb3IgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VyYXIgZXN0YXTDrXN0aWNhcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tZSBkbyBtw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOw7ptZXJvIE3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhIGFwcmVzZW50YXIgZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgYXByZXNlbnRhciBlbSBjYWRhIHDDoWdpbmEgZGUgdW0gcmVzdWx0YWRvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmplY3RvcyBhIHByb2N1cmFyLCBxdWFudGFzIGVudHJhZGFzIGUgcXVhaXMgb3MgYXRyaWJ1dG9zIGEgbW9zdHJhci4gT3MgYXRyaWJ1dG9zIENvbmZpZ0l0ZW0gdMOqbSBkZSBzZXIgYXJtYXplbmFkb3MgZXhwbGljaXRhbWVudGUgYXRyYXbDqXMgZG8gRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzw6NvIEdlcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBhcyBjYXRlZ29yaWFzIGRlIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgb3MgZmlsdHJvcyBkZSBjb2x1bmEgZGEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcGVxdWVuby4gTm90YTogYSBkZWZpbmnDp8OjbyBkZSAiQWN0aXZlIiAoQXRpdm8pIHBhcmEgMCBhcGVuYXMgaW1wZWRlIG9zIGFnZW50ZXMgZGUgZWRpdGFyZW0gYXMgZGVmaW5pw6fDtWVzIGRlc3RlIGdydXBvIG5hcyBzdWFzIHByZWZlcsOqbmNpYXMgcGVzc29haXMsIG1hcyBjb250aW51YSBhIHBlcm1pdGlyIHF1ZSBvcyBhZG1pbmlzdHJhZG9yZXMgZWRpdGVtIGFzIGRlZmluacOnw7VlcyBlbSBub21lIGRlIG91dHJvIHV0aWxpemFkb3IuIFV0aWxpemUgIlByZWZlcmVuY2VHcm91cCIgcGFyYSBjb250cm9sYXIgZW0gcXVlIMOhcmVhIGVzdGFzIGRlZmluacOnw7VlcyBkZXZlbSBzZXIgYXByZXNlbnRhZGFzIG5hIGludGVyZmFjZSBkbyB1dGlsaXphZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgYSBjb3IgZG9zIGVzdGFkb3MgZGUgaW1wbGVtZW50YcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBlc3RhZG8gZGUgaW1wbGVtZW50YcOnw6NvIG5hcyBwcmVmZXLDqm5jaWFzIGRlIHZpc3VhbGl6YcOnw6NvIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRvIGdydXBvcyBkZSBwZXJtaXNzw6NvIGRlIGV4ZW1wbG8gZG9zIGF0cmlidXRvcyBkbyBjYXTDoWxvZ28gZ2VyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgbm9tZXMgcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRlIG7Dum1lcm9zIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRhcyBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHPDo28gdmlzdWFsaXphZG9zKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgY2FkZWlhIGRlIHZlcnPDtWVzIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZG8gY29uanVudG8gZGUgZmVycmFtZW50YXMgZG8gbW9kZWxvIGRlIGNhZGVpYSBkZSB2ZXJzw7VlcyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gYWNpb25hZG9yIGRlIHZlcnPDo28gcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXRpbGl6YXIgYSBhw6fDo28gZGUgYW5leGHDp8OjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHV0aWxpemFyIG8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1dGlsaXphciBvIGVjcsOjIGRlIHZpc3VhbGl6YcOnw6NvIGVtIMOhcnZvcmUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBkZXRhbGhlcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBhZGnDp8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1dGlsaXphciBvIGVjcsOjIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZW0gbWFzc2EgbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIGVkacOnw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBoaXN0w7NyaWNvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIG8gZm9ybXVsw6FyaW8gZGUgaW1wcmVzc8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbMOpZ2lvcyBuZWNlc3PDoXJpb3MgcGFyYSBlbGltaW5hciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdQcm9jdXJhciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaXIgbyBlc3RhZG8gZG8gaW5jaWRlbnRlIGRlIHVtIElDIGF1dG9tYXRpY2FtZW50ZSBxdWFuZG8gdW0gdGlja2V0IMOpIHZpbmN1bGFkbyBhIHVtIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGVzdGFkbyBkZSBpbXBsZW1lbnRhw6fDo28gbm8gZWNyw6MgZW0gYmxvY28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBlc3RhZG8gZG8gaW5jaWRlbnRlIG5vIGVjcsOjIGVtIGJsb2NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGFzc29jaWFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gYSBvdXRybyBvYmpldG8gbmEgdmlzdGEgZGUgZGV0YWxoZXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGFjZWRlciBhbyBoaXN0w7NyaWNvIGRlIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZWRlciBvIGhpc3TDs3JpY28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGVsaW1pbmFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc3VhIHZpc3RhIGRlIHpvb20gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSBhcHJlc2VudGFyIGFzIGxpZ2HDp8O1ZXMgZG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbW8gdW1hIFZpc3RhIGVtIMOBcnZvcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGVkaXRhciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSB2b2x0YXIgw6AgdmlzdGEgZGUgem9vbSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGltcHJpbWlyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgZGV0YWxoZXMgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSBhbXBsaWFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIG8gaGlzdMOzcmljbyBkbyBpdGVtIGNvbmZpZ3VyYcOnw6NvIChvcmRlbSBpbnZlcnNhKSBubyBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdBIGNhdGVnb3JpYSBwcmVkZWZpbmlkYSBxdWUgw6kgbW9zdHJhZGEsIHNlIG7Do28gZm9yIHNlbGVjaW9uYWRhIG5lbmh1bWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdPIGlkZW50aWZpY2Fkb3IgZGUgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgcG9yIGV4ZW1wbG8sIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBBIHByZWRlZmluacOnw6NvIMOpIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQWNjaW9uYSBhdXRvbWF0aWNhbWVudGUgbyBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzw6NvIEV4cHJlc3PDo28gZGUgY2FkZWlhIGRlIGNhcmFjdGVyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc8OjbyBTdHJpbmcgTcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdBY2lvbmFkb3IgZGUgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnU2UgYSBleGVjdcOnw6NvIGRlIENvbmZpZ0l0ZW1BQ0wgcG9kZSBzZXIgZXZpdGFkYSBhdHJhdsOpcyBkYSB2ZXJpZmljYcOnw6NvIGRhcyBkZXBlbmTDqm5jaWFzIGRlIGNhbXBvIGVtIGNhY2hlLiBJc3RvIHBvZGUgbWVsaG9yYXIgb3MgdGVtcG9zIGRlIGNhcnJlZ2FtZW50byBkb3MgZm9ybXVsw6FyaW9zLCBtYXMgdGVtIGRlIHNlciBkZXNhdGl2YWRvLCBzZSBvcyBBQ0xNb2R1bGVzIHRpdmVyZW0gZGUgc2VyIHV0aWxpemFkb3MgcGFyYSBJVFNNQ29uZmlnSXRlbS0gZSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXVlIGluZm9ybWHDp8O1ZXMgZ2VyYWlzIHPDo28gYXByZXNlbnRhZGFzIG5vIGNhYmXDp2FsaG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3DDs3MtcHJvZHV0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcsOpLXByb2R1dGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHV0aXZvJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHBvbGVnYWRhcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBvbGVnYWRhcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHBvbGVnYWRhcyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwb2xlZ2FkYXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDE5IHBvbGVnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgcG9sZWdhZGFzICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHBvbGVnYWRhcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnUmFjayBkZSAyMSBwb2xlZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHBvbGVnYWRhcyAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ0VzdGFudGUgZGUgMjMgcG9sZWdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwb2xlZ2FkYXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHBvbGVnYWRhcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcG9sZWdhZGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcG9sZWdhZGFzICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBvbGVnYWRhcyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcG9sZWdhZGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwb2xlZ2FkYXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBvbGVnYWRhcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcG9sZWdhZGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgcG9sZWdhZGFzICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcG9sZWdhZGFzICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcG9sZWdhZGFzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogMTg2LDY5IGNtICg3Myw1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcG9sZWdhZGFzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHBvbGVnYWRhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDIxMywzNiBjbSAoODQgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBvbGVnYWRhcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgcG9sZWdhZGFzICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgcG9sZWdhZGFzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBvbGVnYWRhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0NvbnRhYmlsaWRhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBdHJpYnVpw6fDo28gZGUgZW5kZXJlw6dvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWxlZm9uZSBhbmFsw7NnaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVGlwbyBkZSBhcGFyZWxobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaWRhZGUgZGEgYmF0ZXJpYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1RpcG8gZGUgYmF0ZXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1Byw6lkaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmFjZSBkZSBiYXJyYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdQcm9jZXNzYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzc2UgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2lkYWRlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2lkYWRlIHBvciBwbGFjYSBncsOhZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ07Dum1lcm8gZG8gY2FydMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0xlaXRvciBkZSBjYXJ0w7Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUaXBvIGRlIGNhcnTDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmlhIGRlIGNsaWVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ1ZlbG9jaWRhZGUgZG8gcmVsw7NnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZlbG9jaWRhZGUgZG8gcmVsw7NnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBhc3NpbmF0dXJhIGRlIGPDs2RpZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbGVmb25lIGRlIGNvbmZlcsOqbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGNvbnN1bHRvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YWN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdGFyIG8gZGlzdHJpYnVpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBjb250ZW50b3Jlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUaXBvIGRlIGNvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZG8gY29udHJhdG8gYSBwYXJ0aXIgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZG8gY29udHJhdG8gYXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUZWxlZm9uZSBzZW0gZmlvcyAodGVsZWZvbmUgREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnQ3VzdG8gdW5pdMOhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTsO6bWVybyBkZSBsaWNlbsOnYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdGEgZGUgY3JpYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdFc3RhbnRlIHBlcnNvbmFsaXphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2aWRvciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdGEgZGEgZmF0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRhIGRhIGVuY29tZW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0YSBkYSBnYXJhbnRpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRhIGRlIGxhbsOnYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfDgXJlYSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBhc3NpbmF0dXJhIGRlIGRvY3VtZW50b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdCYXN0aWRvciBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY29ycmVpbyBlbGV0csOzbmljbyAoQ2VydGlmaWNhZG9zIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdHJhYmFsaG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdFbmRlcmXDp28gSVAgZmluYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW0gZG8gYXBvaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEYXRhIGRlIGV4cGlyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdEaXNjbyByw61naWRvIGV4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnQXJtYXplbmFtZW50byBkZSBlbmVyZ2lhIG5vIHZvbGFudGUgZG8gbW90b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYXRvciBkZSBmb3JtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgZnJhbnF1aWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdMaXZyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDtWVzIGdlcmFpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1BsYWNhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1BsYWNhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbG8gZGUgaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnUGVzbyBkbyBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVzY3VsdGFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbG8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdMOjbyBkZSBJZGVudGlkYWRlIGUgQWNlc3NvIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGludmVudMOhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRhIGZhdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RlY2xhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKGVjcsOjIGRlIGNyaXN0YWlzIGzDrXF1aWRvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChEw61vZG8gRW1pc3NvciBkZSBMdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbGVmb25lIGZpeG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAncG9ydMOhdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYW1hZGEgMTogQ2FtYWRhIGbDrXNpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnQ2FtYWRhIDI6IENhbWFkYSBkZSBsaWdhw6fDo28gZGUgZGFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0NhbWFkYSAzOiBDYW1hZGEgZGUgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdDYW1hZGEgMzogQ2FtYWRhIGRlIHJlZGUgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYW1hZGEgNDogQ2FtYWRhIGRlIHRyYW5zcG9ydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0NhbWFkYSA1OiBDYW1hZGEgZGUgc2Vzc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdDYW1hZGEgNjogQ2FtYWRhIGRlIGFwcmVzZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnQ2FtYWRhIDc6IENhbWFkYSBkZSBhcGxpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBhcnJlbmRhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBMaWNlbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnQ2hhdmUgZGUgbGljZW7Dp2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVGlwbyBkZSBsaWNlbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZGUgbGljZW7Dp2EgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkZSBsaWNlbsOnYSBhdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIGZvc2ZhdG8gZGUgZmVycm8gZSBsw610aW8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIGnDtWVzIGRlIGzDrXRpbyAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGVtcHLDqXN0aW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdMb2NhbGl6YWRvIGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaWRhZGUgbcOheGltYSBkZSBjYXJnYSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWVtw7NyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUaXBvIGRlIG1lbcOzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdGVsZW3Ds3ZlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNw7N2ZWwvRW1iYXJjYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3Jpw6fDo28gZG8gbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdcOnw6NvIGRvIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnVGFtYW5obyBkbyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAncmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnUmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hw6fDtWVzIHNvYnJlIGEgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw7VlcyBzb2JyZSBhIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0NhbWFkYSBkZSByZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSBuw61xdWVsLWPDoWRtaW8gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSBoaWRyZXRvIG1ldMOhbGljbyBkZSBuw61xdWVsIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdBY29yZG8gZGUgbsOjbyBkaXZ1bGdhw6fDo28gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdDYWRlcm5vIGRlIG5vdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTsO6bWVybyBkZSBDUFVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ07Dum1lcm8gZGUgbcOzZHVsb3MgZGUgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ07Dum1lcm8gZGUgcGxhY2FzIGdyw6FmaWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChEw61vZG8gRW1pc3NvciBkZSBMdXogT3Jnw6JuaWNvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdDdXN0b3MgZGUgZnVuY2lvbmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGVuY29tZW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ091dHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTYcOtZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0Fjb3JkbyBkZSBwYXJjZXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdGVsZWZvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RpcG8gZGUgdGVsZWZvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdOw7pjbGVvcyBmw61zaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0Zvcm5lY2ltZW50byBkZSBlbmVyZ2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnQ29tcHJhZG8gZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1Byb2Z1bmRpZGFkZSBkYSBlc3RhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnVW5pZGFkZXMgZGUgcmFjayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1NhbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdDYXJ0w6NvIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdmVuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsZWZvbmUgcG9yIHNhdMOpbGl0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdCYXRlcmlhIHNlbGFkYSBkZSBjaHVtYm8tw6FjaWRvIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTsO6bWVybyBkZSBzw6lyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgZGUgc2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBzZXJ2acOnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ0V0aXF1ZXRhIGRlIHNlcnZpw6dvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1RpcG8gZGUgdG9tYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRpZmFsYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnUGFkcsOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnRW5kZXJlw6dvIElQIGluaWNpYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0FybWF6ZW5hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0acOnw6NvIGRlIGFybWF6ZW5hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdGaWxpYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1Jlc3Vtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0NsaWVudGUgZmlubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnRmlvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgZGEgcGxhY2EgZ3LDoWZpY2EgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdG9yIGRlIGVjcsOjIHTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvcnJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnQXVyaWN1bGFyIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb25lIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/ro_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJvX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRlIGdlbmVyYWxlIGRlIGZ1bmPIm2lvbmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnU2V0xINyaSBwZW50cnUgZGF0ZWxlIGRlIHNvbGljaXRhcmUgcHJpbWl0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1NldMSDcmkgcGVudHJ1IGllyJlpcmVhIGRhdGVsb3IgZGUgcsSDc3B1bnMnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uYXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ01vZGlmaWNhcmVhIGRlZmluacibaWVpIGNsYXNlaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTW9kaWZpY2FyZWEgZGVmaW5pyJtpZWkgcm9sdWx1aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhY2hldGUgZGUgY2xhc2UgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnQWljaSBwdXRlyJtpIGltcG9ydGEgcGFjaGV0ZSBkZSBjbGFzZSBSZWFkeTJJbXBvcnQgY2FyZSBwcmV6aW50xIMgY2VsZSBtYWkgdXp1YWxlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlLiBWxIMgcnVnxINtIHPEgyByZcibaW5lyJtpIGPEgyBlc3RlIHBvc2liaWwgc8SDIGZpZSBuZWNlc2FyxIMgbyBhbnVtaXTEgyBjb25maWd1cmFyZSBzdXBsaW1lbnRhcsSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBY3R1YWxpemFyZWEgZW50aXTEg8ibaWxvciBleGlzdGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnRhyJtpIHBhY2hldGVsZSBkZSBjbGFzZSBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NsYXNhIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdSb2x1bCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgRWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cnUgcGVudHJ1IGNsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjdGHIm2kgbyBjbGFzxIMgZGluIGxpc3TEgyBwZW50cnUgYSBjcmVhIHVuIG5vdSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGFyZWEgZGUgZGVzZsSDyJl1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1N0YXJlYSBpbmNpZGVudHVsdWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGVnxIN0dXJhIGN1IHVuIGFsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtxINyIGRlIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTnVtxINydWwgdW51aSBhbHQgZWxlbWVudCBkZSBjb25maWd1cmFyZSBjdSBjYXJlIHNlIGZhY2UgbGVnxIN0dXJhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0NoaWFyIGRvcmnIm2kgc8SDIMiZdGVyZ2XIm2kgYWNlc3QgZWxlbWVudCBkZSBjb25maWd1cmFyZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTnVtZWxlIGFjZXN0dWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTnVtZWxlIGVzdGUgZGVqYSB1dGlsaXphdCBkZSBDb25maWdJdGVtcyBjdSB1cm3Eg3RvcnVsIG51bcSDciAobnVtZXJlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOdW3Eg3J1bCB2ZXJzaXVuaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ051bcSDcnVsIGRlIHZlcnNpdW5lIGFsIGFjZXN0dWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ051bcSDcnVsIGRlIHZlcnNpdW5lIGVzdGUgZGVqYSB1dGlsaXphdCBkZSBDb25maWdJdGVtcyBjdSB1cm3Eg3RvcnVsIG51bcSDciAobnVtZXJlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXJlYSBkZSBkZXNmxIPImXVyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhdHVsIGluY2lkZW50dWx1aSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSXN0b3JpY3VsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJc3RvcmllIENvbsibaW51dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWZWRlcmUgZGUgZGV0YWxpdSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgRWxlbWVudGUgcGUgcGFnaW7Egyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnTnUgcy1hdSBnxINzaXQgZGF0ZSBkZXNwcmUgZWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGVjdGHIm2kgYWNlc3QgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1J1bGHIm2kgY8SDdXRhcmVhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGVudHJ1IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdOaXZlbHVsIGRlIGFkw6JuY2ltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ1pvb20gSW4vT3V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ05pdmVsdWwgbWF4aW0gZGUgbGVnxIN0dXJpIGEgZm9zdCBhdGlucyBwZW50cnUgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50IGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHIm2lpIGRlc3ByZSBlbGVtZW50dWwgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhcmVhIGFjdHVhbMSDIGRlIGRlc2bEg8iZdXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ1N0YXJlYSBhY3R1YWzEgyBhIGluY2lkZW50dWx1aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdVbHRpbWEgbW9kaWZpY2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdNb2RpZmljYXQgdWx0aW1hIGRhdMSDIGRlJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnRWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDxIN1dGFyZSBDb25maWdJdGVtJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2Ugdm9yIGltcG9ydGEgdXJtxIN0b2FyZWxlIGNsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1VybcSDdG9hcmVsZSByb2x1cmkgdm9yIGZpIGltcG9ydGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdSZcibaW5lyJtpIGPEgyB2b3IgZmkgY3JlYXRlIMiZaSBjw6JtcHVyaWxlIGRpbmFtaWNlIGNvcmVzcHVuesSDdG9hcmUgyJlpIGNsYXNlbGUgR2VuZXJhbENhdGFsb2cgyJlpIGPEgyBudSBleGlzdMSDIG8gZWxpbWluYXJlIGF1dG9tYXTEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWcmXIm2kgc8SDIGNvbnRpbnVhyJtpPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdBdmXIm2kgbmV2b2llIGRlIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmnIm2lhIG51IGVzdGUgdW4gaGFzaCBZQU1MIHZhbGlkLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1ByZXplbnRhcmUgZ2VuZXJhbMSDOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTnUgZXN0ZSBkYXQgbmljaXVuIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdBdmXIm2kgbmV2b2llIGRlIGNlbCBwdcibaW4gdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSBzZWxlY3RhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdOdSBhdmXIm2kgYWNjZXMgZGUgc2NyaWVyZSBsYSBhY2VzdCBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTnUgYSBmb3N0IGRlZmluaXTEgyBuaWNpbyBkZWZpbmnIm2llIHBlbnRydSBjbGFzYSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0VsZW1lbnR1bCBkZSBjb25maWd1cmFyZSAiJXMiIG51IHNlIGfEg3NlyJl0ZSDDrm4gYmF6YSBkZSBkYXRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ051IGEgZm9zdCBwb3NpYmlsxIMgyJl0ZXJnZXJlYSBjb25maWdpdGVtdWx1aSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ051IHMtYSBnxINzaXQgbmljaW8gdmVyc2l1bmUgcGVudHJ1IENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTnUgZXN0ZSBpbmRpY2F0IG5pY2l1biBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIHNhdSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTnUgc2Ugb2ZlcsSDIGFjY2VzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOdSBzZSBwb2F0ZSBhZmnImWEgaXN0b3JpY3VsLCBudSBlc3RlIGRhdCBuaWNpdW4gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ051IHNlIHBvYXRlIGFmaciZYSBpc3RvcmljdWwsIG51IHNlIGFjb3JkxIMgZHJlcHR1cmkgZGUgYWNjZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3UgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdWZXJzaXVuZSBub3XEgyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhcmVhIGRlIGltcGxlbWVudGFyZSBhY3R1YWxpemF0xIMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGFyZWEgaW5jaWRlbnR1bHVpIGEgZm9zdCBhY3R1YWxpemF0xIMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSDImXRlcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5rIGPEg3RyZSAlcyAodGlwPSVzKSBhZMSDdWdhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayBjxIN0cmUgJXMgKHRpcD0lcykgyJl0ZXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmnIm2llIENvbmZpZ0l0ZW0gYWN0dWFsaXphdMSDIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOdW1lIGFjdHVhbGl6YXQgKG5vdT0lcywgdmVjaGk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dHVsICVzIGEgZm9zdCBhY3R1YWxpemF0IGRlIGxhICIlcyIgbGEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaXVuZWEgJXMgyJl0ZWFyc8SDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ051IGVzdGUgaW5kaWNhdCBuaWNpdW4gQ29uZmlnSXRlbUlEIHNhdSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ051IHNlIHBvYXRlIGFmaciZYSBlbGVtZW50dWwgZGUgY29uZmlndXJhcmUsIG51IHN1bnQgYWNvcmRhdGUgZHJlcHR1cmkgZGUgYWNjZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG51IGEgZm9zdCBnxINzaXQgw65uIGJhemEgZGUgZGF0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3RpcMSDcml0IGRlICVzIGxhICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmluyJvEgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOdSBlc3RlIGRhdCBuaWNpdW4gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOdSBzZSBhY29yZMSDIGRyZXB0dXJpIGRlIGFjY2VzIHBlbnRydSBhY2Vhc3TEgyBjbGFzxIMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOaWNpIHVuIHJlenVsdGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1JlenVsdGF0ZWxlIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ051IHNlIHBvYXRlIGFmaciZYSBlbGVtZW50dWwsIG51IHN1bnQgYWNvcmRhdGUgZHJlcHR1cmkgZGUgYWNjZXMgcGVudHJ1IENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbnUgYSBmb3N0IGfEg3NpdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTnUgcy1hdSBnxINzaXQgdmVyc2l1bmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmHIm2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmVydGl6YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXJlYSBkZSBkZXNmxIPImXVyYXJlIGEgYWNlc3R1aSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhcmVhIGluY2lkZW50xIMgYSBhY2VzdHVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdOdSBhaSBwZXJtaXNpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cnUgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFbGVtZW50ZSBkZSBjb25maWd1cmFyZSBhZmnImWF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXAgZGUgc3RhdCBkZSBkZXNmxIPImXVyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcHVsIGRlIHN0YXQgYWwgaW5jaWRlbnR1bHVpIGN1cmVudCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfDjm50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWPIm2lpIGRlIGNsYXPEgyBwZW50cnUgZWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RhyJtpIHVuYSBzYXUgbWFpIG11bHRlIGNsYXNlIHBlbnRydSBhIHJlc3RyaWPIm2lvbmEgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBzZWxlY3RhYmlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY8ibaWkgZGUgY2xhc8SDIHBlbnRydSBlbGVtZW50dWwgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RhyJtpIHVuYSBzYXUgbWFpIG11bHRlIGNsYXNlIHBlbnRydSBhIHJlc3RyaWPIm2lvbmEgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBzZWxlY3RhYmlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbmFtaWMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKFZlcnNpdW5lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXB1bCBkZSByZWZlcmluyJvEgyBhIGxlZ8SDdHVyaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnRGFjxIMgYWNlYXN0xIMgbGVnxIN0dXLEgyBzZSBhcGxpY8SDIGxhIENvbmZpZ0l0ZW0gc2F1IGxhIHZlcnNpdW5lYSBzdGF0aWPEgyBhIG9iaWVjdHVsdWkgZGUgcmVmZXJpbsibxIMuIENhbGN1bHVsICJDdXJyZW50IEluY2lkZW50IFN0YXRlIiBzZSBlZmVjdHVlYXrEgyBudW1haSDDrm4gY2F6dWwgbGVnxIN0dXJpbG9yIGRpbmFtaWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjdGHIm2kgYXRyaWJ1dHVsIGR1cMSDIGNhcmUgdm9yIGZpIGPEg3V0YXRlIGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ1N0cnVjdHVyYSBkZSBiYXrEgyBudSBlc3RlIHZhbGlkxIMuIFbEgyBydWfEg20gc8SDIGZ1cm5pemHIm2kgdW4gaGFzaCBjdSBkYXRlIMOubiBmb3JtYXQgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdFc3RlIG5lY2VzYXIgY2EgyJlpcnVsIFlBTUwgc8SDIMOubmNlYXDEgyBjdSAiLS0tIi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTnUgcy1hIHB1dHV0IGN1csSDyJthIHRhYmVsdWwgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTnUgYXUgZm9zdCBnxINzaXRlIGPDom1wdXJpIGRpbmFtaWNlIHJlbGV2YW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ051IHMtYSBwdXR1dCBpbnNlcmEgw65uIHRhYmVsdWwgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcmF0ZSAwIHLDom5kdXJpIMOubiB0YWJlbHVsIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOdW3Eg3J1bCBtYXhpbSBhbCB1bnVpIGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2l1bmVhIFN0cmluZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcm9hcmUgZGUgc2luY3Jvbml6YXJlIGEgZGVmaW5pyJtpaWxvci4gVsSDIHJ1Z8SDbSBzxIMgdmVyaWZpY2HIm2kganVybmFsdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnQXZlyJtpIGRlZmluacibaWkgSVRTTUNvbmZpZ0l0ZW0gY2FyZSBudSBzdW50IHNpbmNyb25pemF0ZS4gVsSDIHJ1Z8SDbSBzxIMgaW1wbGVtZW50YcibaSBtb2RpZmljxINyaWxlIGPDom1wdXJpbG9yIGRpbmFtaWNlIGFsZSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfDjm50cmXIm2luZXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5pZmljYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhyJtpaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVuc2lvbmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldml6dWlyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdGFyZS9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUHJlemVudGFyZSBnZW5lcmFsxIMgyJlpIGNvbmZpcm1hcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0dWwgY2xhc2Vsb3Ivcm9sdXJpbG9yIMiZaSBhbCBjw6JtcHVyaWxvciBhZmVyZW50ZSBhY2VzdG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1MtYSBwcm9kdXMgbyBlcm9hcmUgw65uIHRpbXB1bCBpbXBvcnR1bHVpIGNsYXNlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIEFzY3Vucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gQWZpyJlhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kacibaWkgZGUgY8SDdXRhcmUgZXh0aW5zZSDDrm4gY8SDdXRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4gQ3UgYWNlYXN0xIMgZnVuY8ibaWUgcHV0ZcibaSBjxIN1dGEsIGRlIGV4ZW1wbHUsIG51bWVsZSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBjdSBhY2VzdCB0aXAgZGUgY29uZGnIm2lpLCBjdW0gYXIgZmkgIigqa2V5MSomJiYqa2V5MiopIiBzYXUgIigqa2V5MSp8fHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kacibaWkgZGUgY8SDdXRhcmUgZXh0aW5zZSDDrm4gY8SDdXRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4gQ3UgYWNlYXN0xIMgZnVuY8ibaWUgcHV0ZcibaSBjxIN1dGEsIGRlIGV4ZW1wbHUsIG51bWVsZSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBjdSBhY2VzdCB0aXAgZGUgY29uZGnIm2lpLCBjdW0gYXIgZmkgIigqa2V5MSomJiYqa2V5MiopIiBzYXUgIigqa2V5MSp8fHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnSUMgYXRyaWJ1aXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0lDIGF0cmlidWl0ZSBzb2NpZXTEg8ibaWkgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnSUMgYXRyaWJ1aXRlIHV0aWxpemF0b3J1bHVpIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnU2V0xINyaSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdWZXJpZmljxIMgdW4gbnVtZSB1bmljIG51bWFpIMOubiBjYWRydWwgYWNlbGVpYciZaSBjbGFzZSBkZSBDb25maWdJdGVtICgiY2xhc3MiKSBzYXUgbGEgbml2ZWwgZ2xvYmFsICgiZ2xvYmFsIiksIGNlZWEgY2Ugw65uc2VhbW7EgyBjxIMgZmllY2FyZSBDb25maWdJdGVtIGV4aXN0ZW50IGVzdGUgbHVhdCDDrm4gY29uc2lkZXJhcmUgYXR1bmNpIGPDom5kIHNlIGNhdXTEgyBkdXBsaWNhdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdBbGVnZcibaSB1biBtb2R1bCBwZW50cnUgYSBpbXB1bmUgbyBzY2hlbcSDIGRlIGRlbnVtaXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQWxlZ2XIm2kgdW4gbW9kdWwgcGVudHJ1IGEgYXBsaWNhIG8gc2NoZW3EgyBkZSBudW1lcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0FsZWdlyJtpIHVuIG1vZHVsIHBlbnRydSBhIGFwbGljYSBvIHNjaGVtxIMgZGUgyJlpcnVyaSBkZSB2ZXJzaXVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdBbGVnZcibaSBhdHJpYnV0ZWxlIHBlbnRydSBhIGRlY2xhbsiZYSBjcmVhcmVhIHVuZWkgbm9pIHZlcnNpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdBbGVnZcibaSBjYXRlZ29yaWlsZSBwZSBjYXJlIHPEgyBsZSBhdHJpYnVpyJtpIGFjZXN0ZWkgY2xhc2UgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJlIGRlIGNvbG9hbsSDIHBlbnRydSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlIHBlbnRydSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sb2FuZSBjYXJlIHBvdCBmaSBmaWx0cmF0ZSDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLiBOb3TEgzogU3VudCBwZXJtaXNlIG51bWFpIGF0cmlidXRlbGUgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgyJlpIGPDom1wdXJpbGUgZGluYW1pY2UgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBZMSDdWdhcmUgZWxlbWVudCBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0YXJlIGVsZW1lbnQgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWx1bCBkZSBldmVuaW1lbnRlIGFsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGNhcmUgcGVybWl0ZSDDrm5yZWdpc3RyYXJlYSDDrm4gaXN0b3JpYyDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsIGRlIGV2ZW5pbWVudCBhbCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBjYXJlIGFjdHVhbGl6ZWF6xIMgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBsYSBkZWZpbmnIm2lhIGxvciBjdXJlbnTEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdJc3RvcmljdWwgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJpbWFyZSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYcibaSB6b29tdWwgZWxlbWVudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBUcmVlIFZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyc2l1bmVhIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgZGluIHVybcSDdG9hcmVsZSBjbGFzZSBudSB2b3IgZmkgc3RvY2F0ZSBwZSBzZXJ2ZXJ1bCBFbGFzdGljc2VhcmNoLiBQZW50cnUgYSBhcGxpY2EgYWNlc3QgbHVjcnUgbGEgSUMtdXJpbGUgZXhpc3RlbnRlLCBtaWdyYXJlYSBJQy11cmlsb3IgdHJlYnVpZSBzxIMgZmllIGV4ZWN1dGF0xIMgcHJpbiBpbnRlcm1lZGl1bCBjb25zb2xlaSwgZHVwxIMgbW9kaWZpY2FyZWEgYWNlc3RlaSBvcMibaXVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgY3UgdXJtxIN0b2FyZWxlIHN0xINyaSBkZSBpbXBsZW1lbnRhcmUgbnUgdm9yIGZpIHN0b2NhdGUgcGUgc2VydmVydWwgRWxhc3RpY3NlYXJjaC4gUGVudHJ1IGEgYXBsaWNhIGFjZXN0IGx1Y3J1IGxhIElDLXVyaWxlIGV4aXN0ZW50ZSwgbWlncmFyZWEgSUMtdXJpbG9yIHRyZWJ1aWUgc8SDIGZpZSBleGVjdXRhdMSDIHByaW4gaW50ZXJtZWRpdWwgY29uc29sZWksIGR1cMSDIG1vZGlmaWNhcmVhIGFjZXN0ZWkgb3DIm2l1bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYcibaWUgRWxlbWVudCBsaW1pdMSDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmHIm2llIExpbWl0YSBkZSBlbGVtZW50ZSBwZSBwYWdpbsSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmF6YSBkZSBkYXRlIGRlIGdlc3Rpb25hcmUgYSBjb25maWd1cmHIm2llaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0VsZW1lbnQgZGUgY29uZmlndXJhcmUgbW9kdWwgYnVsay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlIGPEg3V0YXJlIHJvdXRlciBiYWNrZW5kIGFsIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWHIm2kgyJlpIGdlc3Rpb25hyJtpIGRlZmluacibaWlsZSBwZW50cnUgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmVlYXrEgyBiaWxldGUgcGVudHJ1IENvbmZpZ0l0ZW1zIGxhIGFudW1pdGUgbW9tZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnQ2xpZW7Im2lpIHBvdCB2ZWRlYSB2ZXJzaXVuaWxlIGlzdG9yaWNlIGFsZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQ2xpZW7Im2lpIGF1IHBvc2liaWxpdGF0ZWEgZGUgYSBjb211dGEgbWFudWFsIMOubnRyZSB2ZXJzaXVuaWxlIGlzdG9yaWNlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdGUgaW1wbGljaXRlIGNhcmUgdHJlYnVpZSB1dGlsaXphdGUgw65uIGF0cmlidXR1bCBwZW50cnUgZWNyYW51bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlLiBFeGVtcGx1OiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdGUgaW1wbGljaXRlIGNhcmUgdHJlYnVpZSB1dGlsaXphdGUgw65uIGF0cmlidXR1bCBwZW50cnUgZWNyYW51bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlLiBFeGVtcGx1OiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pyJtpIGFjyJtpdW5pbGUgw65uIGNhcmUgZXN0ZSBkaXNwb25pYmlsIHVuIGJ1dG9uIGRlIHNldMSDcmkgw65uIHdpZGdldHVsIG9iaWVjdGVsb3IgbGVnYXRlIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFJlyJtpbmXIm2kgY8SDIGFjZXN0ZSBhY8ibaXVuaSB0cmVidWllIHPEgyBhaWLEgyDDrm5yZWdpc3RyYXRlIHVybcSDdG9hcmVsZSBmaciZaWVyZSBKUyDImWkgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDImWkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5pyJtpIG8gc2NoZW3EgyBUZW1wbGF0ZTo6VG9vbGtpdCBwZW50cnUgyJlpcnVyaWxlIGRlIHZlcnNpdW5pLiBTZSB1dGlsaXplYXrEgyBudW1haSBkYWPEgyBtb2R1bHVsIGRlIMiZaXJ1cmkgZGUgdmVyc2l1bmkgZXN0ZSBzZXRhdCBsYSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmnIm2kgdW4gc2V0IGRlIGNvbmRpyJtpaSDDrm4gY2FyZSB1biBjbGllbnQgYXJlIHZvaWUgc8SDIHZhZMSDIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUuIENvbmRpyJtpaWxlIHBvdCBmaSBvcMibaW9uYWwgcmVzdHJpY8ibaW9uYXRlIGxhIGFudW1pdGUgZ3J1cHVyaSBkZSBjbGllbsibaS4gTnVtZWxlIGVzdGUgc2luZ3VydWwgYXRyaWJ1dCBvYmxpZ2F0b3JpdS4gRGFjxIMgbnUgc2Ugb2ZlcsSDIGFsdGUgb3DIm2l1bmksIHRvYXRlIGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUgdm9yIGZpIHZpemliaWxlIMOubiBjYXRlZ29yaWEgcmVzcGVjdGl2xIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHBlcm1pc2l1bmlsZSBuZWNlc2FyZSBwZW50cnUgYSDImXRlcmdlIGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUgSVRTTSB1dGlsaXrDom5kIGludGVyZmHIm2EgZ2VuZXJpY8SDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBwZXJtaXNpdW5pbGUgbmVjZXNhcmUgcGVudHJ1IGEgb2LIm2luZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIHV0aWxpesOibmQgaW50ZXJmYcibYSBnZW5lcmljxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHBlcm1pc2l1bmlsZSBuZWNlc2FyZSBwZW50cnUgYSBjxIN1dGEgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgSVRTTSB1dGlsaXrDom5kIGludGVyZmHIm2EgZ2VuZXJpY8SDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBwZXJtaXNpdW5pbGUgbmVjZXNhcmUgcGVudHJ1IGEgc2V0YSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIHV0aWxpesOibmQgaW50ZXJmYcibYSBnZW5lcmljxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgdW4gbW9kdWwgZGUgcHJlemVudGFyZSBnZW5lcmFsxIMgcGVudHJ1IGEgYWZpyJlhIHZpenVhbGl6YXJlYSBtaWPEgyBhIHVuZWkgbGlzdGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgZGFjxIMgZXRpY2hldGVsZSB0aXB1bHVpIGRlIGxlZ8SDdHVyxIMgdHJlYnVpZSBzxIMgZmllIGFmaciZYXRlIMOubiBjb25leGl1bmlsZSBub2R1cmlsb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGV4cHJlc2lpIHJlZ3VsYXRlIGluZGl2aWR1YWwgcGVudHJ1IGZpZWNhcmUgY2xhc8SDIENvbmZpZ0l0ZW0gcGVudHJ1IGEgdmVyaWZpY2EgbnVtZWxlIENvbmZpZ0l0ZW0gyJlpIHBlbnRydSBhIGFmaciZYSBtZXNhamVsZSBkZSBlcm9hcmUgY29yZXNwdW56xIN0b2FyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBkaXNwb25pYmlsZSBwZW50cnUgSUMgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiBmdW5jyJtpZSBkZSBjbGFzYSBJQy4gRmllY2FyZSBpbnRyYXJlIHRyZWJ1aWUgc8SDIGZpZSBjb21wdXPEgyBkaW50ci11biBudW1lIGRlIGNsYXPEgyDImWkgbyBtYXRyaWNlIGRlIGPDom1wdXJpIGRpc3BvbmliaWxlIHBlbnRydSBjbGFzYSBjb3Jlc3B1bnrEg3RvYXJlLiBJbnRyxINyaWxlIGRlIGPDom1wdXJpIGRpbmFtaWNlIHRyZWJ1aWUgc8SDIHJlc3BlY3RlIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgaW1wbGljaXQgYWwgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgcGVudHJ1IHNvcnRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgaW1wbGljaXQgYWwgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgcGVudHJ1IHNvcnRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgYXRyaWJ1dHVsIGltcGxpY2l0IGFsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIHBlbnRydSBzb3J0YXJlYSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBhbCByZXp1bHRhdHVsdWkgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gYWNlYXN0xIMgb3BlcmHIm2l1bmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmXImXRlIG9yZGluZWEgaW1wbGljaXTEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLiBTdXM6IGNlbCBtYWkgdmVjaGkgw65uIHBhcnRlYSBkZSBzdXMuIEpvczogY2VsIG1haSByZWNlbnQgw65uIHBhcnRlYSBkZSBzdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmXImXRlIG9yZGluZWEgaW1wbGljaXTEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLiBTdXM6IGNlbCBtYWkgdmVjaGkgw65uIHBhcnRlYSBkZSBzdXMuIEpvczogY2VsIG1haSByZWNlbnQgw65uIHBhcnRlYSBkZSBzdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBhZmnImWF0ZSDDrm4gbW9kIGltcGxpY2l0IGFsZSBJQyDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgw65uIGZ1bmPIm2llIGRlIGNsYXNhIElDLiBGaWVjYXJlIGludHJhcmUgdHJlYnVpZSBzxIMgZmllIGNvbXB1c8SDIGRpbnRyLXVuIG51bWUgZGUgY2xhc8SDIMiZaSBvIG1hdHJpY2UgZGUgY8OibXB1cmkgZGlzcG9uaWJpbGUgcGVudHJ1IGNsYXNhIGNvcmVzcHVuesSDdG9hcmUuIEludHLEg3JpbGUgZGUgY8OibXB1cmkgZGluYW1pY2UgdHJlYnVpZSBzxIMgcmVzcGVjdGUgc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZciZdGUgYWTDom5jaW1lYSBpbXBsaWNpdMSDIGEgcmVsYcibaWlsb3IgY2FyZSB1cm1lYXrEgyBzxIMgZmllIGFmaciZYXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGF0cmlidXR1bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGFmaciZYXQgw65uIG1vZCBpbXBsaWNpdCBwZW50cnUgZWNyYW51bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBhZmnImWF0IMOubiBtb2QgaW1wbGljaXQgcGVudHJ1IGVjcmFudWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZS4gRXhlbXBsdTogIktleSIgdHJlYnVpZSBzxIMgYWlixIMgbnVtZWxlIGPDom1wdWx1aSBkaW5hbWljLCDDrm4gYWNlc3QgY2F6ICJYIiwgIkNvbnRlbnQiIHRyZWJ1aWUgc8SDIGFpYsSDIHZhbG9hcmVhIGPDom1wdWx1aSBkaW5hbWljIMOubiBmdW5jyJtpZSBkZSB0aXB1bCBkZSBjw6JtcCBkaW5hbWljLCBUZXh0OiAiYSB0ZXh0IiwgRHJvcGRvd246ICIxIiwgRGF0ZS9UaW1lOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU3RvcFNlY29uZD01OTtcJyDImWkgc2F1IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgc3Vib2JpZWN0dWwgaW1wbGljaXQgYWwgY2xhc2VpICJJVFNNQ29uZmlnSXRlbSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBkaXNwb25pYmlsZSBwZW50cnUgSUMgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiBmdW5jyJtpZSBkZSBjbGFzYSBJQy4gRmllY2FyZSBpbnRyYXJlIHRyZWJ1aWUgc8SDIGZpZSBjb21wdXPEgyBkaW50ci11biBudW1lIGRlIGNsYXPEgyDImWkgbyBtYXRyaWNlIGRlIGPDom1wdXJpIGRpc3BvbmliaWxlIHBlbnRydSBjbGFzYSBjb3Jlc3B1bnrEg3RvYXJlLiBJbnRyxINyaWxlIGRlIGPDom1wdXJpIGRpbmFtaWNlIHRyZWJ1aWUgc8SDIHJlc3BlY3RlIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmXImXRlIMOubsSDbMibaW1lYSBwZW50cnUgY29tcG9uZW50YSBlZGl0b3IgZGUgdGV4dCBib2dhdCBwZW50cnUgYWNlc3QgZWNyYW4uIEludHJvZHVjZcibaSBudW3Eg3J1bCAocGl4ZWxpKSBzYXUgdmFsb2FyZWEgcHJvY2VudHVhbMSDIChyZWxhdGl2xIMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIG51bcSDcnVsIGRlIHLDom5kdXJpIHBlbnRydSBlZGl0b3J1bCBkZSBkZWZpbmnIm2lpIENJIGRpbiBpbnRlcmZhyJthIGRlIGFkbWluaXN0cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBvcmRpbmVhIHN0xINyaWxvciBpbmNpZGVudGUgZGUgbGEgbWFyZSAoZGUgZXhlbXBsdSwgY3JpY2l0YWzEgykgbGEgbWljxIMgKGRlIGV4ZW1wbHUsIGZ1bmPIm2lvbmFsxIMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgc3TEg3JpbGUgZGUgaW1wbGVtZW50YXJlIHJlbGV2YW50ZSDDrm4gY2FyZSBiaWxldGVsZSBsZWdhdGUgcG90IGFmZWN0YSBzdGFyZWEgdW51aSBJQy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGxpbWl0YSBkZSBjxIN1dGFyZSBwZW50cnUgZWNyYW51bCBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgbGltaXRhIGRlIGPEg3V0YXJlIHBlbnRydSBlY3JhbnVsIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBsaW1pdGEgZGUgY8SDdXRhcmUgcGVudHJ1IGVjcmFudWwgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGxpbWl0YSBkZSBjxIN1dGFyZSBwZW50cnUgZWNyYW51bCBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBhZmnImWF0ZSBhbGUgSUMgw65uIHZpenVhbGl6YXJlYSBjb21wbGV4xIMgYSB0YWJlbHVsdWkgZGUgbGVnxIN0dXJpIHBlbnRydSB0b2F0ZSBjbGFzZWxlIGRlIElDLiBEYWPEgyBudSBleGlzdMSDIG5pY2lvIGludHJhcmUsIHN1bnQgYWZpyJlhdGUgY29sb2FuZWxlIGltcGxpY2l0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgY29sb2FuZWxlIGFmaciZYXRlIGFsZSBJQyDDrm4gdml6dWFsaXphcmVhIGNvbXBsZXjEgyBhIHRhYmVsdWx1aSBkZSBsZWfEg3R1cmksIMOubiBmdW5jyJtpZSBkZSBjbGFzYSBJQy4gRmllY2FyZSBpbnRyYXJlIHRyZWJ1aWUgc8SDIGZpZSBwcmVjZWRhdMSDIGRlIG51bWVsZSBjbGFzZWkgyJlpIGRlIGRvdcSDIHB1bmN0ZSBkZSBzdXNwZW5zaWUgKGRlIGV4ZW1wbHUsIENvbXB1dGVyOjo6KS4gRXhpc3TEgyBjw6J0ZXZhIENJLUF0dHJpYnV0ZXMgY2FyZSBzdW50IGNvbXVuZSB0dXR1cm9yIElDLXVyaWxvciAoZXhlbXBsdSBwZW50cnUgY2xhc2EgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBlbnRydSBhIGFmaciZYSBhdHJpYnV0ZWxlIGluZGl2aWR1YWxlIGFsZSBJQywgYXN0ZmVsIGN1bSBzdW50IGRlZmluaXRlIMOubiBkZWZpbmnIm2lhIElDLCB0cmVidWllIHV0aWxpemF0xIMgdXJtxIN0b2FyZWEgc2NoZW3EgyAoZXhlbXBsdSBwZW50cnUgY2xhc2EgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gRGFjxIMgbnUgZXhpc3TEgyBuaWNpbyBpbnRyYXJlIHBlbnRydSBvIGNsYXPEgyBkZSBJQywgc3VudCBhZmnImWF0ZSBjb2xvYW5lbGUgaW1wbGljaXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgZWxlbWVudGVsZSBjYXJlIHN1bnQgZGlzcG9uaWJpbGUgcGVudHJ1ICJBY8ibaXVuZSIgw65uIGFsIHRyZWlsZWEgbml2ZWwgYWwgc3RydWN0dXJpaSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIGVsZW1lbnRlIHN1bnQgZGlzcG9uaWJpbGUgw65uIHByaW11bCBuaXZlbCBhbCBzdHJ1Y3R1cmlpIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIGVsZW1lbnRlIHN1bnQgZGlzcG9uaWJpbGUgw65uIGFsIGRvaWxlYSBuaXZlbCBhbCBzdHJ1Y3R1cmlpIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIHRpcCBkZSBsZWfEg3R1csSDIChudW1pdMSDIGRpbiBwZXJzcGVjdGl2YSBiaWxldHVsdWkpIHBvYXRlIGFmZWN0YSBzdGFyZWEgdW51aSBJQyBsZWdhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIHRpcCBkZSB0aWNoZXQgcG9hdGUgYWZlY3RhIHN0YXJlYSB1bnVpIElDIGxlZ2F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FjdHVhbGl6YXJlIGRlZmluacibaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ8iYdGVyZ2VyZWEgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDdWxvYXJlYSBzdMSDcmlpIGRlIGRlc2bEg8iZdXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgZGUgZXZlbmltZW50IHBlbnRydSBjw6JtcHVyaSBkaW5hbWljZSBjYXJlIG1hcmNoZWF6xIMgZGVmaW5pyJtpaWxlIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGNhIGZpaW5kIG5lc2luY3Jvbml6YXRlLCBkYWPEgyBzZSBtb2RpZmljxIMgY8OibXB1cmlsZSBkaW5hbWljZSBjYXJlIGxlIGNvbsibaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDw6JtcHVyaSBkaW5hbWljZSBhZmnImWF0ZSDDrm4gZWNyYW51bCBjw6JtcHVsdWkgSVRTTSBzdXBsaW1lbnRhciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0PDom1wdXJpIGRpbmFtaWNlIGFmaciZYXRlIMOubiBlY3JhbnVsIGRlIHByZXplbnRhcmUgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDw6JtcHVyaSBkaW5hbWljZSBhZmnImWF0ZSDDrm4gZWNyYW51bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWN0aXZlYXrEgyBjYXJhY3RlcmlzdGljYSBkZSBhY8ibaXVuZSDDrm4gbWFzxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBwZW50cnUgY2EgZnJvbnRlbmQtdWwgYWdlbnR1bHVpIHPEgyBsdWNyZXplIGxhIG1haSBtdWx0IGRlIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgb2RhdMSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWN0aXZlYXrEgyBmdW5jyJtpYSBkZSBhY8ibaXVuZSDDrm4gYmxvYyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIG51bWFpIHBlbnRydSBncnVwdXJpbGUgZW51bWVyYXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bHVsIGRlIGV2ZW5pbWVudCBwZW50cnUgYSBzZXRhIHN0YXJlYSBhcnRpY29sdWx1aSBkZSBjb25maWd1cmFyZSBwZSBiaWxldHVsLWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ8OibXB1cmkgYWxlIGluZGV4dWx1aSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSwgdXRpbGl6YXRlIHBlbnRydSBjxIN1dGFyZWEgZnVsbHRleHQuIEPDom1wdXJpbGUgc3VudCwgZGUgYXNlbWVuZWEsIHN0b2NhdGUsIGRhciBudSBzdW50IG9ibGlnYXRvcmlpIHBlbnRydSBmdW5jyJtpb25hbGl0YXRlYSBnZW5lcmFsxIMuIEluY2x1ZGVyZWEgYXRhyJlhbWVudGVsb3IgcG9hdGUgZmkgZGV6YWN0aXZhdMSDIHByaW4gc2V0YXJlYSBpbnRyxINyaWkgbGEgMCBzYXUgcHJpbiDImXRlcmdlcmVhIGFjZXN0ZWlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ8OibXB1cmkgc3RvY2F0ZSDDrm4gaW5kZXh1bCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBjYXJlIHN1bnQgdXRpbGl6YXRlIHBlbnRydSBhbHRlIHNjb3B1cmkgw65uIGFmYXLEgyBkZSBjxIN1dMSDcmlsZSBmdWxsdGV4dC4gUGVudHJ1IG8gZnVuY8ibaW9uYWxpdGF0ZSBjb21wbGV0xIMsIHRvYXRlIGPDom1wdXJpbGUgc3VudCBvYmxpZ2F0b3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDjm5yZWdpc3RyYXJlYSBtb2R1bHVsdWkgR2VuZXJpY0ludGVyZmFjZSBwZW50cnUgc3RyYXR1bCBkZSBpbnZvY2FyZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnw45ucmVnaXN0cmFyZWEgbW9kdWx1bHVpIEdlbmVyaWNJbnRlcmZhY2UgcGVudHJ1IHN0cmF0dWwgZGUgaW52b2NhcmUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDjm5yZWdpc3RyYXJlYSBtb2R1bHVsdWkgR2VuZXJpY0ludGVyZmFjZSBwZW50cnUgc3RyYXR1bCBkZSBpbnZvY2FyZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByZXplbnRhcmUgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlIHN0xINyaWxlIGRlIGltcGxlbWVudGFyZSDDrm4gY8SDdXRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZSBzdMSDcmlsZSBpbmNpZGVudGVsb3Igw65uIGPEg3V0YXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ051bcSDcnVsIG1heGltIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIGNhcmUgdXJtZWF6xIMgc8SDIGZpZSBhZmnImWF0ZSDDrm4gcmV6dWx0YXR1bCBhY2VzdGVpIG9wZXJhyJtpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIGRlIHZlcmlmaWNhcmUgYSBncnVwdWx1aSByZXNwb25zYWJpbCBwZW50cnUgbyBjbGFzxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgZGUgdmVyaWZpY2FyZSBhIGdydXB1bHVpIHJlc3BvbnNhYmlsIHBlbnRydSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIGRlIGdlbmVyYXJlIGEgc3RhdGlzdGljaWxvciBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ0RlbnVtaXJlIG1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW3Eg3IgTW9kdWx1bCBkZSBudW1lcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtxINydWwgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgY2FyZSB1cm1lYXrEgyBzxIMgZmllIGFmaciZYXRlIMOubiBmaWVjYXJlIHBhZ2luxIMgYSB1bnVpIHJlenVsdGF0IGRlIGPEg3V0YXJlIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtxINydWwgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgY2FyZSB1cm1lYXrEgyBzxIMgZmllIGFmaciZYXRlIHBlIGZpZWNhcmUgcGFnaW7EgyBhIHVudWkgcmV6dWx0YXQgZGUgY8SDdXRhcmUgw65uIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmllY3RlbGUgY2FyZSB0cmVidWllIGPEg3V0YXRlLCBjw6J0ZSBpbnRyxINyaSDImWkgY2UgYXRyaWJ1dGUgdHJlYnVpZSBhZmnImWF0ZS4gQXRyaWJ1dGVsZSBDb25maWdJdGVtIHRyZWJ1aWUgc8SDIGZpZSBzdG9jYXRlIMOubiBtb2QgZXhwbGljaXQgcHJpbiBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmV6ZW50YXJlIGdlbmVyYWzEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IGNhdGVnb3JpaWxlIHBlbnRydSBjbGFzZWxlIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IGZpbHRyZWxlIGRlIGNvbG9hbsSDIGRpbiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBtaWNpLiBWxIMgcnVnxINtIHPEgyByZcibaW5lyJtpOiBzZXRhcmVhICJBY3RpdmUiIGxhIDAgdmEgw65tcGllZGljYSBkb2FyIGFnZW7Im2lpIHPEgyBlZGl0ZXplIHNldMSDcmlsZSBhY2VzdHVpIGdydXAgw65uIHByZWZlcmluyJtlbGUgbG9yIHBlcnNvbmFsZSwgZGFyIHZhIHBlcm1pdGUgw65uIGNvbnRpbnVhcmUgYWRtaW5pc3RyYXRvcmlsb3Igc8SDIGVkaXRlemUgc2V0xINyaWxlIMOubiBudW1lbGUgdW51aSBhbHQgdXRpbGl6YXRvci4gVXRpbGl6YcibaSAiUHJlZmVyZW5jZUdyb3VwIiBwZW50cnUgYSBjb250cm9sYSDDrm4gY2Ugem9uxIMgdHJlYnVpZSBhZmnImWF0ZSBhY2VzdGUgc2V0xINyaSDDrm4gaW50ZXJmYcibYSBjdSB1dGlsaXphdG9ydWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgY3Vsb2FyZWEgc3TEg3JpbG9yIGRlIGRlc2bEg8iZdXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgc3TEg3JpbGUgZGUgZGVzZsSDyJl1cmFyZSBkaW4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgZ3J1cHVyaWxlIGRlIHBlcm1pc2l1bmkgZGUgZXhlbXBsdSBhbGUgYXRyaWJ1dGVsb3IgZ2VuZXJhbGUgYWxlIGNhdGFsb2d1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IG1vZHVsdWwgZGUgbnVtZSBwZW50cnUgY2xhc2VsZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IG1vZHVsdWwgZGUgbnVtZXJlIHBlbnRydSBjbGFzZWxlIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBwYWdpbmkgKMOubiBjYXJlIHN1bnQgYWZpyJlhdGUgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IG1vZHVsdWwgZGUgyJlpcnVyaSBkZSB2ZXJzaXVuaSBwZW50cnUgY2xhc2VsZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBtb2R1bHVsIHNldHVsdWkgZGUgaW5zdHJ1bWVudGUgZGUgyJlhYmxvYW5lIGRlIMiZaXJ1cmkgZGUgdmVyc2l1bmkgcGVudHJ1IGNsYXNlbGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IGRlY2xhbsiZYXJlYSB2ZXJzaXVuaWkgcGVudHJ1IGNsYXNlbGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnRHJlcHR1cmkgR3J1cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBhY8ibaXVuZWEgZGUgYXRhyJlhcmUgYSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIElUU00gZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSB2aXp1YWxpemFyZSBhIGFyYm9yZWx1aSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgbcSDcmlyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIElUU00gw65uIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIGFkxIN1Z2FyZSBhIHVudWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gbWFzxIMgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSBlZGl0YXJlIGEgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgSVRTTSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGN1IGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIElUU00gaXN0b3JpYyDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSB0aXDEg3JpcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbGVnaWkgbmVjZXNhcmUgcGVudHJ1IGEgyJl0ZXJnZSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0PEg3V0YXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1NldGHIm2kgYXV0b21hdCBzdGFyZWEgZGUgaW5jaWRlbnQgYSB1bnVpIElDIGF0dW5jaSBjw6JuZCB1biBiaWxldCBlc3RlIGxlZ2F0IGRlIHVuIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N0YWJpbGXImXRlIHN0YXJlYSBkZSBkZXNmxIPImXVyYXJlIMOubiBlY3JhbnVsIGRlIGFuc2FtYmx1IGFsIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU3RhYmlsZciZdGUgc3RhcmVhIGluY2lkZW50dWx1aSDDrm4gZWNyYW51bCBkZSBhbnNhbWJsdSBhbCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IGNhcmUgcGVybWl0ZSBjb3JlbGFyZWEgdW51aSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIGN1IHVuIGFsdCBvYmllY3Qgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBhY2Nlc2EgaXN0b3JpY3VsIHVudWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgYWNjZXNhIGlzdG9yaWN1bCB1bnVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSDImXRlcmdlIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBzYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGFmaciZYSBsZWfEg3R1cmlsZSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBzdWIgZm9ybcSDIGRlIFRyZWUgVmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgZHVwbGljYSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBkdXBsaWNhIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGVkaXRhIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIHJldmVuaSDDrm4gdml6dWFsaXphcmVhIGN1IHpvb20gYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGltcHJpbWEgdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIGN1IHpvb20gYSBpbnRlcmZlyJtlaSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIG3Eg3JpIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBpc3RvcmljdWwgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgKMOubiBvcmRpbmUgaW52ZXJzxIMpIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnQ2F0ZWdvcmlhIGltcGxpY2l0xIMgY2FyZSBlc3RlIGFmaciZYXTEgyBkYWPEgyBudSBlc3RlIHNlbGVjdGF0xIMgbmljaXVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpY2F0b3J1bCBwZW50cnUgdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSwgZGUgZXhlbXBsdSBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVmFsb2FyZWEgaW1wbGljaXTEgyBlc3RlIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnRGVjbGFuyJllYXrEgyBhdXRvbWF0IGludm9jYXRvcnVsIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2l1bmUgRXhwcmVzaWUgyJlpciBkZSBjYXJhY3RlcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2l1bmUgyJhpciBkZSBjYXJhY3RlcmUgTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2l1bmUgVHJpZ2dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnRGFjxIMgZXhlY3XIm2lhIENvbmZpZ0l0ZW1BQ0wgcG9hdGUgZmkgZXZpdGF0xIMgcHJpbiB2ZXJpZmljYXJlYSBkZXBlbmRlbsibZWxvciBkZSBjw6JtcHVyaSBkaW4gbWVtb3JpYSBjYWNoZS4gQWNlc3QgbHVjcnUgcG9hdGUgw65tYnVuxIN0xIPIm2kgdGltcGlpIGRlIMOubmPEg3JjYXJlIGEgZm9ybXVsYXJlbG9yLCBkYXIgdHJlYnVpZSBkZXphY3RpdmF0IGRhY8SDIHNlIHV0aWxpemVhesSDIEFDTE1vZHVsZXMgcGVudHJ1IElUU01Db25maWdJdGVtLSDImWkgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0NlIGluZm9ybWHIm2lpIGdlbmVyYWxlIHN1bnQgYWZpyJlhdGUgw65uIGFudGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3RpdsSDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aXYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQ2zEg2RpcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmHIm8SDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfImG9hcmVjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnUmXIm2VhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQWx0ZWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdJZciZaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnQ2FtZXLEgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NMQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/ru_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJ1X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQntCx0YnQuNC1INC00LDQvdC90YvQtSDQv9C+INGN0LrRgdC/0LvRg9Cw0YLQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC00LvRjyDQstGF0L7QtNGP0YnQuNGFINC00LDQvdC90YvRhSDQt9Cw0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCDQtNC70Y8g0LjRgdGF0L7QtNGP0YnQuNGFINC+0YLQstC10YLQvdGL0YUg0LTQsNC90L3Ri9GFJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0LzQuCDQtdC00LjQvdC40YbQsNC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfQmNC30LzQtdC90LjRgtGMINC+0L/QuNGB0LDQvdC40LUg0LrQu9Cw0YHRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICfQmNC30LzQtdC90LXQvdC40LUg0L7Qv9GA0LXQtNC10LvQtdC90LjRjyDRgNC+0LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ9Cf0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfQl9C00LXRgdGMINCy0Ysg0LzQvtC20LXRgtC1INC40LzQv9C+0YDRgtC40YDQvtCy0LDRgtGMINC/0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJJbXBvcnQsINC00LXQvNC+0L3RgdGC0YDQuNGA0YPRjtGJ0LjQtSDQvdCw0YjQuCDRgdCw0LzRi9C1INC+0LHRi9GH0L3Ri9C1INGN0LvQtdC80LXQvdGC0Ysg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LiDQntCx0YDQsNGC0LjRgtC1INCy0L3QuNC80LDQvdC40LUsINGH0YLQviDQvNC+0LbQtdGCINC/0L7RgtGA0LXQsdC+0LLQsNGC0YzRgdGPINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdCw0Y8g0L3QsNGB0YLRgNC+0LnQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfQntCx0L3QvtCy0LvQtdC90LjQtSDRgdGD0YnQtdGB0YLQstGD0Y7RidC40YUg0YHRg9GJ0L3QvtGB0YLQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0JjQvNC/0L7RgNGC0LjRgNGD0LnRgtC1INC/0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0LvQsNGB0YEg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ9Cg0L7Qu9GMINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9Ce0YHQvdC+0LLQvdGL0LUg0YHRgNC10LTRgdGC0LLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfQpNC40LvRjNGC0YAg0LTQu9GPINC60LvQsNGB0YHQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LrQu9Cw0YHRgSDQuNC3INGB0L/QuNGB0LrQsCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtC5INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfQmtC70LDRgdGBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtINC80LDRgdGB0L7QstC+0LUg0LTQtdC50YHRgtCy0LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfQodCy0Y/Qt9Cw0YLRjCDRgSDQtNGA0YPQs9C40LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ9Cd0LXQstC10YDQvdGL0Lkg0L3QvtC80LXRgCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LTRgNGD0LPQuNGFINCa0JUg0LTQu9GPINGB0LLRj9C30YvQstCw0L3QuNGPLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YPRjiDQtdC00LjQvdC40YbRgz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0JjQvNGPINGN0YLQvtCz0L4g0YPRh9C10YLQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQmNC80Y8g0YPQttC1INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNGA0YPQs9C+0Lkg0JrQlSDRgdC+INGB0LvQtdC00YPRjtGJ0LjQvCDQvdC+0LzQtdGA0L7QvCAo0LDQvNC4KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfQndC+0LzQtdGAINCy0LXRgNGB0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0J3QvtC80LXRgCDQstC10YDRgdC40Lgg0Y3RgtC+0LPQviDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9Cd0L7QvNC10YAg0LLQtdGA0YHQuNC4INGD0LbQtSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8gQ29uZmlnSXRlbXMg0YHQviDRgdC70LXQtNGD0Y7RidC40Lwg0L3QvtC80LXRgNC+0LwgKNC90L7QvNC10YDQsNC80LgpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0JjRgdGC0L7RgNC40Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0Ys6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0L7QtNC10YDQttC40LzQvtC1INC40YHRgtC+0YDQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfQktGA0LXQvNGPINGB0L7Qt9C00LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn0J/QvtC00YDQvtCx0L3Ri9C5INC/0L7QutCw0LcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGINC90LAg0YHRgtGA0LDQvdC40YbRgyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0JTQsNC90L3Ri9C1INC+0LEg0Y3Qu9C10LzQtdC90YLQsNGFINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQvdC1INC90LDQudC00LXQvdGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0Y3RgtC+0YIg0Y3Qu9C10LzQtdC90YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn0JLRi9C/0L7Qu9C90LjRgtGMINC/0L7QuNGB0LonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyDQtNC70Y8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ9Cj0YDQvtCy0LXQvdGMINCz0LvRg9Cx0LjQvdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAn0KPQstC10LvQuNGH0LXQvdC40LUv0YPQvNC10L3RjNGI0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAn0JTQvtGB0YLQuNCz0L3Rg9GCINC80LDQutGB0LjQvNCw0LvRjNC90YvQuSDRg9GA0L7QstC10L3RjCDRgdGB0YvQu9C+0Log0LTQu9GPIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnINCY0L3RhNC+0YDQvNCw0YbQuNGPINC+INCa0L7QvdGELiDQtdC0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfQotC10LrRg9GJ0LXQtSDRgdC+0YHRgtC+0Y/QvdC40LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ci0LXQutGD0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtSDQuNC90YbQuNC00LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn0JLRgNC10LzRjyDQv9C+0YHQu9C10LTQvdC10LPQviDQuNC30LzQtdC90LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn0JDQstGC0L7RgCDQv9C+0YHQu9C10LTQvdC10LPQviDQuNC30LzQtdC90LXQvdC40Y8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICfQktCw0YjQuCBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfQn9C+0LjRgdC6IENvbmZpZ0l0ZW0nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfQkdGD0LTRg9GCINC40LzQv9C+0YDRgtC40YDQvtCy0LDQvdGLINGB0LvQtdC00YPRjtGJ0LjQtSDQutC70LDRgdGB0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn0KHQu9C10LTRg9GO0YnQuNC1INGA0L7Qu9C4INCx0YPQtNGD0YIg0LjQvNC/0L7RgNGC0LjRgNC+0LLQsNC90YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9GC0L4g0YLQsNC60LbQtSDQsdGD0LTRg9GCINGB0L7Qt9C00LDQvdGLINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQtSDQtNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8g0Lgg0LrQu9Cw0YHRgdGLIEdlbmVyYWxDYXRhbG9nLCDQuCDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQvtCz0L4g0YPQtNCw0LvQtdC90LjRjyDQvdC1INC/0YDQvtC40LfQvtC50LTQtdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ9CW0LXQu9Cw0LXRgtC1INC/0YDQvtC00L7Qu9C20LjRgtGMPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfQndGD0LbQvdGLINC/0YDQuNC80LXRgNGLINC60LvQsNGB0YHQvtCyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICfQntC/0YDQtdC00LXQu9C10L3QuNC1INC90LUg0Y/QstC70Y/QtdGC0YHRjyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3Ri9C8INGF0Y3RiNC10LwgWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfQntCx0LfQvtGAOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtdGCIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfQktCw0Lwg0L3Rg9C20L3QsCDRhdC+0YLRjyDQsdGLINC+0LTQvdCwINCy0YvQsdGA0LDQvdC90LDRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICfQoyDQstCw0YEg0L3QtdGCINC00L7RgdGC0YPQv9CwINC90LAg0LfQsNC/0LjRgdGMINGN0YLQvtC5INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn0JrQu9Cw0YHRgSAlcyDQvdC1INCx0YvQuyDQvtC/0YDQtdC00LXQu9C10L0hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCAiJXMiINC90LUg0L3QsNC50LTQtdC90LAg0LIg0LHQsNC30LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDRg9C00LDQu9C40YLRjCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YPRjiDQtdC00LjQvdC40YbRgyDRgSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ9Cd0LUg0L3QsNC50LTQtdC90LAg0LLQtdGA0YHQuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfQndC1INC/0YDQuNGB0LLQvtC10L0gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCDQuNC70LggQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ9Cd0LXRgiDQtNC+0YHRgtGD0L/QsCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L/QvtC60LDQt9Cw0YLRjCDQuNGB0YLQvtGA0LjRjiwg0L3QtdGCIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfQndC10LLQvtC30LzQvtC20L3QviDQv9C+0LrQsNC30LDRgtGMINC40YHRgtC+0YDQuNGOLCDQvdC10LTQvtGB0YLQsNGC0L7Rh9C90L4g0L/RgNCw0LIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfQndC+0LLQsNGPINCa0JUgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn0J3QvtCy0LDRjyDQstC10YDRgdC40Y8gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ch0L7RgdGC0L7Rj9C90LjQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQvtCx0L3QvtCy0LvQtdC90L4gKNC90L7QstC+0LU9JXMsINGB0YLQsNGA0L7QtT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCDQvtCx0L3QvtCy0LvQtdC90L4gKNC90L7QstC+0LU9JXMsINGB0YLQsNGA0L7QtT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfQmtCVIChJRD0lcykg0YPQtNCw0LvQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfQodCy0Y/Qt9GMINGBICVzICjRgtC40L89JXMpINC00L7QsdCw0LLQu9C10L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn0KHQstGP0LfRjCDRgSAlcyAo0YLQuNC/PSVzKSDRg9C00LDQu9C10L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn0J7Qv9C40YHQsNC90LjQtSDQmtCVINC+0LHQvdC+0LLQu9C10L3QviAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0JjQvNGPINC+0LHQvdC+0LLQu9C10L3QviAo0L3QvtCy0L7QtT0lcywg0YHRgtCw0YDQvtC1PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ9CQ0YLRgNC40LHRg9GCICVzINC+0LHQvdC+0LLQu9C10L0g0YEgIiVzIiDQtNC+ICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn0JLQtdGA0YHQuNGPICVzINGD0LTQsNC70LXQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0L/RgNC40YHQstC+0LXQvSBDb25maWdJdGVtSUQg0LjQu9C4IFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMsINC90LXRgiDQtNC+0YHRgtGD0L/QsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCAlcyDQvdC1INC90LDQudC00LXQvdCwINCyINCx0LDQt9C1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ9C90LDQv9C10YfQsNGC0LDQvdC+ICVzINCyICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfQodGB0YvQu9C60LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfQndC10LLQtdGA0L3Ri9C5IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ2xhc3NJRCDQvdC1INC/0YDQuNGB0LLQvtC10L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn0J3QtdGCINC00L7RgdGC0YPQv9CwINC00LvRjyDRjdGC0L7Qs9C+INC60LvQsNGB0YHQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ9Cd0LXRgiDRgNC10LfRg9C70YzRgtCw0YLQsC/QoNC10YjQtdC90LjRjyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfQoNC10LfRg9C70YzRgtCw0YLRiyDQv9C+0LjRgdC60LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfQndC10LLQvtC30LzQvtC20L3QviDQvtGC0L7QsdGA0LDQt9C40YLRjCDRjdC70LXQvNC10L3Rgiwg0L3QtdC00L7RgdGC0LDRgtC+0YfQvdC+INC/0YDQsNCyINC00LvRjyDQmtCVISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtINC90LUg0L3QsNC50LTQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfQktC10YDRgdC40Lgg0L3QtSDQvdCw0LnQtNC10L3RiyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfQvtC/0LXRgNCw0YLQuNCy0L3QsNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn0LjQvdGG0LjQtNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINGN0YLQvtC5INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQodC+0YHRgtC+0Y/QvdC40LUg0LjQvdGG0LjQtNC10L3RgtCwINC00LvRjyDRjdGC0L7QuSDQmtCVJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn0J3QtdGCINGA0LDQt9GA0LXRiNC10L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ9Ck0LjQu9GM0YLRgCDQvdC10LTQtdC50YHRgtCy0LjRgtC10LvQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn0J3QtdC00L7Qv9GD0YHRgtC40LzRi9C1INC/0LDRgNCw0LzQtdGC0YDRiyDQv9C+0LjRgdC60LAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn0J/QvtC60LDQt9Cw0L3QvdGL0LUg0Y3Qu9C10LzQtdC90YLRiyDQvdCw0YHRgtGA0L7QudC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INCh0L7RgdGC0L7Rj9C90LjRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfQotC40L8g0KLQtdC60YPRidC10LPQviDRgdC+0YHRgtC+0Y/QvdC40Y8g0LjQvdGG0LjQtNC10L3RgtCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ9Cc0LXQttC00YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXQvdC40Y8g0LrQu9Cw0YHRgdCwINC00LvRjyDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JLRi9Cx0LXRgNC40YLQtSDQvtC00LjQvSDQuNC70Lgg0L3QtdGB0LrQvtC70YzQutC+INC60LvQsNGB0YHQvtCyLCDRh9GC0L7QsdGLINC+0LPRgNCw0L3QuNGH0LjRgtGMINCy0YvQsdC+0YAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdC90LjRjyDQutC70LDRgdGB0LAg0LTQu9GPINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JLRi9Cx0LXRgNC40YLQtSDQvtC00LjQvSDQuNC70Lgg0L3QtdGB0LrQvtC70YzQutC+INC60LvQsNGB0YHQvtCyLCDRh9GC0L7QsdGLINC+0LPRgNCw0L3QuNGH0LjRgtGMINCy0YvQsdC+0YAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQuSAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ9Ch0YLQsNGC0LjQutCwICjQstC10YDRgdC40Y8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ9Ci0LjQvyDRgdGB0YvQu9C60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn0J/RgNC40LzQtdC90Y/QtdGC0YHRjyDQu9C4INGN0YLQsCDRgdGB0YvQu9C60LAg0LogQ29uZmlnSXRlbSDQuNC70Lgg0Log0YHRgtCw0YLQuNGH0LXRgdC60L7QuSDQstC10YDRgdC40Lgg0YHRgdGL0LvQsNGO0YnQtdCz0L7RgdGPINC+0LHRitC10LrRgtCwLiDQoNCw0YHRh9C10YIg0YLQtdC60YPRidC10LPQviDRgdC+0YHRgtC+0Y/QvdC40Y8g0LjQvdGG0LjQtNC10L3RgtCwINCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0YLQvtC70YzQutC+INC00LvRjyDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0YHRgdGL0LvQvtC6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LDRgtGA0LjQsdGD0YIsINC/0L4g0LrQvtGC0L7RgNC+0LzRgyDQsdGD0LTQtdGCINC+0YHRg9GJ0LXRgdGC0LLQu9GP0YLRjNGB0Y8g0L/QvtC40YHQuiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfQkdCw0LfQvtCy0LDRjyDRgdGC0YDRg9C60YLRg9GA0LAg0L3QtdC00LXQudGB0YLQstC40YLQtdC70YzQvdCwLiDQn9C+0LbQsNC70YPQudGB0YLQsCwg0L/RgNC10LTQvtGB0YLQsNCy0YzRgtC1INGF0Y3RiCDRgSDQtNCw0L3QvdGL0LzQuCDQsiDRhNC+0YDQvNCw0YLQtSBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNC+INC90LDRh9C40L3QsNGC0Ywg0YHRgtGA0L7QutGDIFlBTUwg0YEgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDQvtGH0LjRgdGC0LjRgtGMINGC0LDQsdC70LjRhtGDIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ9Ch0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQtSDQtNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8g0L3QtSDQvdCw0LnQtNC10L3Riyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0LLRgdGC0LDQstC40YLRjCDQsiDRgtCw0LHQu9C40YbRgyBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9CS0YHRgtCw0LLQu9C10L3QviAwINGB0YLRgNC+0Log0LIg0YLQsNCx0LvQuNGG0YMgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDQvtC00L3QvtCz0L4g0Y3Qu9C10LzQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfQodGC0YDQvtC60LAg0LLQtdGA0YHQuNC4JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ9Ce0YjQuNCx0LrQsCDRgdC40L3RhdGA0L7QvdC40LfQsNGG0LjQuCDQvtC/0YDQtdC00LXQu9C10L3QuNC5LiDQn9C+0LbQsNC70YPQudGB0YLQsCwg0L/RgNC+0LLQtdGA0YzRgtC1INC20YPRgNC90LDQuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfQoyDQstCw0YEg0LXRgdGC0Ywg0L7Qv9GA0LXQtNC10LvQtdC90LjRjyBJVFNNQ29uZmlnSXRlbSwg0LrQvtGC0L7RgNGL0LUg0L3QtSDRgdC40L3RhdGA0L7QvdC40LfQuNGA0L7QstCw0L3Riy4g0J/QvtC20LDQu9GD0LnRgdGC0LAsINGA0LDQt9Cy0LXRgNC90LjRgtC1INC40LfQvNC10L3QtdC90LjRjyDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0L/QvtC70LXQuSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9Cj0YHRgtCw0YDQtdC70L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfQotC10YXQvdC40YfQtdGB0LrQvtC1INC+0LHRgdC70YPQttC40LLQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9Ct0LrRgdC/0LXRgNC40LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9CX0LDQv9C70LDQvdC40YDQvtCy0LDQvdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn0KDQtdC80L7QvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfQodC/0LjRgdCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfQrdC60YHQv9C10YDRgtC40LfQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn0KLQtdGB0YLQuNGA0L7QstCw0L3QuNC1JzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfQntCx0LfQvtGAINC4INC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ9CY0LzQv9C+0YDRgiDQutC70LDRgdGB0L7Qsi/RgNC+0LvQtdC5INC4INGB0LLRj9C30LDQvdC90YvRhSDRgSDQvdC40LzQuCDQv9C+0LvQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn0JLQviDQstGA0LXQvNGPINC40LzQv9C+0YDRgtCwINC60LvQsNGB0YHQsCDQv9GA0L7QuNC30L7RiNC70LAg0L7RiNC40LHQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0g0KHQutGA0YvRgtGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtINC/0L7QutCw0LfQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9Cf0L7Qt9Cy0L7Qu9GP0LXRgiDRgNCw0YHRiNC40YDQuNGC0Ywg0YPRgdC70L7QstC40Y8g0L/QvtC40YHQutCwINC/0YDQuCDQv9C+0LjRgdC60LUg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuINChINC/0L7QvNC+0YnRjNGOINGN0YLQvtC5INGE0YPQvdC60YbQuNC4INCy0Ysg0LzQvtC20LXRgtC1INC40YHQutCw0YLRjCwg0L3QsNC/0YDQuNC80LXRgCwg0LjQvNGPINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INGBINGC0LDQutC40LzQuCDRg9GB0LvQvtCy0LjRj9C80LgsINC60LDQuiAiKCprZXkxKiYmKmtleTIqKSIg0LjQu9C4ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0J/QvtC30LLQvtC70Y/QtdGCINGA0LDRgdGI0LjRgNC40YLRjCDRg9GB0LvQvtCy0LjRjyDQv9C+0LjRgdC60LAg0L/RgNC4INC/0L7QuNGB0LrQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC60LvQuNC10L3RgtGB0LrQvtC8INC40L3RgtC10YDRhNC10LnRgdC1LiDQoSDQv9C+0LzQvtGJ0YzRjiDRjdGC0L7QuSDRhNGD0L3QutGG0LjQuCDQstGLINC80L7QttC10YLQtSDQuNGB0LrQsNGC0YwsINC90LDQv9GA0LjQvNC10YAsINC40LzRjyDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDRgSDRgtCw0LrQuNC80Lgg0YPRgdC70L7QstC40Y/QvNC4LCDQutCw0LogIigqa2V5MSomJiprZXkyKikiINC40LvQuCAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ9Cd0LDQt9C90LDRh9Cw0LXQvNGL0LUg0JrQmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfQmtCYLCDQt9Cw0LrRgNC10L/Qu9C10L3QvdGL0LUg0LfQsCDQutC+0LzQv9Cw0L3QuNC10Lkt0LrQu9C40LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ9Ca0JgsINC90LDQt9C90LDRh9C10L3QvdGL0LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GOINC60LvQuNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICfQndCw0YHRgtGA0L7QudC60LggQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn0J/RgNC+0LLQtdGA0LrQsCDRg9C90LjQutCw0LvRjNC90L7RgdGC0Lgg0JjQvNC10L3QuCDQstC90YPRgtGA0Lgg0YLQtdC60YPRidC10LPQviDQutC70LDRgdGB0LAg0JrQlShcJ2NsYXNzXCcpINC40LvQuCDQs9C70L7QsdCw0LvRjNC90L4gKFwnZ2xvYmFsXCcpLNGH0YLQviDQvtC30L3QsNGH0LDQtdGCLCDRh9GC0L4g0LvRjtCx0LDRjyDRgdGD0YnQtdGB0YLQstGD0Y7RidCw0Y8g0JrQlSDRg9GH0LjRgtGL0LLQsNC10YLRgdGPINC/0YDQuCDQv9C+0LjRgdC60LUg0LTRg9Cx0LvQuNC60LDRgtC+0LIgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfQktGL0LHQtdGA0LjRgtC1INC80L7QtNGD0LvRjCDQtNC70Y8g0L/RgNC40LzQtdC90LXQvdC40Y8g0YHRhdC10LzRiyDQuNC80LXQvdC+0LLQsNC90LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LzQvtC00YPQu9GMINC00LvRjyDQv9GA0LjQvNC10L3QtdC90LjRjyDRgdGF0LXQvNGLINGB0YfQuNGB0LvQtdC90LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAn0JLRi9Cx0LXRgNC40YLQtSDQvNC+0LTRg9C70Ywg0LTQu9GPINC/0YDQuNC80LXQvdC10L3QuNGPINGB0YXQtdC80Ysg0YHRgtGA0L7QuiDQstC10YDRgdC40LkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn0JLRi9Cx0LXRgNC40YLQtSDQsNGC0YDQuNCx0YPRgtGLINC00LvRjyDQt9Cw0L/Rg9GB0LrQsCDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0Lkg0LLQtdGA0YHQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfQktGL0LHQtdGA0LjRgtC1INC60LDRgtC10LPQvtGA0LjQuCwg0LrQvtGC0L7RgNGL0LUg0LHRg9C00YPRgiDQvdCw0LfQvdCw0YfQtdC90Ysg0Y3RgtC+0LzRgyDQutC70LDRgdGB0YMg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfQpNC40LvRjNGC0YDRiyDRgdGC0L7Qu9Cx0YbQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LTQu9GPIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfQodGC0L7Qu9Cx0YbRiywg0LrQvtGC0L7RgNGL0LUg0LzQvtC20L3QviDRhNC40LvRjNGC0YDQvtCy0LDRgtGMINCyINC+0LHQt9C+0YDQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4g0J/RgNC40LzQtdGH0LDQvdC40LU6INCg0LDQt9GA0LXRiNC10L3RiyDRgtC+0LvRjNC60L4g0LDRgtGA0LjQsdGD0YLRiyDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC4INC00LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjyAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0LUg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9Ch0L7Qt9C00LDRgtGMINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Rg9GOINC10LTQuNC90LjRhtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWcgaXRlbSAo0JrQlSkgZXZlbnQgbW9kdWxlINCy0LXQtNGD0YnQuNC5INC30LDQv9C40YHRjCDQsiDQuNGB0YLQvtGA0LjRjiDQsiDQsNCz0LXQvdGC0YHQutC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDRgdC+0LHRi9GC0LjQuSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQutC+0YLQvtGA0YvQuSDQvtCx0L3QvtCy0LvRj9C10YIg0Y3Qu9C10LzQtdC90YLRiyDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNC4INGBINC40YUg0YLQtdC60YPRidC40Lwg0L7Qv9GA0LXQtNC10LvQtdC90LjQtdC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9CY0YHRgtC+0YDQuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ9Cf0LXRh9Cw0YLRjCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ9Cf0YDQvtGB0LzQvtGC0YAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfQlNGA0LXQstC+0LLQuNC00L3QvtC1INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC1IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn0JLQtdGA0YHQuNGPIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0YHQu9C10LTRg9GO0YnQuNGFINC60LvQsNGB0YHQvtCyINC90LUg0LHRg9C00YPRgiDRhdGA0LDQvdC40YLRjNGB0Y8g0L3QsCDRgdC10YDQstC10YDQtSBFbGFzdGljc2VhcmNoLiDQp9GC0L7QsdGLINC/0YDQuNC80LXQvdC40YLRjCDRjdGC0L4g0Log0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC8IENJLCDQvdC10L7QsdGF0L7QtNC40LzQviDQt9Cw0L/Rg9GB0YLQuNGC0Ywg0LzQuNCz0YDQsNGG0LjRjiBDSSDRh9C10YDQtdC3INC60L7QvdGB0L7Qu9GMINC/0L7RgdC70LUg0LjQt9C80LXQvdC10L3QuNGPINGN0YLQvtC5INC+0L/RhtC40LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zINGB0L4g0YHQu9C10LTRg9GO0YnQuNC80Lgg0YHQvtGB0YLQvtGP0L3QuNGP0LzQuCDRgNCw0LfQstC10YDRgtGL0LLQsNC90LjRjyDQvdC1INCx0YPQtNGD0YIg0YXRgNCw0L3QuNGC0YzRgdGPINC90LAg0YHQtdGA0LLQtdGA0LUgRWxhc3RpY3NlYXJjaC4g0KfRgtC+0LHRiyDQv9GA0LjQvNC10L3QuNGC0Ywg0Y3RgtC+INC6INGB0YPRidC10YHRgtCy0YPRjtGJ0LjQvCBDSSwg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LfQsNC/0YPRgdGC0LjRgtGMINC80LjQs9GA0LDRhtC40Y4gQ0kg0YfQtdGA0LXQtyDQutC+0L3RgdC+0LvRjCDQv9C+0YHQu9C1INC40LfQvNC10L3QtdC90LjRjyDRjdGC0L7QuSDQvtC/0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcg0JvQuNC80LjRgiDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfQm9C40LzQuNGCINCa0JUg0L3QsCDRgdGC0YDQsNC90LjRhtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfQkdCw0LfQsCDRg9C/0YDQsNCy0LvQtdC90LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40LXQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn0J7QsdGK0LXQvNC90YvQuSDQvNC+0LTRg9C70Ywg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0L/QvtC40YHQutCwINCa0JUg0LIg0LDQs9C10L3RgtGB0LrQvtC8INC40L3RgtC10YDRhNC10LnRgdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQodC+0LfQtNCw0L3QuNC1INC4INGD0L/RgNCw0LLQu9C10L3QuNC1INC+0L/QuNGB0LDQvdC40Y/QvNC4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICfQodC+0LfQtNCw0LXRgiDRgtC40LrQtdGC0Ysg0LTQu9GPIENvbmZpZ0l0ZW1zINCyINC+0L/RgNC10LTQtdC70LXQvdC90YvQtSDQvNC+0LzQtdC90YLRiyDQstGA0LXQvNC10L3QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn0JrQu9C40LXQvdGC0Ysg0LzQvtCz0YPRgiDQstC40LTQtdGC0Ywg0LjRgdGC0L7RgNC40YfQtdGB0LrQuNC1INCy0LXRgNGB0LjQuCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn0KMg0LrQu9C40LXQvdGC0L7QsiDQtdGB0YLRjCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINCy0YDRg9GH0L3Rg9GOINC/0LXRgNC10LrQu9GO0YfQsNGC0YzRgdGPINC80LXQttC00YMg0LjRgdGC0L7RgNC40YfQtdGB0LrQuNC80Lgg0LLQtdGA0YHQuNGP0LzQuCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfQlNCw0L3QvdGL0LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINC40YHQv9C+0LvRjNC30YPQtdC80YvQtSDQsiDQsNGC0YDQuNCx0YPRgtC1INC00LvRjyDRjdC60YDQsNC90LAg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LguINCf0YDQuNC80LXRgDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfQlNCw0L3QvdGL0LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINC40YHQv9C+0LvRjNC30YPQtdC80YvQtSDQsiDQsNGC0YDQuNCx0YPRgtC1INC00LvRjyDRjdC60YDQsNC90LAg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LguINCf0YDQuNC80LXRgDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQlNC10LnRgdGC0LLQuNGPL0FjdGlvbnMg0LrQvtCz0LTQsCDQutC90L7Qv9C60LAg0L3QsNGB0YLRgNC+0LnQutC4INC00L7RgdGC0YPQv9C90LAg0LIg0YHQstGP0LfQsNC90L3QvtC8INCy0LjQtNC20LXRgtC1IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuINCe0LHRgNCw0YLQuNGC0LUg0LLQvdC40LzQsNC90LjQtSwg0YfRgtC+INGN0YLQuCDQlNC10LnRgdGC0LLQuNGPL0FjdGlvbnMg0LTQvtC70LbQvdGLINC40LzQtdGC0Ywg0LfQsNGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNC90L3Ri9C1IEpTINC40LvQuCBDU1Mg0YTQsNC50LvRizogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMg0LggQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0YHRhdC10LzRgyBUZW1wbGF0ZTo6VG9vbGtpdCDQtNC70Y8g0YHRgtGA0L7QuiDQstC10YDRgdC40LkuINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0LIg0YLQvtC8INGB0LvRg9GH0LDQtSwg0LXRgdC70Lgg0LTQu9GPIFZlcnNpb24gU3RyaW5nIE1vZHVsZSDRg9GB0YLQsNC90L7QstC70LXQvdC+INC30L3QsNGH0LXQvdC40LUgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvQuNGC0LUg0L3QsNCx0L7RgCDRg9GB0LvQvtCy0LjQuSwg0L/RgNC4INC60L7RgtC+0YDRi9GFINC60LvQuNC10L3RgtGDINGA0LDQt9GA0LXRiNCw0LXRgtGB0Y8g0LLQuNC00LXRgtGMINGN0LvQtdC80LXQvdGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0KPRgdC70L7QstC40Y8g0LzQvtCz0YPRgiDQsdGL0YLRjCDQvtCz0YDQsNC90LjRh9C10L3RiyDQvtC/0YDQtdC00LXQu9C10L3QvdGL0LzQuCDQs9GA0YPQv9C/0LDQvNC4INC60LvQuNC10L3RgtC+0LIuINCd0LDQt9Cy0LDQvdC40LUgLSDQtdC00LjQvdGB0YLQstC10L3QvdGL0Lkg0L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C5INCw0YLRgNC40LHRg9GCLiDQldGB0LvQuCDQtNGA0YPQs9C40LUg0L/QsNGA0LDQvNC10YLRgNGLINC90LUg0YPQutCw0LfQsNC90YssINCy0YHQtSDRjdC70LXQvNC10L3RgtGLINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsdGD0LTRg9GCINCy0LjQtNC90Ysg0LIg0Y3RgtC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDRgtGMINGC0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDRg9C00LDQu9C10L3QuNGPIElUU00g0JrQlSDRgSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGC0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8gSVRTTSDQmtCVINGBINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LwgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC/0L7QuNGB0LrQsCBJVFNNINCa0JUg0YEg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvCBHZW5lcmljIEludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L3QtdC+0LHRhdC+0LTQuNC80YvQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0YPRgdGC0LDQvdC+0LLQutC4INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggSVRTTSDRgSDQv9C+0LzQvtGJ0YzRjiDQvtCx0YnQtdCz0L4g0LjQvdGC0LXRgNGE0LXQudGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQvNC+0LTRg9C70Ywg0L/RgNC+0YHQvNC+0YLRgNCwINCa0JUg0LIg0LrRgNCw0YLQutC+0Lwg0LLQuNC00LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQtNC+0LvQttC90Ysg0LvQuCDQvNC10YLQutC4INGC0LjQv9C+0LIg0YHQstGP0LfQtdC5INC+0YLQvtCx0YDQsNC20LDRgtGM0YHRjyDQsiDRgdC+0LXQtNC40L3QtdC90LjRj9GFINGD0LfQu9C+0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YDQtdCz0YPQu9GP0YDQvdGL0LUg0LLRi9GA0LDQttC10L3QuNGPINC00LvRjyDQutCw0LbQtNC+0LPQviDQvtGC0LTQtdC70YzQvdC+0LPQviDQutC70LDRgdGB0LAg0LTQu9GPINC/0YDQvtCy0LXRgNC60Lgg0LjQvNC10L0g0JrQlSDQuCDQstGL0LTQsNGH0Lgg0YHQvtC+0LHRidC10L3QuNC5INC+0LEg0L7RiNC40LHQutCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0LTQvtGB0YLRg9C/0L3Ri9C1INGB0YLQvtC70LHRhtGLIENJINCyINC+0LHQt9C+0YDQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiDQutC70LDRgdGB0LAgQ0kuINCa0LDQttC00LDRjyDQt9Cw0L/QuNGB0Ywg0LTQvtC70LbQvdCwINGB0L7RgdGC0L7Rj9GC0Ywg0LjQtyDQuNC80LXQvdC4INC60LvQsNGB0YHQsCDQuCDQvNCw0YHRgdC40LLQsCDQtNC+0YHRgtGD0L/QvdGL0YUg0L/QvtC70LXQuSDQtNC70Y8g0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQtdCz0L4g0LrQu9Cw0YHRgdCwLiDQl9Cw0L/QuNGB0Lgg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10Lkg0LTQvtC70LbQvdGLINGB0L7QvtGC0LLQtdGC0YHRgtCy0L7QstCw0YLRjCDRgdGF0LXQvNC1IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQsNGC0YDQuNCx0YPRgiDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0YHQvtGA0YLQuNGA0L7QstC60Lgg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINCw0YLRgNC40LHRg9GCINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDRgdC+0YDRgtC40YDQvtCy0LrQuCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LrQu9C40LXQvdGC0YHQutC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0LDRgtGA0LjQsdGD0YIg0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0Y3RgtC+0Lkg0L7Qv9C10YDQsNGG0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0L7RgNGP0LTQvtC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuINCS0LLQtdGA0YU6INGB0LDQvNGL0Lkg0YHRgtCw0YDRi9C5INGB0LLQtdGA0YXRgy4g0JLQvdC40Lc6INGB0LDQvNGL0Lkg0L/QvtGB0LvQtdC00L3QuNC5INGB0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0L7RgNGP0LTQvtC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4g0JLQstC10YDRhTog0YHQsNC80YvQuSDRgdGC0LDRgNGL0Lkg0YHQstC10YDRhdGDLiDQktC90LjQtzog0YHQsNC80YvQuSDQv9C+0YHQu9C10LTQvdC40Lkg0YHQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINGB0YLQvtC70LHRhtGLIENJINCyINC+0LHQt9C+0YDQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiDQutC70LDRgdGB0LAgQ0kuINCa0LDQttC00LDRjyDQt9Cw0L/QuNGB0Ywg0LTQvtC70LbQvdCwINGB0L7RgdGC0L7Rj9GC0Ywg0LjQtyDQuNC80LXQvdC4INC60LvQsNGB0YHQsCDQuCDQvNCw0YHRgdC40LLQsCDQtNC+0YHRgtGD0L/QvdGL0YUg0L/QvtC70LXQuSDQtNC70Y8g0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQtdCz0L4g0LrQu9Cw0YHRgdCwLiDQl9Cw0L/QuNGB0Lgg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10Lkg0LTQvtC70LbQvdGLINGB0L7QvtGC0LLQtdGC0YHRgtCy0L7QstCw0YLRjCDRgdGF0LXQvNC1IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINCz0LvRg9Cx0LjQvdGDINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0L7RgtC90L7RiNC10L3QuNC5INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0Lkg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LDRgtGA0LjQsdGD0YIg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC00LvRjyDRjdC60YDQsNC90LAg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C5INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINCw0YLRgNC40LHRg9GCINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQtNC70Y8g0Y3QutGA0LDQvdCwINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0J/RgNC40LzQtdGAOiAiS2V5IiDQtNC+0LvQttC90L4g0YHQvtC00LXRgNC20LDRgtGMINC40LzRjyDQtNC40L3QsNC80LjRh9C10YHQutC+0LPQviDQv9C+0LvRjywg0LIg0LTQsNC90L3QvtC8INGB0LvRg9GH0LDQtSBcJ1hcJywgIkNvbnRlbnQiINC00L7Qu9C20L3QviDRgdC+0LTQtdGA0LbQsNGC0Ywg0LfQvdCw0YfQtdC90LjQtSDQtNC40L3QsNC80LjRh9C10YHQutC+0LPQviDQv9C+0LvRjyDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0YLQuNC/0LAg0LTQuNC90LDQvNC40YfQtdGB0LrQvtCz0L4g0L/QvtC70Y8sIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcg0Lgg0LjQu9C4IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRg9C80LDQu9GH0LjQstCw0LzRi9C5INC/0L7QtNC+0LHRitC10LrRgiDQtNC70Y8g0LrQu9Cw0YHRgdCwIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC00L7RgdGC0YPQv9C90YvQtSDRgdGC0L7Qu9Cx0YbRiyBDSSDQsiDQvtCx0LfQvtGA0LUg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0LrQu9Cw0YHRgdCwIENJLiDQmtCw0LbQtNCw0Y8g0LfQsNC/0LjRgdGMINC00L7Qu9C20L3QsCDRgdC+0YHRgtC+0Y/RgtGMINC40Lcg0LjQvNC10L3QuCDQutC70LDRgdGB0LAg0Lgg0LzQsNGB0YHQuNCy0LAg0LTQvtGB0YLRg9C/0L3Ri9GFINC/0L7Qu9C10Lkg0LTQu9GPINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LXQs9C+INC60LvQsNGB0YHQsC4g0JfQsNC/0LjRgdC4INC00LjQvdCw0LzQuNGH0LXRgdC60LjRhSDQv9C+0LvQtdC5INC00L7Qu9C20L3RiyDRgdC+0L7RgtCy0LXRgtGB0YLQstC+0LLQsNGC0Ywg0YHRhdC10LzQtSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LLRi9GB0L7RgtGDINC+0LrQvdCwINGC0LXQutGB0YLQvtCy0L7Qs9C+INGA0LXQtNCw0LrRgtC+0YDQsCDQvdCwINGN0YLQvtC8INGN0LrRgNCw0L3QtS4g0JLQstC10LTQuNGC0LUg0YfQuNGB0LvQviDQv9C40LrRgdC10LvQtdC5INC4INC30L3QsNGH0LXQvdC40LUg0LIg0L/RgNC+0YbQtdC90YLQsNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtGA0L7QuiDQtNC70Y8g0YDQtdC00LDQutGC0L7RgNCwINC+0L/QuNGB0LDQvdC40Lkg0JrQlSAoQ0kpINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LTQvNC40L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC/0L7RgNGP0LTQvtC6INGB0L7RgdGC0L7Rj9C90LjQuSDQuNC90YbQuNC00LXQvdGC0L7QsiDQvtGCINCy0YvRgdC+0LrQuNGFICjQvdCw0L/RgNC40LzQtdGALCDQutGA0LjRgtC40YfQtdGB0LrQuNGFKSDQtNC+INC90LjQt9C60LjRhSAo0L3QsNC/0YDQuNC80LXRgCwg0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90YvRhSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQtSDRgdC+0YHRgtC+0Y/QvdC40Y8g0YDQsNC30LLQtdGA0YLRi9Cy0LDQvdC40Y8sINC60L7Qs9C00LAg0YHQstGP0LfQsNC90L3Ri9C1INC30LDRj9Cy0LrQuCDQvNC+0LPRg9GCINCy0LvQuNGP0YLRjCDQvdCwINGB0YLQsNGC0YPRgSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQu9C40LzQuNGCINC/0L7QuNGB0LrQsCDQvtCx0YrQtdC60YLQvtCyINC00LvRjyDRjdC60YDQsNC90LAgQWdlbnRJVFNNQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQu9C40LzQuNGCINC/0L7QuNGB0LrQsCDQvtCx0YrQtdC60YLQvtCyINC00LvRjyDRjdC60YDQsNC90LAgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0YDQtdC00LXQuyDQv9C+0LjRgdC60LAg0LTQu9GPINGN0LrRgNCw0L3QsCBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0YDQtdC00LXQuyDQv9C+0LjRgdC60LAg0LTQu9GPINGN0LrRgNCw0L3QsCBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0YHRgtC+0LvQsdGG0Ysg0JrQmCDQsiDQutC+0LzQv9C70LXQutGB0L3QvtC8INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC4INGC0LDQsdC70LjRhtGLINGB0LLRj9C30LXQuSDQtNC70Y8g0LLRgdC10YUg0LrQu9Cw0YHRgdC+0LIg0JrQmC4g0JXRgdC70Lgg0LfQsNC/0LjRgdGMINC+0YLRgdGD0YLRgdGC0LLRg9C10YIsINGC0L4g0L7RgtC+0LHRgNCw0LbQsNGO0YLRgdGPINGB0YLQvtC70LHRhtGLINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC/0LXRgNC10YfQtdC90Ywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINGB0YLQvtC70LHRhtC+0LIg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINCa0JUg0LIg0YLQsNCx0LvQuNGG0LUg0L/RgNC4INGB0L7Qt9C00LDQvdC40Lgg0YHQstGP0LfQuCwg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC60LvQsNGB0YHQsC4g0JrQsNC20LTQvtC1INC40LzRjyDQsNGC0YDQuNCx0YPRgtCwINC00L7Qu9C20L3QviDQuNC80LXRgtGMINCyINC60LDRh9C10YHRgtCy0LUg0L/RgNC10YTQuNC60YHQsCAtINC40LzRjyDQutC70LDRgdGB0LAg0Lgg0LTQstCwINC00LLQvtC10YLQvtGH0LjRjyAoaS5lLiBDb21wdXRlcjo6KS4g0JXRgdGC0Ywg0YDRj9C0INCw0YLRgNC40LHRg9GC0L7Qsiwg0L7QsdGJ0LjRhSDQtNC70Y8g0LLRgdC10YUg0LrQu9Cw0YHRgdC+0LIgKNC90LDQv9GA0LjQvNC10YAsINC00LvRjyDQutC70LDRgdGB0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCU0LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC40L3QtNC40LLQuNC00YPQsNC70YzQvdGL0YUg0LDRgtGA0LjQsdGD0YLQvtCyLCDRgdC/0LXRhtC40YTQuNGH0L3Ri9GFINC00LvRjyDQutC+0L3QutGA0LXRgtC90L7Qs9C+INC60LvQsNGB0YHQsCDQuNC3INC+0L/QuNGB0LDQvdC40Y8g0JrQlSAoQ0ktRGVmaW5pdGlvbiksINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgdC70LXQtNGD0Y7RidC40Lkg0YHQuNC90YLQsNC60YHQuNGBICjQvdCw0L/RgNC40LzQtdGALCDQtNC70Y8g0LrQu9Cw0YHRgdCwIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCV0YHQu9C4INC90LXRgiDQsNGC0YDQuNCx0YPRgtC+0LIg0LTQu9GPINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0LrQu9Cw0YHRgdCwLCDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0YHRgtC+0LvQsdGG0Ysg0LfQsNC00LDQvdC90YvQtSDQv9Cw0YDQsNC80LXRgtGA0L7QvCBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiwg0LrQsNC60LjQtSDRjdC70LXQvNC10L3RgtGLINC00L7RgdGC0YPQv9C90Ysg0LTQu9GPICLQlNC10LnRgdGC0LLQuNGPIiDQvdCwINGC0YDQtdGC0YzQtdC8INGD0YDQvtCy0L3QtSDRgdGC0YDRg9C60YLRg9GA0YsgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIsINC60LDQutC40LUg0Y3Qu9C10LzQtdC90YLRiyDQtNC+0YHRgtGD0L/QvdGLINC90LAg0L/QtdGA0LLQvtC8INGD0YDQvtCy0L3QtSDRgdGC0YDRg9C60YLRg9GA0YsgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQutCw0LrQuNC1INGN0LvQtdC80LXQvdGC0Ysg0LTQvtGB0YLRg9C/0L3RiyDQvdCwINCy0YLQvtGA0L7QvCDRg9GA0L7QstC90LUg0YHRgtGA0YPQutGC0YPRgNGLIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiwg0LrQsNC60L7QuSDRgtC40L8g0YHQstGP0LfQuCAo0L3QsNC30LLQsNC90L3Ri9C5INGBINGC0L7Rh9C60Lgg0LfRgNC10L3QuNGPINC30LDRj9Cy0LrQuCkg0LzQvtC20LXRgiDQv9C+0LLQu9C40Y/RgtGMINC90LAg0YHRgtCw0YLRg9GBINGB0LLRj9C30LDQvdC90L7QuSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQutCw0LrQvtC5INGC0LjQvyDQt9Cw0Y/QstC60Lgg0LzQvtC20LXRgiDQv9C+0LLQu9C40Y/RgtGMINC90LAg0YHRgtCw0YLRg9GBINGB0LLRj9C30LDQvdC90L7QuSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ9Ce0LHQvdC+0LLQu9C10L3QuNC1INC+0L/RgNC10LTQtdC70LXQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9Cj0LTQsNC70LjRgtGMINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Rg9GOINC10LTQuNC90LjRhtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn0KbQstC10YIg0YHQvtGB0YLQvtGP0L3QuNGPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfQoNC10LfQtdGA0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0YHQvtCx0YvRgtC40Lkg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10LksINC60L7RgtC+0YDRi9C5INC/0L7QvNC10YfQsNC10YIg0L7Qv9GA0LXQtNC10LvQtdC90LjRjyDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC60LDQuiDRgNCw0YHRgdC40L3RhdGA0L7QvdC40LfQuNGA0L7QstCw0L3QvdGL0LUsINC10YHQu9C4INGB0L7QtNC10YDQttCw0YnQuNC10YHRjyDQsiDQvdC40YUg0LTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPINC40LfQvNC10L3Rj9GO0YLRgdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQv9C+0LrQsNC30LDQvdC90YvQtSDQvdCwINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdC+0Lwg0Y3QutGA0LDQvdC1INC/0L7Qu9GPIElUU00g0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQvdCwINGN0LrRgNCw0L3QtSDQvtCx0LfQvtGA0LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0L3QsCDRjdC60YDQsNC90LUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LzQsNGB0YHQvtCy0YvRhSDQtNC10LnRgdGC0LLQuNC5INGBINCa0JUg0LTQu9GPINC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsCDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC90LXRgdC60L7Qu9GM0LrQuNC80Lgg0JrQlSDQvtC00L3QvtCy0YDQtdC80LXQvdC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LzQsNGB0YHQvtCy0YvRhSDQtNC10LnRgdGC0LLQuNC5INGBINCa0JUg0YLQvtC70YzQutC+INC00LvRjyDQv9C10YDQtdGH0LjRgdC70LXQvdC90YvRhSDQs9GA0YPQv9C/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0YPRgdGC0LDQvdC+0LLQutC4INGB0YLQsNGC0YPRgdCwINCa0JUg0LTQu9GPINGB0LLRj9C30LDQvdC90L7QuSDRgSDQvdC10Lkg0LfQsNGP0LLQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICfQn9C+0LvRjyDQuNC90LTQtdC60YHQsCDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCwg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C1INC00LvRjyDQv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L4g0L/QvtC40YHQutCwLiDQn9C+0LvRjyDRgtCw0LrQttC1INGB0L7RhdGA0LDQvdGP0Y7RgtGB0Y8sINC90L4g0L3QtSDRj9Cy0LvRj9GO0YLRgdGPINC+0LHRj9C30LDRgtC10LvRjNC90YvQvNC4INC00LvRjyDQvtCx0YnQtdC5INGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdC+0YHRgtC4LiDQktC60LvRjtGH0LXQvdC40LUg0LLQu9C+0LbQtdC90LjQuSDQvNC+0LbQvdC+INC+0YLQutC70Y7Rh9C40YLRjCwg0YPRgdGC0LDQvdC+0LLQuNCyINC00LvRjyDQt9Cw0L/QuNGB0Lgg0LfQvdCw0YfQtdC90LjQtSAwINC40LvQuCDRg9C00LDQu9C40LIg0LXQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ9Cf0L7Qu9GPLCDRhdGA0LDQvdGP0YnQuNC10YHRjyDQsiDQuNC90LTQtdC60YHQtSDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCwg0LrQvtGC0L7RgNGL0LUg0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPINC90LUg0YLQvtC70YzQutC+INC00LvRjyDQv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L4g0L/QvtC40YHQutCwLiDQlNC70Y8g0L/QvtC70L3QvtC5INGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdC+0YHRgtC4INCy0YHQtSDQv9C+0LvRjyDRj9Cy0LvRj9GO0YLRgdGPINC+0LHRj9C30LDRgtC10LvRjNC90YvQvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGD0YDQvtCy0L3RjyDQuNC90LLQvtC60LXRgNCwIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGPINC80L7QtNGD0LvRjyBHZW5lcmljSW50ZXJmYWNlINC00LvRjyDRg9GA0L7QstC90Y8g0LjQvdCy0L7QutC10YDQsCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGD0YDQvtCy0L3RjyDQuNC90LLQvtC60LXRgNCwIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAn0J7QsdC30L7RgCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvRhSDQtdC00LjQvdC40YYgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINGB0L7RgdGC0L7Rj9C90LjRjyDRgNCw0LfQstC10YDRgtGL0LLQsNC90LjRjyDQsiDQv9C+0LjRgdC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQsNC10YIg0YHQvtGB0YLQvtGP0L3QuNGPINC40L3RhtC40LTQtdC90YLQsCDQsiDQv9C+0LjRgdC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQutC+0YLQvtGA0YvQtSDQsdGD0LTRg9GCINC+0YLQvtCx0YDQsNC20LDRgtGM0YHRjyDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDRjdGC0L7QuSDQvtC/0LXRgNCw0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0L/RgNC+0LLQtdGA0LrQuCDQs9GA0YPQv9C/0Ysg0L7RgtCy0LXRgtGB0YLQstC10L3QvdC+0Lkg0LfQsCDQutC70LDRgdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINC00LvRjyDQv9GA0L7QstC10YDQutC4INCz0YDRg9C/0L/RiyDQvtGC0LLQtdGC0YHRgtCy0LXQvdC90L7QuSDQt9CwINCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfQnNC+0LTRg9C70Ywg0YTQvtGA0LzQuNGA0L7QstCw0L3QuNGPINGB0YLQsNGC0LjRgdGC0LjQutC4INC/0L4g0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfQnNC+0LTRg9C70Ywg0LjQvNC10L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn0J3QvtC80LXRgNC90L7QuSDQvNC+0LTRg9C70YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC90LAg0LrQsNC20LTQvtC5INGB0YLRgNCw0L3QuNGG0LUg0YDQtdC30YPQu9GM0YLQsNGC0L7QsiDQv9C+0LjRgdC60LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0LvQuNGH0LXRgdGC0LLQviDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L3QsCDQutCw0LbQtNC+0Lkg0YHRgtGA0LDQvdC40YbQtSDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn0J7QsdGK0LXQutGC0Ysg0LTQu9GPINC/0L7QuNGB0LrQsCwg0LrQvtC70LjRh9C10YHRgtCy0L4g0LfQsNC/0LjRgdC10Lkg0Lgg0LDRgtGA0LjQsdGD0YLRiyDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjy4g0JDRgtGA0LjQsdGD0YLRiyBDb25maWdJdGVtINC00L7Qu9C20L3RiyDQsdGL0YLRjCDRj9Cy0L3QviDRgdC+0YXRgNCw0L3QtdC90Ysg0YfQtdGA0LXQtyBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfQntCx0LfQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINC60LDRgtC10LPQvtGA0LjQuSDQutC70LDRgdGB0L7QsiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC4INC/0YDQtdC00L/QvtGH0YLQtdC90LjQuSDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRhNC40LvRjNGC0YDQvtCyINGB0YLQvtC70LHRhtC+0LIg0L7QsdC30L7RgNCwINGN0LvQtdC80LXQvdGC0L7QsiDQvNCw0LvQvtC5INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1OiDQv9GA0Lgg0YPRgdGC0LDQvdC+0LLQutC1INC30L3QsNGH0LXQvdC40Y8gXCdBY3RpdmVcJyDQsiAwINCw0LPQtdC90YLRiyDQvdC1INGB0LzQvtCz0YPRgiDRgNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQvdCw0YHRgtGA0L7QudC60Lgg0Y3RgtC+0Lkg0LPRgNGD0L/Qv9GLINCyINGB0LLQvtC40YUg0LvQuNGH0L3Ri9GFINC/0YDQtdC00L/QvtGH0YLQtdC90LjRj9GFLCDQvdC+INCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0Ysg0YHQvNC+0LPRg9GCINGA0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC90LDRgdGC0YDQvtC50LrQuCDQvtGCINC40LzQtdC90Lgg0LTRgNGD0LPQvtCz0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLiDQmNGB0L/QvtC70YzQt9GD0LnRgtC1IFwnUHJlZmVyZW5jZUdyb3VwXCcg0LTQu9GPINGD0L/RgNCw0LLQu9C10L3QuNGPINGC0LXQvCwg0LIg0LrQsNC60L7QuSDQvtCx0LvQsNGB0YLQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60L7Qs9C+INC40L3RgtC10YDRhNC10LnRgdCwINC00L7Qu9C20L3RiyDQvtGC0L7QsdGA0LDQttCw0YLRjNGB0Y8g0Y3RgtC4INC90LDRgdGC0YDQvtC50LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGG0LLQtdGC0L7QsiDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40YUg0YHQvtGB0YLQvtGP0L3QuNGPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINCa0JUg0LIg0L3QsNGB0YLRgNC+0LnQutCw0YUg0L7QsdC30L7RgNC+0LIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YHQvtGB0YLQvtGP0L3QuNC5INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINCa0JUg0LIg0L3QsNGB0YLRgNC+0LnQutCw0YUg0L7QsdC30L7RgNC+0LIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINC/0YDQuNC80LXRgNC90YvRhSDQs9GA0YPQv9C/0L7QstGL0YUg0L/RgNCw0LIg0LTQu9GPINCw0YLRgNC40LHRg9GC0L7QsiDQntCx0YnQtdCz0L4g0LrQsNGC0LDQu9C+0LPQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQvNC+0LTRg9C70Y8g0LjQvNC10L3QuCDQtNC70Y8g0LrQu9Cw0YHRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuCDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Lkg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDQvNC+0LTRg9C70Y8g0LrQvtC70LjRh9C10YHRgtCy0LAg0LrQu9Cw0YHRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuCDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Lkg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0YHRgtGA0LDQvdC40YYgKNC90LAg0LrQvtGC0L7RgNGL0YUg0L7RgtC+0LHRgNCw0LbQsNGO0YLRgdGPINCa0JUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQvNC+0LTRg9C70Y8g0YHRgtGA0L7QutC4INCy0LXRgNGB0LjQuCDQtNC70Y8g0LrQu9Cw0YHRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuCDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Lkg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQvNC+0LTRg9C70Y8g0LjQvdGB0YLRgNGD0LzQtdC90YLQsNGA0LjRjyDRiNCw0LHQu9C+0L3QsCDRgdGC0YDQvtC60Lgg0LLQtdGA0YHQuNC4INC00LvRjyDQutC70LDRgdGB0L7QsiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC4INC/0YDQtdC00L/QvtGH0YLQtdC90LjQuSDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YLRgNC40LPQs9C10YDQsCDQstC10YDRgdC40Lgg0LTQu9GPINC60LvQsNGB0YHQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lgg0L/RgNC10LTQv9C+0YfRgtC10L3QuNC5INC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9C/0LAg0YDQsNC30YDQtdGI0LXQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzRi9C1INGA0LDQt9GA0LXRiNC10L3QuNGPINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQtNC10LnRgdGC0LLQuNGPINC/0YDQuNC60YDQtdC/0LvQtdC90LjRjyDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQvtCx0LfQvtGA0LAg0JrQlSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC/0L7QuNGB0LrQsCDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80YvQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0Y3QutGA0LDQvdCwINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4IElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80YvQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0Y3QutGA0LDQvdCwINC/0YDQvtGB0LzQvtGC0YDQsCDQtNC10YDQtdCy0LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC/0L7Qu9C90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsCDQmtCVICh6b29tIHZpZXcpINCyIENNREIg0LDQs9C10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0LTQvtCx0LDQstC70LXQvdC40Y8g0JrQlSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNGL0LUg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINGN0LrRgNCw0L3QsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4IElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INCa0JUg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0L/RgNC+0YHQvNC+0YLRgNCwINC40YHRgtC+0YDQuNC4INGB0L7QtNC10YDQttC40LzQvtCz0L4g0JrQlSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0L/QtdGH0LDRgtC4INGF0LDRgNCw0LrRgtC10YDQuNGB0YLQuNC6INCa0JUg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC80Ysg0L/RgNCw0LLQsCDQtNC70Y8g0YPQtNCw0LvQtdC90LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvRhSDQtdC00LjQvdC40YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn0J/QvtC40YHQuiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvRhSDQtdC00LjQvdC40YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICfQo9GB0YLQsNC90L7QstC40YLRjCDRgdC+0YHRgtC+0Y/QvdC40LUg0LjQvdGG0LjQtNC10L3RgtCwINCa0JUg0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60LgsINC60L7Qs9C00LAg0LfQsNGP0LLQutCwINGB0LLRj9C30LDQvdCwINGBINCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0L7RgdGC0L7Rj9C90LjQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQvdCwINGN0LrRgNCw0L3QtSDQvNCw0YHRgdC+0LLRi9GFINC00LXQudGB0YLQstC40Lkg0YEg0JrQlSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdC+0YHRgtC+0Y/QvdC40LUg0LjQvdGG0LjQtNC10L3RgtCwINC90LAg0Y3QutGA0LDQvdC1INC80LDRgdGB0L7QstGL0YUg0LTQtdC50YHRgtCy0LjQuSDRgSDQmtCVINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCh0LLRj9C30LDRgtGMIChMaW5rKSDQtNC70Y8g0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDRgdCy0Y/Qt9C4INCa0JUg0YEg0LTRgNGD0LPQuNC8INC+0LHRitC10LrRgtC+0Lwg0L3QsCDRjdC60YDQsNC90LUg0L/QvtC70L3QvtCz0L4gKHpvb20gdmlldykg0L/RgNC+0YHQvNC+0YLRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQtNC70Y8g0LTQvtGB0YLRg9C/0LAg0Log0LjRgdGC0L7RgNC40Lgg0JrQlSDQv9GA0Lgg0L/RgNC+0YHQvNC+0YLRgNC1INCa0JUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCY0YHRgtC+0YDQuNGPINC00LvRjyDQv9GA0L7RgdC80L7RgtGA0LAg0LjRgdGC0L7RgNC40Lgg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0LTQu9GPINGD0LTQsNC70LXQvdC40Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0Ysg0L/RgNC4INC/0L7QtNGA0L7QsdC90L7QvCDQv9GA0L7RgdC80L7RgtGA0LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn0KPQutCw0LfRi9Cy0LDQtdGCINGB0YHRi9C70LrRgyDQsiDQvNC10L3RjiDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDRgdGB0YvQu9C+0Log0L3QsCDRjdC70LXQvNC10L3RgtGLINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQstC40LTQtSDQtNGA0LXQstC+0LLQuNC00L3QvtCz0L4g0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQlNGD0LHQu9C40YDQvtCy0LDRgtGMINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0Lkg0JrQlSDQv9GD0YLQtdC8INC60L7Qv9C40YDQvtCy0LDQvdC40Y8g0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0YLQtdC60YPRidC10Lkg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCU0YPQsdC70LjRgNC+0LLQsNGC0Ywg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0L3QvtCy0L7QuSDQmtCVINC/0YPRgtC10Lwg0LrQvtC/0LjRgNC+0LLQsNC90LjRjyDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDRgtC10LrRg9GJ0LXQuSDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC00LvRjyDQuNC30LzQtdC90LXQvdC40Y8g0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQndCw0LfQsNC0INC/0YDQuCDQv9C+0LTRgNC+0LHQvdC+0Lwg0L/RgNC+0YHQvNC+0YLRgNC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhiDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQn9C10YfQsNGC0Ywg0LTQu9GPINC/0LXRh9Cw0YLQuCDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQtNC70Y8g0L/QvtC00YDQvtCx0L3QvtCz0L4g0L/RgNC+0YHQvNC+0YLRgNCwINCa0JUg0L/RgNC4INC+0LHQt9C+0YDQtSDQmtCVINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC3INC40YHRgtC+0YDQuNC4INGB0L7QtNC10YDQttC40LzQvtCz0L4g0JrQlSAo0L/QvtGA0Y/QtNC+0Log0L/QvtC60LDQt9CwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINC60L7RgtC+0YDQsNGPINC+0YLQvtCx0YDQsNC20LDQtdGC0YHRjywg0LXRgdC70Lgg0L3QtSDQstGL0LHRgNCw0L3QsCDQvdC4INC+0LTQvdCwINC40Lcg0L3QuNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAgKNC/0YDQtdGE0LjQutGBKSDQuiDQvdC+0LzQtdGA0YMg0JrQlSwg0YIu0LUg0JrQlV/ihJYsINCa0JUjLCDQo9GH0LXRgtC90YvQuV/RjdC70LXQvNC10L3Rgl/ihJYuINCf0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIC0gQ29uZmlnSXRlbSMgKNC40LvQuCDQtdCz0L4g0L/QtdGA0LXQstC+0LQpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn0JDQstGC0L7QvNCw0YLQuNGH0LXRgdC60Lgg0LfQsNC/0YPRgdC60LDQtdGCINC40L3QstC+0LrQtdGAIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn0JLQtdGA0YHQuNGPINCh0YLRgNC+0LrQvtCy0L7QtSDQstGL0YDQsNC20LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn0JzQvtC00YPQu9GMINGB0YLRgNC+0Log0LLQtdGA0YHQuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ9Ci0YDQuNCz0LPQtdGAINCy0LXRgNGB0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAn0JzQvtC20L3QviDQu9C4INC40LfQsdC10LbQsNGC0Ywg0LLRi9C/0L7Qu9C90LXQvdC40Y8gQ29uZmlnSXRlbUFDTCwg0L/RgNC+0LLQtdGA0Y/RjyDQutGN0YjQuNGA0L7QstCw0L3QvdGL0LUg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQv9C+0LvQtdC5LiDQrdGC0L4g0LzQvtC20LXRgiDRg9C70YPRh9GI0LjRgtGMINCy0YDQtdC80Y8g0LfQsNCz0YDRg9C30LrQuCDRhNC+0YDQvNGD0LvRj9GA0L7Qsiwg0L3QviDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0L7RgtC60LvRjtGH0LXQvdC+LCDQtdGB0LvQuCBBQ0xNLdC80L7QtNGD0LvQuCDQsdGD0LTRg9GCINC40YHQv9C+0LvRjNC30L7QstCw0YLRjNGB0Y8g0LTQu9GPIElUU01Db25maWdJdGVtLSDQuCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn0JrQsNC60LDRjyDQvtCx0YnQsNGPINC40L3RhNC+0YDQvNCw0YbQuNGPINC+0YLQvtCx0YDQsNC20LDQtdGC0YHRjyDQsiDQt9Cw0LPQvtC70L7QstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn0LrQu9Cw0YHRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfQs9C70L7QsdCw0LvRjNC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ9C/0L7RgdGC0L/RgNC+0LTRg9C60YLQuNCy0L3Ri9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfQv9GA0LXQtNC/0YDQvtC00YPQutGC0LjQstC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn0L/RgNC+0LTRg9C60YLQuNCy0L3Ri9C5JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1INC00Y7QudC80L7QsiAoNDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEg0LTRjtC50LwgKDUzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1INC00Y7QudC80LAgKDY2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSDQtNGO0LnQvNCwICg4MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS3QtNGO0LnQvNC+0LLQsNGPINGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUg0LTRjtC50LzQsCAoNCw0NSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1INC00Y7QudC80L7QsiAoODgsOSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS3QtNGO0LnQvNC+0LLQsNGPINGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUg0LTRjtC50LzQvtCyICg5Nyw3OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy3QtNGO0LnQvNC+0LLQsNGPINGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYg0LTRjtC50LzQsCAoNjAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiDQtNGO0LnQvNCwICgxMDYsNjgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1INC00Y7QudC80LAgKDEyMCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1INC00Y7QudC80LAgKDgsODkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSDQtNGO0LnQvNCwICgxMzMsMzUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1INC00Y7QudC80LAgKDgwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUg0LTRjtC50LzQsCAoMTQ2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCDQtNGO0LnQvNCwICg5MDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzINC00Y7QudC80LAgKDE2MCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0INC00Y7QudC80LAgKDEwMDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1INC00Y7QudC80LAgKDE3MywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1INC00Y7QudC80LAgKDEzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUg0LTRjtC50LzQsCAoMTg2LDY5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzINC00Y7QudC80LAgKDExMDAg0LzQvCk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSDQtNGO0LnQvNCwICgyMDAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiDQtNGO0LnQvNCwICgxMjAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCDQtNGO0LnQvNCwICgyMTMsMzYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyDQtNGO0LnQvNC+0LIgKDE3LDc4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUg0LTRjtC50LzQsCAoMjIsMjMg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSDQtNGO0LnQvNC+0LIgKDI2LDY3INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSDQtNGO0LnQvNCwICgzMSwxMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQg0LTRjtC50LzQvtCyICgzNSw1NiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUg0LTRjtC50LzQsCAoNDAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfQkdGD0YXQs9Cw0LvRgtC10YDRgdC60LjQuSDRg9GH0LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ9Cg0LDRgdC/0YDQtdC00LXQu9C10L3QuNC1INCw0LTRgNC10YHQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfQkNC90LDQu9C+0LPQvtCy0YvQuSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ9Ci0LjQvyDQv9GA0LjQsdC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ9CV0LzQutC+0YHRgtGMINCw0LrQutGD0LzRg9C70Y/RgtC+0YDQsCAo0JDRhyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn0KLQuNC/INCx0LDRgtCw0YDQtdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn0JfQtNCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfQmNC90YLQtdGA0YTQtdC50YEg0YjQuNC90YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ9Cm0J/Qoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICfQmtC70LDRgdGBINC/0YDQvtGG0LXRgdGB0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICfQldC80LrQvtGB0YLRjCAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICfQldC80LrQvtGB0YLRjCDQvdCwINC+0LTQvdGDINCy0LjQtNC10L7QutCw0YDRgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQutCw0YDRgtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn0KPRgdGC0YDQvtC50YHRgtCy0L4g0LTQu9GPINGH0YLQtdC90LjRjyDQutCw0YDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfQotC40L8g0LrQsNGA0YLRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn0KHQtdGA0YLQuNGE0LjQutCw0YLRiyDQutC70LjQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfQmtC70LjQtdC90YLRgdC60L7QtSDQv9GA0L7Qs9GA0LDQvNC80L3QvtC1INC+0LHQtdGB0L/QtdGH0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC60LvQuNC10L3RgtC+0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn0KfQsNGB0L7QstC+0Lkg0L/QvtGP0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Ysg0L/QvtC00L/QuNGB0Lgg0LrQvtC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ9Ca0L7QvdGE0LXRgNC10L3Rhi3RgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ9Ch0L7Qs9C70LDRiNC10L3QuNC1INC+INC60L7QvdGB0YPQu9GM0YLQuNGA0L7QstCw0L3QuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfQodCy0Y/Qt9Cw0YLRjNGB0Y8g0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ9Ch0LLRj9C30LDRgtGM0YHRjyDRgSDQtNC40YHRgtGA0LjQsdGM0Y7RgtC+0YDQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0LrQvtC90YLQtdC50L3QtdGA0LDQvNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAn0JrQvtC90YLRgNCw0LrRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn0KLQuNC/INC60L7QvdGC0YDQsNC60YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ9Ch0YDQvtC6INC00LXQudGB0YLQstC40Y8g0LrQvtC90YLRgNCw0LrRgtCwINGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ9Ch0YDQvtC6INC00LXQudGB0YLQstC40Y8g0LrQvtC90YLRgNCw0LrRgtCwINC00L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn0JHQtdGB0L/RgNC+0LLQvtC00L3QvtC5INGC0LXQu9C10YTQvtC9IChERUNUIFBob25lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfQldC00LjQvdC40YbQsCDQuNC30LzQtdGA0LXQvdC40Y8g0YHRgtC+0LjQvNC+0YHRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LvQuNGG0LXQvdC30LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAn0JTQsNGC0LAg0YHQvtC30LTQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn0JjQvdC00LjQstC40LTRg9Cw0LvRjNC90LDRjyDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1Ag0JfQsNGA0LXQt9C10YDQstC40YDQvtCy0LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMt0YHQtdGA0LLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICfQlNCw0YLQsCDRgdGH0LXRgtCwLdGE0LDQutGC0YPRgNGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfQlNCw0YLQsCDQt9Cw0LrQsNC30LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ9CU0LDRgtCwINCy0YvQtNCw0YfQuCDQs9Cw0YDQsNC90YLQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ9CU0LDRgtCwINCy0YvRhdC+0LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn0J3QsNGB0YLQvtC70YzQvdGL0Lkg0J/Qmic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn0KHQtdGA0YLQuNGE0LjQutCw0YLRiyDQv9C+0LTQv9C40YHQuCDQtNC+0LrRg9C80LXQvdGC0L7Qsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ9Ch0YLQvtC50LrQsCBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtGLINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiyAo0YHQtdGA0YLQuNGE0LjQutCw0YLRiyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ9Ci0YDRg9C00L7QstC+0Lkg0LTQvtCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfQmtC+0L3QtdGH0L3Ri9C5IElQLdCw0LTRgNC10YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfQntC60L7QvdGH0LDQvdC40LUg0L/QvtC00LTQtdGA0LbQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn0JTQsNGC0LAg0LjRgdGC0LXRh9C10L3QuNGPINGB0YDQvtC60LAg0LTQtdC50YHRgtCy0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn0JLQvdC10YjQvdC40Lkg0LbQtdGB0YLQutC40Lkg0LTQuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfQkdGA0LDQvdC00LzQsNGD0Y3RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ9Cf0YDQvtGI0LjQstC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICfQndCw0LrQvtC/0LjRgtC10LvQuCDRjdC90LXRgNCz0LjQuCDQvdCwINC80LDRhdC+0LLQuNC60LDRhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ9Ck0L7RgNC8LdGE0LDQutGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstC+0YAg0YTRgNCw0L3RiNC40LfRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9CR0LXRgdC/0LvQsNGC0L3QvtC1INCf0J4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn0J7QsdGJ0LDRjyDQuNC90YTQvtGA0LzQsNGG0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ9CT0YDQsNGE0LjRh9C10YHQutC40LUg0LrQsNGA0YLRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAn0JPRgNCw0YTQuNGH0LXRgdC60LDRjyDQutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn0JDQv9C/0LDRgNCw0YLQvdC+0LUg0L7QsdC10YHQv9C10YfQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ9Cc0L7QtNC10LvRjCDQvtCx0L7RgNGD0LTQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn0JLQtdGBINC+0LHQvtGA0YPQtNC+0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAn0JPQsNGA0L3QuNGC0YPRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAn0J/RgNC+0YLQvtC60L7QuyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDQuNC00LXQvdGC0LjRhNC40LrQsNGG0LjQtdC5INC4INC00L7RgdGC0YPQv9C+0LwgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ9CY0L3QstC10L3RgtCw0YDQvdGL0Lkg0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgdGH0LXRgtCwLdGE0LDQutGC0YPRgNGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn0JrQu9Cw0LLQuNCw0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAn0JbQmi3QvNC+0L3QuNGC0L7RgCAo0LbQuNC00LrQvtC60YDQuNGB0YLQsNC70LvQuNGH0LXRgdC60LjQuSDQtNC40YHQv9C70LXQuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ9Ch0LLQtdGC0L7QtNC40L7QtNC90YvQuSDQvNC+0L3QuNGC0L7RgCAo0YHQstC10YLQvtC40LfQu9GD0YfQsNGO0YnQuNC5INC00LjQvtC0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICfQodGC0LDRhtC40L7QvdCw0YDQvdGL0Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn0J3QvtGD0YLQsdGD0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfQqNC40YDQvtGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCAxOiDRhNC40LfQuNGH0LXRgdC60LjQuSDRg9GA0L7QstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCAyOiDRg9GA0L7QstC10L3RjCDQv9C10YDQtdC00LDRh9C4INC00LDQvdC90YvRhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn0KPRgNC+0LLQtdC90YwgMzog0YHQtdGC0LXQstC+0Lkg0YPRgNC+0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn0KPRgNC+0LLQtdC90YwgMzog0YHQtdGC0LXQstC+0Lkg0YPRgNC+0LLQtdC90YwgKNCh0YPQv9C10YDRgdC10YLRjCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn0KPRgNC+0LLQtdC90YwgNDog0KLRgNCw0L3RgdC/0L7RgNGC0L3Ri9C5INGD0YDQvtCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCA1OiDRgdC10LDQvdGB0L7QstGL0Lkg0YPRgNC+0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAn0KPRgNC+0LLQtdC90YwgNjog0YPRgNC+0LLQtdC90Ywg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCA3OiDQn9GA0LjQutC70LDQtNC90L7QuSDRg9GA0L7QstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0L7RgCDQsNGA0LXQvdC00YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICfQm9C40YbQtdC90LfQuNC+0L3QvdC+0LUg0YHQvtCz0LvQsNGI0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ9Cb0LjRhtC10L3Qt9C40L7QvdC90YvQuSDQutC70Y7Rhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfQotC40L8g0LvQuNGG0LXQvdC30LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn0KHRgNC+0Log0LTQtdC50YHRgtCy0LjRjyDQu9C40YbQtdC90LfQuNC4INC+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICfQodGA0L7QuiDQtNC10LnRgdGC0LLQuNGPINC70LjRhtC10L3Qt9C40Lgg0LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn0JvQuNGC0LjQuS3QttC10LvQtdC30L4t0YTQvtGB0YTQsNGC0L3QsNGPIChMaUZlUE80KSDQsdCw0YLQsNGA0LXRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn0JvQuNGC0LjQuS3QuNC+0L3QvdGL0LkgKExpLWlvbikg0LDQutC60YPQvNGD0LvRj9GC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINC30LDQudC80LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ9Cd0LDRhdC+0LTQuNGC0YHRjyDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfQlNC+0LvQs9C+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ9Cf0YDQvtC40LfQstC+0LTQuNGC0LXQu9GMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfQnNCw0LrRgdC40LzQsNC70YzQvdCw0Y8g0LPRgNGD0LfQvtC/0L7QtNGK0LXQvNC90L7RgdGC0YwgKNCS0YIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ9Cf0LDQvNGP0YLRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ9Ci0LjQvyDQv9Cw0LzRj9GC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ9Cc0LjQvdC4LdGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvNC+0LHQuNC70YzQvdC+0LPQviDRgtC10LvQtdGE0L7QvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ9Cc0L7QsdC40LvRjNC90YvQuS/QstGB0YLRgNC+0LXQvdC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9Cc0L7QtNC10LvRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ9Ce0L/QuNGB0LDQvdC40LUg0LzQvtC00LXQu9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ9Cg0LDQt9GA0LXRiNC10L3QuNC1INC80L7QvdC40YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn0KDQsNC30LzQtdGAINC80L7QvdC40YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQnNGL0YjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfQodC10YLRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRjyDQviDRgdC10YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0YHQtdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ9Ch0LXRgtC10LLQvtC5INGD0YDQvtCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn0J3QuNC60LXQu9GMLdC60LDQtNC80LjQtdCy0LDRjyAoTmlDZCkg0LHQsNGC0LDRgNC10Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfQndC40LrQtdC70Ywt0LzQtdGC0LDQu9C70LPQuNC00YDQuNC00L3Ri9C5IChOaU1IKSDQsNC60LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ9Ch0L7Qs9C70LDRiNC10L3QuNC1INC+INC90LXRgNCw0LfQs9C70LDRiNC10L3QuNC4IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn0JHQu9C+0LrQvdC+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQv9GA0L7RhtC10YHRgdC+0YDQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC80L7QtNGD0LvQtdC5INC+0L/QtdGA0LDRgtC40LLQvdC+0Lkg0L/QsNC80Y/RgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INCy0LjQtNC10L7QutCw0YDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC3QvNC+0L3QuNGC0L7RgCAo0L7RgNCz0LDQvdC40YfQtdGB0LrQuNC5INGB0LLQtdGC0L7QuNC30LvRg9GH0LDRjtGJ0LjQuSDQtNC40L7QtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn0J7Qv9C10YDQsNGG0LjQvtC90L3Ri9C1INGA0LDRgdGF0L7QtNGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0LfQsNC60LDQt9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn0JTRgNGD0LPQvtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQktGL0YXQvtC00YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn0J/QsNGA0YLQvdC10YDRgdC60L7QtSDRgdC+0LPQu9Cw0YjQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn0KLQuNC/INGC0LXQu9C10YTQvtC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfQpNC40LfQuNGH0LXRgdC60LjQtSDRj9C00YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ9CU0L7RgdGC0LDQstC60LAg0Y3Qu9C10LrRgtGA0L7RjdC90LXRgNCz0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ9Cf0YDQuNC+0LHRgNC10YLQtdC90L4g0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ9CT0LvRg9Cx0LjQvdCwINGB0YLQvtC50LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ9Ch0YLQvtC50LrQuCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ9Ca0LDQsdC40L3QtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLdC60LDRgNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtGLIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfQlNC+0LPQvtCy0L7RgCDQutGD0L/Qu9C4LdC/0YDQvtC00LDQttC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ9Ch0L/Rg9GC0L3QuNC60L7QstGL0Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn0JPQtdGA0LzQtdGC0LjRh9C90LDRjyDRgdCy0LjQvdGG0L7QstC+LdC60LjRgdC70L7RgtC90LDRjyDQsdCw0YLQsNGA0LXRjyAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ9Ch0LXRgNC40LnQvdGL0Lkg0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfQodC10YDQstC10YDQvdC+0LUg0L/RgNC+0LPRgNCw0LzQvNC90L7QtSDQvtCx0LXRgdC/0LXRh9C10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstC+0YAg0L7QsSDQvtC60LDQt9Cw0L3QuNC4INGD0YHQu9GD0LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfQodC10YDQstC40YHQvdCw0Y8g0LzQtdGC0LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfQotC40L8g0YDQvtC30LXRgtC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICfQn9GA0L7Qs9GA0LDQvNC80L3QvtC1INC+0LHQtdGB0L/QtdGH0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICfQlNC40L3QsNC80LjQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9Ch0YLQsNC90LTQsNGA0YLQvdGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ9Ch0YLQsNGA0YLQvtCy0YvQuSBJUC3QsNC00YDQtdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfQpdGA0LDQvdC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn0KDQsNC30LTQtdC7INC00LvRjyDRhdGA0LDQvdC10L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn0JTQvtGH0LXRgNC90Y/RjyDQutC+0LzQv9Cw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfQoNC10LfRjtC80LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfQotC+0L3QutC40Lkg0LrQu9C40LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfQndC40YLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ9Ce0LHRidCw0Y8g0L7Qv9C10YDQsNGC0LjQstC90LDRjyDQv9Cw0LzRj9GC0Ywg0LLQuNC00LXQvtC60LDRgNGC0YsgKNCT0JEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn0J7QsdGJ0LDRjyDQvtC/0LXRgNCw0YLQuNCy0L3QsNGPINC/0LDQvNGP0YLRjCAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ9Ch0LXQvdGB0L7RgNC90YvQuSDQvNC+0L3QuNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ9CR0LDRiNC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi3QutC+0L3RhtC10L3RgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICfQk9Cw0YDQvdC40YLRg9GA0LAgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC3RgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn0JLQtdCxLdC60LDQvNC10YDQsCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/sk_SK_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNrX1NLX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdWxaFlb2JlY27DqSBwcmV2w6FkemtvdsOpIMO6ZGFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnTmFzdGF2ZW5pYSBwcmUgcHJpY2jDoWR6YWrDumNlIMO6ZGFqZSDFvmlhZG9zdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdOYXN0YXZlbmlhIHByZSDDumRhamUgb2RjaMOhZHphasO6Y2VqIG9kcG92ZWRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnU3Byw6F2YSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ1ptZW5hIGRlZmluw61jaWUgdHJpZWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdabWVuYSBkZWZpbsOtY2llIMO6bG9oeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0JhbMOta3kgdHJpZWQgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnVHUgbcO0xb5ldGUgaW1wb3J0b3ZhxaUgYmFsw61reSB0cmllZCBSZWFkeTJJbXBvcnQsIGt0b3LDqSBwcmVkc3RhdnVqw7ogbmHFoWUgbmFqYmXFvm5lasWhaWUga29uZmlndXJhxI1uw6kgcG9sb8W+a3kuIFVwb3pvcsWIdWplbWUsIMW+ZSBtw7TFvmUgYnnFpSBwb3RyZWJuw6EgZG9kYXRvxI1uw6Ega29uZmlndXLDoWNpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQWt0dWFsaXrDoWNpYSBleGlzdHVqw7pjaWNoIHN1Ympla3Rvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydCB6dsOkemtvdiB0cmllZCBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ1RyaWVkYSBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICfDmmxvaGEgcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdQb2xvxb5rYSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBwcmUgdHJpZWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0FrIGNoY2V0ZSB2eXR2b3JpxaUgbm92w7ogcG9sb8W+a3Uga29uZmlndXLDoWNpZSwgdnliZXJ0ZSB0cmllZHUgem8gem96bmFtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdUcmllZGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdIcm9tYWRuw6EgYWtjaWEgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF2IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1N0YXYgaW5jaWRlbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1ByZXBvamVuaWUgbmEgaW7DvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmVzcHLDoXZuZSDEjcOtc2xvIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfEjMOtc2xvIGluZWogcG9sb8W+a3kga29uZmlndXLDoWNpZSwgcyBrdG9yb3Ugc2EgbcOhIHByZXBvamnFpS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdOYW96YWogY2hjZXRlIHTDunRvIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUgb2RzdHLDoW5pxaU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07DoXpvdiB0ZWp0byBrb25maWd1cmHEjW5laiBwb2xvxb5reSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTsOhem92IHNhIHXFviBwb3XFvsOtdmEgdiBwb2xvxb5rZSBDb25maWdJdGVtcyBzIG5hc2xlZHVqw7pjaW0gxI3DrXNsb20gKMSNw61zbGFtaSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxIzDrXNsbyB2ZXJ6aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8SMw61zbG8gdmVyemllIHRlanRvIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfEjMOtc2xvIHZlcnppZSBzYSB1xb4gcG91xb7DrXZhIHYgcG9sb8W+a2UgQ29uZmlnSXRlbXMgcyBuYXNsZWR1asO6Y2ltIMSNw61zbG9tICjEjcOtc2xhbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhdiBuYXNhZGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGF2IGluY2lkZW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmlhIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ09ic2FoIGhpc3TDs3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdadsOkxI3FoWnFpSBwb2jEvmFkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5IG5hIHN0csOhbmt1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZW5hxaFsaSBzYSDFvmlhZG5lIMO6ZGFqZSBrb25maWd1cmHEjW5laiBwb2xvxb5reS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWeWJlcnRlIHTDunRvIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTcHVzdGnFpSB2eWjEvmFkw6F2YW5pZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHByZSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnw5pyb3ZlxYggaMS6Ymt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUHJpYmzDrcW+ZW5pZS9vZGRpYWxlbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ01heGltw6FsbmEgw7pyb3ZlxYggb2RrYXpvdiBkb3NpYWhudXTDoSBwcmUgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdQb2xvxb5rYSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybcOhY2llIG8gcG9sb8W+a2Uga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdBa3R1w6Fsbnkgc3RhdiBuYXNhZGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxueSBzdGF2IGluY2lkZW50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdQb3NsZWRuw6Egem1lbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTmFwb3NsZWR5IHptZW5pbCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1ZhxaFlIHBvbG/Fvmt5IENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ1Z5aMS+YWTDoXZhbmllIHBvbG/Fvmt5IENvbmZpZ0l0ZW0nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1asO6IHNhIHRpZXRvIHRyaWVkeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1asO6IHNhIHRpZXRvIMO6bG9oeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdVcG96b3LFiHVqZW1lLCDFvmUgc2Egdnl0dm9yaWEgYWogcHLDrXNsdcWhbsOpIGR5bmFtaWNrw6kgcG9saWEgYSB0cmllZHkgR2VuZXJhbENhdGFsb2cgYSBuZWTDtGpkZSBrIGljaCBhdXRvbWF0aWNrw6ltdSBvZHN0csOhbmVuaXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQ2hjZXRlIHBva3JhxI1vdmHFpT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnUG90cmVidWpldGUgcHLDrWtsYWR5IHRyaWVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbsOtY2lhIG5pZSBqZSBwbGF0bsO9IGhhc2ggWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQcmVoxL5hZDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pZSBqZSB6YWRhbsOpIMW+aWFkbmUgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1BvdHJlYnVqZXRlIGFzcG/FiCBqZWRudSB2eWJyYW7DuiBwb2xvxb5rdSBrb25maWd1csOhY2llISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0sgdGVqdG8ga29uZmlndXJhxI1uZWogcG9sb8W+a2UgbmVtw6F0ZSBwcsOtc3R1cCBuYSB6w6FwaXM6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdQcmUgdHJpZWR1ICVzIG5lYm9sYSBkZWZpbm92YW7DoSDFvmlhZG5hIGRlZmluw61jaWEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1cmHEjW7DoSBwb2xvxb5rYSAiJXMiIG5lYm9sYSBuw6FqZGVuw6EgdiBkYXRhYsOhemUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTmVwb2RhcmlsbyBzYSBvZHN0csOhbmnFpSBrb25maWd1cmHEjW7DuiBwb2xvxb5rdSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ1ByZSBDb25maWdJdGVtSUQgJXMgbmVib2xhIG7DoWpkZW7DoSDFvmlhZG5hIHZlcnppYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIGplIHV2ZWRlbsOpIMW+aWFkbmUgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBhbmkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1Byw61zdHVwIG5pZSBqZSB1bW/Fvm5lbsO9ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW1vxb5ubyB6b2JyYXppxaUgaGlzdMOzcml1LCBuaWUgamUgemFkYW7DqSDFvmlhZG5lIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZW1vxb5ubyB6b2JyYXppxaUgaGlzdMOzcml1LCBuaWUgc8O6IGRhbsOpIMW+aWFkbmUgcHLDrXN0dXBvdsOpIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdsO9IHBydm9rIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm92w6EgdmVyemlhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF2IG5hc2FkZW5pYSBha3R1YWxpem92YW7DvSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXYgaW5jaWRlbnR1IGFrdHVhbGl6b3ZhbsO9IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgb2RzdHLDoW5lbsO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnUHJpZGFuw70gb2RrYXogbmEgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdPZGtheiBuYSAlcyAodHlwZT0lcykgb2RzdHLDoW5lbsO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbsOtY2lhIHBvbG/Fvmt5IENvbmZpZ0l0ZW0gYWt0dWFsaXpvdmFuw6EgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ07DoXpvdiBha3R1YWxpem92YW7DvSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWLDunQgJXMgYWt0dWFsaXpvdmFuw70geiAiJXMiIG5hICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyemlhICVzIG9kc3Ryw6FuZW7DoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOaWUgamUgdXZlZGVuw6kgxb5pYWRuZSBDb25maWdJdGVtSUQgYW5pIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmllIGplIG1vxb5uw6kgem9icmF6acWlIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUsIG5pZSBzw7ogZGFuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBzYSBuZW5hxaFsbyB2IGRhdGFiw6F6ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3Z5dGxhxI1lbsOpICVzIG5hICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnTmVwbGF0bsOpIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIGplIHV2ZWRlbsOpIMW+aWFkbmUgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdQcmUgdMO6dG8gdHJpZWR1IG5pZSBzw7ogdWRlbGVuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnxb1pYWRueSB2w71zbGVkb2shJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnVsO9c2xlZGt5IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdOaWUgamUgbW/Fvm7DqSB6b2JyYXppxaUgcG9sb8W+a3UsIG5pZSBzw7ogZGFuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhIHByZSBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdQb2xvxb5rYSBDb25maWdJdGVtIG5lYm9sYSBuw6FqZGVuw6EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05lbmHFoWxpIHNhIMW+aWFkbmUgdmVyemllISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ3ByZXbDoWR6a292w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ3Vwb3pvcm5lbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXYgbmFzYWRlbmlhIHRlanRvIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF2IGluY2lkZW50dSB0ZWp0byBrb25maWd1cmHEjW5laiBwb2xvxb5reSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ8W9aWFkbmUgcG92b2xlbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBqZSBuZXBsYXRuw70hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdWeWjEvmFkw6F2YWNpZSBwYXJhbWV0cmUgc8O6IG5lcGxhdG7DqSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdab2JyYXplbsOpIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwIHN0YXZ1IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUeXAgYWt0dcOhbG5laG8gaW5jaWRlbnR1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lZHppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPYm1lZHplbmlhIHRyaWVkeSBwcmUgcG9sb8W+a3Uga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsO9YmVyIGplZG5laiBhbGVibyB2aWFjZXLDvWNoIHRyaWVkIG5hIG9ibWVkemVuaWUgdnliZXJhdGXEvm7DvWNoIHBvbG/FvmllayBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPYm1lZHplbmlhIHRyaWVkeSBwcmUgcG9sb8W+a3Uga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDvWJlciBqZWRuZWogYWxlYm8gdmlhY2Vyw71jaCB0cmllZCBuYSBvYm1lZHplbmllIHZ5YmVyYXRlxL5uw71jaCBwb2xvxb5pZWsga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWNrw6kgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWNrw70gKHZlcnppYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVHlwIG9ka2F6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfEjGkgc2EgdG90byBwcmVwb2plbmllIHZ6xaVhaHVqZSBuYSBDb25maWdJdGVtIGFsZWJvIHN0YXRpY2vDuiB2ZXJ6aXUgb2RrYXp1asO6Y2VobyBvYmpla3R1LiBWw71wb8SNZXQgYWt0dcOhbG5laG8gc3RhdnUgaW5jaWRlbnR1IHNhIHZ5a29uw6F2YSBsZW4gcHJpIGR5bmFtaWNrw71jaCBvZGthem9jaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWeWJlcnRlIGF0cmliw7p0LCBwb2TEvmEga3RvcsOpaG8gc2EgYnVkw7ogdnloxL5hZMOhdmHFpSBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdaw6FrbGFkbsOhIMWhdHJ1a3TDunJhIG5pZSBqZSBwbGF0bsOhLiBQb3NreXRuaXRlIGhhc2ggcyDDumRham1pIHZvIGZvcm3DoXRlIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnUmXFpWF6ZWMgWUFNTCBzYSBtdXPDrSB6YcSNw61uYcWlIHpuYWtvbSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOZXBvZGFyaWxvIHNhIHZ5xI1pc3RpxaUgdGFidcS+a3UgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTmVib2xpIG7DoWpkZW7DqSDFvmlhZG5lIHJlbGV2YW50bsOpIGR5bmFtaWNrw6kgcG9saWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOZXBvZGFyaWxvIHNhIHZsb8W+acWlIGRvIHRhYnXEvmt5IGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVmxvxb5lbmllIDAgcmlhZGtvdiBkbyB0YWJ1xL5reSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4aW3DoWxueSBwb8SNZXQgamVkbsOpaG8gcHJ2a3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnUmXFpWF6ZWMgdmVyemllJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0NoeWJhIHByaSBzeW5jaHJvbml6w6FjaWkgZGVmaW7DrWNpw60uIFNrb250cm9sdWp0ZSwgcHJvc8OtbSwgcHJvdG9rb2wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnTcOhdGUgZGVmaW7DrWNpZSBJVFNNQ29uZmlnSXRlbSwga3RvcsOpIG5pZSBzw7ogc3luY2hyb25pem92YW7DqS4gTmFzYcSPdGUgZHluYW1pY2vDqSB6bWVueSBwb2zDrSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1Z5cHLFoWFsYSBwbGF0bm9zxaUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfDmmRyxb5iYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbMOhbm92YW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdPcHJhdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ25hIGTDtGNob2RrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQcmVoxL5hZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdG92YW5pZS9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUHJlaMS+YWQgYSBwb3R2cmRlbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydG92YW5pZSB0cmllZC9yb2zDrSBhIGljaCBzw7p2aXNpYWNpY2ggcG9sw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdQb8SNYXMgaW1wb3J0dSB0cmllZHkgZG/FoWxvIGsgY2h5YmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa3J5dMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBab2JyYXplbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvsWIdWplIHJvesWhw61yZW7DqSBwb2RtaWVua3kgdnloxL5hZMOhdmFuaWEgdiBrb25maWd1cmHEjW5laiBwb2xvxb5rZSB2eWjEvmFkw6F2YW5pYSB2IHJvemhyYW7DrSBhZ2VudGEuIFBvbW9jb3UgdGVqdG8gZnVua2NpZSBtw7TFvmV0ZSB2eWjEvmFkw6F2YcWlIG5hcHIuIG7DoXpvdiBrb25maWd1cmHEjW5laiBwb2xvxb5reSBzIHBvZG1pZW5rYW1pIHR5cHUgIigqa2V5MSomJiprZXkyKikiIGFsZWJvICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVW1vxb7FiHVqZSByb3rFocOtcmVuw6kgcG9kbWllbmt5IHZ5aMS+YWTDoXZhbmlhIHZvIHZ5aMS+YWTDoXZhbsOtIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIHrDoWthem7DrWthLiBQb21vY291IHRlanRvIGZ1bmtjaWUgbcO0xb5ldGUgdnloxL5hZMOhdmHFpSBuYXByLiBuw6F6b3Yga29uZmlndXJhxI1uZWogcG9sb8W+a3kgcG9tb2NvdSBwb2RtaWVub2sgdHlwdSAiKCprZXkxKiYmKmtleTIqKSIgYWxlYm8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQcmlyYWRlbsOpIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHByaXJhZGVuw6kgayB6w6FrYXpuw61ja2VqIHNwb2xvxI1ub3N0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHByaXJhZGVuw6kgcG91xb7DrXZhdGXEvm92aSB6w6FrYXpuw61rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnTmFzdGF2ZW5pYSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdLb250cm9sb3ZhxaUgamVkaW5lxI1uw70gbsOhem92IGxlbiB2IHLDoW1jaSB0ZWogaXN0ZWogdHJpZWR5IENvbmZpZ0l0ZW0gKCJjbGFzcyIpIGFsZWJvIGdsb2LDoWxuZSAoImdsb2JhbCIpLCDEjW8gem5hbWVuw6EsIMW+ZSBwcmkgaMS+YWRhbsOtIGR1cGxpa8OhdG92IHNhIGJlcmllIGRvIMO6dmFoeSBrYcW+ZMO9IGV4aXN0dWrDumNpIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdWeWJlcnRlIG1vZHVsIG5hIHZ5bsO6dGVuaWUgc2Now6lteSBwb21lbm92YW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1Z5YmVydGUgc2kgbW9kdWwgbmEgdnluw7p0ZW5pZSDEjcOtc2VsbmVqIHNjaMOpbXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1Z5YmVydGUgbW9kdWwgbmEgdnluw7p0ZW5pZSBzY2jDqW15IHJlxaVhemNhIHZlcnppw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVnliZXJ0ZSBhdHJpYsO6dHksIGt0b3LDqSBzcHVzdGlhIHZ5dHZvcmVuaWUgbm92ZWogdmVyemllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdWeWJlcnRlIGthdGVnw7NyaWUsIGt0b3LDqSBjaGNldGUgcHJpcmFkacWlIHRlanRvIHRyaWVkZSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cmUgc3TEunBjb3bDvWNoIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHByZSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnU3TEunBjZSwga3RvcsOpIG1vxb5ubyBmaWx0cm92YcWlIHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIGFnZW50YS4gUG96bsOhbWthOiBQb3ZvbGVuw6kgc8O6IGxlbiBhdHJpYsO6dHkga29uZmlndXJhxI1uZWogcG9sb8W+a3kgYSBkeW5hbWlja8OpIHBvbGlhIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdQb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdQcmlkYW5pZSBwb2xvxb5reSBrb25maWd1csOhY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ8OacHJhdmEgcG9sb8W+a3kga29uZmlndXLDoWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCB1ZGFsb3N0w60ga29uZmlndXJhxI1uZWogcG9sb8W+a3ksIGt0b3LDvSB1bW/FvsWIdWplIHphem5hbWVuw6F2YW5pZSBkbyBoaXN0w7NyaWUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bCB1ZGFsb3N0w60ga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWssIGt0b3LDvSBha3R1YWxpenVqZSBrb25maWd1cmHEjW7DqSBwb2xvxb5reSBwb2TEvmEgaWNoIGFrdHXDoWxuZWogZGVmaW7DrWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdWw71zdHVwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1RsYcSNIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ1ByaWJsw63FvmVuaWUga29uZmlndXJhxI1uZWogcG9sb8W+a3kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnU3Ryb21vdsOpIHpvYnJhemVuaWUgcG9sb8W+a3kgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdWZXJ6aWEgcG9sb8W+a3kgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdQb2xvxb5reSBDb25maWdJdGVtcyBuYXNsZWR1asO6Y2ljaCB0cmllZCBuZWJ1ZMO6IHVsb8W+ZW7DqSBuYSBzZXJ2ZXJpIEVsYXN0aWNzZWFyY2guIEFrIGNoY2V0ZSB0w7p0byBtb8W+bm9zxaUgcG91xb5pxaUgbmEgZXhpc3R1asO6Y2UgQ0ksIGplIHBvdHJlYm7DqSBwbyB6bWVuZSB0ZWp0byBtb8W+bm9zdGkgc3B1c3RpxaUgbWlncsOhY2l1IENJIHByb3N0cmVkbsOtY3R2b20ga29uem9seS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnUG9sb8W+a3kgQ29uZmlnSXRlbXMgcyBuYXNsZWR1asO6Y2ltaSBzdGF2bWkgbmFzYWRlbmlhIG5lYnVkw7ogdWxvxb5lbsOpIG5hIHNlcnZlcmkgRWxhc3RpY3NlYXJjaC4gQWsgY2hjZXRlIHTDunRvIG1vxb5ub3PFpSBwb3XFvmnFpSBuYSBleGlzdHVqw7pjZSBDSSwgamUgcG90cmVibsOpIHBvIHptZW5lIHRlanRvIG1vxb5ub3N0aSBzcHVzdGnFpSBtaWdyw6FjaXUgQ0kgcHJvc3RyZWRuw61jdHZvbSBrb256b2x5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdCBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1csOhY2lhIExpbWl0IHBvbG/Fvmt5IG5hIHN0csOhbmt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWLDoXphIG5hIHNwcsOhdnUga29uZmlndXLDoWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0hyb21hZG7DvSBtb2R1bCBrb25maWd1cmHEjW5laiBwb2xvxb5reS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVnloxL5hZMOhdmFuaWUga29uZmlndXJhxI1uZWogcG9sb8W+a3kgYmFja2VuZG92w6lobyBzbWVyb3ZhxI1hIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdWeXR2b3JlbmllIGEgc3Byw6F2YSBkZWZpbsOtY2nDrSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdWeXR2w6FyYSBsw61zdGt5IHByZSBwb2xvxb5reSBDb25maWdJdGVtcyB2IHVyxI1pdMO9Y2ggxI1hc292w71jaCBib2RvY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ1rDoWthem7DrWNpIG3DtMW+dSB2aWRpZcWlIGhpc3Rvcmlja8OpIHZlcnppZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnWsOha2F6bsOtY2kgbWFqw7ogbW/Fvm5vc8WlIG1hbnXDoWxuZSBwcmVww61uYcWlIG1lZHppIGhpc3Rvcmlja8O9bWkgdmVyemlhbWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnUHJlZHZvbGVuw6kgw7pkYWplLCBrdG9yw6kgc2EgbWFqw7ogcG91xb5pxaUgbmEgb2JyYXpvdmtlIHZ5aMS+YWTDoXZhbmlhIGF0cmliw7p0b3Yga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuIFByw61rbGFkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1ByZWR2b2xlbsOpIMO6ZGFqZSwga3RvcsOpIHNhIG1hasO6IHBvdcW+acWlIG5hIG9icmF6b3ZrZSB2eWjEvmFkw6F2YW5pYSBhdHJpYsO6dG92IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLiBQcsOta2xhZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmludWp0ZSBBa2NpZSwgcHJpIGt0b3LDvWNoIGplIHZvIHdpZGdldGUgcHJlcG9qZW7DvWNoIG9iamVrdG92IGsgZGlzcG96w61jaWkgdGxhxI1pZGxvIG5hc3RhdmVuaWEgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVXBvem9yxYh1amVtZSwgxb5lIHRpZXRvIEFrY2llIG11c2lhIG1hxaUgemFyZWdpc3Ryb3ZhbsOpIG5hc2xlZHVqw7pjZSBzw7pib3J5IEpTIGEgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmlub3ZhbmllIHNjaMOpbXkgVGVtcGxhdGU6OlRvb2xraXQgcHJlIHJlxaVhemNlIHZlcnppw60uIFBvdcW+w612YSBzYSBsZW4gdnRlZHksIGFrIGplIG1vZHVsIFZlcnNpb24gU3RyaW5nIG5hc3RhdmVuw70gbmEgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW51anRlIHPDumJvciBwb2RtaWVub2ssIHphIGt0b3LDvWNoIG3DtMW+ZSB6w6FrYXpuw61rIHZpZGllxaUgcG9sb8W+a3Uga29uZmlndXLDoWNpZS4gUG9kbWllbmt5IG3DtMW+dSBiecWlIHZvbGl0ZcS+bmUgb2JtZWR6ZW7DqSBuYSB1csSNaXTDqSBza3VwaW55IHrDoWthem7DrWtvdi4gTsOhem92IGplIGplZGluw70gcG92aW5uw70gYXRyaWLDunQuIEFrIG5pZSBzw7ogemFkYW7DqSDFvmlhZG5lIMSPYWzFoWllIG1vxb5ub3N0aSwgdsWhZXRreSBrb25maWd1cmHEjW7DqSBwb2xvxb5reSBidWTDuiB2aWRpdGXEvm7DqSB2IHLDoW1jaSB0ZWp0byBrYXRlZ8OzcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgcG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHZ5bWF6YW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNIHBvbW9jb3UgdsWhZW9iZWNuw6lobyByb3pocmFuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgesOtc2thbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gcG9tb2NvdSB2xaFlb2JlY27DqWhvIHJvemhyYW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSB2eWjEvmFkw6F2YW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNIHBvbW9jb3UgdsWhZW9iZWNuw6lobyByb3pocmFuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgbmFzdGF2ZW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNIHBvbW9jb3UgdsWhZW9iZWNuw6lobyByb3pocmFuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmludWplIG1vZHVsIHByZWjEvmFkdSBuYSB6b2JyYXplbmllIG1hbMOpaG8gem9icmF6ZW5pYSB6b3puYW11IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbnVqZSwgxI1pIHNhIHYgc3BvamVuaWFjaCB1emxvdiBtdXNpYSB6b2JyYXpvdmHFpSB6bmHEjWt5IHR5cHUgc3BvamVuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbnVqZSByZWd1bMOhcm5lIHbDvXJhenkgamVkbm90bGl2byBwcmUga2HFvmTDuiB0cmllZHUgQ29uZmlnSXRlbSBuYSBrb250cm9sdSBuw6F6dnUgQ29uZmlnSXRlbSBhIHpvYnJhemVuaWUgcHLDrXNsdcWhbsO9Y2ggY2h5Ym92w71jaCBzcHLDoXYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgZG9zdHVwbsOpIHN0xLpwY2UgQ0kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6w6F2aXNsb3N0aSBvZCB0cmllZHkgQ0kuIEthxb5kw6EgcG9sb8W+a2EgbXVzw60gcG96b3N0w6F2YcWlIHogbsOhenZ1IHRyaWVkeSBhIHBvxL5hIGRvc3R1cG7DvWNoIHBvbMOtIHByZSBwcsOtc2x1xaFuw7ogdHJpZWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzaWEgcmXFoXBla3RvdmHFpSBzY2jDqW11IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DvSBhdHJpYsO6dCBwb2xvxb5reSBrb25maWd1csOhY2llIHByZSB0cmllZGVuaWUgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgdm8gdsO9c2xlZGt1IHZ5aMS+YWTDoXZhbmlhIHBvbG/FvmllayBrb25maWd1csOhY2llIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHByZWR2b2xlbsO9IGF0cmliw7p0IHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgcHJlIHRyaWVkZW5pZSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gYXRyaWLDunQgcG9sb8W+a3kga29uZmlndXLDoWNpZSBwcmUgdHJpZWRlbmllIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgdm8gdsO9c2xlZGt1IHZ5aMS+YWTDoXZhbmlhIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgdGVqdG8gb3BlcsOhY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw6kgcG9yYWRpZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gYWdlbnRhLiBOYWhvcjogbmFqc3RhcsWhaWUgbmEgdnJjaHUuIE5hZG9sOiBuYWpub3bFoWllIG5hIHZyY2h1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw6kgcG9yYWRpZSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgdiByb3pocmFuw60gesOha2F6bsOta2EuIE5haG9yOiBuYWpzdGFyxaFpZSBuYSB2cmNodS4gTmFkb2w6IG5ham5vdsWhaWUgbmEgdnJjaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DqSB6b2JyYXplbsOpIHN0xLpwY2UgQ0kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6w6F2aXNsb3N0aSBvZCB0cmllZHkgQ0kuIEthxb5kw6EgcG9sb8W+a2EgbXVzw60gcG96b3N0w6F2YcWlIHogbsOhenZ1IHRyaWVkeSBhIHBvxL5hIGRvc3R1cG7DvWNoIHBvbMOtIHByZSBwcsOtc2x1xaFuw7ogdHJpZWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzaWEgcmXFoXBla3RvdmHFpSBzY2jDqW11IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmludWplIHByZWR2b2xlbsO6IGjEumJrdSB2esWlYWhvdiwga3RvcsOpIHNhIG1hasO6IHpvYnJhem92YcWlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DvSB6b2JyYXplbsO9IGF0cmliw7p0IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHByZSBvYnJhem92a3UgdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DvSB6b2JyYXplbsO9IGF0cmliw7p0IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHByZSBvYnJhem92a3UgdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuIFByw61rbGFkOiAiS2V5IiAoS8S+w7rEjSkgbXVzw60gbWHFpSBuw6F6b3YgZHluYW1pY2vDqWhvIHBvxL5hIHYgdG9tdG8gcHLDrXBhZGUgIlgiLCAiQ29udGVudCIgKE9ic2FoKSBtdXPDrSBtYcWlIGhvZG5vdHUgZHluYW1pY2vDqWhvIHBvxL5hIHYgesOhdmlzbG9zdGkgb2QgdHlwdSBkeW5hbWlja8OpaG8gcG/EvmEsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGEgYWxlYm8gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9dMO9xb5kZcWIOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1QcmVkOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gcG9kb2JqZWt0IHRyaWVkeSAiSVRTTUNvbmZpZ0l0ZW0iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgZG9zdHVwbsOpIHN0xLpwY2UgQ0kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6w6F2aXNsb3N0aSBvZCB0cmllZHkgQ0kuIEthxb5kw6EgcG9sb8W+a2EgbXVzw60gcG96b3N0w6F2YcWlIHogbsOhenZ1IHRyaWVkeSBhIHBvxL5hIGRvc3R1cG7DvWNoIHBvbMOtIHByZSBwcsOtc2x1xaFuw7ogdHJpZWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzaWEgcmXFoXBla3RvdmHFpSBzY2jDqW11IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvcWha3Uga29tcG9uZW50dSB0ZXh0b3bDqWhvIGVkaXRvcmEgcHJlIHTDunRvIG9icmF6b3ZrdS4gWmFkYWp0ZSDEjcOtc2xvIChwaXhlbHkpIGFsZWJvIHBlcmNlbnR1w6FsbnUgaG9kbm90dSAocmVsYXTDrXZudSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxI1ldCByaWFka292IHByZSBlZGl0b3IgZGVmaW7DrWNpw60gQ0kgdiByb3pocmFuw60gc3Byw6F2Y3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvcmFkaWUgaW5jaWRlbnRuw71jaCBzdGF2b3Ygb2Qgdnlzb2vDqWhvIChuYXByLiBjcmljaXRhbCkgcG8gbsOtemt5IChuYXByLiBmdW5jdGlvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcsOtc2x1xaFuw6kgc3RhdnkgbmFzYWRlbmlhLCB2IGt0b3LDvWNoIG3DtMW+dSBwcmVwb2plbsOpIHRpcHkgb3ZwbHl2bmnFpSBzdGF2IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIGxpbWl0IHZ5aMS+YWTDoXZhbmlhIHByZSBvYnJhem92a3UgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBsaW1pdCB2eWjEvmFkw6F2YW5pYSBwcmUgb2JyYXpvdmt1IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgbGltaXQgdnloxL5hZMOhdmFuaWEgcHJlIG9icmF6b3ZrdSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIGxpbWl0IHZ5aMS+YWTDoXZhbmlhIHByZSBvYnJhem92a3UgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW51amUgem9icmF6ZW7DqSBzdMS6cGNlIENJIHYga29tcGxleG5vbSB6b2JyYXplbsOtIHRhYnXEvmt5IHByZXBvamVuw60gcHJlIHbFoWV0a3kgdHJpZWR5IENJLiBBayBuZWV4aXN0dWplIMW+aWFkbmEgcG9sb8W+a2EsIHpvYnJhemlhIHNhIHByZWR2b2xlbsOpIHN0xLpwY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbnVqZSB6b2JyYXplbsOpIHN0xLpwY2UgQ0kgdiBrb21wbGV4bm9tIHpvYnJhemVuw60gdGFidcS+a3kgcHJlcG9qZW7DrSB2IHrDoXZpc2xvc3RpIG9kIHRyaWVkeSBDSS4gS2HFvmTDvSB6w6F6bmFtIG11c8OtIG1hxaUgcHJlZHBvbnUgcyBuw6F6dm9tIHRyaWVkeSBhIGR2b2ppdMO9bWkgZHZvamJvZGthbWkgKHQuIGouIENvbXB1dGVyOjopLiBFeGlzdHVqZSBuaWVrb8S+a28gQ0ktQXR0cmlidXRlcyAoYXRyaWLDunRvdiBDSSksIGt0b3LDqSBzw7ogc3BvbG/EjW7DqSBwcmUgdsWhZXRreSBDSSAocHLDrWtsYWQgcHJlIHRyaWVkdSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gTmEgem9icmF6ZW5pZSBqZWRub3RsaXbDvWNoIENJLWF0cmliw7p0b3YgZGVmaW5vdmFuw71jaCB2IENJLWRlZmluw61jaWkgc2EgbXVzw60gcG91xb5pxaUgbmFzbGVkdWrDumNhIHNjaMOpbWEgKHByw61rbGFkIHByZSB0cmllZHUgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gQWsgcHJlIHRyaWVkdSBDSSBuZWV4aXN0dWplIMW+aWFkbmEgcG9sb8W+a2EsIHpvYnJhemlhIHNhIHByZWR2b2xlbsOpIHN0xLpwY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW51amUsIGt0b3LDqSBwb2xvxb5reSBzw7ogayBkaXNwb3rDrWNpaSBwcmUgIkFjdGlvbiIgdiB0cmV0ZWogw7pyb3ZuaSDFoXRydWt0w7pyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbnVqZSwga3RvcsOpIHBvbG/Fvmt5IHPDuiBkb3N0dXBuw6kgdiBwcnZlaiDDunJvdm5pIMWhdHJ1a3TDunJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbnVqZSwga3RvcsOpIHBvbG/Fvmt5IHPDuiBkb3N0dXBuw6kgdiBkcnVoZWogw7pyb3ZuaSDFoXRydWt0w7pyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnVXLEjXVqZSwga3RvcsO9IHR5cCBwcmVwb2plbmlhIChwb21lbm92YW7DvSB6IHBvaMS+YWR1IHRpa2V0dSkgbcO0xb5lIG92cGx5dm5pxaUgc3RhdiBwcmVwb2plbmVqIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0b3LDvSB0eXAgdGlwdSBtw7TFvmUgb3ZwbHl2bmnFpSBzdGF2IHByZXBvamVuZWogQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQWt0dWFsaXrDoWNpYSBkZWZpbsOtY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdPZHN0csOhbmVuaWUgcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0ZhcmJhIHN0YXZ1IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgdWRhbG9zdMOtIGR5bmFtaWNrw71jaCBwb2zDrSwga3RvcsO9IG96bmHEjcOtIGRlZmluw61jaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgYWtvIG5lc3luY2hyb25pem92YW7DqSwgYWsgc2Egem1lbmlhIGR5bmFtaWNrw6kgcG9saWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OpIHBvbGlhIHpvYnJhemVuw6kgbmEgb2JyYXpvdmtlIMSPYWzFocOtY2ggcG9sw60gSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWNrw6kgcG9saWEgem9icmF6ZW7DqSBuYSBvYnJhem92a2UgcHJlaMS+YWR1IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIHrDoWthem7DrWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OpIHBvbGlhIHpvYnJhemVuw6kgbmEgb2JyYXpvdmtlIHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnUG92b2zDrSBmdW5rY2l1IGhyb21hZG5laiBha2NpZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSBwcmUgZnJvbnRlbmQgYWdlbnRhIG5hIHByw6FjdSBzIHZpYWMgYWtvIGplZG5vdSBrb25maWd1cmHEjW5vdSBwb2xvxb5rb3UgbmFyYXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdTdGF2IG5hc2FkZW5pYSB0ZWp0byBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHVsIHVkYWxvc3RpIG5hIG5hc3RhdmVuaWUgY29uZmlnaXRlbS1zdGF0dXMgbmEgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnUG9saWEgaW5kZXh1IGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5LCBrdG9yw6kgc2EgcG91xb7DrXZhasO6IG5hIGZ1bGx0ZXh0b3bDqSB2eWjEvmFkw6F2YW5pZS4gUG9saWEgc8O6IHRpZcW+IHVsb8W+ZW7DqSwgYWxlIG5pZSBzw7ogcG92aW5uw6kgcHJlIGNlbGtvdsO6IGZ1bmvEjW5vc8WlLiBaYWhybnV0aWUgcHLDrWxvaCBtb8W+bm8gemFrw6F6YcWlIG5hc3RhdmVuw61tIHBvbG/Fvmt5IG5hIGhvZG5vdHUgMCBhbGVibyBqZWogdnltYXphbsOtbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1BvbGlhIHVsb8W+ZW7DqSB2IGluZGV4ZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSwga3RvcsOpIHNhIG9rcmVtIGZ1bGx0ZXh0b3bDqWhvIHZ5aMS+YWTDoXZhbmlhIHBvdcW+w612YWrDuiBhaiBuYSBpbsOpIMO6xI1lbHkuIFByZSDDunBsbsO6IGZ1bmvEjW5vc8WlIHPDuiB2xaFldGt5IHBvbGlhIHBvdmlubsOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHLDoWNpYSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcmUgdnJzdHZ1IHZ5dm9sw6F2YcSNYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0csOhY2lhIG1vZHVsdSBHZW5lcmljSW50ZXJmYWNlIHByZSB2cnN0dnUgdnl2b2zDoXZhxI1hIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0csOhY2lhIG1vZHVsdSBHZW5lcmljSW50ZXJmYWNlIHByZSB2cnN0dnUgdnl2b2zDoXZhxI1hIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUHJlaMS+YWQga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWjFlcWIYSBzdGF2eSBuYXNhZGVuaWEgZG8gdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaMWVxYhhIHN0YXZ5IGluY2lkZW50b3YgZG8gdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltw6FsbnkgcG/EjWV0IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLCBrdG9yw6kgc2Egem9icmF6aWEgdm8gdsO9c2xlZGt1IHRlanRvIG9wZXLDoWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCBuYSBrb250cm9sdSBza3VwaW55IHpvZHBvdmVkbmVqIHphIHRyaWVkdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCBuYSBrb250cm9sdSBza3VwaW55IHpvZHBvdmVkbmVqIHphIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgbmEgZ2VuZXJvdmFuaWUgxaF0YXRpc3TDrWsga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOw6F6b3YgbW9kdWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdNb2R1bCDEjcOtc2xhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvxI1ldCBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllaywga3RvcsOpIHNhIG1hasO6IHpvYnJhemnFpSBuYSBrYcW+ZGVqIHN0csOhbmtlIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvxI1ldCBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllaywga3RvcsOpIHNhIG1hasO6IHpvYnJhemnFpSBuYSBrYcW+ZGVqIHN0csOhbmtlIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSB2IHJvemhyYW7DrSB6w6FrYXpuw61rYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0eSwga3RvcsOpIHNhIG1hasO6IHZ5aMS+YWTDoXZhxaUsIGtvxL5rbyB6w6F6bmFtb3YgYSBrdG9yw6kgYXRyaWLDunR5IHNhIG1hasO6IHpvYnJhemnFpS4gQXRyaWLDunR5IENvbmZpZ0l0ZW0gbXVzaWEgYnnFpSBleHBsaWNpdG5lIHVsb8W+ZW7DqSBwcm9zdHJlZG7DrWN0dm9tIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1ByZWjEvmFkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBrYXRlZ8OzcmllIHRyaWVkIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHN0xLpwY292w6kgZmlsdHJlIHByZWjEvmFkdSBtYWzDvWNoIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLiBVcG96b3JuZW5pZTogbmFzdGF2ZW5pZSBob2Rub3R5ICJBa3TDrXZuZSIgbmEgMCB6YWJyw6FuaSBhZ2VudG9tIHVwcmF2b3ZhxaUgbmFzdGF2ZW5pYSB0ZWp0byBza3VwaW55IGliYSB2IGljaCBvc29ibsO9Y2ggbmFzdGF2ZW5pYWNoLCBhbGUgc3Byw6F2Y29tIHN0w6FsZSB1bW/Fvm7DrSB1cHJhdm92YcWlIG5hc3RhdmVuaWEgdiBtZW5lIGluw6lobyBwb3XFvsOtdmF0ZcS+YS4gUG9tb2NvdSBwb2xvxb5reSBcJ1ByZWZlcmVuY2VHcm91cFwnIG3DtMW+ZXRlIG92bMOhZGHFpSwgdiBrdG9yZWogb2JsYXN0aSBzYSBtYWrDuiB0aWV0byBuYXN0YXZlbmlhIHpvYnJhem92YcWlIHYgcG91xb7DrXZhdGXEvnNrb20gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgc3RhdnkgbmFzYWRlbmlhIHNhIHZ5ZmFyYmlhIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHN0YXZ5IG5hc2FkZW5pYSB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgcHLDrWtsYWR5IHNrdXDDrW4gb3Byw6F2bmVuw60gdsWhZW9iZWNuw71jaCBhdHJpYsO6dG92IGthdGFsw7NndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgbW9kdWx1IG7DoXp2dSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgbW9kdWwgxI3DrXNsYSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHN0csOhbm9rIChuYSBrdG9yw71jaCBzYSB6b2JyYXp1asO6IGtvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBtb2R1bCByZcWlYXpjYSB2ZXJ6aWUgcHJlIHRyaWVkeSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBtb2R1bCDFoWFibMOzbnkgcmXFpWF6Y2EgdmVyemllIHByZSB0cmllZHkga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6b2JyYXplbsOtIHByZWZlcmVuY2nDrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHNww7rFocWlYcSNIHZlcnppZSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdTa3VwaW5hIG9wcsOhdm5lbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+aXRpZSBha2NpZSBwcmlwb2plbmlhIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgcG9sb8W+a3kga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSBuYSB2eWjEvmFkw6F2YW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSB2eWjEvmFkw6F2YW5pYSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIHrDoWthem7DrWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHpvYnJhemVuaWEgc3Ryb211IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSB6dsOkxI3FoWVuaWEga29uZmlndXJhxI1uZWogcG9sb8W+a3kgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgcHJpZGFuaWEgcG9sb8W+a3kga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgcG9sb8W+a3kgaHJvbWFkbmVqIGtvbmZpZ3Vyw6FjaWUgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IMO6cHJhdiBwb2xvxb5reSBrb25maWd1csOhY2llIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSBwb2xvxb5reSBoaXN0w7NyaWUga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHRsYcSNIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgb2RzdHLDoW5lbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1Z5aMS+YWTDoXZhbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXV0b21hdGlja8OpIG5hc3RhdmVuaWUgc3RhdnUgaW5jaWRlbnR1IENJLCBrZcSPIGplIHRpa2V0IHByZXBvamVuw70gcyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYXN0YXbDrSBzdGF2IG5hc2FkZW5pYSBuYSBvYnJhem92a2UgaHJvbWFkbmVqIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYXN0YXbDrSBzdGF2IHVkYWxvc3RpIG5hIG9icmF6b3ZrZSBocm9tYWRuZWogcG9sb8W+a3kga29uZmlndXLDoWNpZSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlLCBrdG9yw70gdW1vxb7FiHVqZSBwcmVwb2plbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHMgaW7DvW0gb2JqZWt0b20gdiB6b2JyYXplbsOtIHp2w6TEjcWhZW5pYSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgcHLDrXN0dXAgayBoaXN0w7NyaWkga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSBwcsOtc3R1cCBrIGhpc3TDs3JpaSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IGplaiB6dsOkxI3FoWVub20gem9icmF6ZW7DrSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgb2RzdHLDoW5lbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgamVqIHp2w6TEjcWhZW5vbSB6b2JyYXplbsOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSB6b2JyYXplbmllIG9ka2F6b3YgbmEga29uZmlndXJhxI1uw6kgcG9sb8W+a3kgYWtvIHN0cm9tb3bDqSB6b2JyYXplbmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIGR1cGxpa292YW5pZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IHByZWjEvmFkZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIGR1cGxpa292YW5pZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IGplaiB6dsOkxI3FoWVub20gem9icmF6ZW7DrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgw7pwcmF2dSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IGplaiB6dsOkxI3FoWVub20gem9icmF6ZW7DrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgbsOhdnJhdCBkbyB6b2JyYXplbmlhIHp2w6TEjcWhZW5pYSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgdGxhxI0ga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBqZWogenbDpMSNxaFlbm9tIHpvYnJhemVuw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSBwcmlibMOtxb5lbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gaGlzdMOzcml1IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrICh2IG9wYcSNbm9tIHBvcmFkw60pIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnUHJlZHZvbGVuw6Ega2F0ZWfDs3JpYSwga3RvcsOhIHNhIHpvYnJhesOtLCBhayBuaWUgamUgdnlicmF0w6Egxb5pYWRuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa8OhdG9yIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5LCBuYXByLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gUHJlZHZvbGVuw6EgaG9kbm90YSBqZSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpY2t5IHNww7rFocWlYSBpbnZva8OhdG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyemlhIFJlxaVhemVjIHZ5amFkcmVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnTW9kdWwgcmXFpWF6Y2EgdmVyemllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1Nww7rFocWlYcSNIHZlcnppZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnxIxpIGplIG1vxb5uw6kgdnlobsO6xaUgc2Egdnlrb25hbml1IHByw61rYXp1IENvbmZpZ0l0ZW1BQ0wga29udHJvbG91IHrDoXZpc2xvc3TDrSBwb2zDrSB1bG/FvmVuw71jaCB2IG1lZHppcGFtw6R0aS4gVG90byBtw7TFvmUgemxlcMWhacWlIMSNYXN5IG5hxI3DrXRhbmlhIGZvcm11bMOhcm92LCBhbGUgbXVzw60gYnnFpSB2eXBudXTDqSwgYWsgc2EgbWFqw7ogcG91xb7DrXZhxaUgQUNMTW9kdWx5IHByZSBJVFNNQ29uZmlnSXRlbS0gYSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnS3RvcsOpIHbFoWVvYmVjbsOpIGluZm9ybcOhY2llIHPDuiB1dmVkZW7DqSB2IHrDoWhsYXbDrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICd0cmllZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYsOhbG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a8SNbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVkcHJvZHVrxI1uw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3TDrXZuZSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwYWxjYSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBhbGNvdiAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHBhbGNhICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHBhbGNhICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktcGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwYWxjYSAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwYWxjb3YgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLXBhbGNvdsO9IHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgcGFsY2EgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1wYWxjb3bDvSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBhbGNhICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwYWxjb3YgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHBhbGNhICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcGFsY2EgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcGFsY2EgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHBhbGNhICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwYWxjYSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcGFsY2EgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHBhbGNvdiAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHBhbGNhICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcGFsY2EgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwYWxjYSAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcGFsY2EgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcGFsY2EgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcGFsY2EgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwYWxjYSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHBhbGNvdiAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBhbGNvdiAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgcGFsY2EgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IHBhbGNhICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHBhbGNhICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBhbGNvdiAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBwYWxjYSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnw5rEjXRvdm7DrWN0dm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdQcmlkZcS+b3ZhbmllIGFkcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnU3Byw6F2Y2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbMOzZ292w70gdGVsZWbDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUeXAgc3BvdHJlYmnEjWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdLYXBhY2l0YSBiYXTDqXJpZSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1R5cCBiYXTDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J1ZG92YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnUm96aHJhbmllIHpiZXJuaWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnVHJpZWRhIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYWNpdGEgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thcGFjaXRhIG5hIGdyYWZpY2vDuiBrYXJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ8SMw61zbG8ga2FydHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfEjMOtdGHEjWthIGthcmlldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUeXAga2FydHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmlrw6F0eSBrbGllbnRvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbnRza3kgc29mdHbDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS2F0ZWfDs3JpYSBrbGllbnRvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdIb2RpbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1LDvWNobG9zxaUgaG9kw61uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgbmEgcG9kcGlzb3ZhbmllIGvDs2R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbsSNbsO9IHRlbGVmw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnRG9ob2RhIG8gcG9yYWRlbnN0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0tvbnRha3QgbmEgZGlzdHJpYsO6dG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ1NwcsOhdmEga29udGFqbmVyb3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdabWx1dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cCB6bWx1dnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdabWx1dm7DqSBvYmRvYmllIG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ09iZG9iaWUgcGxhdG5vc3RpIHptbHV2eSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdCZXpkcsO0dG92w70gdGVsZWbDs24gKHRlbGVmw7NuIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ07DoWtsYWRvdsOhIGplZG5vdGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnUG/EjWV0IGxpY2VuY2nDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRMOhdHVtIHZ5dHZvcmVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1ZsYXN0bsO9IHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXplcnZvdmFuw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZlciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0TDoXR1bSBmYWt0w7pyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRMOhdHVtIG9iamVkbsOhdmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEw6F0dW0gesOhcnVreSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEw6F0dW0gdnlkYW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnU3RvbG7DvSBwb8SNw610YcSNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgbmEgcG9kcGlzb3ZhbmllIGRva3VtZW50b3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbG92w6kgY2VydGlmaWvDoXR5IChjZXJ0aWZpa8OhdHkgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdQcmFjb3Zuw6Egem1sdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnS29uY292w6EgSVAgYWRyZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnVWtvbsSNZW5pZSBwb2Rwb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRMOhdHVtIHNrb27EjWVuaWEgcGxhdG5vc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFeHRlcm7DvSBwZXZuw70gZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXbDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTa2xhZG92YW5pZSBlbmVyZ2llIG5hIHpvdHJ2YcSNbsOta3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWt0b3IgZm9ybXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzaW5nb3bDoSB6bWx1dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdWxaFlb2JlY27DqSBpbmZvcm3DoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpY2vDqSBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlja8OhIGthcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHbDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBoYXJkdsOpcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnSG1vdG5vc8WlIGhhcmR2w6lydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnTsOhaGxhdm7DoSBzw7pwcmF2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3Rva29sIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1NwcsOhdmEgaWRlbnTDrXQgYSBwcsOtc3R1cHUgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudMOhcm5lIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ8SMw61zbG8gZmFrdMO6cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbMOhdmVzbmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QgbW9uaXRvciAoZGlzcGxlaiB6IHRla3V0w71jaCBrcnnFoXTDoWxvdiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChzdmV0ZWxuw6EgZGnDs2RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWxlZsOzbiBwZXZuZWogbGlua3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnWmVtZXBpc27DoSDFocOtcmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnVnJzdHZhIDE6IEZ5emlja8OhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdWcnN0dmEgMjogdnJzdHZhIGTDoXRvdsOpaG8gc3BvamVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ1Zyc3R2YSAzOiBTaWXFpW92w6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ1Zyc3R2YSAzOiBTaWXFpW92w6EgdnJzdHZhIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnVnJzdHZhIDQ6IFRyYW5zcG9ydG7DoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ1Zyc3R2YSA1OiBSZWFsaXphxI1uw6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ1Zyc3R2YSA2OiBwcmV6ZW50YcSNbsOhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ1Zyc3R2YSA3OiBBcGxpa2HEjW7DoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTsOham9tbsOhIHptbHV2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2VuxI1uw6Egem1sdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbsSNbsO9IGvEvsO6xI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwIGxpY2VuY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdPYmRvYmllIHBsYXRub3N0aSBsaWNlbmNpZSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0RvYmEgcGxhdG5vc3RpIGxpY2VuY2llIGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdCYXTDqXJpYSBzIGZvc2bDoXRvbSBsw610aWEgYSDFvmVsZXphIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTMOtdGl1bS1pw7Nub3bDoSAoTGktaW9uKSBiYXTDqXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ1ptbHV2YSBvIHDDtMW+acSNa2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ05hY2jDoWR6YSBzYSB2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ1plbWVwaXNuw6EgZMS6xb5rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1bDvXJvYmNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbcOhbG5hIG5vc25vc8WlIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdQYW3DpMWlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVHlwIHBhbcOkdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmlyYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbG7DqSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsbsOpL3Zsb8W+ZW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnUG9waXMgbW9kZWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1JvemzDrcWhZW5pZSBtb25pdG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdWZcS+a29zxaUgbW9uaXRvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNecWhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdTaWXFpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm3DoWNpZSBvIHNpZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm3DoWNpZSBvIHNpZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdTaWXFpW92w6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrZWwta2FkbWlvdsOhIChOaUNkKSBiYXTDqXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2VsLW1ldGFsaHlkcmlkb3bDoSAoTmlNSCkgYmF0w6lyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnRG9ob2RhIG8gbWzEjWFubGl2b3N0aSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnUG/EjWV0IHByb2Nlc29yb3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUG/EjWV0IG1vZHVsb3YgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ1BvxI1ldCBncmFmaWNrw71jaCBrYXJpZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAob3JnYW5pY2vDoSBkacOzZGEgZW1pdHVqw7pjYSBzdmV0bG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ1ByZXbDoWR6a292w6kgbsOha2xhZHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnT2JqZWRuw6F2YWNpZSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnSW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVsO9c3R1cHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnRG9ob2RhIG8gcGFydG5lcnN0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZsOzbm5lIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1R5cCB0ZWxlZsOzbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXppY2vDqSBqYWRyw6EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdEb2TDoXZrYSBlbmVyZ2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnWmFrw7pwZW7DqSB2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdIxLpia2Egc3RvamFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JlZ8OhbG92w6kgamVkbm90a3kgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdJemJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnS2FydGEgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWvDoXR5IFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdQcmVkYWpuw6Egem1sdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsaXRuw70gdGVsZWbDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnVXphdnJldMOhIG9sb3ZlbsOhIGJhdMOpcmlhIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU8OpcmlvdsOpIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyb3bDvSBzb2Z0dsOpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1ptbHV2YSBvIHBvc2t5dG92YW7DrSBzbHXFvmllYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpc27DvSDFoXTDrXRvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXAgesOhc3V2a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0dsOpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1JlcHJvZHVrdG9yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfFoHRhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1BvxI1pYXRvxI1uw6EgSVAgYWRyZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfDmmxvxb5pc2tvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnw5psb8W+bsO9IG9kZGllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0Rjw6lyc2thIHNwb2xvxI1ub3PFpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnWmhybnV0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUZW5rw70ga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdWbMOha25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0NlbGtvdsOhIHBhbcOkxaUgUkFNIGdyYWZpY2tlaiBrYXJ0eSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnQ2Vsa292w6EgcGFtw6TFpSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnRG90eWtvdsO9IG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdWZcW+YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnUm96Ym/EjW92YcSNIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ07DoWhsYXZuw6Egc8O6cHJhdmEgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsZWbDs24gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Vib3bDoSBrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/sl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdTcGxvxaFuaSBwb2RhdGtpIG8gZGVsb3Zhbmp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdOYXN0YXZpdHZlIHphIHZob2RuZSBwb2RhdGtlIHphaHRldmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTmFzdGF2aXR2ZSB6YSBpemhvZG5lIG9keml2bmUgcG9kYXRrZSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1VwcmF2bGphbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnU3ByZW1lbWJhIGRlZmluaWNpamUgcmF6cmVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnU3ByZW1lbWJhIG9wcmVkZWxpdHZlIHZsb2dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFrZXRpIHJhenJlZG92IFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1R1IGxhaGtvIHV2b3ppdGUgc3Zlxb5uamUgcmF6cmVkb3YgUmVhZHkySW1wb3J0LCBraSBwcmlrYXp1amVqbyBuYcWhZSBuYWpib2xqIG9iacSNYWpuZSBlbGVtZW50ZSBrb25maWd1cmFjaWplLiBVcG/FoXRldmFqdGUsIGRhIGJvIG1vcmRhIHBvdHJlYm5hIGRvZGF0bmEga29uZmlndXJhY2lqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnUG9zb2RvYml0ZXYgb2JzdG9qZcSNaWggZW50aXRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ1V2b3ppdGUgc3Zlxb5uamUgcmF6cmVkb3YgUmVhZHkyQWRvcHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdSYXpyZWQgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnVmxvZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdGVyIHphIHJhenJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnxIxlIMW+ZWxpdGUgdXN0dmFyaXRpIG5vdiBlbGVtZW50IGtvbmZpZ3VyYWNpamUsIHMgc2V6bmFtYSBpemJlcml0ZSByYXpyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnUmF6cmVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnTW5vxb5pxI1ubyBkZWphbmplIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhbmplIG5hbWVzdGl0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdTdGFuamUgaW5jaWRlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1BvdmV6YXZhIG5hIGRydWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOZXByYXZpbG5hIMWhdGV2aWxrYSBlbGVtZW50YSBrb25maWd1cmFjaWplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfFoHRldmlsa2EgZHJ1Z2VnYSBlbGVtZW50YSBrb25maWd1cmFjaWplLCBzIGthdGVyaW0gc2UgcG92ZcW+ZS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdBbGkgcmVzIMW+ZWxpdGUgaXpicmlzYXRpIHRhIGVsZW1lbnQga29uZmlndXJhY2lqZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSW1lIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnSW1lIGplIMW+ZSB2IHVwb3JhYmkgdiBDb25maWdJdGVtcyB6IG5hc2xlZG5qbygtaW1pKSDFoXRldmlsa28oLWFtaSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxaB0ZXZpbGthIHJhemxpxI1pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgdGV2aWxrYSByYXpsacSNaWNlIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ8WgdGV2aWxrYSByYXpsacSNaWNlIGplIMW+ZSB2IHVwb3JhYmkgcHJpIENvbmZpZ0l0ZW1zIHogbmFzbGVkbmpvIMWhdGV2aWxrbyAoxaF0ZXZpbGthbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhbmplIHV2YWphbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRHLFvmF2YSBpbmNpZGVudGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ1pnb2RvdmluYSBlbGVtZW50YSBrb25maWd1cmFjaWplOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdaZ29kb3ZpbmEgVnNlYmluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQb3ZlxI1hbiBwb2dsZWQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnS29uZmlndXJhY2lqYSBFbGVtZW50aSBuYSBzdHJhbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnUG9kYXRrb3YgbyBlbGVtZW50dSBrb25maWd1cmFjaWplIG5pIGJpbG8gbW9nb8SNZSBuYWp0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJemJlcml0ZSB0YSBlbGVtZW50IGtvbmZpZ3VyYWNpamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdaYWduYXRpIGlza2FuamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdEcmV2ZXNuaSBwb2dsZWQgemEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1JhdmVuIGdsb2JpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQb3ZlxI1hbmplL2l6a2xvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdEb3Nlxb5lbmEgbmFqdmXEjWphIHJhdmVuIHBvdmV6YXYgemEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpamUgbyBwb3N0YXZraSBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1RyZW51dG5vIHN0YW5qZSB1dmFqYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnVHJlbnV0bm8gc3RhbmplIGluY2lkZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdaYWRuamEgc3ByZW1lbWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ05hemFkbmplIHNwcmVtZW5pbCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1ZhxaFpIGVsZW1lbnRpIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gSXNrYW5qZSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1V2b8W+ZW5pIGJvZG8gbmFzbGVkbmppIHJhenJlZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVXZvxb5lbmUgYm9kbyBuYXNsZWRuamUgdmxvZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnVXBvxaF0ZXZhanRlLCBkYSBib2RvIHVzdHZhcmplbmEgdHVkaSB1c3RyZXpuYSBkaW5hbWnEjW5hIHBvbGphIGluIHJhenJlZGkgR2VuZXJhbENhdGFsb2csIGtpIG5lIGJvZG8gc2Ftb2Rlam5vIG9kc3RyYW5qZW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0FsaSDFvmVsaXRlIG5hZGFsamV2YXRpPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdQb3RyZWJ1amV0ZSByYXpyZWRlIHByaW1lcm92ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmljaWphIG5pIHZlbGphdm5pIGhhc2ggWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQcmVnbGVkOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEIG5pIHBvZGFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1BvdHJlYnVqZXRlIHZzYWogZW4gaXpicmFuaSBlbGVtZW50IGtvbmZpZ3VyYWNpamUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTmltYXRlIGRvc3RvcGEgemEgcGlzYW5qZSB2IHRvIGtvbmZpZ3VyYWNpanNrbyBwb3N0YXZrbzogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ1phIHJhenJlZCAlcyBuaSBiaWxhIG9wcmVkZWxqZW5hIG5vYmVuYSBkZWZpbmljaWphISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnS29uZmlndXJhY2lqc2tlZ2EgZWxlbWVudGEgIiVzIiBuaSBtb2dvxI1lIG5hanRpIHYgemJpcmtpIHBvZGF0a292ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05pIGJpbG8gbW9nb8SNZSBpemJyaXNhdGkga29uZmlndXJhY2lqc2tlZ2EgZWxlbWVudGEgSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdaYSBDb25maWdJdGVtSUQgJXMgbmkgYmlsYSBuYWpkZW5hIG5vYmVuYSByYXpsacSNaWNhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaSBwb2RhbiBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGFsaSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnRG9zdG9wIG5pIG9tb2dvxI1lbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmUgbW9yZW0gcHJpa2F6YXRpIHpnb2RvdmluZSwga2VyIG5pIHBvZGFuIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZSBtb3JlbSBwcmlrYXphdGkgemdvZG92aW5lLCBuaSBwb2RhbmloIHByYXZpYyBkb3N0b3BhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm92IGVsZW1lbnQga29uZmlndXJhY2lqZSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3ZhIHJhemxpxI1pY2EgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1Bvc29kb2JsamVubyBzdGFuamUgbmFtZXN0aXR2ZSAobm92bz0lcywgc3Rhcm89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1Bvc29kb2JsamVubyBzdGFuamUgaW5jaWRlbnRhIChub3ZvPSVzLCBzdGFybz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgaXpicmlzYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdEb2RhbmEgcG92ZXphdmEgbmEgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdQb3ZlemF2YSBuYSAlcyAodGlwPSVzKSBpemJyaXNhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ09wcmVkZWxpdGV2IGVsZW1lbnRhIENvbmZpZ0l0ZW0gamUgcG9zb2RvYmxqZW5hIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdJbWUgcG9zb2RvYmxqZW5vIChub3ZvPSVzLCBzdGFybz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0ICVzIHBvc29kb2JsamVuIGl6ICIlcyIgdiAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1JhemxpxI1pY2EgJXMgaXpicmlzYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05pIHBvZGFuIENvbmZpZ0l0ZW1JRCBhbGkgVmVyc2lvbklEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOaSBtb2dvxI1lIHByaWthemF0aSBlbGVtZW50YSBrb25maWd1cmFjaWplLCBuaSBwb2RhbmloIHByYXZpYyBkb3N0b3BhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBuaSBuYWpkZW4gdiBwb2RhdGtvdm5pIGJhemkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICduYXRpc25pbCAlcyBuYSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnTmVwcmF2aWxlbiBJRCByYXpyZWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0lEIHJhenJlZGEgbmkgbmF2ZWRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdQcmF2aWNlIGRvc3RvcGEgemEgdGEgcmF6cmVkIG5pc28gcG9kYW5lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnQnJleiByZXp1bHRhdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmV6dWx0YXRpIGlza2FuamEgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnRWxlbWVudGEgbmkgbW9nb8SNZSBwcmlrYXphdGksIHByYXZpY2UgZG9zdG9wYSB6YSBDb25maWdJdGVtIG5pc28gcG9kYW5lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5pIG5hamRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTmkgYmlsbyBuYWpkZW5paCByYXpsacSNaWMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnZGVsb3ZhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdvcG96b3JpbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhbmplIHV2YWphbmphIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YW5qZSBpbmNpZGVudGEgdGVnYSBlbGVtZW50YSBrb25maWd1cmFjaWplJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnQnJleiBkb3ZvbGplbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBqZSBuZXZlbGphdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnTmV2ZWxqYXZuaSBwYXJhbWkgaXNrYW5qYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdQcmlrYXphbmkgZWxlbWVudGkga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdWcnN0YSBzdGFuamEgbmFtZXN0aXR2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdWcnN0YSB0cmVudXRuZWdhIHN0YW5qYSBpbmNpZGVudGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWVkJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPbWVqaXR2ZSByYXpyZWRhIHphIGVsZW1lbnQga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnSXpiZXJpdGUgZW5lZ2EgYWxpIHZlxI0gcmF6cmVkb3YgemEgb21laml0ZXYgaXpiaXJuaWggZWxlbWVudG92IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09tZWppdHZlIHJhenJlZGEgemEgZWxlbWVudCBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnSXpiZXJpdGUgZW5lZ2EgYWxpIHZlxI0gcmF6cmVkb3YgemEgb21laml0ZXYgaXpiaXJuaWggZWxlbWVudG92IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWnEjW5vIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGnEjW5vIChyYXpsacSNaWNhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdWcnN0YSBza2xpY2V2YW5qYSBuYSBwb3ZlemF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdBbGkgdGEgcG92ZXphdmEgdmVsamEgemEgQ29uZmlnSXRlbSBhbGkgc3RhdGnEjW5vIHJhemxpxI1pY28gb2JqZWt0YSwgbmEga2F0ZXJlZ2Egc2Ugc2tsaWN1amUuIEl6cmHEjXVuIHRyZW51dG5lZ2Egc3RhbmphIGluY2lkZW50YSBzZSBpenZlZGUgc2FtbyBwcmkgZGluYW1pxI1uaWggcG92ZXphdmFoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ0l6YmVyaXRlIGF0cmlidXQsIHBvIGthdGVyZW0gc2UgYm9kbyBpc2thbGkgZWxlbWVudGkga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnT3Nub3ZuYSBzdHJ1a3R1cmEgbmkgdmVsamF2bmEuIE5hdmVkaXRlIGhhc2ggcyBwb2RhdGtpIHYgb2JsaWtpIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnTml6IFlBTUwgc2UgbW9yYSB6YcSNZXRpIHogXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnVGFiZWxlIGNvbmZpZ2l0ZW1fbGluayBuaSBiaWxvIG1vZ2/EjWUgb8SNaXN0aXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnVXN0cmV6bmEgZGluYW1pxI1uYSBwb2xqYSBuaXNvIGJpbGEgbmFqZGVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOaSBiaWxvIG1vZ2/EjWUgdnN0YXZpdGkgdiB0YWJlbG8gY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdWc3RhdmxqZW5paCAwIHZyc3RpYyB2IHRhYmVsbyBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTmFqdmXEjWplIMWhdGV2aWxvIGVuZWdhIGVsZW1lbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnppamEgU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ05hcGFrYSBwcmkgc2luaHJvbml6YWNpamkgZGVmaW5pY2lqLiBQcmV2ZXJpdGUgZG5ldm5pay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdJbWF0ZSBkZWZpbmljaWplIElUU01Db25maWdJdGVtLCBraSBuaXNvIHNpbmhyb25pemlyYW5lLiBVbWXFocSNYWp0ZSBzcHJlbWVtYmUgZGluYW1pxI1uaWggcG9saiBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1ByZXRla2xhIHZlbGphdm5vc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdWemRyxb5ldmFuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnTmHEjXJ0b3Zhbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUG9wcmF2aWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdVcG9rb2plbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUHJlZ2xlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdGlyYW5qZS9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUHJlZ2xlZCBpbiBwb3RyZGl0ZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnVXZveiByYXpyZWRvdi92bG9nIGluIHogbmppbWkgcG92ZXphbmloIHBvbGonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdQcmkgdXZvenUgcmF6cmVkYSBqZSBwcmnFoWxvIGRvIG5hcGFrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNrcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gcHJpa2F6YW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdPbW9nb8SNYSByYXrFoWlyamVuZSBwb2dvamUgaXNrYW5qYSBwcmkgaXNrYW5qdSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4gUyB0byBmdW5rY2lqbyBsYWhrbyBpxaHEjWV0ZSBucHIuIGltZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHMgdGFrxaFuaW1pIHBvZ29qaSwga290IHNvICIoKmtleTEqJiYqa2V5MiopIiBhbGkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdPbW9nb8SNYSByYXrFoWlyamVuZSBwb2dvamUgaXNrYW5qYSB2IGlza2FuanUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSB6YSBzdHJhbmtlLiBTIHRvIGZ1bmtjaWpvIGxhaGtvIGnFocSNZXRlIG5wci4gaW1lIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgcyB0YWvFoW5pbWkgcG9nb2ppLCBrb3Qgc28gIigqa2V5MSomJiprZXkyKikiIGFsaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0RvZGVsamVuaSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdLSSwgZG9kZWxqZW5pIHBvZGpldGp1IHN0cmFua2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSSwgZG9kZWxqZW5pIHVwb3JhYm5pa3Ugc3RyYW5rZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnTmFzdGF2aXR2ZSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQcmV2ZXJqYW5qZSBlZGluc3R2ZW5lZ2EgaW1lbmEgc2FtbyB6bm90cmFqIGlzdGVnYSByYXpyZWRhIENvbmZpZ0l0ZW0gKFwnY2xhc3NcJykgYWxpIGdsb2JhbG5vIChcJ2dsb2JhbFwnKSwga2FyIHBvbWVuaSwgZGEgc2UgcHJpIGlza2FuanUgcG9kdm9qaXRldiB1cG/FoXRldmEgdnNhayBvYnN0b2plxI1pIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdJemJlcml0ZSBtb2R1bCB6YSB1dmVsamF2aXRldiBzaGVtZSBwb2ltZW5vdmFuamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdJemJlcml0ZSBtb2R1bCB6YSB1dmVsamF2aXRldiDFoXRldmlsc2tlIHNoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdJemJlcml0ZSBtb2R1bCB6YSB1dmVsamF2aXRldiBzaGVtZSB2ZXJpxb5uaWggbml6b3YgcmF6bGnEjWljLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0l6YmVyaXRlIGF0cmlidXRlIHphIHNwcm/Fvml0ZXYgdXN0dmFyamFuamEgbm92ZSByYXpsacSNaWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdJemJlcml0ZSBrYXRlZ29yaWplLCBraSBqaWggxb5lbGl0ZSBkb2RlbGl0aSB0ZW11IHJhenJlZHUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJpIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgc3RvbHBjYSB6YSBwcmVnbGVkIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTdG9scGNpLCBraSBqaWggamUgbW9nb8SNZSBmaWx0cmlyYXRpIHYgcHJlZ2xlZHUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuIE9wb21iYTogRG92b2xqZW5pIHNvIHNhbW8gYXRyaWJ1dGkgZWxlbWVudGEga29uZmlndXJhY2lqZSBpbiBkaW5hbWnEjW5hIHBvbGphIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdFbGVtZW50aSBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdEb2RhamFuamUgZWxlbWVudGEga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdVcmVqYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHphIGRvZ29ka2UgZWxlbWVudGEga29uZmlndXJhY2lqZSwga2kgb21vZ2/EjWEgYmVsZcW+ZW5qZSB2IHpnb2RvdmlubyB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWwgZG9nb2Rrb3YgemEgZWxlbWVudGUga29uZmlndXJhY2lqZSwga2kgcG9zb2RvYmkgZWxlbWVudGUga29uZmlndXJhY2lqZSBuYSBuamlob3ZvIHRyZW51dG5vIGRlZmluaWNpam8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnWmdvZG92aW5hIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdUaXNrYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyYWNpamEgcG92ZcSNYXZlIGVsZW1lbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0RyZXZlc25pIHByaWtheiBlbGVtZW50b3Yga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFJhemxpxI1pY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnS29uZmlndXJhY2lqc2tpIGVsZW1lbnRpIG5hc2xlZG5qaWggcmF6cmVkb3YgbmUgYm9kbyBzaHJhbmplbmkgdiBzdHJlxb5uaWt1IEVsYXN0aWNzZWFyY2guIMSMZSDFvmVsaXRlIHRvIHVwb3JhYml0aSB6YSBvYnN0b2plxI1lIENJLCBqZSB0cmViYSBwbyBzcHJlbWVtYmkgdGUgbW/Fvm5vc3RpIHphZ25hdGkgbWlncmFjaWpvIENJIHByZWsga29uem9sZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnS29uZmlndXJhY2lqc2tpIGVsZW1lbnRpIHogbmFzbGVkbmppbWkgc3RhbmppIG5hbWVzdGl0dmUgbmUgYm9kbyBzaHJhbmplbmkgdiBzdHJlxb5uaWt1IEVsYXN0aWNzZWFyY2guIMSMZSDFvmVsaXRlIHRvIHVwb3JhYml0aSB6YSBvYnN0b2plxI1lIENJLCBqZSB0cmViYSBwbyBzcHJlbWVtYmkgdGUgbW/Fvm5vc3RpIHphZ25hdGkgbWlncmFjaWpvIENJIHByZWsga29uem9sZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnT21laml0ZXYgcG9zdGF2a2Uga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhY2lqYSBPbWVqaXRldiBlbGVtZW50b3YgbmEgc3RyYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdQb2RhdGtvdm5hIHpiaXJrYSB6YSB1cHJhdmxqYW5qZSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnUG9zdGF2a2EgemEga29uZmlndXJhY2lqbyBtb2R1bGEgdiByYXpzdXRlbSBzdGFuanUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnQga29uZmlndXJhY2lqZSB6YSBpc2thbmplIHphbGVkbmVnYSB1c21lcmpldmFsbmlrYSB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdVc3R2YXJqYW5qZSBpbiB1cHJhdmxqYW5qZSBkZWZpbmljaWogemEgZWxlbWVudGUga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdVc3R2YXJpIHZvem92bmljZSB6YSBlbGVtZW50ZSBDb25maWdJdGVtcyB2IGRvbG/EjWVuaWggxI1hc292bmloIHRvxI1rYWguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ1N0cmFua2Ugc2kgbGFoa28gb2dsZWRham8gcHJldGVrbGUgcmF6bGnEjWljZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnU3RyYW5rZSBsYWhrbyByb8SNbm8gcHJla2xhcGxqYWpvIG1lZCBwcmV0ZWtsaW1pIHJhemxpxI1pY2FtaSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdQcml2emV0ZSBwb2RhdGtlLCBraSBzZSB1cG9yYWJpam8gdiBhdHJpYnV0dSB6YSB6YXNsb24gemEgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZS4gUHJpbWVyOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9bGV0bztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1ByaXZ6ZXRlIHBvZGF0a2UsIGtpIHNlIHVwb3JhYmlqbyB2IGF0cmlidXR1IHphIHphc2xvbiB6YSBpc2thbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLiBQcmltZXI6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdPcHJlZGVsaXRlIGRlamFuamEsIHByaSBrYXRlcmloIGplIHYgZ3JhZG5pa3UgcG92ZXphbmloIHByZWRtZXRvdiBuYSB2b2xqbyBndW1iIHphIG5hc3Rhdml0dmUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVXBvxaF0ZXZhanRlLCBkYSBtb3Jham8gdGUgYWtjaWplIHJlZ2lzdHJpcmF0aSBuYXNsZWRuamUgZGF0b3Rla2UgSlMgaW4gQ1NTOiBWIHRlbSBwcmltZXJ1IGplIHRyZWJhIHphIHVwb3JhYm8gbmFzdGF2aXRldiBpbiBmdW5rY2lqIHphIHBvdmV6b3ZhbmplIG9iamVrdG92IGluIG5qaWhvdmloIGZ1bmtjaWogdiBzaXN0ZW11IG5hc3Rhdml0aSBuYXNsZWRuamUgZGF0b3Rla2U6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGluIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ09wcmVkZWxpdGV2IHNoZW1lIFRlbXBsYXRlOjpUb29sa2l0IHphIG5pemEgcmF6bGnEjWljLiBVcG9yYWJsamEgc2Ugc2FtbywgxI1lIGplIG1vZHVsIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBuYXN0YXZsamVuIG5hIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ09wcmVkZWxpdGUgbml6IHBvZ29qZXYsIHBvZCBrYXRlcmltaSBsYWhrbyBzdHJhbmthIHZpZGkgZWxlbWVudCBrb25maWd1cmFjaWplLiBQb2dvamkgc28gbGFoa28gcG8gxb5lbGppIG9tZWplbmkgbmEgZG9sb8SNZW5lIHNrdXBpbmUgc3RyYW5rLiBJbWUgamUgZWRpbmkgb2J2ZXpuaSBhdHJpYnV0LiDEjGUgbmUgbmF2ZWRldGUgZHJ1Z2loIG1vxb5ub3N0aSwgYm9kbyB2IHRlaiBrYXRlZ29yaWppIHZpZG5pIHZzaSBlbGVtZW50aSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgWmFodGV2YW5hIGRvdm9samVuamEgemEgYnJpc2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIHByaWRvYml0ZXYgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIG5hc3RhdmxqYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNIHogdXBvcmFibyBzcGxvxaFuZWdhIHZtZXNuaWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSBtb2R1bCB6YSBwcmVnbGVkLCBraSBwcmlrYXp1amUgbWFqaGVuIHBvZ2xlZCBzZXpuYW1hIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEb2xvxI1hLCBhbGkgbW9yYWpvIGJpdGkgdiBwb3ZlemF2YWggdm96bGnFocSNIHByaWthemFuZSBvem5ha2UgdnJzdGUgcG92ZXphdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdaYSB2c2FrIHJhenJlZCBDb25maWdJdGVtIHBvc2ViZWogZG9sb8SNYSByZWd1bGFybmUgaXpyYXplIHphIHByZXZlcmphbmplIGltZW5hIENvbmZpZ0l0ZW0gaW4gcHJpa2F6IHVzdHJlem5paCBzcG9yb8SNaWwgbyBuYXBha2FoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHJhenBvbG/FvmxqaXZlIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSBhdHJpYnV0IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgemEgcmF6dnLFocSNYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHJlenVsdGF0dSBpc2thbmphIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSBhdHJpYnV0IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgemEgcmF6dnLFocSNYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHJlenVsdGF0dSBpc2thbmphIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgemEgc3RyYW5rZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEb2xvxI1hIHByaXZ6ZXRpIGF0cmlidXQgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSByYXp2csWhxI1hbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiByZXp1bHRhdCBpc2thbmphIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdGUgb3BlcmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSB2cnN0bmkgcmVkIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuIE5hdnpnb3I6IG5hanN0YXJlasWhaSBuYSB2cmh1LiBOYXZ6ZG9sOiBuYWpub3ZlasWhaSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSB2cnN0bmkgcmVkIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSB6YSBzdHJhbmtlLiBOYXZ6Z29yOiBuYWpzdGFyZWrFoWkgbmEgdnJodS4gTmF2emRvbDogbmFqbm92ZWrFoWkgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RvbG/EjWEgcHJpdnpldGUgcHJpa2F6YW5lIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEb2xvxI1hIHByaXZ6ZXRvIGdsb2Jpbm8gb2Rub3Nvdiwga2kgc2UgcHJpa2HFvmVqby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0byBwcmlrYXphbiBhdHJpYnV0IGlza2FuamEgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSB6YXNsb24gaXNrYW5qYSBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0byBwcmlrYXphbiBhdHJpYnV0IGlza2FuamEgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSB6YXNsb24gaXNrYW5qYSBlbGVtZW50YSBrb25maWd1cmFjaWplLiBQcmltZXI6ICJLZXkiIG1vcmEgaW1ldGkgaW1lIGRpbmFtacSNbmVnYSBwb2xqYSwgdiB0ZW0gcHJpbWVydSAiWCIsICJDb250ZW50IiBtb3JhIGltZXRpIHZyZWRub3N0IGRpbmFtacSNbmVnYSBwb2xqYSwgb2R2aXNubyBvZCB2cnN0ZSBkaW5hbWnEjW5lZ2EgcG9samEsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGluIGFsaSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD10ZWRlbjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9UHJlZDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHByaXZ6ZXRpIHBvZG9iamVrdCByYXpyZWRhIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHJhenBvbG/FvmxqaXZlIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEb2xvxI1hIHZpxaFpbm8ga29tcG9uZW50ZSB1cmVqZXZhbG5pa2EgYm9nYXRlZ2EgYmVzZWRpbGEgemEgdGEgemFzbG9uLiBWbmVzaXRlIMWhdGV2aWxvIChwaWtzbGkpIGFsaSBvZHN0b3RubyB2cmVkbm9zdCAocmVsYXRpdm5vKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSDFoXRldmlsbyB2cnN0aWMgemEgdXJlamV2YWxuaWsgZGVmaW5pY2lqIENJIHYgdXByYXZpdGVsanNrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHZyc3RuaSByZWQgc3RhbmogaW5jaWRlbnRhIG9kIHZpc29rZWdhIChucHIuIGNyaWNpdGFsbm8pIGRvIG5pemtlZ2EgKG5wci4gZnVua2Npb25hbG5vKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSB1c3RyZXpuYSBzdGFuamEgdXZhamFuamEsIHYga2F0ZXJpaCBsYWhrbyBwb3ZlemFuZSB2b3pvdm5pY2UgdnBsaXZham8gbmEgc3RhbmplIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RvbG/EjWEgb21laml0ZXYgaXNrYW5qYSB6YSB6YXNsb24gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEb2xvxI1hIG9tZWppdGV2IGlza2FuamEgemEgemFzbG9uIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRG9sb8SNYSBvbWVqaXRldiBpc2thbmphIHphIHphc2xvbiBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RvbG/EjWEgb21laml0ZXYgaXNrYW5qYSB6YSB6YXNsb24gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgcHJpa2F6YW5lIHN0b2xwY2UgS0kgdiBrb21wbGVrc25lbSBwb2dsZWR1IHByZWdsZWRuaWNlIHBvdmV6YXYgemEgdnNlIHJhenJlZGUgS0kuIMSMZSB2bm9zYSBuaSwgc28gcHJpa2F6YW5pIHByaXZ6ZXRpIHN0b2xwY2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdPcHJlZGVsanVqZSBwcmlrYXphbmUgc3RvbHBjZSBLSSB2IGtvbXBsZWtzbmVtIHBvZ2xlZHUgcHJlZ2xlZG5pY2UgcG92ZXphdiwgb2R2aXNubyBvZCByYXpyZWRhIEtJLiBWc2FrIHZub3MgbW9yYSBiaXRpIG9wcmVtbGplbiB6IGltZW5vbSByYXpyZWRhIGluIGR2b2puaW1pIGR2b3BpxI1qaSAobnByLiBDb21wdXRlcjo6KS4gT2JzdGFqYSBuZWthaiBhdHJpYnV0b3YgQ0ktQXR0cmlidXRlcywga2kgc28gc2t1cG5pIHZzZW0gQ0kgKHByaW1lciB6YSByYXpyZWQgUmHEjXVuYWxuaWs6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFphIHByaWtheiBwb3NhbWV6bmloIENJLWF0cmlidXRvdiwga290IHNvIG9wcmVkZWxqZW5pIHYgZGVmaW5pY2lqaSBDSSwgamUgdHJlYmEgdXBvcmFiaXRpIG5hc2xlZG5qbyBzaGVtbyAocHJpbWVyIHphIHJhenJlZCBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDEjGUgemEgcmF6cmVkIENJIG5pIHZub3NhLCBzbyBwcmlrYXphbmkgcHJpdnpldGkgc3RvbHBjaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSwga2F0ZXJpIGVsZW1lbnRpIHNvIG5hIHZvbGpvIHphICJBY3Rpb24iIG5hIHRyZXRqaSByYXZuaSBzdHJ1a3R1cmUgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRG9sb8SNYSwga2F0ZXJpIGVsZW1lbnRpIHNvIG5hIHZvbGpvIG5hIHBydmkgcmF2bmkgc3RydWt0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEb2xvxI1hLCBrYXRlcmkgZWxlbWVudGkgc28gbmEgdm9sam8gbmEgZHJ1Z2kgcmF2bmkgc3RydWt0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEb2xvxI1hLCBrYXRlcmEgdnJzdGEgcG92ZXphdmUgKHBvaW1lbm92YW5hIHogdmlkaWthIHZvem92bmljZSkgbGFoa28gdnBsaXZhIG5hIHN0YW5qZSBwb3ZlemFuZWdhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RvbG/EjWEsIGthdGVyYSB2cnN0YSB2b3pvdm5pY2UgbGFoa28gdnBsaXZhIG5hIHN0YW5qZSBwb3ZlemFuZWdhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ1Bvc29kb2JpdGV2IGRlZmluaWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0JyaXNhbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdCYXJ2YSBzdGFuamEgbmFtZXN0aXR2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrYXRuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIHphIGRvZ29ka2UgZGluYW1pxI1uaWggcG9saiwga2kgb3puYcSNaSBkZWZpbmljaWplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIGtvdCBuZXNpbmhyb25pemlyYW5lLCDEjWUgc2Ugc3ByZW1lbmlqbyBkaW5hbWnEjW5hIHBvbGphLCBraSBqaWggdnNlYnVqZWpvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1uYSBwb2xqYSwgcHJpa2F6YW5hIG5hIHphc2xvbnUgZG9kYXRuZWdhIHBvbGphIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNbmEgcG9samEsIHByaWthemFuYSBuYSB6YXNsb251IHphIHByZWdsZWQgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IHphIHN0cmFua2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNbmEgcG9samEsIHByaWthemFuYSBuYSB6YXNsb251IHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ09tb2dvxI1hIGZ1bmtjaWpvIG1ub8W+acSNbmVnYSBkZWxvdmFuamEgemEga29uZmlndXJhY2lqc2tlIGVsZW1lbnRlIHphIHNwcmVkbmppIGRlbCBhZ2VudGEsIGtpIGRlbHVqZSBuYSB2ZcSNIGtvdCBlbmVtIGtvbmZpZ3VyYWNpanNrZW0gZWxlbWVudHUgbmFlbmtyYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdPbW9nb8SNaSBmdW5rY2lqbyBtbm/FvmnEjW5lZ2EgZGVsb3ZhbmphIGtvbmZpZ3VyYWNpanNraWggZWxlbWVudG92IHNhbW8gemEgbmF2ZWRlbmUgc2t1cGluZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWwgZG9nb2Rrb3YgemEgbmFzdGF2aXRldiBzdGFuamEga29uZmlndXJhY2lqZSBuYSBwb3ZlemF2aSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdQb2xqYSBpbmRla3NhIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUsIGtpIHNlIHVwb3JhYmxqYWpvIHphIGlza2FuamUgcG8gY2Vsb3RuZW0gYmVzZWRpbHUuIFBvbGphIHNvIHByYXYgdGFrbyBzaHJhbmplbmEsIHZlbmRhciBuaXNvIG9idmV6bmEgemEgY2Vsb3RubyBmdW5rY2lvbmFsbm9zdC4gVmtsanXEjWV2YW5qZSBwcmlsb2cgbGFoa28gb25lbW9nb8SNaXRlIHRha28sIGRhIHZub3MgbmFzdGF2aXRlIG5hIDAgYWxpIGdhIGl6YnJpxaFldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdQb2xqYSwgc2hyYW5qZW5hIHYgaW5kZWtzdSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSwga2kgc2UgcG9sZWcgaXNrYW5qYSBwbyBjZWxvdG5lbSBiZXNlZGlsdSB1cG9yYWJsamFqbyB0dWRpIHphIGRydWdlIHN0dmFyaS4gWmEgcG9wb2xubyBmdW5rY2lvbmFsbm9zdCBzbyB2c2EgcG9samEgb2J2ZXpuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgbW9kdWxhIEdlbmVyaWNJbnRlcmZhY2UgemEgc2xvaiBpbnZva2F0b3JqYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBHZW5lcmljSW50ZXJmYWNlIHphIHNsb2ogaW52b2thdG9yamEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgbW9kdWxhIEdlbmVyaWNJbnRlcmZhY2UgemEgc2xvaiBpbnZva2F0b3JqYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByZWdsZWQgZWxlbWVudGEga29uZmlndXJhY2lqZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZrbGp1xI11amUgc3RhbmphIHV2YWphbmphIHYgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHVwb3JhYm5pxaFrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZrbGp1xI11amUgc3RhbmphIGluY2lkZW50b3YgdiBpc2thbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdXBvcmFibmnFoWtlbSB2bWVzbmlrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTmFqdmXEjWplIMWhdGV2aWxvIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLCBraSBzZSBwcmlrYcW+ZWpvIHYgcmV6dWx0YXR1IHRlIG9wZXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB6YSBwcmV2ZXJqYW5qZSBza3VwaW5lLCBvZGdvdm9ybmUgemEgcmF6cmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHphIHByZXZlcmphbmplIHNrdXBpbmUsIG9kZ292b3JuZSB6YSBlbGVtZW50IGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgemEgdXN0dmFyamFuamUgc3RhdGlzdGlrZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ0ltZSBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTW9kdWwgxaF0ZXZpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxaB0ZXZpbG8gZWxlbWVudG92IGtvbmZpZ3VyYWNpamUsIGtpIHNlIHByaWthxb5lam8gbmEgdnNha2kgc3RyYW5pIHJlenVsdGF0YSBpc2thbmphIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfFoHRldmlsbyBlbGVtZW50b3Yga29uZmlndXJhY2lqZSwga2kgc2UgcHJpa2HFvmVqbyBuYSB2c2FraSBzdHJhbmkgcmV6dWx0YXRhIGlza2FuamEgdiB1cG9yYWJuacWha2VtIHZtZXNuaWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdQcmVkbWV0aSB6YSBpc2thbmplLCBrb2xpa28gdm5vc292IGluIGthdGVyaSBhdHJpYnV0aSBuYWogc2UgcHJpa2HFvmVqby4gQXRyaWJ1dGkgQ29uZmlnSXRlbSBtb3Jham8gYml0aSBpenJlY25vIHNocmFuamVuaSBwcmVrIHN0b3JpdHZlIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1ByZWdsZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEga2F0ZWdvcmlqZSB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBmaWx0cmUgc3RvbHBjZXYgdiBwcmVnbGVkdSBtYWpobmloIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLiBVcG/FoXRldmFqdGU6IHogbmFzdGF2aXR2aWpvICJBa3Rpdm5vIiBuYSAwIGJvIGFnZW50b20gcHJlcHJlxI1lbm8gbGUgdXJlamFuamUgbmFzdGF2aXRldiB0ZSBza3VwaW5lIHYgbmppaG92aWggb3NlYm5paCBuYXN0YXZpdHZhaCwgdmVuZGFyIGJvIGFkbWluaXN0cmF0b3JqZW0gxaFlIHZlZG5vIG9tb2dvxI1lbm8gdXJlamFuamUgbmFzdGF2aXRldiB2IGltZW51IGRydWdlZ2EgdXBvcmFibmlrYS4gUyBmdW5rY2lqbyBcJ1ByZWZlcmVuY2VHcm91cFwnIGxhaGtvIG5hZHppcmF0ZSwgdiBrYXRlcmVtIG9ibW/EjWp1IG5haiBib2RvIHRlIG5hc3Rhdml0dmUgcHJpa2F6YW5lIHYgdXBvcmFibmnFoWtlbSB2bWVzbmlrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgYmFydm8gc3RhbmphIHV2YWphbmphIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdGFuamEgdXZhamFuamEgdiBwb2dsZWR1IG5hc3Rhdml0ZXYgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBwcmltZXIgc2t1cGluIGRvdm9samVuaiBzcGxvxaFuaWggYXRyaWJ1dG92IGthdGFsb2dhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBtb2R1bCBpbWVuYSB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBtb2R1bCDFoXRldmlsYSB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RyYW5pIChuYSBrYXRlcmloIHNvIHByaWthemFuaSBlbGVtZW50aSBrb25maWd1cmFjaWplKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIG1vZHVsIHZlcnppamUgbml6YSB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBtb2R1bCBwcmVkbG9nZSBuaXphIHJhemxpxI1pYyB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3Byb8W+aWxlYyByYXpsacSNaWNlIHphIHJhenJlZGUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IG5hc3Rhdml0ZXYgdm1lc25pa2EgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1NrdXBpbmEgZG92b2xqZW5qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyBkZWphbmphIHByaXRyZGl0dmUgZWxlbWVudGEga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgemEgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSB6YSBpc2thbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIElUU00gdiB1cG9yYWJuacWha2VtIHZtZXNuaWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSBkcmV2ZXNuZWdhIHByaWthemEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIHphIHBvdmXEjWF2byBlbGVtZW50YSBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIERvZGFqIGVsZW1lbnQga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgemEgcG9zdGF2a28gc2t1cGluc2tlIGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIHphIHVyZWphbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIHphIHpnb2RvdmlubyBlbGVtZW50YSBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgemEgdGlza2FuamUgZWxlbWVudGEga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnWmFodGV2YW5pIHByaXZpbGVnaWppIHphIGJyaXNhbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0lza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdzYW1vZGVqbm8gbmFzdGF2aXRlIHN0YW5qZSBpbmNpZGVudGEgdiBDSSwga28gamUgdm96b3ZuaWNhIHBvdmV6YW5hIHMgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFzdGF2aSBzdGFuamUgdXZhamFuamEgbmEgemFzbG9udSB6YSBtbm/FvmnEjW5lIGVsZW1lbnRlIGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hc3Rhdmkgc3RhbmplIGluY2lkZW50YSBuYSB6YXNsb251IHphIG1ub8W+acSNbm8ga29uZmlndXJhY2lqbyBlbGVtZW50b3YgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgcG92ZXphdm8gdiBtZW5panUsIGtpIG9tb2dvxI1hIHBvdmV6YXZvIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgeiBkcnVnaW0gb2JqZWt0b20gdiBwb2dsZWR1IHBvdmXEjWF2ZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIGRvc3RvcCBkbyB6Z29kb3ZpbmUgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHByZWdsZWR1IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIGRvc3RvcCBkbyB6Z29kb3ZpbmUgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgcG92ZcSNYXZlIHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWIG1lbmlqdSBwcmlrYcW+ZSBwb3ZlemF2byB6YSBicmlzYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgcG92ZcSNYW5lbSBwb2dsZWR1IHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIHByaWtheiBwb3ZlemF2IGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgb2JsaWtpIGRyZXZlc25lZ2EgcG9nbGVkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWIG1lbmlqdSBwcmlrYcW+ZSBwb3ZlemF2byB6YSBwb2R2b2ppdGV2IGtvbmZpZ3VyYWNpanNrZSBlbGVtZW50YSB2IHByZWdsZWR1IGtvbmZpZ3VyYWNpanNraWggZWxlbWVudG92IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYcW+ZSBwb3ZlemF2byB2IG1lbmlqdSB6YSBwb2R2b2ppdGV2IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IHBvdmXEjWF2ZSB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYcW+ZSBwb3ZlemF2byB2IG1lbmlqdSB6YSB1cmVqYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBwb3ZlxI1hdmUgdm1lc25pa2EgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnViBtZW5panUgcHJpa2HFvmUgcG92ZXphdm8gemEgdnJuaXRldiB2IHBvZ2xlZCBwb3ZlxI1hdmUga29uZmlndXJhY2lqc2tlIGVub3RlIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIHRpc2thbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IHBvdmXEjWF2ZSB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgcG92ZXphdm8gdiBtZW5panUgemEgcG92ZcSNYXZvIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwcmVnbGVkdSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgemdvZG92aW5vIGVsZW1lbnRvdiBrb25maWd1cmFjaWplICh2IG9icmF0bmVtIHZyc3RuZW0gcmVkdSkgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ1ByaXZ6ZXRhIGthdGVnb3JpamEsIGtpIHNlIHByaWthxb5lLCDEjWUgbmkgaXpicmFuYSBub2JlbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWthdG9yIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUsIG5wci4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFByaXZ6ZXRvIGplIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnU2Ftb2Rlam5vIHNwcm/Fvmkgc3Byb8W+aWxjYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1JhemxpxI1pY2EgU3RyaW5nIEl6cmF6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1JhemxpxI1pY2EgU3RyaW5nIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1Nwcm/FvmlsbmlrIHJhemxpxI1pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0FsaSBzZSBsYWhrbyBpenZlZGJpIENvbmZpZ0l0ZW1BQ0wgaXpvZ25lbW8gcyBwcmV2ZXJqYW5qZW0gb2R2aXNub3N0aSBwb2xqIHYgcHJlZHBvbW5pbG5pa3UuIFRvIGxhaGtvIGl6Ym9sasWhYSDEjWFzIG5hbGFnYW5qYSBvYnJhemNldiwgdmVuZGFyIG1vcmEgYml0aSBvbmVtb2dvxI1lbm8sIMSNZSBzZSB6YSB0aXBlIElUU01Db25maWdJdGVtLSBpbiBGb3JtLVJldHVyblR5cGUgdXBvcmFibGpham8gbW9kdWxpIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0thdGVyaSBzcGxvxaFuaSBwb2RhdGtpIHNvIHByaWthemFuaSB2IGdsYXZpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ3JhenJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWxubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWt0aXZuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlZHByb2R1a3Rpdm5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0aXZubyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwYWxjYSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBhbGNldiAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHBhbGNhICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHBhbGNhICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktcGFsxI1uaSBub3NpbGVjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwYWxjYSAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwYWxjZXYgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLXBhbMSNbmkgbm9zaWxlYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgcGFsY2EgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1wYWzEjW5vIHN0b2phbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBhbGNhICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwYWxjZXYgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHBhbGNhICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcGFsY2EgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcGFsY2EgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHBhbGNhICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwYWxjYSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcGFsY2EgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHBhbGNldiAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHBhbGNhICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcGFsY2EgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwYWxjYSAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcGFsY2EgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcGFsY2EgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcGFsY2EgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwYWxjYSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHBhbGNldiAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBhbGNldiAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgcGFsY2EgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IHBhbGNhICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHBhbGNhICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBhbGNldiAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBwYWxjYSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnUmHEjXVub3ZvZHN0dm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdEb2RlbGpldmFuamUgbmFzbG92b3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1VwcmF2aXRlbGonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nbmkgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1Zyc3RhIG5hcHJhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdabW9nbGppdm9zdCBiYXRlcmlqZSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1Zyc3RhIGJhdGVyaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnU3RhdmJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdWbWVzbmlrIHZvZGlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ1JhenJlZCBwcm9jZXNvcmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdabW9nbGppdm9zdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnWm1vZ2xqaXZvc3QgbmEgZ3JhZmnEjW5vIGthcnRpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfFoHRldmlsa2Ega2FydGljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0JyYWxuaWsga2FydGljJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1Zyc3RhIGthcnRpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ1BvdHJkaWxhIHN0cmFuayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdPZGplbWFsc2thIHByb2dyYW1za2Egb3ByZW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpamEgc3RyYW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ8SMYXNvdm5hIHN0b3BuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0hpdHJvc3QgdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ1BvdHJkaWxhIHphIHBvZHBpc292YW5qZSBrb2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbsSNbmkgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ1BvZ29kYmEgbyBzdmV0b3Zhbmp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdQacWhaXRlIG5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdTdGlrIHogZGlzdHJpYnV0ZXJqZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdVcHJhdmxqYW5qZSB6YWJvam5pa292JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnUG9nb2RiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVnJzdGEgcG9nb2RiZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1BvZ29kYmVubyBvYmRvYmplIG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1BvZ29kYmVubyBvYmRvYmplIGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0JyZXrFvmnEjW5pIHRlbGVmb24gKHRlbGVmb24gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnU3Ryb8Wha292bmEgZW5vdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfFoHRldmlsbyBsaWNlbmMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdHVtIHVzdGFub3ZpdHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdTdG9qYWxvIHBvIG1lcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmV6ZXJ2aXJhbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1N0cmXFvm5payBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdHVtIHJhxI11bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdHVtIG5hcm/EjWlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0dW0gZ2FyYW5jaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdHVtIGl6ZGFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnTmFtaXpuaSByYcSNdW5hbG5payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnUG90cmRpbGEgemEgcG9kcGlzb3ZhbmplIGRva3VtZW50b3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ1BvdHJkaWxhIHphIGUtcG/FoXRvIChwb3RyZGlsYSBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1BvZ29kYmEgbyB6YXBvc2xpdHZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnS29uxI1uaSBuYXNsb3YgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdLb25lYyBwb2Rwb3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGF0dW0gaXp0ZWthIHZlbGphdm5vc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdadW5hbmppIHRyZGkgZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1Bvxb5hcm5pIHppZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ1ZkZWxhbmEgcHJvZ3JhbXNrYSBvcHJlbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTa2xhZGnFocSNZW5qZSBlbmVyZ2lqZSB6IHZ6dHJham5pa29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFrdG9yIG9ibGlrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnUG9nb2RiYSBvIGZyYW7FoWl6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0JyZXpwbGHEjW5hIHByb2dyYW1za2Egb3ByZW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1NwbG/FoW5lIGluZm9ybWFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmnEjW5lIGthcnRpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpxI1uYSBrYXJ0aWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnU3Ryb2puYSBvcHJlbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBzdHJvam5lIG9wcmVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdUZcW+YSBzdHJvam5lIG9wcmVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnU2x1xaFhbGtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9rb2wgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnVXByYXZsamFuamUgaWRlbnRpdGV0IGluIGRvc3RvcGEgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudGFybmEgxaF0ZXZpbGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfFoHRldmlsa2EgcmHEjXVuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RpcGtvdm5pY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKHphc2xvbiBzIHRla2/EjWltaSBrcmlzdGFsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChzdmV0bGXEjWEgZGlvZGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1N0YWNpb25hcm5pIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnUHJlbm9zbmkgcmHEjXVuYWxuaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdaZW1samVwaXNuYSDFoWlyaW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnUGxhc3QgMTogZml6acSNbmEgcGxhc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnUGxhc3QgMjogcGxhc3QgcG9kYXRrb3ZuaWggcG92ZXphdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnUGxhc3QgMzogb21yZcW+bmEgcGxhc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnMy4gcGxhc3Q6IG9tcmXFvm5hIHBsYXN0IChuYWRvbXJlxb5qZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnU2xvaiA0OiBUcmFuc3BvcnRuaSBzbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdTbG9qIDU6IFNlam5pIHNsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnU2xvaiA2OiBQcmVkc3Rhdml0dmVuaSBzbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnU2xvaiA3OiBhcGxpa2FjaWpza2kgc2xvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdQb2dvZGJhIG8gbmFqZW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW7EjW5hIHBvZ29kYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2VuxI1uaSBrbGp1xI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVnJzdGEgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnT2Jkb2JqZSBsaWNlbmNlIG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnT2Jkb2JqZSBsaWNlbmNlIGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdCYXRlcmlqZSBpeiBsaXRpai3FvmVsZXpvdmVnYSBmb3NmYXRhIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aWotaW9uc2thIChMaS1pb24pIGJhdGVyaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnUG9nb2RiYSBvIHBvc29qaWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdOYWhhamEgc2Ugdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdaZW1samVwaXNuYSBkb2zFvmluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Byb2l6dmFqYWxlYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTmFqdmXEjWphIHptb2dsaml2b3N0IG9icmVtZW5pdHZlIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdTcG9taW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdWcnN0YSBwb21uaWxuaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pIHN0b2phbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsbmEgxaF0ZXZpbGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsbmkvdmdyYWplbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ09waXMgbW9kZWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ0xvxI1saml2b3N0IG1vbml0b3JqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdWZWxpa29zdCBtb25pdG9yamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNacWha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ09tcmXFvmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWFjaWplIG8gb21yZcW+anUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjaWplIG8gb21yZcW+anUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ09tcmXFvm5hIHBsYXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrZWxqLWthZG1pamV2YSAoTmlDZCkgYmF0ZXJpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtlbGotbWV0YWxoaWRyaWRuYSAoTmlNSCkgYmF0ZXJpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnU3BvcmF6dW0gbyBuZXJhemtyaXZhbmp1IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQmVsZcW+bmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ8WgdGV2aWxvIHByb2Nlc29yamV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ8WgdGV2aWxvIG1vZHVsb3YgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ8WgdGV2aWxvIGdyYWZpxI1uaWgga2FydGljJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKG9yZ2Fuc2thIHN2ZXRsZcSNYSBkaW9kYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnU3Ryb8Wha2kgcG9zbG92YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICfFoHRldmlsa2EgbmFyb8SNaWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnRHJ1Z28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0l6aG9kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdTcG9yYXp1bSBvIHBhcnRuZXJzdHZ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbnNrYSDFoXRldmlsa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1Zyc3RhIHRlbGVmb25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRml6acSNbmEgamVkcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdaYWdvdGF2bGphbmplIG5hcGFqYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0t1cGxqZW5vIHYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0dsb2JpbmEgcmVnYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnRW5vdGUgc3RvamFsYSAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1NvYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdLYXJ0aWNhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1BvdHJkaWxhIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdQcm9kYWpuYSBwb2dvZGJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsaXRza2kgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdaYXBydGEgc3ZpbsSNZW5vLWtpc2xpbnNrYSBiYXRlcmlqYSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1Nlcmlqc2thIMWhdGV2aWxrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdQcm9ncmFtc2thIG9wcmVtYSB6YSBzdHJlxb5uaWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU3BvcmF6dW0gbyBzdG9yaXR2YWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTdG9yaXR2ZW5hIG96bmFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdWcnN0YSB2dGnEjW5pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdQcm9ncmFtc2thIG9wcmVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1p2b8SNbmlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZG5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdaYcSNZXRuaSBuYXNsb3YgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1NocmFuamV2YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1JhemRlbGVrIHphIHNocmFuamV2YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1BvZHJ1xb5uaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdQb3Z6ZXRlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RhbmVrIG9kamVtYWxlYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnTml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdTa3VwYWogUkFNIGdyYWZpxI1uZSBrYXJ0aWNlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdTa3VwbmkgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgeiB6YXNsb25vbSBuYSBkb3Rpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1N0b2xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdWb3psacWhxI1lIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ05hZ2xhdm5hIHNsdcWhYWxrYSBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlZm9uIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1NwbGV0bmEga2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/sr_Cyrl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0N5cmxfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBvcGVyYXRpb24gZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC00L7Qu9Cw0LfQvdC1INC/0L7QtNCw0YLQutC1INC30LDRhdGC0LXQstCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC40LfQu9Cw0LfQvdC1INC/0L7QtNCw0YLQutC1INC+0LTQs9C+0LLQvtGA0LAnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ9Ce0LLQtNC1INC80L7QttC10YLQtSDQsNC60YLQuNCy0LjRgNCw0YLQuCBSZWFkeTJBZG9wdCDQv9GA0L7RhtC10YHQtSDQv9GA0LjQvNC10YDQsCDQvdCw0ZjQsdC+0ZnQtSDQv9GA0LDQutGB0LUg0LrQvtGY0Lgg0YHRgyDRgdC/0YDQtdC80L3QuCDQt9CwINGD0L/QvtGC0YDQtdCx0YMuINCc0L7Qu9C40LzQviDQvtCx0YDQsNGC0LjRgtC1INC/0LDQttGa0YMg0LTQsCDRmNC1INC80L7QttC00LAg0L3QtdC+0L/RhdC+0LTQvdCwINC00L7QtNCw0YLQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRmNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9C60LvQsNGB0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ9CR0L7RmNCwINGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KLQuNC/INGB0YLQsNGa0LAg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CU0LAg0LvQuCDQt9Cw0LjRgdGC0LAg0LbQtdC70LjRgtC1INC00LAg0LjQt9Cx0YDQuNGI0LXRgtC1INC+0LLRgyDQv9GA0L7QvNC10L3Rgz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0JHQvtGY0LAg0YHRgtCw0YLRg9GB0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfQotC40L8g0YHRgtCw0ZrQsCDQuNC90YbQuNC00LXQvdGC0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfQodCw0LTRgNC20LDRmCDQuNGB0YLQvtGA0LjRmNCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn0JLRgNC10LzQtSDQutGA0LXQuNGA0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ9Cf0L7QutGA0LXQvdC4INC/0YDQtdGC0YDQsNCz0YMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9CR0L7RmNCwINGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfQotC40L8g0YHRgtCw0ZrQsCDQuNC90YbQuNC00LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn0JfQsNC00ZrQuCDQv9GD0YIg0L/RgNC+0LzQtdGa0LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9Cf0YDQvtC80LXQvdC40L4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfQlNCwINC70Lgg0LbQtdC70LjRgtC1INC00LAg0L3QsNGB0YLQsNCy0LjRgtC1Pyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfQndC10L7Qv9GF0L7QtNCw0L0gRXhhbXBsZVByb2Nlc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiDQmNCUINCh0YLQsNCy0LrQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQn9GA0L7QvNC10L3QsCAiJXMiINC90LjRmNC1INC90LDRktC10L3QsCDRgyDQsdCw0LfQuCDQv9C+0LTQsNGC0LDQutCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ9Cd0LjRmNC1INCx0LjQu9C+INC80L7Qs9GD0ZvQtSDQvtCx0YDQuNGB0LDRgtC4IENoYW5nZUlEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfQndC1INC80L7QttC1INGB0LUg0L/RgNC40LrQsNC30LDRgtC4INC40YHRgtC+0YDQuNGY0LDRgiwg0ZjQtdGAINC90LjRmNC1INC00LDRgiDQmNCUINCh0YLQsNCy0LrQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfQndC1INC80L7QttC1INGB0LUg0L/RgNC40LrQsNC30LDRgtC4INC40YHRgtC+0YDQuNGY0LDRgiwg0L3QuNGY0LUg0LTQsNGCIFRpY2tldElEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfQndC+0LLQsCDQsNC60YbQuNGY0LAgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfQntCx0YDQuNGB0LDQvSDRg9GB0LvQvtCyIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfQn9C+0LLQtdC30LDQvdC+INGB0LAgJXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn0J7QsdGA0LjRgdCw0L3QsCDQstC10LfQsCDRgdCwICVzIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0YHQtSDQv9GA0LjQutCw0LfQsNGC0Lgg0LjRgdGC0L7RgNC40ZjQsNGCLCDQvdC40ZjQtSDQtNCw0YIgVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0J/RgNC+0LzQtdC90LAgIiVzIiDQvdC40ZjQtSDQvdCw0ZLQtdC90LAg0YMg0LHQsNC30Lgg0L/QvtC00LDRgtCw0LrQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9Cg0LXRhNC10YDQtdC90YbQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiBDaGFuZ2VJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ9Cd0LXQvNCwINGA0LXQt9GD0LvRgtCw0YLQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfQo9C/0L7Qt9C+0YDQtdGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9Cd0LXQvNCwINC00L7Qt9Cy0L7Qu9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9CR0L7RmNCwINGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LjQvyDRgdGC0LDRmtCwINC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfQuNC30LzQtdGS0YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JjRgdGC0LjRh9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0J7QvNC+0LPRg9Gb0LDQstCwINC90LDQv9GA0LXQtNC90LUg0YPRgdC70L7QstC1INC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4g0KHQsCDQvtCy0L7QvCDQvtC/0YbQuNGY0L7QvCDQvNC+0ZvQtdGC0LUg0L/RgNC10YLRgNCw0LbQuNCy0LDRgtC4INC90L/RgC4g0L3QsNGB0LvQvtCyINGC0LjQutC10YLQsCDRgdCwINGD0YHQu9C+0LLQuNC80LAg0LrQsNC+ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQntC80L7Qs9GD0ZvQsNCy0LAg0L3QsNC/0YDQtdC00L3QtSDRg9GB0LvQvtCy0LUg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQvtGA0LjRgdC90LjQutCwLiDQodCwINC+0LLQvtC8INC+0L/RhtC40ZjQvtC8INC80L7Rm9C10YLQtSDQv9GA0LXRgtGA0LDQttC40LLQsNGC0Lgg0L3Qv9GALiDQvdCw0YHQu9C+0LIg0YLQuNC60LXRgtCwINGB0LAg0YPRgdC70L7QstC40LzQsCDQutCw0L4gIigqa2V5MSomJiprZXkyKikiINC40LvQuCAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ9CU0L7QtNC10ZnQtdC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0LTQvtC00LXRmdC10L3QtSDRhNC40YDQvNC4INC60LvQuNGY0LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQtNC+0LTQtdGZ0LXQvdC1INC60LvQuNGY0LXQvdGC0YMg0LrQvtGA0LjRgdC90LjQutGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCINC/0L7QtNC10YjQsNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfQn9GA0L7QstC10YDQsCDRmNC10LTQuNC90YHRgtCy0LXQvdC+0LMg0LjQvNC10L3QsCDRgdCw0LzQviDRgyDQvtC60LLQuNGA0YMg0LjRgdGC0LUg0LrQu9Cw0YHQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4IChcJ9C60LvQsNGB0LBcJykg0LjQu9C4INCz0LvQvtCx0LDQu9C90L4gKFwn0LPQu9C+0LHQsNC70L3QvlwnKSwg0YjRgtC+INC30L3QsNGH0Lgg0LTQsCDRmNC1INGB0LLQsNC60LAg0L/QvtGB0YLQvtGY0LXRm9CwINCa0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0YHRgtCw0LLQutCwINGD0LfQtdGC0LAg0YMg0L7QsdC30LjRgCDRgyDQv9GA0L7QstC10YDQuCDQtNGD0L/Qu9C40LrQsNGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9CU0L7QtNCw0LLQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn0KPRgNC10ZLQuNCy0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LTQvtCz0LDRktCw0ZjQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC60L7RmNC4INC+0LzQvtCz0YPRm9Cw0LLQsCDQsdC10LvQtdC20LXRmtC1INGDINC40YHRgtC+0YDQuNGY0LDRgiDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9CY0YHRgtC+0YDQuNGY0LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn0KjRgtCw0LzQv9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn0JTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0L/QviDRgdGC0YDQsNC90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfQkdCw0LfQsCDQv9C+0LTQsNGC0LDQutCwINGD0L/RgNCw0LLRmdCw0ZrQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40ZjQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn0JzQvtC00YPQuyDQvNCw0YHQvtCy0L3QtSDQsNC60YbQuNGY0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40Lwg0YHRgtCw0LLQutCw0LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAg0L/RgNC10YLRgNCw0LbRg9GY0LUg0L/QvtC30LDQtNC40L3RgdC60Lgg0YDRg9GC0LXRgCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQmtGA0LXQuNGA0LDRmtC1INC4INGD0L/RgNCw0LLRmdCw0ZrQtSDQtNC10YTQuNC90LjRhtC40ZjQsCDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/QvtC00LDRhtC4INC30LAg0LrQvtGA0LjRiNGb0LXRmtC1INC90LAg0LDRgtGA0LjQsdGD0YLQuNC80LAg0LfQsCDQv9GA0LjQutCw0Lcg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAuINCf0YDQuNC80LXRgDogIlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO1RpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9C+0LTQsNGG0Lgg0LfQsCDQutC+0YDQuNGI0ZvQtdGa0LUg0L3QsCDQsNGC0YDQuNCx0YPRgtC40LzQsCDQt9CwINC/0YDQuNC60LDQtyDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsC4g0J/RgNC40LzQtdGAOiAiVGlja2V0Q3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO1RpY2tldENyZWF0ZVRpbWVTdGFydERheT00O1RpY2tldENyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdG9wTW9udGg9MTE7VGlja2V0Q3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQsNC60YbQuNGY0LUg0LPQtNC1INGY0LUg0LTRg9Cz0LzQtSDQv9C+0YHRgtCw0LLQutC4INC00L7RgdGC0YPQv9C90L4g0YMg0L/QvtCy0LXQt9Cw0L3QvtC8INCz0YDQsNGE0LjRh9C60L7QvCDQtdC70LXQvNC10L3RgtGDINC+0LHRmNC10LrRgtCwIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuINCc0L7Qu9C40LzQviDQtNCwINC40LzQsNGC0LUg0L3QsCDRg9C80YMg0LTQsCDQvtCy0LUg0JDQutGG0LjRmNC1INC80L7RgNCw0ZjRgyDQtNCwINCx0YPQtNGDINGA0LXQs9C40YHRgtGA0L7QstCw0L3QtSDRgyDRgdC70LXQtNC10ZvQuNC8IEpTINC4IENTUyDQtNCw0YLQvtGC0LXQutCw0LzQsDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMg0LggQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINCx0YDQuNGB0LDRmtC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQutGA0L7QtyDQs9C10L3QtdGA0LjRh9C60Lgg0LjQvdGC0LXRgNGE0LXRmNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvdC10L7Qv9GF0L7QtNC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDQtNC+0LHQuNGY0LDRmtC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQutC+0YDQuNGI0ZvQtdGa0LXQvCDQs9C10L3QtdGA0LjRh9C60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L3QtdC+0L/RhdC+0LTQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0L/RgNC10YLRgNCw0LPRgyBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0LrQvtGA0LjRiNGb0LXRmtC10Lwg0LPQtdC90LXRgNC40YfQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC90LXQvtC/0YXQvtC00L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINC00L7QsdC40ZjQsNGa0LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC60L7RgNC40YjRm9C10ZrQtdC8INCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC80L7QtNGD0Lsg0L/RgNC10LPQu9C10LTQsCDQt9CwINC80LDQu9C4INC/0YDQuNC60LDQtyDQu9C40YHRgtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LguICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YDQtdCz0YPQu9Cw0YDQvdC1INC40LfRgNCw0LfQtSDQt9CwINGB0LLQsNC60YMg0LrQu9Cw0YHRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgNCw0LTQuCDQv9GA0L7QstC10YDQtSDQvdCw0LfQuNCy0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0Lgg0L/RgNC40LrQsNC30LAg0L/RgNC40L/QsNC00LDRmNGD0ZvQuNGFINC/0L7RgNGD0LrQsCDQviDQs9GA0LXRiNC60LDQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDRgtC40LrQtdGC0LAg0LfQsCDRgdC+0YDRgtC40YDQsNGa0LUg0YLQuNC60LXRgtCwINGDINGA0LXQt9GD0LvRgtCw0YLRgyDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsCDQuNC90YLQtdGA0YTQtdGY0YHQsCDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINGC0LjQutC10YLQsCDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSDRgtC40LrQtdGC0LAg0YMg0YDQtdC30YPQu9GC0LDRgtGDINC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINC40L3RgtC10YDRhNC10ZjRgdCwINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINGC0LjQutC10YLQsCDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSDRgtC40LrQtdGC0LAg0YMg0YDQtdC30YPQu9GC0LDRgtGDINC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINGDINC+0LLQvtGYINC+0L/QtdGA0LDRhtC40ZjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YDQtdC00L7RgdC70LXQtCDRgtC40LrQtdGC0LAgKNC/0L7RgdC70LUg0YHQvtGA0YLQuNGA0LDRmtCwINC/0L4g0L/RgNC40L7RgNC40YLQtdGC0YMpINGDINC/0YDQtdCz0LvQtdC00YMg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9GA0LXRgNCw0YLQtdGA0LAuINCT0L7RgNC1OiDQndCw0ZjRgdGC0LDRgNC40ZjQuCDQvdCwINCy0YDRhdGDLiDQlNC+0LvQtTog0J3QsNGY0L3QvtCy0LjRmNC1INC90LAg0LLRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQg0YLQuNC60LXRgtCwINGDINC/0YDQtdCz0LvQtdC00YMg0L/RgNC10YLRgNCw0LPQtSDRgNC10LfRg9C70YLQsNGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4g0JPQvtGA0LU6INCd0LDRmNGB0YLQsNGA0LjRmNC4INC90LAg0LLRgNGF0YMuINCU0L7Qu9C1OiDQndCw0ZjQvdC+0LLQuNGY0LUg0L3QsCDQstGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9GA0LjQutCw0Lcg0L/RgNC10YLRgNCw0LPQtSDQsNGC0YDQuNCx0YPRgtCwINGC0LjQutC10YLQsCDQt9CwINC/0YDQuNC60LDQtyDQtdC60YDQsNC90LAg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0YDQuNC60LDQtyDQv9GA0LXRgtGA0LDQs9C1INCw0YLRgNC40LHRg9GC0LAg0YLQuNC60LXRgtCwINC30LAg0L/RgNC40LrQsNC3INC10LrRgNCw0L3QsCDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsC4g0J/RgNC40LzQtdGAOiAiS2V5IiDQvNC+0YDQsCDQuNC80LDRgtC4INC90LDQt9C40LIg0LTQuNC90LDQvNC40YfQutC+0LMg0L/QvtGZ0LAsINGDINC+0LLQvtC8INGB0LvRg9GH0LDRmNGDIFwnWFwnLCAiQ29udGVudCIg0LzQvtGA0LAg0LjQvNCw0YLQuCDQstGA0LXQtNC90L7RgdGCINC00LjQvdCw0LzQuNGH0LrQvtCzINC/0L7RmdCwINGDINC30LDQstC40YHQvdC+0YHRgtC4INC+0LQg0YLQuNC/0LAg0LTQuNC90LDQvNC40YfQutC+0LMg0L/QvtGZ0LAsINCi0LXQutGB0YI6IFwnYSB0ZXh0XCcsINCf0LDQtNCw0ZjRg9Gb0Lg6IFwnMVwnLCDQlNCw0YLRg9C8L9CS0YDQtdC80LU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyDQuC/QuNC70LggXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9C+0LTQvtCx0ZjQtdC60LDRgiDQutC70LDRgdC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQstC40YHQuNC90YMg0LfQsCDQutC+0LzQv9C+0L3QtdC90YLRgyBSaWNoIFRleHQgRWRpdG9yINC30LAg0L7QstCw0Zgg0L/RgNC40LrQsNC3INC10LrRgNCw0L3QsC4g0KPQvdC10YHQuCDQsdGA0L7RmCAo0L/QuNC60YHQtdC70LgpINC40LvQuCDQv9GA0L7RhtC10L3RgtGD0LDQu9C90YMg0LLRgNC10LTQvdC+0YHRgiAo0YDQtdC70LDRgtC40LLQvdGDKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQsdGA0L7RmCDRgNC10LTQvtCy0LAg0LfQsCDQtdC00LjRgtC+0YAg0LTQtdGE0LjQvdC40YbQuNGY0LUgQ0kg0YMg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC40LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YDQtdC00L7RgdC70LXQtCDQuNC90YbQuNC00LXQvdGC0L3QuNGFINGB0YLQsNGa0LAg0L7QtCDQstC40YHQvtC60L7QsyAo0L3Qv9GAINC60YDQuNGC0LjRh9C90L4pINC00L4g0L3QuNGB0LrQvtCzICjQvdC/0YAg0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INGA0LXQu9C10LLQsNC90YLQvdCwINGB0YLQsNGa0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAg0LPQtNC1INC/0L7QstC10LfQsNC90Lgg0YLQuNC60LXRgtC4INC80L7Qs9GDINC00LAg0YPRgtC40YfRgyDQvdCwINGB0YLQsNGC0YPRgSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCz0YDQsNC90LjRhtGDINC/0YDQtdGC0YDQsNCz0LUg0LfQsCDQtdC60YDQsNC9IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQs9GA0LDQvdC40YbRgyDQv9GA0LXRgtGA0LDQs9C1INC30LAg0LXQutGA0LDQvSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LPRgNCw0L3QuNGG0YMg0L/RgNC10YLRgNCw0LPQtSDQt9CwINC10LrRgNCw0L0gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCz0YDQsNC90LjRhtGDINC/0YDQtdGC0YDQsNCz0LUg0LfQsCDQtdC60YDQsNC9IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INGDINGC0LDQsdC10LvQuCDQstC10LfQsCDRgyDQt9Cw0LLQuNGB0L3QvtGB0YLQuCDQvtC0INC60LvQsNGB0LUuINCj0LrQvtC70LjQutC+INC90LUg0L/QvtGB0YLQvtGY0Lgg0YPQvdC+0YEg0LfQsCDQv9C+0ZjQtdC00LjQvdCw0YfQvdGDINC60LvQsNGB0YMsINCx0LjRm9C1INC/0YDQuNC60LDQt9Cw0L3QtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QtSDQutC+0LvQvtC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0YDQuNC60LDQt9Cw0L3QtSDQutC+0LvQvtC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDRgyDRgtCw0LHQtdC70Lgg0LLQtdC30LAg0YMg0LfQsNCy0LjRgdC90L7RgdGC0Lgg0L7QtCDQutC70LDRgdC1LiDQodCy0LDQutC4INGD0L3QvtGBINC80L7RgNCwINGB0LDQtNGA0LbQsNGC0Lgg0L/RgNC10YTQuNC60YEg0YHQsCDQvdCw0LfQuNCy0L7QvCDQutC70LDRgdC1INC4INC00LLQvtGC0LDRh9C60L7QvCAo0L3Qv9GALiBDb21wdXRlcjo6KS4g0J/QvtGB0YLQvtGY0Lgg0L/QsNGAINCw0YLRgNC40LHRg9GC0LAg0LrQvtGY0Lgg0YHRgyDQt9Cw0ZjQtdC00L3QuNGH0LrQuCDQt9CwINGB0LLQtSDQutC70LDRgdC1ICjQvdC/0YAuINC30LAg0LrQu9Cw0YHRgyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4g0JfQsCDQv9GA0LjQutCw0Lcg0L/QvtGY0LXQtNC40L3QsNGH0L3QuNGFINCw0YLRgNC40LHRg9GC0LAg0LjQtyDQtNC10YTQuNC90LjRhtC40ZjQtSwg0LzQvtGA0LDRgtC1INC60L7RgNC40YHRgtC40YLQuCDRgdC70LXQtNC10ZvRgyDRiNC10LzRgyAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHRgyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQo9C60L7Qu9C40LrQviDQvdC1INC/0L7RgdGC0L7RmNC4INGD0L3QvtGBINC30LAg0L/QvtGY0LXQtNC40L3QsNGH0L3RgyDQutC70LDRgdGDLCDQsdC40ZvQtSDQv9GA0LjQutCw0LfQsNC90LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90LUg0LrQvtC70L7QvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LrQvtGY0LUg0YHRgyDRgdGC0LDQstC60LUg0YHQu9C+0LHQvtC00L3QtSDQt9CwIFwnQWN0aW9uXCcg0YMg0YLRgNC10ZvQtdC8INC90LjQstC+0YMgQUNMINGB0YLRgNGD0LrRgtGD0YDQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC60L7RmNC1INGB0YMg0YHRgtCw0LLQutC1INGB0LvQvtCx0L7QtNC90LUg0YMg0L/RgNCy0L7QvCDQvdC40LLQvtGDIEFDTCDRgdGC0YDRg9C60YLRg9GA0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LrQvtGY0LUg0YHRgyDRgdGC0LDQstC60LUg0YHQu9C+0LHQvtC00L3QtSDRgyDQtNGA0YPQs9C+0Lwg0L3QuNCy0L7RgyBBQ0wg0YHRgtGA0YPQutGC0YPRgNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LrQvtGY0Lgg0YLQuNC/INCy0LXQt9C1ICjQs9C70LXQtNCw0L3QviDQuNC3INC/0LXRgNGB0L/QtdC60YLQuNCy0LUg0YLQuNC60LXRgtCwKSDQvNC+0LbQtSDQtNCwINGD0YLQuNGH0LUg0L3QsCDQv9C+0LLQtdC30LDQvdGDIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LrQvtGY0Lgg0YLQuNC/INGC0LjQutC10YLQsCDQvNC+0LbQtSDQtNCwINGD0YLQuNGH0LUg0L3QsCDRgdGC0LDRgtGD0YEg0L/QvtCy0LXQt9Cw0L3QtSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9CR0YDQuNGB0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn0JHQvtGY0LAg0YHRgtCw0YLRg9GB0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn0JHQvtGY0LAg0YHRgtCw0YLRg9GB0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn0JTRg9C/0LvQuNC60LDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQtdC60YDQsNC90YMg0LTQvtC00LDRgtC90LjRhSBJVFNNINC/0L7RmdCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQv9GA0LXQs9C70LXQtNGDIEZBUSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC10LrRgNCw0L3RgyDQv9GA0LXRgtGA0LDQs9C1INC/0YDQvtC80LXQvdCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn0J7QvNC+0LPRg9Gb0LDQstCwINC80LDRgdC+0LLQvdGDINCw0LrRhtC40ZjRgyDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjQvCDRgdGC0LDQstC60LDQvNCwINGDINC/0YDQuNGB0YLRg9C/0L3QvtC8INGB0LjRgdGC0LXQvNGDINC+0L/QtdGA0LDRgtC10YDQsCDQvdCwINCy0LjRiNC1INC+0LQg0ZjQtdC00L3QtSDRgdGC0LDQstC60LUg0LjRgdGC0L7QstGA0LXQvNC10L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LAg0YHQstC+0ZjRgdGC0LLQviDQvNCw0YHQvtCy0L3QtSDQsNC60YbQuNGY0LUg0L3QsCDQutC+0L3RhNC40LPQuNGA0LDRhtC40L7QvdC40Lwg0YHRgtCw0LLQutCw0LzQsCDRgdCw0LzQviDQt9CwINC40LfQu9C40YHRgtCw0L3QtSDQs9GA0YPQv9C1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC00L7Qs9Cw0ZLQsNGY0LAg0LfQsCDQv9C+0LTQtdGI0LDQstCw0ZrQtSDRgdGC0LDRgtGD0YHQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC/0YDQuNC70LjQutC+0Lwg0L/QvtGB0YLQsNCy0ZnQsNGa0LAg0LLQtdC30LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwINC80L7QtNGD0LvQsCDQs9C10L3QtdGA0LjRh9C60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsCDQt9CwINGB0LvQvtGYINC/0L7Qt9C40LLQsNC+0YbQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAg0LzQvtC00YPQu9CwINCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwINC30LAg0YHQu9C+0Zgg0L/QvtC30LjQstCw0L7RhtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAg0LzQvtC00YPQu9CwINCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwINC30LAg0YHQu9C+0Zgg0L/QvtC30LjQstCw0L7RhtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ9Cf0YDQtdCz0LvQtdC0IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ9Ci0LjQvyDRgdGC0LDRmtCwINC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn0KLQuNC/INGB0YLQsNGa0LAg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdC4INCx0YDQvtGYINGC0LjQutC10YLQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyDRgNC10LfRg9C70YLQsNGC0YMg0L7QstC1INC+0L/QtdGA0LDRhtC40ZjQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0YMg0LPRgNGD0L/QtSDQvtC00LPQvtCy0L7RgNC90LUg0LfQsCDQutC70LDRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDQv9GA0L7QstC10YDRgyDQs9GA0YPQv9C1INC+0LTQs9C+0LLQvtGA0L3QtSDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90YMg0YHRgtCw0LLQutGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDQs9C10L3QtdGA0LjRgdCw0ZrQtSDRgdGC0LDRgtC40YHRgtC40LrQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHRgNC+0Zgg0YLQuNC60LXRgtCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INC90LAg0YHQstCw0LrQvtGYINGB0YLRgNCw0L3QuCDRgNC10LfRg9C70YLQsNGC0LAg0L/RgNC10YLRgNCw0LPQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0YDQvtGYINGC0LjQutC10YLQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDQvdCwINGB0LLQsNC60L7RmCDRgdGC0YDQsNC90Lgg0YDQtdC30YPQu9GC0LDRgtCwINC/0YDQtdGC0YDQsNCz0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ9Cf0YDQtdCz0LvQtdC0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRhNC40LvRgtC10YAg0LrQvtC70L7QvdCwINGDINGD0LzQsNGa0LXQvdC+0Lwg0L/RgNC10LPQu9C10LTRgyDRgtC40LrQtdGC0LAuINCd0LDQv9C+0LzQtdC90LA6INC/0L7QtNC10YjQsNCy0LDRmtC1IFwnQWN0aXZlXCcg0L3QsCAwINGb0LUg0YHQsNC80L4g0L7QvdC10LzQvtCz0YPRm9C40YLQuCDQvtC/0LXRgNCw0YLQtdGA0LjQvNCwINC00LAg0LzQtdGa0LDRmNGDINGB0LLQvtGY0LAg0LvQuNGH0L3QsCDQv9C+0LTQtdGI0LDQstCw0ZrQsCDQuNC3INC+0LLQtSDQs9GA0YPQv9C1LCDQsNC70Lgg0ZvQtSDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNC4INC4INC00LDRmdC1INC80L7Rm9C4INC00LAg0LjRhSDQvNC10ZrQsNGY0YMg0YMg0ZrQuNGF0L7QstC+INC40LzQtS4g0J/QvtC00LXRgdC40YLQtSBcJ1ByZWZlcmVuY2VHcm91cFwnINC00LAg0LHQuNGB0YLQtSDQvtC00YDQtdC00LjQu9C4INGDINC60L7QvCDQtNC10LvRgyDQuNC90YLQtdGA0YTQtdGY0YHQsCDQvtCy0LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0YLRgNC10LHQsCDQtNCwINCx0YPQtNGDINC/0YDQuNC60LDQt9Cw0L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQsdC+0ZjQtSDRgdGC0LDRgtGD0YHQsCDQv9GA0LjQvNC10L3QtSDQvdCwINC/0YDQuNC60LDQt9GDINC/0L7RgdGC0LDQstC60Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINCw0YLRgNC40LHRg9GC0LUg0YPQt9C+0YDQutCwINCz0YDRg9C/0LUg0LfQsCDQtNC+0LfQstC+0LvQtSDQvtC/0YjRgtC10LMg0LrQsNGC0LDQu9C+0LPQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0LDRgtGD0YHQtSDQv9GA0LjQvNC10L3QtSDQvdCwINC/0YDQuNC60LDQt9GDINC/0L7RgdGC0LDQstC60Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0YDQsNC90LjRhtC1ICjQvdCwINC60L7RmNC40LzQsCDRgdGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC/0YDQuNC60LDQt9Cw0L3QtSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9CwINC/0YDQuNGB0YLRg9C/0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0YPQv9C+0YLRgNC10LHRgyDQtdC60YDQsNC90LAg0L/RgNC10YLRgNCw0LPQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0YPQv9C+0YLRgNC10LHRgyDQtdC60YDQsNC90LAg0L/RgNC10YLRgNCw0LPQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0YPQv9C+0YLRgNC10LHRgyDQtdC60YDQsNC90LAg0L/RgNC10YLRgNCw0LPQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0YPQv9C+0YLRgNC10LHRgyDQtdC60YDQsNC90LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQtNC10YLQsNC70L3QvtCzINC/0YDQuNC60LDQt9CwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQtNC+0LTQsNCy0LDRmtCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0YPQv9C+0YLRgNC10LHRgyDQtdC60YDQsNC90LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQuNC30LzQtdC90LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQuNGB0YLQvtGA0LjRmNCw0YLQsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDRiNGC0LDQvNC/0LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfQn9C+0YLRgNC10LHQvdCwINC/0YDQsNCy0LAg0LfQsCDQsdGA0LjRgdCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfQn9GA0LXRgtGA0LDQs9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICfQn9C+0YHRgtCw0LLRmdCwINGB0YLQsNGa0LUg0LjQvdGG0LjQtNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC60LDQtNCwINGY0LUg0YLQuNC60LXRgiDQv9C+0LLQtdC30LDQvSDRgdCwINGB0YLQsNCy0LrQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YHRgtCw0YLRg9GBINC/0YDQuNC80LXQvdC1INC90LAg0LXQutGA0LDQvdGDINC80LDRgdC+0LLQvdC1INCw0LrRhtC40ZjQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YHRgtCw0YLRg9GBINC40L3RhtC40LTQtdC90YLQsCDQvdCwINC10LrRgNCw0L3RgyDQvNCw0YHQvtCy0L3QtSDQsNC60YbQuNGY0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LrQvtGY0LAg0L7QvNC+0LPRg9Gb0LDQstCwINC/0L7QstC10LfQuNCy0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGB0LAg0LTRgNGD0LPQuNC8INC+0LHRmNC10LrRgtC+0Lwg0L3QsCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRmNC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0L/RgNC40YHRgtGD0L8g0LjRgdGC0L7RgNC40ZjQsNGC0YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDQv9GA0LXQs9C70LXQtNGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC/0YDQuNGB0YLRg9C/INC40YHRgtC+0YDQuNGY0LDRgtGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC90LAg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINCx0YDQuNGB0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC90LAg0ZrQtdC90L7QvCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDRg9C80L3QvtC20LDQstCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINC/0YDQtdCz0LvQtdC00YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0YPQvNC90L7QttCw0LLQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDRmtC10L3QvtC8INC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC40LfQvNC10L3RgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINGa0LXQvdC+0Lwg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0L/QvtCy0YDQsNGC0LDQuiDQvdCwINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDRiNGC0LDQvNC/0YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDRmtC10L3QvtC8INC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQtNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDQv9GA0LXQs9C70LXQtNGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC30YPRmNC1INC40YHRgtC+0YDQuNGY0LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSAo0L7QsdGA0L3Rg9GCINGA0LXQtNC+0YHQu9C10LQpINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90YMg0YHRgtCw0LLQutGDLCDQvdC/0YAuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDRmNC1IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9C60LvQsNGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn0LPQu9C+0LHQsNC70L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ9C/0L7RgdGCLdC/0YDQvtC00YPQutGG0LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfQv9GA0LUt0L/RgNC+0LTRg9C60YbQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ9C/0YDQvtC00YPQutGG0LjRmNCwJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn0J3QsNC70L7Qsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn0JDQtNC80LjQvdC40YHRgtGA0LDRhtC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfQmNC90YLQtdGA0YTQtdGY0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn0JrQu9C40ZjQtdC90YLRgdC60Lgg0YHQtdGA0YLQuNGE0LjQutCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfQotC40L8g0YHQsNC00YDQttCw0ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnVnJlbWUga3JlaXJhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn0JHQtdGB0L/Qu9Cw0YLQvdC4ICoqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQn9GA0LXQs9C70LXQtCDRgNC10LfRg9C70YLQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C8INC+INC90LjQstC+0YMg0YPRgdC70YPQs9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfQodGC0LDQvdC00LDRgNC00LDQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/sr_Latn_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0xhdG5fSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBvcGVyYXRpb24gZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnTWFwaXJhbmplIHphIGRvbGF6bmUgcG9kYXRrZSB6YWh0ZXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTWFwaXJhbmplIHphIGl6bGF6bmUgcG9kYXRrZSBvZGdvdm9yYSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnT3ZkZSBtb8W+ZXRlIGFrdGl2aXJhdGkgUmVhZHkyQWRvcHQgcHJvY2VzZSBwcmltZXJhIG5hamJvbGplIHByYWtzZSBrb2ppIHN1IHNwcmVtbmkgemEgdXBvdHJlYnUuIE1vbGltbyBvYnJhdGl0ZSBwYcW+bmp1IGRhIGplIG1vxb5kYSBuZW9waG9kbmEgZG9kYXRuYSBrb25maWd1cmFjaWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ2tsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdCb2phIHN0YXR1c2EgcmFzcG9yZcSRaXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnVGlwIHN0YW5qYSBpbmNpZGVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRGEgbGkgemFpc3RhIMW+ZWxpdGUgZGEgaXpicmnFoWV0ZSBvdnUgcHJvbWVudT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnU2FkcsW+YWogaXN0b3JpamF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVnJlbWUga3JlaXJhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1Bva3JlbmkgcHJldHJhZ3UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnT2dyYW5pxI1lbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnVGlwIHN0YW5qYSBpbmNpZGVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnWmFkbmppIHB1dCBwcm9tZW5qZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1Byb21lbmlvJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnRGEgbGkgxb5lbGl0ZSBkYSBuYXN0YXZpdGU/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ05lb3Bob2RhbiBFeGFtcGxlUHJvY2Vzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgSUQgU3RhdmtlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ1Byb21lbmEgIiVzIiBuaWplIG5hxJFlbmEgdSBiYXppIHBvZGF0YWthISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05pamUgYmlsbyBtb2d1xIdlIG9icmlzYXRpIENoYW5nZUlEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lIG1vxb5lIHNlIHByaWthemF0aSBpc3RvcmlqYXQsIGplciBuaWplIGRhdCBJRCBTdGF2a2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmUgbW/FvmUgc2UgcHJpa2F6YXRpIGlzdG9yaWphdCwgbmlqZSBkYXQgVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdmEgYWtjaWphIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnT2JyaXNhbiB1c2xvdiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnUG92ZXphbm8gc2EgJXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnT2JyaXNhbmEgdmV6YSBzYSAlcyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZSBtb8W+ZSBzZSBwcmlrYXphdGkgaXN0b3JpamF0LCBuaWplIGRhdCBUaWNrZXRJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdQcm9tZW5hICIlcyIgbmlqZSBuYcSRZW5hIHUgYmF6aSBwb2RhdGFrYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaWplIGRhdCBDaGFuZ2VJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05lbWEgcmV6dWx0YXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ1Vwb3pvcmVuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05lbWEgZG96dm9sZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdCb2phIHN0YXR1c2EgcmFzcG9yZcSRaXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ2l6bWXEkXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnSXN0acSNZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ09tb2d1xIdhdmEgbmFwcmVkbmUgdXNsb3ZlIHByZXRyYWdlIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLiBTYSBvdm9tIG9wY2lqb20gbW/Eh2V0ZSBwcmV0cmHFvml2YXRpIG5wci4gbmFzbG92IHRpa2V0YSBzYSB1c2xvdmltYSBrYW8gIigqa2V5MSomJiprZXkyKikiIGlsaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ09tb2d1xIdhdmEgbmFwcmVkbmUgdXNsb3ZlIHByZXRyYWdlIHRpa2V0YSB1IGludGVyZmVqc3Uga29yaXNuaWthLiBTYSBvdm9tIG9wY2lqb20gbW/Eh2V0ZSBwcmV0cmHFvml2YXRpIG5wci4gbmFzbG92IHRpa2V0YSBzYSB1c2xvdmltYSBrYW8gIigqa2V5MSomJiprZXkyKikiIGlsaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0RvZGVsamVuZSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnS29uZmlndXJhY2lvbmUgc3RhdmtlIGRvZGVsamVuZSBmaXJtaSBrbGlqZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSBkb2RlbGplbmUga2xpamVudHUga29yaXNuaWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIHBvZGXFoWF2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUHJvdmVyYSBqZWRpbnN0dmVub2cgaW1lbmEgc2FtbyB1IG9rdmlydSBpc3RlIGtsYXNlIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgKFwna2xhc2FcJykgaWxpIGdsb2JhbG5vIChcJ2dsb2JhbG5vXCcpLCDFoXRvIHpuYcSNaSBkYSBqZSBzdmFrYSBwb3N0b2plxIdhIEtvbmZpZ3VyYWNpb25hIHN0YXZrYSB1emV0YSB1IG9iemlyIHUgcHJvdmVyaSBkdXBsaWthdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdEb2RhdmFuamUga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ1VyZcSRaXZhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCBkb2dhxJFhamEga29uZmlndXJhY2lvbmloIHN0YXZraSBrb2ppIG9tb2d1xIdhdmEgYmVsZcW+ZW5qZSB1IGlzdG9yaWphdCB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdJc3RvcmlqYXQga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfFoHRhbXBhIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0RldGFsam5pIHByaWtheiBrb25maWd1cmFjaW5lIHN0YXZrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnT2dyYW5pxI1lbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnT2dyYW5pxI1lbmplIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgcG8gc3RyYW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmF6YSBwb2RhdGFrYSB1cHJhdmxqYW5qYSBrb25maWd1cmFjaWpvbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ01vZHVsIG1hc292bmUgYWtjaWplIG5hIGtvbmZpZ3VyYWNpb25pbSBzdGF2a2FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJhY2lvbmEgc3RhdmthIHByZXRyYcW+dWplIHBvemFkaW5za2kgcnV0ZXIgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0tyZWlyYW5qZSBpIHVwcmF2bGphbmplIGRlZmluaWNpamEgemEga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnUG9kcmF6dW1ldmFuaSBwb2RhY2kgemEga29yacWhxIdlbmplIG5hIGF0cmlidXRpbWEgemEgcHJpa2F6IHByZXRyYWdlIHRpa2V0YS4gUHJpbWVyOiAiVGlja2V0Q3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7VGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtUaWNrZXRDcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1BvZHJhenVtZXZhbmkgcG9kYWNpIHphIGtvcmnFocSHZW5qZSBuYSBhdHJpYnV0aW1hIHphIHByaWtheiBwcmV0cmFnZSB0aWtldGEuIFByaW1lcjogIlRpY2tldENyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnRNb250aD0xMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXk9NDtUaWNrZXRDcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RvcE1vbnRoPTExO1RpY2tldENyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBha2NpamUgZ2RlIGplIGR1Z21lIHBvc3RhdmtpIGRvc3R1cG5vIHUgcG92ZXphbm9tIGdyYWZpxI1rb20gZWxlbWVudHUgb2JqZWt0YSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBNb2xpbW8gZGEgaW1hdGUgbmEgdW11IGRhIG92ZSBBa2NpamUgbW9yYWp1IGRhIGJ1ZHUgcmVnaXN0cm92YW5lIHUgc2xlZGXEh2ltIEpTIGkgQ1NTIGRhdG90ZWthbWE6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBwb3RyZWJuZSBkb3p2b2xlIHphIGJyaXNhbmplIElUU00ga29uZmlndXJhY2lvbmloIHN0YXZraSBrcm96IGdlbmVyacSNa2kgaW50ZXJmZWpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIG5lb3Bob2RuZSBkb3p2b2xlIHphIGRvYmlqYW5qZSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kga29yacWhxIdlbmplbSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIG5lb3Bob2RuZSBkb3p2b2xlIHphIHByZXRyYWd1IElUU00ga29uZmlndXJhY2lvbmloIHN0YXZraSBrb3JpxaHEh2VuamVtIGdlbmVyacSNa29nIGludGVyZmVqc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmnFoWUgbmVvcGhvZG5lIGRvenZvbGUgemEgZG9iaWphbmplIElUU00ga29uZmlndXJhY2lvbmloIHN0YXZraSBrb3JpxaHEh2VuamVtIGdlbmVyacSNa29nIGludGVyZmVqc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBtb2R1bCBwcmVnbGVkYSB6YSBtYWxpIHByaWtheiBsaXN0ZSBrb25maWd1cmFjaW9uaWggc3RhdmtpLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdPZHJlxJF1amUgcmVndWxhcm5lIGl6cmF6ZSB6YSBzdmFrdSBrbGFzdSBrb25maWd1cmFjaW9uZSBzdGF2a2UgcmFkaSBwcm92ZXJlIG5heml2YSBrb25maWd1cmFjaW9uZSBzdGF2a2UgaSBwcmlrYXphIHByaXBhZGFqdcSHaWggcG9ydWthIG8gZ3JlxaFrYW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB0aWtldGEgemEgc29ydGlyYW5qZSB0aWtldGEgdSByZXp1bHRhdHUgcHJldHJhZ2UgdGlrZXRhIGludGVyZmVqc2Egb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB0aWtldGEgemEgc29ydGlyYW5qZSB0aWtldGEgdSByZXp1bHRhdHUgcHJldHJhZ2UgdGlrZXRhIGludGVyZmVqc2Egb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIGF0cmlidXQgdGlrZXRhIHphIHNvcnRpcmFuamUgdGlrZXRhIHUgcmV6dWx0YXR1IHByZXRyYWdlIHRpa2V0YSB1IG92b2ogb3BlcmFjaWppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcmVkb3NsZWQgdGlrZXRhIChwb3NsZSBzb3J0aXJhbmphIHBvIHByaW9yaXRldHUpIHUgcHJlZ2xlZHUgcHJldHJhZ2UgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcHJlcmF0ZXJhLiBHb3JlOiBOYWpzdGFyaWppIG5hIHZyaHUuIERvbGU6IE5ham5vdmlqZSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnT2RyZcSRdWplIHBvZHJhenVtZXZhbmkgcmVkb3NsZWQgdGlrZXRhIHUgcHJlZ2xlZHUgcHJldHJhZ2UgcmV6dWx0YXRhIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4gR29yZTogTmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBOYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcHJpa2F6IHByZXRyYWdlIGF0cmlidXRhIHRpa2V0YSB6YSBwcmlrYXogZWtyYW5hIHByZXRyYWdlIHRpa2V0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHByaWtheiBwcmV0cmFnZSBhdHJpYnV0YSB0aWtldGEgemEgcHJpa2F6IGVrcmFuYSBwcmV0cmFnZSB0aWtldGEuIFByaW1lcjogIktleSIgbW9yYSBpbWF0aSBuYXppdiBkaW5hbWnEjWtvZyBwb2xqYSwgdSBvdm9tIHNsdcSNYWp1IFwnWFwnLCAiQ29udGVudCIgbW9yYSBpbWF0aSB2cmVkbm9zdCBkaW5hbWnEjWtvZyBwb2xqYSB1IHphdmlzbm9zdGkgb2QgdGlwYSBkaW5hbWnEjWtvZyBwb2xqYSwgVGVrc3Q6IFwnYSB0ZXh0XCcsIFBhZGFqdcSHaTogXCcxXCcsIERhdHVtL1ZyZW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgaS9pbGkgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnT2RyZcSRdWplIHBvZHJhenVtZXZhbmkgcG9kb2JqZWthdCBrbGFzZSBJVFNNIGtvbmZpZ3VyYWNpb25hIHN0YXZrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdPZHJlxJF1amUgdmlzaW51IHphIGtvbXBvbmVudHUgUmljaCBUZXh0IEVkaXRvciB6YSBvdmFqIHByaWtheiBla3JhbmEuIFVuZXNpIGJyb2ogKHBpa3NlbGkpIGlsaSBwcm9jZW50dWFsbnUgdnJlZG5vc3QgKHJlbGF0aXZudSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBicm9qIHJlZG92YSB6YSBlZGl0b3IgZGVmaW5pY2lqZSBDSSB1IGFkbWluaXN0cmF0aXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnT2RyZcSRdWplIHJlZG9zbGVkIGluY2lkZW50bmloIHN0YW5qYSBvZCB2aXNva29nIChucHIga3JpdGnEjW5vKSBkbyBuaXNrb2cgKG5wciBmdW5rY2lvbmFsbm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSByZWxldmFudG5hIHN0YW5qYSByYXNwb3JlxJFpdmFuamEgZ2RlIHBvdmV6YW5pIHRpa2V0aSBtb2d1IGRhIHV0acSNdSBuYSBzdGF0dXMgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGdyYW5pY3UgcHJldHJhZ2UgemEgZWtyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgZ3JhbmljdSBwcmV0cmFnZSB6YSBla3JhbiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBncmFuaWN1IHByZXRyYWdlIHphIGVrcmFuIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGdyYW5pY3UgcHJldHJhZ2UgemEgZWtyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHByaWthemFuZSBrb2xvbmUga29uZmlndXJhY2lvbmloIHN0YXZraSB1IHRhYmVsaSB2ZXphIHUgemF2aXNub3N0aSBvZCBrbGFzZS4gVWtvbGlrbyBuZSBwb3N0b2ppIHVub3MgemEgcG9qZWRpbmHEjW51IGtsYXN1LCBiacSHZSBwcmlrYXphbmUgcG9kcmF6dW1ldmFuZSBrb2xvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcHJpa2F6YW5lIGtvbG9uZSBrb25maWd1cmFjaW9uaWggc3RhdmtpIHUgdGFiZWxpIHZlemEgdSB6YXZpc25vc3RpIG9kIGtsYXNlLiBTdmFraSB1bm9zIG1vcmEgc2FkcsW+YXRpIHByZWZpa3Mgc2EgbmF6aXZvbSBrbGFzZSBpIGR2b3RhxI1rb20gKG5wci4gQ29tcHV0ZXI6OikuIFBvc3RvamkgcGFyIGF0cmlidXRhIGtvamkgc3UgemFqZWRuacSNa2kgemEgc3ZlIGtsYXNlIChucHIuIHphIGtsYXN1IENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBaYSBwcmlrYXogcG9qZWRpbmHEjW5paCBhdHJpYnV0YSBpeiBkZWZpbmljaWplLCBtb3JhdGUga29yaXN0aXRpIHNsZWRlxId1IMWhZW11IChwcmltZXIgemEga2xhc3UgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gVWtvbGlrbyBuZSBwb3N0b2ppIHVub3MgemEgcG9qZWRpbmHEjW51IGtsYXN1LCBiacSHZSBwcmlrYXphbmUgcG9kcmF6dW1ldmFuZSBrb2xvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGtvamUgc3Ugc3RhdmtlIHNsb2JvZG5lIHphIFwnQWN0aW9uXCcgdSB0cmXEh2VtIG5pdm91IEFDTCBzdHJ1a3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGtvamUgc3Ugc3RhdmtlIHNsb2JvZG5lIHUgcHJ2b20gbml2b3UgQUNMIHN0cnVrdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGtvamUgc3Ugc3RhdmtlIHNsb2JvZG5lIHUgZHJ1Z29tIG5pdm91IEFDTCBzdHJ1a3R1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnT2RyZcSRdWplIGtvamkgdGlwIHZlemUgKGdsZWRhbm8gaXogcGVyc3Bla3RpdmUgdGlrZXRhKSBtb8W+ZSBkYSB1dGnEjWUgbmEgcG92ZXphbnUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnT2RyZcSRdWplIGtvamkgdGlwIHRpa2V0YSBtb8W+ZSBkYSB1dGnEjWUgbmEgc3RhdHVzIHBvdmV6YW5lIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQnJpc2FuamUga29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdCb2phIHN0YXR1c2EgcmFzcG9yZcSRaXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IGVrcmFudSBkb2RhdG5paCBJVFNNIHBvbGphIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgcHJlZ2xlZHUgRkFRIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBla3JhbnUgcHJldHJhZ2UgcHJvbWVuYSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdPbW9ndcSHYXZhIG1hc292bnUgYWtjaWp1IG5hIGtvbmZpZ3VyYWNpb25pbSBzdGF2a2FtYSB1IHByaXN0dXBub20gc2lzdGVtdSBvcGVyYXRlcmEgbmEgdmnFoWUgb2QgamVkbmUgc3RhdmtlIGlzdG92cmVtZW5vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWt0aXZpcmEgc3ZvanN0dm8gbWFzb3ZuZSBha2NpamUgbmEga29uZmlnaXJhY2lvbmltIHN0YXZrYW1hIHNhbW8gemEgaXpsaXN0YW5lIGdydXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCBkb2dhxJFhamEgemEgcG9kZcWhYXZhbmplIHN0YXR1c2Ega29uZmlndXJhY2lvbmloIHN0YXZraSBwcmlsaWtvbSBwb3N0YXZsamFuamEgdmV6YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgbW9kdWxhIGdlbmVyacSNa29nIGludGVyZmVqc2EgemEgc2xvaiBwb3ppdmFvY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhIHphIHNsb2ogcG96aXZhb2NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgbW9kdWxhIGdlbmVyacSNa29nIGludGVyZmVqc2EgemEgc2xvaiBwb3ppdmFvY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByZWdsZWQgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdUaXAgc3RhbmphIGluY2lkZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYWtzaW1hbG5pIGJyb2ogdGlrZXRhIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgcmV6dWx0YXR1IG92ZSBvcGVyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgemEgcHJvdmVydSBncnVwZSBvZGdvdm9ybmUgemEga2xhc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgemEgcHJvdmVydSBncnVwZSBvZGdvdm9ybmUgemEga29uZmlndXJhY2lvbnUgc3Rhdmt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHphIGdlbmVyaXNhbmplIHN0YXRpc3Rpa2UgSVRTTSBrb25maWd1cmFjaW9uaWggc3RhdmtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jyb2ogdGlrZXRhIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIG5hIHN2YWtvaiBzdHJhbmkgcmV6dWx0YXRhIHByZXRyYWdlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jyb2ogdGlrZXRhIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIG5hIHN2YWtvaiBzdHJhbmkgcmV6dWx0YXRhIHByZXRyYWdlIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1ByZWdsZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgZmlsdGVyIGtvbG9uYSB1IHVtYW5qZW5vbSBwcmVnbGVkdSB0aWtldGEuIE5hcG9tZW5hOiBwb2RlxaFhdmFuamUgXCdBY3RpdmVcJyBuYSAwIMSHZSBzYW1vIG9uZW1vZ3XEh2l0aSBvcGVyYXRlcmltYSBkYSBtZW5qYWp1IHN2b2phIGxpxI1uYSBwb2RlxaFhdmFuamEgaXogb3ZlIGdydXBlLCBhbGkgxIdlIGFkbWluaXN0cmF0b3JpIGkgZGFsamUgbW/Eh2kgZGEgaWggbWVuamFqdSB1IG5qaWhvdm8gaW1lLiBQb2Rlc2l0ZSBcJ1ByZWZlcmVuY2VHcm91cFwnIGRhIGJpc3RlIG9kcmVkaWxpIHUga29tIGRlbHUgaW50ZXJmZWpzYSBvdmEgcG9kZcWhYXZhbmphIHRyZWJhIGRhIGJ1ZHUgcHJpa2F6YW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBib2plIHN0YXR1c2EgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBhdHJpYnV0ZSB1em9ya2EgZ3J1cGUgemEgZG96dm9sZSBvcMWhdGVnIGthdGFsb2dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0cmFuaWNlIChuYSBrb2ppbWEgc3Uga29uZmlndXJhY2lvbmUgc3RhdmtlIHByaWthemFuZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdGF0dXNlIHByaW1lbmUgbmEgcHJpa2F6dSBwb3N0YXZraSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdGF0dXNlIHByaW1lbmUgbmEgcHJpa2F6dSBwb3N0YXZraSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwYSBwcmlzdHVwYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIHByZXRyYWdlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIHByZXRyYWdlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgcHJldHJhZ2UgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBkZXRhbG5vZyBwcmlrYXphIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgZG9kYXZhbmphIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIGl6bWVuZSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBpc3RvcmlqYXRhIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSDFoXRhbXBlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQb3RyZWJuYSBwcmF2YSB6YSBicmlzYW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnUHJldHJhZ2Ega29uZmlndXJhY2lvbmloIHN0YXZraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1Bvc3RhdmxqYSBzdGFuamUgaW5jaWRlbnRhIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBrYWRhIGplIHRpa2V0IHBvdmV6YW4gc2Egc3RhdmtvbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgc3RhdHVzIHByaW1lbmUgbmEgZWtyYW51IG1hc292bmUgYWtjaWplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgc3RhdHVzIGluY2lkZW50YSBuYSBla3JhbnUgbWFzb3ZuZSBha2NpamUga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUga29qYSBvbW9ndcSHYXZhIHBvdmV6aXZhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBzYSBkcnVnaW0gb2JqZWt0b20gbmEgZGV0YWxqbm9tIHByaWthenUga29uZmlndXJhY2lqZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHByaXN0dXAgaXN0b3JpamF0dSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgcHJlZ2xlZHUga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHByaXN0dXAgaXN0b3JpamF0dSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgZGV0YWxqbm9tIHByaWthenUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBicmlzYW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgbmplbm9tIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSB1bW5vxb5hdmFuamUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIHByZWdsZWR1IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSB1bW5vxb5hdmFuamUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIG5qZW5vbSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgaXptZW51IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBuYSBuamVub20gZGV0YWxqbm9tIHByaWthenUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHBvdnJhdGFrIG5hIGRldGFsam5pIHByaWtheiBrb25maWd1cmFjaW9uZSBzdGF2a2UgIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgxaF0YW1wdSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgbmplbm9tIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgZGV0YWxqbmkgcHJpa2F6IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBuYSBwcmVnbGVkdSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2F6dWplIGlzdG9yaWphdCBrb25maWd1cmFjaW9uZSBzdGF2a2UgKG9icm51dCByZWRvc2xlZCkgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWthdG9yIHphIGtvbmZpZ3VyYWNpb251IHN0YXZrdSwgbnByLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gUG9kcmF6dW1ldmFubyBqZSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWxubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3QtcHJvZHVrY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlLXByb2R1a2NpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a2NpamEnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdOYWxvZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYWNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmZWpzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0tsaWplbnRza2kgc2VydGlmaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcCBzYWRyxb5hamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ1ZyZW1lIGtyZWlyYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0Jlc3BsYXRuaSAqKic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnUHJlZ2xlZCByZXp1bHRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTcG9yYXp1bSBvIG5pdm91IHVzbHVnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmRhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/sv_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN2X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGxtw6RubmEgZHJpZnRkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdJbnN0w6RsbG5pbmdhciBmw7ZyIGlua29tbWFuZGUgZsO2cmZyw6VnbmluZ3NkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSW5zdMOkbGxuaW5nYXIgZsO2ciB1dGfDpWVuZGUgc3ZhcnNkYXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnSGFudGVyaW5nIGF2IGtvbmZpZ3VyYXRpb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ8OEbmRyYSBrbGFzc2RlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ8OEbmRyYSByb2xsZGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1rbGFzc2J1bnRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0jDpHIga2FuIGR1IGltcG9ydGVyYSBSZWFkeTJJbXBvcnQta2xhc3NidW50YXIgc29tIHZpc2FyIHbDpXJhIHZhbmxpZ2FzdGUga29uZmlndXJhdGlvbnNvYmpla3QuIE9ic2VydmVyYSBhdHQgdmlzcyB5dHRlcmxpZ2FyZSBrb25maWd1cmF0aW9uIGthbiBrcsOkdmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcHBkYXRlcmEgYmVmaW50bGlnYSBlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0ZXJhIFJlYWR5MkFkb3B0LWtsYXNzYnVudGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS2xhc3MgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnS29uZmlnIEFydGlrZWwgUm9sbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyZXJhIGtsYXNzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnVsOkbGogZW4ga2xhc3MgZnLDpW4gbGlzdGFuIGbDtnIgYXR0IHNrYXBhIGVuIG55IGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBNYXNzw6V0Z8OkcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0RyaWZ0bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudGzDpGdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0zDpG5rYSB0aWxsIGFubmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdPZ2lsdGlndCBudW1tZXIgcMOlIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bXJldCBww6UgZXR0IGFubmF0IENvbmZpZ3VyYXRpb24gSXRlbSBhdHQgbMOkbmthIHRpbGwuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBkZXQgaMOkciBrb25maWd1cmF0aW9uc29iamVrdGV0Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1uZXQgcMOlIGRlbm5hIGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05hbW5ldCBhbnbDpG5kcyByZWRhbiBpIGtvbmZpZ3VyYXRpb25zZW5oZXRlciBtZWQgZsO2cmxqYW5kZSBudW1tZXI6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbnNudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb25zbnVtbWVyIGbDtnIgZGV0dGEga29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uc251bXJldCBhbnbDpG5kcyByZWRhbiBhdiBDb25maWdJdGVtcyBtZWQgZsO2bGphbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RyaWZ0bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudGzDpGdlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpayBmw7ZyIGtvbmZpZ3VyZXJpbmdzb2JqZWt0OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3Jpa2lubmVow6VsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVGlkcHVua3QgZsO2ciBza2FwYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdGb2t1c3Z5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXRlciBwZXIgc2lkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nYSBkYXRhIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaGl0dGFkZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVsOkbGogZGV0dGEga29uZmlndXJhdGlvbnNvYmpla3QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdVdGbDtnIgc8O2a25pbmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBmw7ZyIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdEanVwbml2w6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tYSBpbi91dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYXggbMOkbmtuaXbDpSB1cHBuw6VkZCBmw7ZyIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJhdGlvbnNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBvbSBrb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ051dmFyYW5kZSBkcmlmdGzDpGdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdOdXZhcmFuZGUgaW5jaWRlbnRsw6RnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdTZW5hc3Qgw6RuZHJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTZW5hc3Qgw6RuZHJhZCBhdic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0RpbmEgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSBTw7ZrJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRsO2bGphbmRlIGtsYXNzZXIga29tbWVyIGF0dCBpbXBvcnRlcmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0bDtmxqYW5kZSByb2xsZXIga29tbWVyIGF0dCBpbXBvcnRlcmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ09ic2VydmVyYSBhdHQgw6R2ZW4gbW90c3ZhcmFuZGUgZHluYW1pc2thIGbDpGx0IG9jaCBHZW5lcmFsQ2F0YWxvZy1rbGFzc2VyIGtvbW1lciBhdHQgc2thcGFzIG9jaCBhdHQgZGV0IGludGUgc2tlciBuw6Vnb24gYXV0b21hdGlzayBib3J0dGFnbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWaWxsIGR1IGZvcnRzw6R0dGE/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0JlaMO2dmVyIGV4ZW1wZWxrbGFzc2VyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uZW4gw6RyIGluZ2VuIGdpbHRpZyBZQU1MLWhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnw5Z2ZXJzaWt0OiBJVFNNIEtvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQgQ29uZmlnSXRlbUlEIGFuZ2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0R1IGJlaMO2dmVyIG1pbnN0IGV0dCB2YWx0IENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdEdSBoYXIgaW50ZSBza3JpdmJlaMO2cmlnaGV0IHRpbGwgZGV0IGjDpHIga29uZmlndXJhdGlvbnNvYmpla3RldDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0luZ2VuIGRlZmluaXRpb24gaGFyIGRlZmluaWVyYXRzIGbDtnIga2xhc3NlbiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ29iamVrdGV0ICIlcyIgaGl0dGFkZXMgaW50ZSBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdEZXQgZ2ljayBpbnRlIGF0dCB0YSBib3J0IGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXQgSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdJbmdlbiB2ZXJzaW9uIGhpdHRhZGVzIGbDtnIgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdJbmdldCBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGVsbGVyIENsYXNzSUQgYW5nZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdJbmdlbiDDpXRrb21zdCBnZXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0thbiBpbnRlIHZpc2EgaGlzdG9yaWssIGluZ2V0IENvbmZpZ0l0ZW1JRCBhbmdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaW50ZSB2aXNhIGhpc3RvcmlrLCBpbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ055IGtvbmZpZ3VyYXRpb25zcG9zdCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOeSB2ZXJzaW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdEZXBsb3ltZW50c3RhdHVzIHVwcGRhdGVyYWQgKG55PSVzLCBnYW1tYWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW50c3RhdHVzIHVwcGRhdGVyYWQgKG55PSVzLCBnYW1tYWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnS29uZmlnSXRlbSAoSUQ9JXMpIGJvcnR0YWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0zDpG5rIHRpbGwgJXMgKHR5cGU9JXMpIHRpbGxhZ2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0zDpG5rIHRpbGwgJXMgKHR5cGU9JXMpIGJvcnR0YWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnVXBwZGF0ZXJpbmcgYXYgQ29uZmlnSXRlbS1kZWZpbml0aW9uZW4gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hbW4gdXBwZGF0ZXJhdCAobnl0dD0lcywgZ2FtbWFsdD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dCAlcyB1cHBkYXRlcmF0IGZyw6VuICIlcyIgdGlsbCAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgcmFkZXJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdJbmdldCBDb25maWdJdGVtSUQgZWxsZXIgVmVyc2lvbklEIGhhciBhbmdldHRzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaW50ZSB2aXNhIGtvbmZpZ3VyYXRpb25zb2JqZWt0LCBpbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgaGl0dGFkZXMgaW50ZSBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3V0c2tyaXZlbiBhdiAlcyB2aWQgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnT2dpbHRpZ3Qga2xhc3MtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQga2xhc3NJRCBhbmdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdJbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGbDtnIgZGVubmEga2xhc3MgZ2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnSW5nZXQgcmVzdWx0YXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnU8O2a3Jlc3VsdGF0IGbDtnIga29uZmlndXJlcmFkZSBvYmpla3QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0thbiBpbnRlIHZpc2Egb2JqZWt0ZXQsIGluZ2Egw6V0a29tc3Ryw6R0dGlnaGV0ZXIgZsO2ciBDb25maWdJdGVtIGhhciBnZXR0cyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnS29uZmlnSXRlbSBoaXR0YWRlcyBpbnRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdJbmdhIHZlcnNpb25lciBoaXR0YWRlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdPcGVyYXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndmFybmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ0jDpG5kZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRHJpZnRsw6RnZSBmw7ZyIGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJbmNpZGVudGzDpGdlIGbDtnIga29uZmlndXJhdGlvbnNlbmhldCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1Nha25hciByw6R0dGlnaGV0ZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBvZ2lsdGlndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1PDtmtwYXJhbWV0cmFyIG9naWx0aWdhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1Zpc2FkZSBrb25maWd1cmF0aW9uc29iamVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdEcmlmdGzDpGdlc3R5cGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ051dmFyYW5kZSB0eXAgYXYgaW5jaWRlbnRsw6RnZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdNZWxsYW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzYmVncsOkbnNuaW5nYXIgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWw6RsaiBlbiBlbGxlciBmbGVyYSBrbGFzc2VyIGbDtnIgYXR0IGJlZ3LDpG5zYSB2YWxiYXJhIGtvbmZpZ3VyYXRpb25zb2JqZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2JlZ3LDpG5zbmluZ2FyIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3RldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDpGxqIGVuIGVsbGVyIGZsZXJhIGtsYXNzZXIgZsO2ciBhdHQgYmVncsOkbnNhIHZhbGJhcmEga29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzayAoS29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpc2sgKHZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cCBhdiBsw6Rua3JlZmVyZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ09tIGRlbm5hIGzDpG5rIGfDpGxsZXIgZsO2ciBDb25maWdJdGVtIGVsbGVyIGRlbiBzdGF0aXNrYSB2ZXJzaW9uZW4gYXYgZGV0IG9iamVrdCBzb20gcmVmZXJlcmFzIHRpbGwuIEJlcsOka25pbmdlbiBhdiBDdXJyZW50IEluY2lkZW50IFN0YXRlIHV0ZsO2cnMgZW5kYXN0IHDDpSBkeW5hbWlza2EgbMOkbmthci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWw6RsaiBkZXQgYXR0cmlidXQgc29tIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4gc2thIHPDtmthcyBlZnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFzc3RydWt0dXJlbiDDpHIgaW50ZSBnaWx0aWcuIEFuZ2UgZW4gaGFzaCBtZWQgZGF0YSBpIFlBTUwtZm9ybWF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0RldCBrcsOkdnMgYXR0IFlBTUwtc3Ryw6RuZ2VuIGlubGVkcyBtZWQgIi0tLSIuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0RldCBnaWNrIGludGUgYXR0IHJlbnNhIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0luZ2EgcmVsZXZhbnRhIGR5bmFtaXNrYSBmw6RsdCBoaXR0YWRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0RldCBnaWNrIGludGUgYXR0IGluZm9nYSBpIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5mb2dhZGUgMCByYWRlciBpIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXggYW50YWwgYXYgZXR0IGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lvbiBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRmVsIHZpZCBzeW5rcm9uaXNlcmluZyBhdiBkZWZpbml0aW9uZXJuYS4gVsOkbmxpZ2VuIGtvbnRyb2xsZXJhIGxvZ2dlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdEdSBoYXIgSVRTTUNvbmZpZ0l0ZW0tZGVmaW5pdGlvbmVyIHNvbSBpbnRlIMOkciBzeW5rcm9uaXNlcmFkZS4gVsOkbmxpZ2VuIGRpc3RyaWJ1ZXJhIGRpbmEgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pc2thIGbDpGx0w6RuZHJpbmdhci4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0zDtnB0IHV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVW5kZXJow6VsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFnZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBlcmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaW9uZXJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfDlnZlcnN5bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnw5Z2ZXJzaWt0IG9jaCBiZWtyw6RmdGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0ZXJhIGtsYXNzZXIvcm9sbGVyIG9jaCBkZXJhcyByZWxhdGVyYWRlIGbDpGx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnRXR0IGZlbCBpbnRyw6RmZmFkZSB1bmRlciBrbGFzc2ltcG9ydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gRG9sZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gVmlzYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGzDpXRlciB1dMO2a2FkZSBzw7ZrdmlsbGtvciB2aWQgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuIE1lZCBkZW4gaMOkciBmdW5rdGlvbmVuIGthbiBkdSB0LmV4LiBzw7ZrYSBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdGV0cyBuYW1uIG1lZCB2aWxsa29yIGF2IHR5cGVuICIoKmtleTEqJiYqa2V5MiopIiBlbGxlciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGzDpXRlciB1dMO2a2FkZSBzw7ZrdmlsbGtvciB2aWQgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4gTWVkIGRlbiBow6RyIGZ1bmt0aW9uZW4ga2FuIGR1IHQuZXguIHPDtmthIGVmdGVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIG5hbW4gbWVkIHZpbGxrb3IgYXYgdHlwZW4gIigqa2V5MSomJiprZXkyKikiIGVsbGVyICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnVGlsbGRlbGFkZSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSTpzIHNvbSB0aWxsZGVsYXRzIGt1bmRmw7ZyZXRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJOmVyIHNvbSB0aWxsZGVsYXRzIGt1bmRhbnbDpG5kYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCLWluc3TDpGxsbmluZ2FyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdTw7ZrIGVmdGVyIGV0dCB1bmlrdCBuYW1uIGVuZGFzdCBpbm9tIHNhbW1hIENvbmZpZ0l0ZW0ta2xhc3MgKCJjbGFzcyIpIGVsbGVyIGdsb2JhbHQgKCJnbG9iYWwiKSwgdmlsa2V0IGlubmViw6RyIGF0dCB2YXJqZSBiZWZpbnRsaWd0IENvbmZpZ0l0ZW0gdGFzIG1lZCBpIGJlcsOka25pbmdlbiBuw6RyIG1hbiBsZXRhciBlZnRlciBkdWJibGV0dGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnVsOkbGogZW4gbW9kdWwgZsO2ciBhdHQgZ2Vub21kcml2YSBldHQgbmFtbmdpdm5pbmdzc2NoZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnVsOkbGogZW4gbW9kdWwgZsO2ciBhdHQgdmVya3N0w6RsbGEgZXR0IG51bW1lcnN5c3RlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnVsOkbGogZW4gbW9kdWwgZsO2ciBhdHQgZ2Vub21kcml2YSBldHQgc3lzdGVtIG1lZCB2ZXJzaW9uc3N0csOkbmdhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdWw6RsaiBhdHRyaWJ1dCBmw7ZyIGF0dCB1dGzDtnNhIHNrYXBhbmRldCBhdiBlbiBueSB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdWw6RsaiBrYXRlZ29yaWVyIHNvbSBza2EgdGlsbGRlbGFzIGRlbm5hIGtsYXNzIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0tvbHVtbmZpbHRlciBmw7ZyIENvbmZpZ0l0ZW0tb2JqZWt0IGbDtnIgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbHVtbmVyIHNvbSBrYW4gZmlsdHJlcmFzIGkgw7Z2ZXJzaWt0ZW4gw7Z2ZXIga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuIE9ic2VydmVyYTogRW5kYXN0IENvbmZpZyBJdGVtLWF0dHJpYnV0IG9jaCBkeW5hbWlza2EgZsOkbHQgKER5bmFtaWNGaWVsZF9OYW1lWCkgw6RyIHRpbGzDpXRuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhdGlvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdMw6RnZyB0aWxsIGtvbmZpZ3VyZXJpbmdzb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ1JlZGlnZXJhIGtvbmZpZ3VyZXJpbmdzb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyZXJpbmdzb2JqZWt0IGbDtnIgaMOkbmRlbHNlbW9kdWwgc29tIG3DtmpsaWdnw7ZyIGxvZ2duaW5nIHRpbGwgaGlzdG9yaWsgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0jDpG5kZWxzZW1vZHVsIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3Qgc29tIHVwcGRhdGVyYXIga29uZmlndXJhdGlvbnNvYmpla3RlbiB0aWxsIGRlcmFzIGFrdHVlbGxhIGRlZmluaXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXJlcmFyIGFydGlrZWxoaXN0b3Jpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnVXRza3JpZnQgYXYga29uZmlndXJlcmluZ3NvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnS29uZmlndXJlcmEgem9vbSBmw7ZyIG9iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdLb25maWdJdGVtIHRyw6RkdnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnS29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIGF2IGbDtmxqYW5kZSBrbGFzc2VyIGtvbW1lciBpbnRlIGF0dCBsYWdyYXMgcMOlIEVsYXN0aWNzZWFyY2gtc2VydmVybi4gT20gZHUgdmlsbCB0aWxsw6RtcGEgZGV0dGEgcMOlIGJlZmludGxpZ2EgQ0kgbcOlc3RlIENJLW1pZ3JlcmluZ2VuIGvDtnJhcyB2aWEga29uc29sZW4gZWZ0ZXIgYXR0IGR1IGhhciDDpG5kcmF0IGRldHRhIGFsdGVybmF0aXYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG1lZCBmw7ZsamFuZGUgZHJpZnRzw6R0dG5pbmdzc3RhdHVzIGtvbW1lciBpbnRlIGF0dCBsYWdyYXMgcMOlIEVsYXN0aWNzZWFyY2gtc2VydmVybi4gRsO2ciBhdHQgdGlsbMOkbXBhIGRldHRhIHDDpSBiZWZpbnRsaWdhIENJIG3DpXN0ZSBDSS1taWdyZXJpbmdlbiBrw7ZyYXMgdmlhIGtvbnNvbGVuIGVmdGVyIGF0dCBkZXR0YSBhbHRlcm5hdGl2IGhhciDDpG5kcmF0cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQmVncsOkbnNuaW5nIGtvbmZpZ3VyYXRpb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhdGlvbiBBcnRpa2VsZ3LDpG5zIHBlciBzaWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWJhcyBmw7ZyIGtvbmZpZ3VyYXRpb25zaGFudGVyaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXJhdGlvbnNvYmpla3QgYnVsa21vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmF0aW9uc29iamVrdCBzw7ZrIGJhY2tlbmQtcm91dGVyIGbDtnIgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnU2thcGEgb2NoIGhhbnRlcmEgZGVmaW5pdGlvbmVyIGbDtnIga29uZmlndXJhdGlvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnU2thcGFyIGJpbGpldHRlciBmw7ZyIENvbmZpZ0l0ZW1zIHZpZCBzcGVjaWZpa2EgdGlkcHVua3Rlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS3VuZGVybmEga2FuIHNlIGhpc3Rvcmlza2EgQ0ktdmVyc2lvbmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLdW5kZXJuYSBoYXIgbcO2amxpZ2hldCBhdHQgbWFudWVsbHQgdsOkeGxhIG1lbGxhbiBoaXN0b3Jpc2thIENJLXZlcnNpb25lci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYSBhbnbDpG5kYXMgcMOlIGF0dHJpYnV0ZXQgZsO2ciBzw7Zrc2vDpHJtZW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdC4gRXhlbXBlbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYSBhbnbDpG5kYXMgcMOlIGF0dHJpYnV0IGbDtnIgc8O2a3Nrw6RybWVuIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QuIEV4ZW1wZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmllcmEgw6V0Z8OkcmRlciBkw6RyIGVuIGluc3TDpGxsbmluZ3NrbmFwcCDDpHIgdGlsbGfDpG5nbGlnIGkgd2lkZ2V0ZW4gZsO2ciBsw6Rua2FkZSBvYmpla3QgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gT2JzZXJ2ZXJhIGF0dCBkZXNzYSDDpXRnw6RyZGVyIG3DpXN0ZSBoYSByZWdpc3RyZXJhdCBmw7ZsamFuZGUgSlMtIG9jaCBDU1MtZmlsZXI6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIG9jaCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmllcmEgZXR0IFRlbXBsYXRlOjpUb29sa2l0LXNjaGVtYSBmw7ZyIHZlcnNpb25zc3Ryw6RuZ2FyLiBBbnbDpG5kcyBlbmRhc3Qgb20gVmVyc2lvbiBTdHJpbmcgTW9kdWxlIMOkciBpbnN0w6RsbGQgcMOlIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYSBlbiB1cHBzw6R0dG5pbmcgdmlsbGtvciB1bmRlciB2aWxrYSBlbiBrdW5kIGbDpXIgc2UgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0LiBWaWxsa29yZW4ga2FuIGV2ZW50dWVsbHQgYmVncsOkbnNhcyB0aWxsIHZpc3NhIGt1bmRncnVwcGVyLiBOYW1uIMOkciBkZXQgZW5kYSBvYmxpZ2F0b3Jpc2thIGF0dHJpYnV0ZXQuIE9tIGluZ2EgYW5kcmEgYWx0ZXJuYXRpdiBhbmdlcyBrb21tZXIgYWxsYSBrb25maWd1cmF0aW9uc29iamVrdCBhdHQgdmFyYSBzeW5saWdhIHVuZGVyIGRlbiBrYXRlZ29yaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG7DtmR2w6RuZGlnYSBiZWjDtnJpZ2hldGVyIGbDtnIgYXR0IHRhIGJvcnQgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBtZWQgaGrDpGxwIGF2IGRldCBnZW5lcmlza2EgZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgbsO2ZHbDpG5kaWdhIGJlaMO2cmlnaGV0ZXIgZsO2ciBhdHQgaMOkbXRhIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgbWVkIGhqw6RscCBhdiBkZXQgZ2VuZXJpc2thIGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG7DtmR2w6RuZGlnYSBiZWjDtnJpZ2hldGVyIGbDtnIgYXR0IHPDtmthIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgbWVkIGhqw6RscCBhdiBkZXQgZ2VuZXJpc2thIGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG7DtmR2w6RuZGlnYSBiZWjDtnJpZ2hldGVyIGbDtnIgYXR0IHN0w6RsbGEgaW4gSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBtZWQgaGrDpGxwIGF2IGRldCBnZW5lcmlza2EgZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pZXJhciBlbiDDtnZlcnNpa3RzbW9kdWwgc29tIHZpc2FyIGRlbiBsaWxsYSB2eW4gYXYgZW4gbGlzdGEgbWVkIGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG9tIGzDpG5rdHlwZW5zIGV0aWtldHRlciBtw6VzdGUgdmlzYXMgaSBub2RhbnNsdXRuaW5nYXJuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgcmVndWxqw6RyYSB1dHRyeWNrIGluZGl2aWR1ZWxsdCBmw7ZyIHZhcmplIENvbmZpZ0l0ZW0ta2xhc3MgZsO2ciBhdHQga29udHJvbGxlcmEgQ29uZmlnSXRlbS1uYW1uZXQgb2NoIHZpc2EgbW90c3ZhcmFuZGUgZmVsbWVkZGVsYW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBkZSB0aWxsZ8OkbmdsaWdhIGtvbHVtbmVybmEgZsO2ciBDSTplciBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIMO2dmVyc2lrdCBiZXJvZW5kZSBww6UgQ0kta2xhc3Nlbi4gVmFyamUgcG9zdCBtw6VzdGUgYmVzdMOlIGF2IGV0dCBrbGFzc25hbW4gb2NoIGVuIG1hdHJpcyBtZWQgdGlsbGfDpG5nbGlnYSBmw6RsdCBmw7ZyIG1vdHN2YXJhbmRlIGtsYXNzLiBEeW5hbWlza2EgZsOkbHRwb3N0ZXIgbcOlc3RlIGbDtmxqYSBzY2hlbWF0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHN0YW5kYXJkYXR0cmlidXRldCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGbDtnIgc29ydGVyaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgc8O2a3Jlc3VsdGF0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc3RhbmRhcmRhdHRyaWJ1dGV0IGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgZsO2ciBzb3J0ZXJpbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBzw7ZrcmVzdWx0YXRldCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZGF0dHJpYnV0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBmw7ZyIHNvcnRlcmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIHJlc3VsdGF0ZXQgYXYgc8O2a25pbmdlbiBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGRlbm5hIMOldGfDpHJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZG9yZG5pbmdlbiBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgc8O2a3Jlc3VsdGF0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4gVXBwOiDDpGxkc3QgcMOlIHRvcHBlbi4gTmVyOiBkZXQgc2VuYXN0ZSDDtnZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZG9yZG5pbmdlbiBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgc8O2a3Jlc3VsdGF0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIGt1bmRncsOkbnNzbml0dGV0LiBVcHA6IMOkbGRzdCDDtnZlcnN0LiBOZXI6IGRlbiBzZW5hc3RlIMO2dmVyc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllcmFyIGRlIGtvbHVtbmVyIHNvbSB2aXNhcyBzb20gc3RhbmRhcmQgZsO2ciBDSTplciBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIMO2dmVyc2lrdCBiZXJvZW5kZSBww6UgQ0kta2xhc3Nlbi4gVmFyamUgcG9zdCBtw6VzdGUgYmVzdMOlIGF2IGV0dCBrbGFzc25hbW4gb2NoIGVuIG1hdHJpcyBtZWQgdGlsbGfDpG5nbGlnYSBmw6RsdCBmw7ZyIG1vdHN2YXJhbmRlIGtsYXNzLiBEeW5hbWlza2EgZsOkbHRwb3N0ZXIgbcOlc3RlIGbDtmxqYSBzY2hlbWF0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluaWVyYXIgZGV0IHN0YW5kYXJkZGp1cCBmw7ZyIHJlbGF0aW9uZXIgc29tIHNrYSB2aXNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZGF0dHJpYnV0ZXQgZsO2ciBzw7ZrbmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBzb20gdmlzYXMgZsO2ciBza8Okcm1lbiBmw7ZyIHPDtmtuaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZGF0dHJpYnV0ZXQgZsO2ciBzw7ZrbmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBzb20gdmlzYXMgcMOlIHNrw6RybWVuIGbDtnIgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QuIEV4ZW1wZWw6ICJLZXkiIG3DpXN0ZSBoYSBuYW1uZXQgcMOlIGRldCBkeW5hbWlza2EgZsOkbHRldCBpIGRldCBow6RyIGZhbGxldCAiWCIsICJDb250ZW50IiBtw6VzdGUgaGEgdsOkcmRldCBww6UgZGV0IGR5bmFtaXNrYSBmw6RsdGV0IGJlcm9lbmRlIHDDpSB0eXBlbiBhdiBkeW5hbWlza3QgZsOkbHQsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBvY2ggZWxsZXIgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZHVuZGVyb2JqZWt0ZXQgZsO2ciBrbGFzc2VuIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZGUgdGlsbGfDpG5nbGlnYSBrb2x1bW5lcm5hIGbDtnIgQ0k6ZXIgaSBrb25maWd1cmF0aW9uc29iamVrdGV0cyDDtnZlcnNpa3QgYmVyb2VuZGUgcMOlIENJLWtsYXNzZW4uIFZhcmplIHBvc3QgbcOlc3RlIGJlc3TDpSBhdiBldHQga2xhc3NuYW1uIG9jaCBlbiBtYXRyaXMgbWVkIHRpbGxnw6RuZ2xpZ2EgZsOkbHQgZsO2ciBtb3RzdmFyYW5kZSBrbGFzcy4gRHluYW1pc2thIGbDpGx0cG9zdGVyIG3DpXN0ZSBmw7ZsamEgc2NoZW1hdCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmllcmFyIGjDtmpkZW4gZsO2ciByZWRpZ2VyaW5nc2tvbXBvbmVudGVuIGbDtnIgcmlrIHRleHQgZsO2ciBkZW4gaMOkciBza8Okcm1lbi4gQW5nZSBhbnRhbCAocGl4bGFyKSBlbGxlciBwcm9jZW50dsOkcmRlIChyZWxhdGl2dCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2VyIGFudGFsIHJhZGVyIGbDtnIgS0UtZWRpdG9ybiBpIGFkbWluZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBvcmRuaW5nc2bDtmxqZGVuIGbDtnIgaW5jaWRlbnR0aWxsc3TDpW5kIGZyw6VuIGjDtmcgKHQuZXguIGNyaWNpdGFsKSB0aWxsIGzDpWcgKHQuZXguIGZ1bmN0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZGUgcmVsZXZhbnRhIGRyaWZ0c8OkdHRuaW5nc3N0YXR1c2FyIGTDpHIgbMOkbmthZGUgw6RyZW5kZW4ga2FuIHDDpXZlcmthIHN0YXR1c2VuIGbDtnIgZXR0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc8O2a2dyw6Ruc2VuIGbDtnIgc2vDpHJtZW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcmFyIHPDtmtncsOkbnNlbiBmw7ZyIHNrw6RybWVuIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzw7ZrZ3LDpG5zZW4gZsO2ciBza8Okcm1lbiBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc8O2a2dyw6Ruc2VuIGbDtnIgc2vDpHJtZW4gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBkZSBrb2x1bW5lciBzb20gdmlzYXMgZsO2ciBDSSBpIGRlbiBrb21wbGV4YSB2eW4gZsO2ciBsw6Rua3RhYmVsbGVuIGbDtnIgYWxsYSBDSS1rbGFzc2VyLiBPbSBkZXQgaW50ZSBmaW5ucyBuw6Vnb24gcG9zdCB2aXNhcyBzdGFuZGFyZGtvbHVtbmVybmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllcmFyIGRlIGtvbHVtbmVyIHNvbSB2aXNhcyBmw7ZyIENJIGkgZGVuIGtvbXBsZXhhIHZ5biBmw7ZyIGzDpG5rdGFiZWxsZW4sIGJlcm9lbmRlIHDDpSBDSS1rbGFzcy4gVmFyamUgcG9zdCBtw6VzdGUgaW5sZWRhcyBtZWQga2xhc3NuYW1uZXQgb2NoIGR1YmJsYSBrb2xvbiAodC5leC4gQ29tcHV0ZXI6OikuIERldCBmaW5ucyBldHQgZsOldGFsIENJLWF0dHJpYnV0IHNvbSDDpHIgZ2VtZW5zYW1tYSBmw7ZyIGFsbGEgQ0kgKGV4ZW1wZWwgZsO2ciBrbGFzc2VuIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBGw7ZyIGF0dCB2aXNhIGVuc2tpbGRhIENJLWF0dHJpYnV0IHNvbSBkZWZpbmllcmFzIGkgQ0ktZGVmaW5pdGlvbmVuIG3DpXN0ZSBmw7ZsamFuZGUgc2NoZW1hIGFudsOkbmRhcyAoZXhlbXBlbCBmw7ZyIGtsYXNzZW4gQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gT20gZGV0IGludGUgZmlubnMgbsOlZ29uIHBvc3QgZsO2ciBlbiBDSS1rbGFzcyB2aXNhcyBzdGFuZGFyZGtvbHVtbmVybmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciB2aWxrYSBvYmpla3Qgc29tIMOkciB0aWxsZ8OkbmdsaWdhIGbDtnIgIkFjdGlvbiIgaSBkZW4gdHJlZGplIG5pdsOlbiBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciB2aWxrYSBvYmpla3Qgc29tIMOkciB0aWxsZ8OkbmdsaWdhIGkgZGVuIGbDtnJzdGEgbml2w6VuIGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciB2aWxrYSBvYmpla3Qgc29tIMOkciB0aWxsZ8OkbmdsaWdhIGkgZGVuIGFuZHJhIG5pdsOlbiBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgdmlsa2VuIHR5cCBhdiBsw6RuayAobmFtbmdpdmVuIHVyIGV0dCDDpHJlbmRlcGVyc3Bla3Rpdikgc29tIGthbiBww6V2ZXJrYSBzdGF0dXNlbiBmw7ZyIGV0dCBsw6Rua2F0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgdmlsa2VuIHR5cCBhdiDDpHJlbmRlIHNvbSBrYW4gcMOldmVya2Egc3RhdHVzZW4gZsO2ciBldHQgbMOkbmthdCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdEZWZpbml0aW9uIFVwcGRhdGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdUYSBib3J0IGtvbmZpZ3VyYXRpb25zb2JqZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRGVwbG95bWVudCBTdGF0ZSBGw6RyZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljZXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnSMOkbmRlbHNlbW9kdWwgZsO2ciBkeW5hbWlza2EgZsOkbHQgc29tIG1hcmtlcmFyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZGVmaW5pdGlvbmVyIHNvbSBvc3lua3JvbmlzZXJhZGUgb20gZGUgaW5uZWjDpWxsZXIgZHluYW1pc2thIGbDpGx0IHNvbSDDpG5kcmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2thIGbDpGx0IHNvbSB2aXNhcyBww6Ugc2vDpHJtZW4gZsO2ciB5dHRlcmxpZ2FyZSBJVFNNLWbDpGx0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2EgZsOkbHQgc29tIHZpc2FzIHDDpSBza8Okcm1lbiBmw7ZyIMO2dmVyc2lrdCBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIGt1bmRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2EgZsOkbHQgc29tIHZpc2FzIHDDpSBza8Okcm1lbiBmw7ZyIHPDtmtuaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBa3RpdmVyYXIgZnVua3Rpb25lbiBmw7ZyIG1hc3PDpXRnw6RyZGVyIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3Qgc8OlIGF0dCBhZ2VudGVucyBmcm9udGVuZCBrYW4gYXJiZXRhIG1lZCBtZXIgw6RuIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCDDpXQgZ8Olbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FrdGl2ZXJhciBmdW5rdGlvbmVuIGbDtnIgbWFzc8OldGfDpHJkZXIgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBlbmRhc3QgZsO2ciBkZSBncnVwcGVyIHNvbSBhbmdlcyBpIGxpc3Rhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnSMOkbmRlbHNlbW9kdWwgZsO2ciBhdHQgc8OkdHRhIGNvbmZpZ2l0ZW0tc3RhdHVzIHDDpSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdGw6RsdCBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIGluZGV4IHNvbSBhbnbDpG5kcyBmw7ZyIGZ1bGx0ZXh0c8O2a25pbmcuIEbDpGx0IGxhZ3JhcyBvY2tzw6UsIG1lbiDDpHIgaW50ZSBvYmxpZ2F0b3Jpc2thIGbDtnIgZGVuIMO2dmVyZ3JpcGFuZGUgZnVua3Rpb25hbGl0ZXRlbi4gSW5rbHVkZXJpbmcgYXYgYmlsYWdvciBrYW4gaW5ha3RpdmVyYXMgZ2Vub20gYXR0IHPDpHR0YSBwb3N0ZW4gdGlsbCAwIGVsbGVyIHJhZGVyYSBkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdGw6RsdCBzb20gbGFncmFzIGkga29uZmlndXJhdGlvbnNvYmpla3RldHMgaW5kZXggb2NoIHNvbSBhbnbDpG5kcyBmw7ZyIGFuZHJhIHNha2VyIMOkbiBmdWxsdGV4dHPDtmtuaW5nLiBGw7ZyIGZ1bGxzdMOkbmRpZyBmdW5rdGlvbmFsaXRldCDDpHIgYWxsYSBmw6RsdCBvYmxpZ2F0b3Jpc2thLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhdiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIGbDtnIgQ29uZmlnSXRlbUZldGNoLWlua2FsbG5pbmdzbGFncmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhdiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIGbDtnIgQ29uZmlnSXRlbUZldGNoLWlua2FsbG5pbmdzbGFncmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCBmw7ZyIENvbmZpZ0l0ZW1GZXRjaC1pbmthbGxuaW5nc2xhZ3JldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBLb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnw5Z2ZXJzaWt0IMO2dmVyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSMOkbmRlbHNlU3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmFyIGRyaWZ0c8OkdHRuaW5nc3N0YXR1c2FyIGkgc8O2a25pbmdlbiBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGt1bmRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmFyIGluY2lkZW50c3RhdHVzYXIgaSBzw7ZrbmluZ2VuIGVmdGVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltYWx0IGFudGFsIGtvbmZpZ3VyYXRpb25zb2JqZWt0IHNvbSBza2EgdmlzYXMgaSByZXN1bHRhdGV0IGF2IGRlbm5hIMOldGfDpHJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIGbDtnIgYXR0IGtvbnRyb2xsZXJhIHZpbGtlbiBncnVwcCBzb20gw6RyIGFuc3ZhcmlnIGbDtnIgZW4ga2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgZsO2ciBhdHQga29udHJvbGxlcmEgdmlsa2VuIGdydXBwIHNvbSDDpHIgYW5zdmFyaWcgZsO2ciBldHQga29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgZsO2ciBhdHQgZ2VuZXJlcmEgc3RhdGlzdGlrIMO2dmVyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtbiBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtbWVyIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsIGtvbmZpZ3VyYXRpb25zb2JqZWt0IHNvbSBza2EgdmlzYXMgcMOlIHZhcmplIHNpZGEgaSBldHQgc8O2a3Jlc3VsdGF0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnRhbCBrb25maWd1cmF0aW9uc29iamVrdCBzb20gc2thIHZpc2FzIHDDpSB2YXJqZSBzaWRhIGF2IGV0dCBzw7ZrcmVzdWx0YXQgaSBrdW5kZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0IGF0dCBzw7ZrYSBlZnRlciwgaHVyIG3DpW5nYSBwb3N0ZXIgb2NoIHZpbGthIGF0dHJpYnV0IHNvbSBza2EgdmlzYXMuIENvbmZpZ0l0ZW0tYXR0cmlidXQgbcOlc3RlIHV0dHJ5Y2tsaWdlbiBsYWdyYXMgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ8OWdmVyc2lrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBrYXRlZ29yaWVybmEgZsO2ciBrbGFzc2VyIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgcHJlZmVyZW5zdnluIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBrb2x1bW5maWx0cmVuIGkgZGVuIGxpbGxhIMO2dmVyc2lrdGVuIMO2dmVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0LiBPYnNlcnZlcmE6IG9tIGR1IGFuZ2VyICJBY3RpdmUiIHRpbGwgMCBmw7ZyaGluZHJhcyBlbmRhc3QgaGFuZGzDpGdnYXJlIGZyw6VuIGF0dCByZWRpZ2VyYSBpbnN0w6RsbG5pbmdhciBmw7ZyIGRlbm5hIGdydXBwIGkgc2luYSBwZXJzb25saWdhIGluc3TDpGxsbmluZ2FyLCBtZW4gYWRtaW5pc3RyYXTDtnJlciBrYW4gZm9ydGZhcmFuZGUgcmVkaWdlcmEgaW5zdMOkbGxuaW5nYXJuYSBmw7ZyIGVuIGFubmFuIGFudsOkbmRhcmVzIHLDpGtuaW5nLiBBbnbDpG5kICJQcmVmZXJlbmNlR3JvdXAiIGbDtnIgYXR0IHN0eXJhIGkgdmlsa2V0IG9tcsOlZGUgZGVzc2EgaW5zdMOkbGxuaW5nYXIgc2thIHZpc2FzIGkgYW52w6RuZGFyZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgZsOkcmdlbiBmw7ZyIGRyaWZ0c8OkdHRuaW5nc3N0YXR1cyBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgZHJpZnRzw6R0dG5pbmdzdGlsbHN0w6VuZCBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIGV4ZW1wZWwgcMOlIGJlaMO2cmlnaGV0c2VncnVwcGVyIGkgZ3J1bmRrYXRhbG9nZW5zIGF0dHJpYnV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBuYW1ubW9kdWxlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgbnVtbWVybW9kdWxlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBzaWRvcm5hIChkw6RyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4gdmlzYXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgbW9kdWxlbiB2ZXJzaW9uIHN0cmluZyBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGbDtnIgY29uZmlnIGl0ZW0gY2xhc3NlcyBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIHZlcnNpb25zdXRsw7ZzYXJlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnQmVow7ZyaWdoZXRzZ3J1cHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgw6V0Z8OkcmRlbiBBdHRhY2htZW50IGbDtnIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBza8Okcm1lbiBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBzw7Zrc2vDpHJtZW4gZsO2ciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBzw7Zrc2vDpHJtZW4gZsO2ciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHRyw6RkdnluIGbDtnIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHpvb21za8Okcm1lbiBmw7ZyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHNrw6RybWVuIEzDpGdnIHRpbGwgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHNrw6RybWVuIGbDtnIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGJ1bGsgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBza8Okcm1lbiBSZWRpZ2VyYSBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc2vDpHJtZW4gSGlzdG9yaWsgw7Z2ZXIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBza8Okcm1lbiBTa3JpdiB1dCBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IHRhIGJvcnQga29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnU8O2ayBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU3TDpGxsIGluIGluY2lkZW50c3RhdHVzIGbDtnIgZXR0IENJIGF1dG9tYXRpc2t0IG7DpHIgZW4gVGlja2V0IGzDpG5rYXMgdGlsbCBldHQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU3TDpGxsZXIgaW4gZHJpZnRzw6R0dG5pbmdzc3RhdHVzIGkga29uZmlndXJhdGlvbnNvYmpla3RldHMgYnVsa3Nrw6RybSBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU3TDpGxsZXIgaW4gaW5jaWRlbnRzdGF0dXMgaSBrb25maWd1cmF0aW9uc29iamVrdGV0cyBidWxrc2vDpHJtIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gc29tIGfDtnIgZGV0IG3DtmpsaWd0IGF0dCBsw6Rua2EgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IHRpbGwgZXR0IGFubmF0IG9iamVrdCBpIHpvb212eW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdGV0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQga29tbWEgw6V0IGhpc3RvcmlrZW4gZsO2ciBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSDDtnZlcnNpa3RlbiDDtnZlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCBrb21tYSDDpXQgaGlzdG9yaWtlbiBmw7ZyIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIHpvb212eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCB0YSBib3J0IGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIGRlc3Mgem9vbXZ5IGF2IGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgdmlzYSBsw6Rua2FybmEgdGlsbCBrb25maWd1cmF0aW9uc29iamVrdGVuIHNvbSBlbiB0csOkZHZ5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgZHVwbGljZXJhIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIMO2dmVyc2lrdGVuIMO2dmVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IGR1cGxpY2VyYSBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSB6b29tdnluIGF2IGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgcmVkaWdlcmEgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgem9vbXZ5biBhdiBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IGfDpSB0aWxsYmFrYSBpIHpvb212eW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdGV0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgc2tyaXZhIHV0IGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIHpvb212eW4gYXYgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgem9vbWEgaW4gcMOlIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIMO2dmVyc2lrdGVuIMO2dmVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBoaXN0b3Jpa2VuIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgKG9tdsOkbmQgb3JkbmluZykgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0RlbiBzdGFuZGFyZGthdGVnb3JpIHNvbSB2aXNhcyBvbSBpbmdlbiBrYXRlZ29yaSBoYXIgdmFsdHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWVyYXJlbiBmw7ZyIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCwgdC5leC4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFN0YW5kYXJkdsOkcmRldCDDpHIgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdVdGzDtnNlciBDb25maWdJdGVtRmV0Y2gtaW5rYWxsYXJlbiBhdXRvbWF0aXNrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvbiBTdHJpbmcgVXR0cnljayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uIFN0cmluZyBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ09tIGvDtnJuaW5nZW4gYXYgQ29uZmlnSXRlbUFDTCBrYW4gdW5kdmlrYXMgZ2Vub20gYXR0IGtvbnRyb2xsZXJhIGNhY2hlbGFncmFkZSBmw6RsdGJlcm9lbmRlbi4gRGV0dGEga2FuIGbDtnJiw6R0dHJhIGxhZGRuaW5nc3RpZGVybmEgZsO2ciBmb3JtdWzDpHIsIG1lbiBtw6VzdGUgYXZha3RpdmVyYXMgb20gQUNMTW9kdWxlcyBza2EgYW52w6RuZGFzIGbDtnIgSVRTTUNvbmZpZ0l0ZW0tIG9jaCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnVmlsa2VuIGFsbG3DpG4gaW5mb3JtYXRpb24gdmlzYXMgaSBydWJyaWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0aXYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDQ0LDQ1IGNtICgxNyw1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogNTMsMzQgY20gKDIxIHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiA4MCwwMSBjbSAoMzEsNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LXR1bXMgcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDg4LDkgY20gKDM1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtdHVtcyBrdWdnc3TDpW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSB0dW0gKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy10dW1zIGt1Z2dzdMOlbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHR1bSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogMTA2LDY4IGNtICg0MiB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSB0dW0gKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDEzMywzNSBjbSAoNTIsNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSB0dW0gKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDE0Niw2OCBjbSAoNTcsNzUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgdHVtICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiAxNjAsMDIgY20gKDYzIHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCB0dW0gKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyB0dW0gKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgdHVtICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDE3LDc4IGNtICg3IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgdHVtICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IHR1bSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnUmVkb3Zpc25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZHJlc3N0aWxsZGVsbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXTDtnInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUeXAgYXYgYXBwYXJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcmlrYXBhY2l0ZXQgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdCYXR0ZXJpdHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnlnZ25hZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzc2dyw6Ruc3NuaXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWtsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0ZXQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thcGFjaXRldCBwZXIgZ3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0tvcnRudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLb3J0bMOkc2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUeXAgYXYga29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS3VuZGNlcnRpZmlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnUHJvZ3JhbXZhcmEgZsO2ciBrbGllbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLdW5ka2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnS2xvY2tzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdLbG9ja2hhc3RpZ2hldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kc2lnbmVyYW5kZSBjZXJ0aWZpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWxlZm9uIGbDtnIga29uZmVyZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsdGF2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0YSBkaXN0cmlidXTDtnJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0NvbnRhaW5lcmhhbnRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0tvbnRyYWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdLb250cmFrdHN0eXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdBdnRhbHNwZXJpb2QgZnLDpW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnQXZ0YWxzdGlkIHRpbGwgb2NoIG1lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdTbGFkZGzDtnMgdGVsZWZvbiAoREVDVC10ZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLb3N0bmFkc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnQW50YWwgbGljZW5zZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdHVtIGbDtnIgc2thcGFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0FucGFzc2F0IHN0w6RsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZlcmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGYWt0dXJhbnMgZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdHVtIGbDtnIgYmVzdMOkbGxuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXR1bSBmw7ZyIHRlY2tuaW5nc29wdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXR1bSBmw7ZyIHV0Z2l2bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWthdCBmw7ZyIGRva3VtZW50c2lnbmVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLXBvc3RjZXJ0aWZpa2F0IChTL01JTUUtY2VydGlmaWthdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQW5zdMOkbGxuaW5nc2F2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnSVAtYWRyZXNzIGbDtnIgc2x1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1VwcGjDtnJhbmRlIGF2IHN0w7ZkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVXRnw6VuZ3NkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuIGjDpXJkZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0JyYW5kdsOkZ2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0VuZXJnaWxhZ3JpbmcgbWVkIHN2w6RuZ2hqdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2VhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0FsbG3DpG4gaW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSMOlcmR2YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnSMOlcmR2YXJ1bW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0jDpXJkdmFyYSBWaWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9rb2xsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXRldHMtIG9jaCDDpXRrb21zdGhhbnRlcmluZyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnRmFrdHVyYW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RhbmdlbnRib3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRC1tb25pdG9yIChmbHl0YW5kZSBrcmlzdGFsbHNrw6RybSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRC1tb25pdG9yIChsanVzZW1pdHRlcmFuZGUgZGlvZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnRmFzdCB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYWdlciAxOiBGeXNpc2t0IGxhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0xhZ2VyIDI6IERhdGFsw6Rua2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYWdlciAzOiBOw6R0dmVya3NsYWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMYWdlciAzOiBOw6R0dmVya3NsYWdlciAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xhZ2VyIDQ6IFRyYW5zcG9ydGxhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMYWdlciA1OiBTZXNzaW9uc2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xhZ2VyIDY6IFByZXNlbnRhdGlvbnNsYWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xhZ2VyIDc6IEFwcGxpa2F0aW9uc2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0h5cmVzYXZ0YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbnNhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5zbnlja2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1R5cCBhdiBsaWNlbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpY2Vuc3BlcmlvZCBmcsOlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2Vuc3BlcmlvZCB0aWxsIG9jaCBtZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGl1bWrDpHJuZm9zZmF0YmF0dGVyaSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGl1bWpvbmJhdHRlcmkgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMw6VuZWF2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdCZWzDpGdldCBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVGlsbHZlcmthcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltYWwgbGFzdGthcGFjaXRldCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWlubmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdNaW5uZXN0eXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWwvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbGxiZXNrcml2bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9ybnMgdXBwbMO2c25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvcm5zIHN0b3JsZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ07DpHR2ZXJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ07DpHR2ZXJrc2luZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBvbSBuw6R0dmVya2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOw6R0dmVya3Nza2lrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1rYWRtaXVtYmF0dGVyaSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWNrZWwtbWV0YWxsaHlkcmlkYmF0dGVyaSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQXZ0YWwgb20gdHlzdG5hZHNwbGlrdCAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0FudGVja25pbmdzYm9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQW50YWwgcHJvY2Vzc29yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnQW50YWwgUkFNLW1vZHVsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnQW50YWwgZ3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC1tb25pdG9yIChvcmdhbmlzayBsanVzZW1pdHRlcmFuZGUgZGlvZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnUsO2cmVsc2Vrb3N0bmFkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnQmVzdMOkbGxuaW5nc251bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FubmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdVdGfDpW5nYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOLUtPRCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJza2Fwc2F2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVHlwIGF2IHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXNpc2thIGvDpHJub3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdHLDtm1mw7Zyc8O2cmpuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnS8O2cHRhIHDDpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFja2RqdXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWNrLWVuaGV0ZXIgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdSdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtY2VydGlmaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0bDtnJzw6Rsam5pbmdzYXZ0YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaXR0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0bDtnJzZWdsYXQgU0xBLWJhdHRlcmkgKExlYWQtQWNpZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdQcm9ncmFtdmFyYSBmw7ZyIHNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NlcnZpY2VhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpY2UgVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cCBhdiB1dHRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Byb2dyYW12YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSMO2Z3RhbGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQgSVAtYWRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdGw7ZydmFyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnTGFncmluZ3NwYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdEb3R0ZXJib2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2FtbWFuZmF0dG5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUdW5uIGtsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVHLDpWRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ0JsaXh0c25hYmIgYW5zbHV0bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWx0IFJBTS1taW5uZSBmw7ZyIGdyYWZpa2tvcnQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsdCBSQU0tbWlubmUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciBtZWQgcGVrc2vDpHJtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWh1YmInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1oZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVlbGwgbMOkbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViYmthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/sw_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN3X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ1RlbmdlbmV6YSByYW1hbmkga3dhIGFqaWxpIHlhIGRhdGEgemEgbWFvbWJpIHppbmF6b2luZ2lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0t1dW5nYW5pc2hhIGRhdGEgemEgbWFqaWJ1IHppbmF6b3Rva2EgbmplLic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1VzYW5pZGkgd2EgdXNpbWFtaXppIHdhIGtpcGVuZ2VsZSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdCYWRpbGkgdWZhZmFudXppIHdhIHRhYmFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnQmFkaWxpIHVmYWZhbnV6aSB3YSB0YWJha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnVmlwZW5nZWxlIHZ5YSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdVc2FuaWRpIHdhIEtpcGVuZ2VsZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdVc2FuaWRpIHdhIEtpcGVuZ2VsZSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnQ2h1amEga3dhIGFqaWxpIHlhIG1hdGFiYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0NoYWd1YSB0YWJha2Ega3V0b2thIGt3ZW55ZSBvcm9kaGEgeWEga3V0ZW5nZW5lemEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGtpcHlhLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdUYWJha2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdWaXRlbmRvIHZ5YSB3aW5naSB2eWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdIYWxpIHlhIGt1dHVtaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdIYWxpIHlhIHR1a2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1VuZ2FuaXNoYSBuYSBueWluZ2luZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmFtYmEgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIG4gYmF0aWxpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdOYW1iYSB5YSBraXBlbmdlbGUga2luZ2luZSBjaGEgdXNhbmlkaSBjaGEga3V1bmdhbmlzaGEgbmFjaG8uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnS3dlbGkgdW5hdGFrYSBrdWZ1dGEgbWFiYWRpbGlrbyBoYXlhPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdKaW5hIGxhIGhpa2kga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdKaW5hIGhpbGkgdGF5YXJpIGxpbWVrd2lzaGEgdHVtaWthbmEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoZW55ZSBuYW1iYSBpKHopZnVhdGF6bzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOYW1iYSB5YSB0b2xlbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSmluYSBsYSBoaWtpIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0ppbmEgaGlsaSB0YXlhcmkgbGltZWt3aXNoYSB0dW1pa2FuYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hlbnllIG5hbWJhIGkoeilmdWF0YXpvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnSGFsaSB5YSBrdXR1bWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ01hdWRodWkgeWEgaGlzdG9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ011ZGEgd2Ega3V0ZW5nZW5lemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnTWFuZGhhcmkgaWxpeW9rdXp3YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdWaXBlbmdlbGUgdnlhIHVzYW5pZGkga3dhIGtpbGEgdWt1cnVzYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnVGFmdXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tpcGVuZ2VsZSBjaGEgVXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdUYWFyaWZhIHphIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdIYWxpIHlhIGt1dHVtaWEgeWEgc2FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyBsYSBzYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ013aXNobyBrdWJhZGlsaXNod2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTXdpc2hvIGt1YmFkaWxpc2h3YSBuYSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1VuYXRha2Ega3VlbmRlbGVhPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnS2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ01hcmVqZW8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdVZW5kZXNoYWppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdPbnlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnVHVraW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0hhbGkgeWEgbWF0dW1pemkgeWEgaGlpIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdIYWxpIHlhIHR1a2lvIHlhIGhpa2kga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnSGFrdW5hIHJ1aHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdBaW5hIHlhIGhhbGkgeWEga3V0dW1pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdBaW5hIHlhIGhhbGkgeWEgdHVraW8gbGEgc2FzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdLYXRpa2F0aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ0tpbWEgY2hhIGp1dSBjaGEgbmFtYmEgeWEgZWxlbWVudGkgbW9qYXdhcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnSW1laXNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hdGVuZ2VuZXpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnS3dhbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdJbGl5b3Bhbmd3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZWtlYmlzaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1N0YWFmdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdNYXBpdGlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdKYXJpYmlvLyBNYXN3YWxpIG5hIE1hamlidSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQW5nYWxpYSBtYWppbmEgeWEga2lwZWtlZSB0dSBrYXRpa2EgdGFiYWthIHNhd2EgbGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIChcJ1RhYmFrYVwnKSBhdSB6b3RlIChcJ1pvdGVcJyksIGFtYmF5byBpbmFtYWFuaXNoYSBraWxhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBraWxpY2hvcG8ga2ltZWp1bXVpc2h3YSB3YWthdGkgbmFrYWxhIHBhY2hhIHppbmFhbmdhbGl3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdWaXBlbmdlbGUgdnlhIHVzYW5pZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhbmlkaSBtb2R1bGkgeWEgdHVraW8geWEga2lwZW5nZWxlIGFtYmFjaG8ga2luYXdlemVzaGEga3VpbmdpYSBrYXRpa2EgaGlzdG9yaWEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tpa29tbyBjaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tpcGFuZ2EgbmppYSBjaGEgbWF6aW5naXJhIHlhIG55dW1hIGNoYSB1dGFmdXRhamkgd2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBraW9sZXN1cmEgY2hhIHdha2FsYS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdUZW5nZW5lemEgbmEgc2ltYW1pYSB1ZmFmYW51emkgd2EgdmlwZW5nZWxlIHZ5YSB1c2FuaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0YSBjaGFndW8gbWlzbmdpIGt1dHVtaWthIGthdGlrYSBzaWZhIGt3YSBhamlsaSB5YSBza3JpbmkgeWEga3V0YWZ1dGEgeWEgdGlrZXRpLgpNZmFubzoKIlVtYml6byBsYSBNdWRhIGxhIEt1dGVuZ2VuZXphIFRpa2V0aT0gbXdha2E7IE13YW56byB3YSBNdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aT0gTXdpc2hvOyBQb2ludGkgeWEgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdGEgY2hhZ3VvLW1zaW5naSBrdXR1bWlhIGthdGlrYSBzaWZhIGt3YSBhamlsaSB5YSBza3JpbmkgeWEga3V0YWZ1dGEgeWEgdGlrZXRpOgoiTXdha2Egd2Ega3VhbnphIHdhIG11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpPTIwMTA7IE13ZXppIHdhIGt1YW56YSB3YSBtdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aT0xMDsgU2lrdSB5YSBrdWFuemEgeWEgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9NDsgTXdha2Egd2Ega3VhY2hhIHdhIG11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpID0yMDEwOyBNd2V6aSB3YSBrdWFjaGEgd2EgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGkgPSAxMTsgU2lrdSB5YSBrdWFjaGEgeWEgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9MzsgIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgcnVodXNhIHppbmF6b2hpdGFqaWthIGt1cGF0YXZpcGVuZ2VsZSB2eWEgdXNhbmlkaSB2eWEgSVRTTSBrd2Ega3V0dW1pYSBraW9sZXN1cmEgY2hhIGplbmVyaWtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBydWh1c2EgemluYXpvaGl0YWppa2Ega3VwYXRhdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIHZ5YSBJVFNNIGt3YSBrdXR1bWlhIGtpb2xlc3VyYSBjaGEgamVuZXJpa2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHJ1aHVzYSB6aW5hem9oaXRhamlrYSBrdXRhZnV0YSB2aXBlbmdlbGUgdnlhIHVzYW5pZGkgdnlhIElUU00ga3dhIGt1dHVtaWEga2lvbGVzdXJhIGNoYSBqZW5lcmlraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgcnVodXNhIHppbmF6b2hpdGFqaWthIGt1cGF0YXZpcGVuZ2VsZSB2eWEgdXNhbmlkaSB2eWEgSVRTTSBrd2Ega3V0dW1pYSBraW9sZXN1cmEgY2hhIGplbmVyaWtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG1vZHVsaSB5YSBtYXBpdGlvIGt1b255ZXNoYSBtYW5kaGFyaSBuZG9nbyB5YSBvcm9kaGEgeWEgdmlwZW5nZWxlIHZ5YSB1c2FuaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2VtaSB6YSBtYXJhIGt3YSBtYXJhIG1vamFtb2phIGt3YSBraWxhIHRhYmFrYSBsYSBraXBlbmdlbGUgY2ggdXNhbmlkaSBrdWFuZ2FsaWEgamluYSBsYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgbmEga3Vvbnllc2hhIHVqdW1iZSB3YSBtYWtvc2EgeWFuYXlvaHVzaWFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrd2EgYWppbGkgeWEga3VwYW5nYSBtYXRva2VvIHlhIHV0YWZ1dGFqaSB3YSB0aWtldGkgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrd2EgYWppbGkgeWEga3VwYW5nYSBtYXRva2VvIHlhIHV0YWZ1dGFqaSB3YSB0aWtldGkgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNpZmEgeWEgdGlrZXRpIGNoYWd1by1tc2luZ2kga3dhIGFqaWxpIHlhIGt1cGFuZ2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgd2EgdGlrZXRpIHlhIHVlbmRlc2hhamkgaHV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBtcGFuZ2lsaW8gd2EgdGlrZXRpIGNoYWd1by1tc2luZ2kga2F0aWthIG1hdG9rZW8geWEgdXRhZnV0YWppIHlhIHRpa2V0aSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4gSnV1OiBLb25nd2UganV1LiBDaGluaTogWmEgc2FzYSBqdXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG1wYW5naWxpbyB3YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrYXRpa2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgeWEgdGlrZXRpIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuIEp1dTogS29uZ3dlIGp1dS4gQ2hpbmk6IFphIHNhc2EganV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNpZmEgeWEgdGlrZXRpIGlsaXlvdGFmdXR3YSBpbGl5b29ueWVzaHdhIGNoYWd1byBtc2luZ2kga3dhIHNrcmluaSB5YSBrdXRhZnV0YSB0aWtldGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNpZmEgeWEgdGlrZXRpIGlsaXlvdGFmdXR3YSBpbGl5b29ueWVzaHdhIGNoYWd1byBtc2luZ2kga3dhIHNrcmluaSB5YSBrdXRhZnV0YSB0aWtldGkuIE1mYW5vOiAiS2lib255ZSIgbGF6aW1hIGl3ZSBuYSBqaW5hIGxhIHVnYSB3ZW55ZSBuZ3V2dSBrd2EgaGFwYSBuaSBcJ1hcJywgIk1hdWRodWkiIGxhemltYSBpd2UgbmEgdGhhbWFuaSB1YSB1Z2Egd2VueWUgbmd1dnUga3V0ZWdlbWVhbmEgbmEgYWluYSB5YSB1Z2Egd2VueWUgbmd1dnUsIE1hdGluaTpcJ01hdGluaVwnLCBLdW5qdXppOiBcJzFcJywgVGFyZWhlL011ZGE6ICBNd2FrYSB3YSBrdWFuemEgd2EgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2E9MTk3NDsgTXdlemkgd2Ega3VhbnphIHdhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhPTAxOyBTaWt1IHlhIGt1YW56YSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YT0yNjsgU2FhIHlhIGt1YW56YSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9MDA7IERha2lrYSB5YSBrdWFuemEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPSAwMDsgU2VrdW5kZSB5YSBrdWFuemEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPSAwMDsgTXdha2Egd2Ega3Vpc2hhIHdhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0yMDEzOyBNd2V6aSB3YSBrdWlzaGEgd2EgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTAxOyBTaWt1IHlhIGt1aXNoYSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9MjY7IFNhYSB5YSBrdWlzaGEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTIzOyBEYWtpa2EgeWEga3Vpc2hhIHlhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID01OTsgU2VrdW5kZSB5YSBrdWlzaGEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTU5OyBuYSBhdSBVbWJpem8gbGEgcG9pbnRpIHlhIG11ZGEgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0gV2VlazsgTXdhbnpvIHdhIHBvaW50aSB5YSBtdWRhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9IEthYmxhOyBUaGFtYW5pIHlhIHBvaW50aSB5YSBtdWRhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9IDc7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGtpcGVuZ2VsZSBjaGEgY2hhZ3VvIG1zaW5naSBjaGEgdGFiYWthIGxhIFwnS2lwZW5nZWxlY2hhIFVzYW5pZGkgY2hhIElUU01cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHVyZWZ1IGt3YSBraWplbnppIGNoYSBtaGFyaXJpIHdhIG1hdGluaSB0YWppbmkga3dhIHNrcmluaSBoaWkuIEluZ2l6YSBuYW1iYSAoUGlrc2VsaSkgYXUgdGhhbWFuaSB5YSBhc2lsaW1pYSAoSW5heW9odXNpa2EpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG5hbWJhIHlhIHNhZnUgbWxhbG8ga3dhIG1oYXJpcmkgd2EgdWZhZmFudXppIHdhIENJIGthdGlrYSBraW9sZXN1cmEgY2hhIGtpb25nb3ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYXdlemVzaGEgdXBlbyB3YSBrdXRhZnV0YSBrd2Egc2tlcmluaSB5YSBLaXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00gY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGtpa29tbyBjaGEga3V0YWZ1dGEga3dhIHNrcmluaSB5YSBLdXRhZnV0YSBLaXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00gIGNoYSBXYWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnSW5hd2V6ZXNoYSB1cGVvIHdhIGt1dGFmdXRhIGt3YSBza2VyaW5pIHlhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEga2lrb21vIGNoYSBrdXRhZnV0YSBrd2Egc2tyaW5pIHlhIEt1dGFmdXRhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSAgY2hhIFdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNhZnUgd2ltYSB6YSBDSSB6aWxpem9vbnllc2h3YSBrYXRpa2EgbWFuZGhhcmkgeWEgamVkd2FsaSB0YXRhIGxhIGtpdW5nbyxrdXRlZ2VtZWFuYSBuYSB0YWJha2EgbGEgQ0kuIEtpbGEgaW5naXpvIGxhemltYSBsaXdlIG5hIGtpYW1iaXNoaSBhd2FsaSBqaW5hIGxhIHRhYmFrYSBuYSA6OiAoIG1mYW5vIFRhcmFraWxpc2hpOjopLkt1bmEgdml1bWJpIHZpY2hhY2hlIHZ5YSBDSSBhbWJhdnlvIHZpcG8ga3dhIENJIHpvdGUgKG1mYW5vIGt3ZW55ZSB0YWJha2EgbGEgdGFyYWtpbGlzaGk6IHRhcmFraWxpc2hpOjpqaW5hLCBUYXJha2lsaXNoaTo6SGFsaSB5YUN1ckRlcCwgVGFyYWtpbGlzaGk6Ok11ZGEgd2Ega3V0ZW5nZW5lemEpLiBLdW9ueWVzaGEga2l1bWJpIGNoYSBDSSBraW1vamEga2ltb2phIGthbWEgdmlsaXZ5byBmYWZhbnVsaXdhIGt3ZW55ZSB1ZmFmYW51emkgd2EgQ0ksIG1wYW5naWxpbyB1ZnVhdGFvIGxhemltYSB1dHVtaWtlIChtZmFubyBrd2VueWUgdGFiYWthIHRhcmFraWxpc2hpKTogVGFyYWtpbGlzaGk6OmRpc2tpIGt1dTo6MSwgVGFyYWtpbGlzaGk6OkRpc2tpIGt1dSBuZ3VtdTo6MVV3ZXpvOjoxLCBUYXJha2lsaXNoaTo6RGlza2kga3V1IG5ndW11OjoyLCBUYXJha2lsaXNoaTo6RGlza2kga3V1IG5ndW11OjoyOjpVd2V6bzo6MS4gS2FtYSBoYWt1bmEgaW5naXpvIGt3YSB0YWJha2EgbGEgQ0ksIHNhZnV3aW1hIGNoYWd1byBtc2luZ2kgemluYW9ueWVzaHdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0luYWZhZmEgdmlwZW5nZWxlZSBhbWJhdnlvIHZpbmFwYXRpa2FuYSBrd2EgYWppbGkgeWEgXCdLaXRlbmRvXCcga2F0aWthIG5nYXppIHlhIHRhdHUgeWEgbXV1bmRvIHdhIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHZpcGVuZ2VsZSBhbWJhdnlvIHZpbmFwYXRpa2FuYSBrYXRpa2EgbmdhemkgeWEga3dhbnphIHlhIG11dW5kbyB3YSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgdmlwZW5nZWxlIGFtYmF2eW8gdmluYXBhdGlrYW5hIGthdGlrYSBuZ2F6aSB5YSBwaWxpIHlhIG11dW5kbyB3YSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS2lwZW5nZWxlIGNoYSBVc2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnSGFsaSB5YSBrdXR1bWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0hhbGkgeWEga3V0dW1pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdOYWthbGEgcGFjaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lueWVzaGEgdWdhIHphIGtpY2h3YSBjaGEgaGFiYXJpIGthdGlrYSBza3JpbmkgeWEgdWdhIHdhIElUU00gdWxpb29uZ2V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lueWVzaGEgdWdhIHphIGtpY2h3YSBjaGEgaGFiYXJpIGthdGlrYSBza3JpbmkgeWEgdWdhIHdhIElUU00gdWxpb29uZ2V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lueWVzaGEgdWdhIHphIGtpY2h3YSBjaGEgaGFiYXJpIGthdGlrYSBza3JpbmkgeWEgdWdhIHdhIElUU00gdWxpb29uZ2V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0luYXdlemVzaGEga2lwZW5nZWxlIGNoYSBraXRlbmRvIGNoIHdpbmdpIGNoYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga3dhIG1haW5naXJhIHlhIG1iZWxlIHlhIHdha2FsYSBrdWZhbnlhIGthemkga2F0aWthIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB6YWlkaSB5YSBraW1vamEga3dhIG11ZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdJbmF3ZXplc2hhIGtpcGVuZ2VsZSBjaGEga2l0ZW5kbyBjaGEgd2luZ2kgY2hhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrd2EgbWFrdW5kaSB5YWxpeW9vcm9kaGVzaHdhIHR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdVc2FqaWxpIHdhIG1vZHVsaSB5YSBraW9sZXN1cmEgY2hhIGp1bWxhIGt3YWFqaWxpIGxhIHRhYmFrYSBsYSBraWhhbXNoYWppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1VzYWppbGkgd2EgbW9kdWxpIHlhIGtpb2xlc3VyYSBjaGEganVtbGEga3dhYWppbGkgbGEgdGFiYWthIGxhIGtpaGFtc2hhamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1VzYWppbGkgd2EgbW9kdWxpIHlhIGtpb2xlc3VyYSBjaGEganVtbGEga3dhYWppbGkgbGEgdGFiYWthIGxhIGtpaGFtc2hhamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0tpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdIYWxpIHlhIHR1a2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdIYWxpIHlhIHR1a2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ05hbWJhIHlhIHVwZW8gd2EganV1IHdhIHRpa2V0aSB6aXRha2F6byBvbnllc2h3YSBrYXRpa2EgbWF0b2tlbyB5YSBtY2hha2F0byBodXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxpIHlhIGt1YW5nYWxpYSBtYWt1bmRpIHlhbmF5b2h1c2lrYSBuYSB0YWJha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxlIHlhIGt1YW5nYWxpYSBtYWt1bmRpIHlhbmF5b2h1c2lrYSBuYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxpIHlhIGt1dGVuZ2VuZXphIHRha3dpbXUgemEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNPic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHRhIHRpa2V0aSB6aXRha2F6b29ueWVzaHdhIGthdGlrYSBraWxhIHVrdXJhc2Egd2EgbWF0b2tlbyB5YSB1dGFmdXRhamkga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB0YSB0aWtldGkgeml0YWthem9vbnllc2h3YSBrYXRpa2Ega2lsYSB1a3VyYXNhIHdhIG1hdG9rZW8geWEgdXRhZnV0YWppIGthdGlrYSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnTWFwaXRpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIHJhbmdpIHlhIGhhbGkgemEgbWF0dW1pemkga2FtYSBtYW5kaGFyaSB5YSBtYXBlbmRlbGVvIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgbWZhbm8gcnVodXNhIHphIHZpa3VuZGkga3dhIHNpZmEgemEga2F0YWxvZ2kgemEgdWp1bWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIGhhbGkgemEgbWF0dW1pemkga2FtYSBtYW5kaGFyaSB5YSBtYXBlbmRlbGVvIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIHVrdXJhc2EgKGFtYmF2eW8gdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIHZpbWVvbnllc2h3YSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGt1dGFmdXRhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBrdXRhZnV0YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga3V0YWZ1dGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgaWxpeW9rdXp3YSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGtpbGljaG9vbmdlemEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGtpbGljaG9oYXJpcml3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGNoYSBoaXN0b3JpYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBjaGEga3VjaGFwaXNoYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdVcGVuZGVsZW8gdW5hb3Rha2l3YSBpbGkga3VmdXRhIG1hYmFkaWxpa28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmF3ZWthIGhhbGkgeWEga3V0dW1pYSBrYXRpa2Egc2tyaW5pIHlhIHdpbmdpIHdhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hd2VrYSBoYWxpIHlhIHR1a2lvIGthdGlrYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2lvbmdvIGthdGlrYSBtZW55dSBhbWJhY2hvIGtpbmF1bmdhbmlzaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIG5hIGtpcGVuZ2VlIGtpbmdpbmUga2F0aWthIG1hbmRoYXJpIGlsaXlva3V6d2EgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xldXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrd2VueWUgIG1lbnl1IGt1d2V6YSBrdWZpa2lhIGhpc3RvcmlhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFwaXRpbyB5YSBraXBlbmdlbGUgeWEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ28ga3dlbnllICBtZW55dSBrdXdlemEga3VmaWtpYSBoaXN0b3JpYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hbmRoYXJpIHlha2UgaWxpeW9rdXp3YSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3VoYXJpcmkgIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFuZGhhcmkgeWFrZSBpbGl5b2t1endhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1dG9hIG5ha2FsYSBwYWNoYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hcGl0aW8geWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3V0b2EgbmFrYWxhIHBhY2hhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFuZGhhcmkgeWFrZSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1aGFyaXJpICBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hbmRoYXJpIHlha2UgaWxpeW9rdXp3YSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdvIGt3ZW55ZSBtZW55dSBpbGkga3VydWRpIG55dW1hIGt3ZW55ZSBtdW9uZWthbm8gd2EgbWFiYWRpbGlrbyB1bGlva3V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1Y2hhcGlzaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYW5kaGFyaSB5YWtlIGlsaXlva3V6d2EgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1a3V6YSBrYXRpa2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYXBpdGlvIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBoaXN0b3JpYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgKGt3YSBtcGFuZ2lsaW8gd2Ega3VydWRpIG55dW1hKSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnS2l0YW1idWxpc2hpIGNoYSBraXBlbmdlbGUgY2hhIHVzYW5pZGksIG1mYW5vLkNvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBDaGFndS1tc2luZ2kgbmkgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnVGFiYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdVaGFzaWJ1IHdhIG11ZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1V0YXdhbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0plbmdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdLaW9sZXN1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VuZW8ga2F6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdQcm9ncmFtdSB5YSBidXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0JvYWJvbnllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdLb21weXV0YSB5YSBta29ub25pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNZmFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnS2lwYW55YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTXRhbmRhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0VuZ2luZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnTWF0b2tlbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0NodW1iYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0t1YmFsaWFubyB5YSBraXZhbmdvIGNoYSBodWR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ0tpd2FuZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/th_TH_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRoX1RIX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+C5geC4nOC4meC4l+C4teC5iOC4quC4s+C4q+C4o+C4seC4muC4guC5ieC4reC4oeC4ueC4peC4geC4suC4o+C4o+C5ieC4reC4h+C4guC4reC4guC4suC5gOC4guC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+C5geC4nOC4meC4l+C4teC5iOC4quC4s+C4q+C4o+C4seC4muC4guC5ieC4reC4oeC4ueC4peC4geC4suC4o+C4leC4reC4muC4quC4meC4reC4h+C4l+C4teC5iOC4quC5iOC4h+C4reC4reC4gSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4oyBDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+C4meC4tOC4ouC4suC4oeC4guC4reC4h+C4hOC4peC4suC4quC4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn4LiZ4Li04Lii4Liy4Lih4LiC4Lit4LiH4LiE4Lil4Liy4Liq4LiB4Liy4Lij4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn4LiV4Lix4Lin4LiB4Lij4Lit4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4LiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+C5gOC4peC4t+C4reC4geC4hOC4peC4suC4quC4iOC4suC4geC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4quC4o+C5ieC4suC4hyBDb25maWcgSXRlbSDguYPguKvguKHguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfguITguKXguLLguKonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICfguIHguLLguKPguJfguLPguIfguLLguJnguYDguJvguYfguJnguIHguKXguLjguYjguKHguILguK3guIcgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguLjguIHguLLguKPguJPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn4LmA4LiK4Li34LmI4Lit4Lih4LmC4Lii4LiH4LmE4Lib4LiX4Li14LmI4Lit4Li34LmI4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfguIjguLPguJnguKfguJnguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLLguYTguKHguYjguJbguLnguIHguJXguYnguK3guIchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ+C4iOC4s+C4meC4p+C4meC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4geC4s+C4q+C4meC4lOC4hOC5iOC4suC4reC4t+C5iOC4meC5huC4l+C4teC5iOC4leC5ieC4reC4h+C4geC4suC4o+C5gOC4iuC4t+C5iOC4reC4oeC5guC4ouC4hyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+C4hOC4uOC4k+C4leC5ieC4reC4h+C4geC4suC4o+C4peC4mkNoYW5nZSDguJnguLXguYnguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyDguIrguLfguYjguK3guILguK3guIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYlcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn4LiK4Li34LmI4Lit4LiX4Li14LmI4LiW4Li54LiB4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmC4LiU4LiiIENvbmZpZ0l0ZW1zIOC4oeC4teC4iOC4s+C4meC4p+C4meC4lOC4seC4h+C4leC5iOC4reC5hOC4m+C4meC4teC5iSAocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn4Lir4Lih4Liy4Lii4LmA4Lil4LiC4LmA4Lin4Lit4Lij4LmM4LiK4Lix4LmJ4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfguIrguLfguYjguK3guILguK3guIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYlcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+C4iuC4t+C5iOC4reC4l+C4teC5iOC4luC4ueC4geC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5guC4lOC4oiBDb25maWdJdGVtcyDguKHguLXguIjguLPguJnguKfguJnguJTguLHguIfguJXguYjguK3guYTguJvguJnguLXguYkgKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn4LmA4LiZ4Li34LmJ4Lit4Lir4Liy4Lib4Lij4Liw4Lin4Lix4LiV4Li0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfguYDguKfguKXguLLguJfguLXguYjguKrguKPguYnguLLguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54LihJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0NvbmZpZyBJdGVtcyDguYPguJnguYHguJXguYjguKXguLDguKvguJnguYnguLInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ+C4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4hOC5ieC4meC4q+C4sic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn4LiC4LmJ4Lit4Lih4Li54Lil4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC4m+C4seC4iOC4iOC4uOC4muC4seC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmM4Lib4Lix4LiI4LiI4Li44Lia4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ+C4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4peC5iOC4suC4quC4uOC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfguIHguLLguKPguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguKXguYjguLLguKrguLjguJTguYLguJTguKInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfguITguLjguJPguJXguYnguK3guIfguIHguLLguKPguJTguLPguYDguJnguLTguJnguIHguLLguKPguJXguYjguK3guYTguJvguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ+C4leC5ieC4reC4h+C4geC4suC4oyBFeGFtcGxlUHJvY2Vzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn4LmE4Lih4LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmB4Liq4LiU4LiH4Lib4Lij4Liw4Lin4Lix4LiV4Li0IOC5hOC4oeC5iOC5hOC4lOC5ieC4o+C4seC4miBUaWNrZXRJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfguYTguKHguYjguKrguLLguKHguLLguKPguJbguYHguKrguJTguIfguJvguKPguLDguKfguLHguJXguLQg4LmE4Lih4LmI4LmE4LiU4LmJ4Lij4Lix4LiaIFRpY2tldElEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+C5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC5geC4quC4lOC4h+C4m+C4o+C4sOC4p+C4seC4leC4tCDguYTguKHguYjguYTguJTguYnguKPguLHguJogVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ+C4reC5ieC4suC4h+C4reC4tOC4hyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn4LmE4Lih4LmI4Lih4Li14Lic4Lil4Lil4Lix4Lie4LiY4LmMISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfguIHguLLguKPguJTguLPguYDguJnguLTguJnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+C4hOC4s+C5gOC4leC4t+C4reC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ+C5gOC4q+C4leC4uOC4geC4suC4o+C4k+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4LiB4Liy4Lij4LiC4Lit4LiHIGNvbmZpZyBpdGVtIOC4meC4teC5iSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guYDguKvguJXguLjguIHguLLguKPguJPguYzguILguK3guIcgY29uZmlnIGl0ZW0g4LiZ4Li1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn4LmE4Lih4LmI4LmE4LiU4LmJ4Lij4Lix4Lia4Lit4LiZ4Li44LiN4Liy4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4quC4luC4suC4meC4oOC4suC4nuC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfguJvguKPguLDguYDguKDguJfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguYzguIHguLLguKPguJPguYzguJvguLHguIjguIjguLjguJrguLHguJknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn4Lij4Liw4Lir4Lin4LmI4Liy4LiHJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn4LiI4Liz4LiZ4Lin4LiZ4Liq4Li54LiH4Liq4Li44LiU4LiC4Lit4LiH4Lir4LiZ4Li24LmI4LiH4Lit4Li44Lib4LiB4Lij4LiT4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ+C4q+C4oeC4lOC4reC4suC4ouC4uCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ+C4geC4suC4o+C4lOC4ueC5geC4peC4o+C4seC4geC4qeC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ+C4geC4suC4o+C4meC4s+C4o+C5iOC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn4LiB4Liy4Lij4Lin4Liy4LiH4LmB4Lic4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ+C4i+C5iOC4reC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn4LmA4LiB4Lip4Li14Lii4LiTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ+C4leC4seC4p+C4reC4ouC5iOC4suC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn4LiX4LiU4Liq4Lit4LiaL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfguJXguKPguKfguIjguKrguK3guJrguIrguLfguYjguK3guYDguInguJ7guLLguLDguYDguJfguYjguLLguJnguLHguYnguJnguJfguLXguYjguK3guKLguLnguYjguYPguJkgQ29uZmlnSXRlbSDguIrguLHguYnguJnguYDguJTguLXguKLguKfguIHguLHguJkgKOC4iuC4seC5ieC4mSkg4Lir4Lij4Li34Lit4LiX4Lix4LmJ4LiH4Lir4Lih4LiUICjguJfguLHguYnguIfguKvguKHguJQpIOC4i+C4tuC5iOC4h+C4q+C4oeC4suC4ouC4hOC4p+C4suC4oeC4p+C5iOC4skNvbmZpZ0l0ZW0g4LiX4Li14LmI4Lih4Li14Lit4Lii4Li54LmI4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4LiI4Liw4LiW4Li54LiB4LiZ4Liz4LmA4LiC4LmJ4Liy4Lia4Lix4LiN4LiK4Li14LmA4Lie4Li34LmI4Lit4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LiL4LmJ4Liz4LiB4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQ29uZmlnIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYLguKHguJTguLnguKXguIHguLTguIjguIHguKPguKPguKHguILguK3guIdDb25maWcgaXRlbSDguJfguLXguYjguIrguYjguKfguKLguYPguKvguYnguYDguILguYnguLLguKrguLnguYjguKPguLDguJrguJrguJvguKPguLDguKfguLHguJXguLTguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guKrguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfguIHguLLguKPguIjguLPguIHguLHguJQgQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpb24gSXRlbSDguITguYnguJnguKvguLIgYmFja2VuZCByb3V0ZXIg4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfguKrguKPguYnguLLguIfguYHguKXguLDguIjguLHguJTguIHguLLguKPguITguLPguJnguLTguKLguLLguKHguKrguLPguKvguKPguLHguJogQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn4LiC4LmJ4Lit4Lih4Li54Lil4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiX4Li14LmI4LiI4Liw4LmD4LiK4LmJ4LmD4LiZ4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4LinIOC4leC4seC4p+C4reC4ouC5iOC4suC4hzogIlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO1RpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Iic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ+C4guC5ieC4reC4oeC4ueC4peC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4l+C4teC5iOC4iOC4sOC5g+C4iuC5ieC5g+C4meC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jOC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4pyDguJXguLHguKfguK3guKLguYjguLLguIc6ICJUaWNrZXRDcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0RGF5PTQ7VGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0b3BNb250aD0xMTtUaWNrZXRDcmVhdGVUaW1lU3RvcERheT0zOyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4quC4tOC4l+C4mOC4tOC5jOC4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC5g+C4meC4geC4suC4o+C5gOC4reC4suC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNN4LmC4LiU4Lii4LmD4LiK4LmJ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Lix4LmI4Lin4LmE4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKrguLTguJfguJjguLTguYzguJfguLXguYjguIjguLPguYDguJvguYfguJnguYPguJnguIHguLLguKPguYDguK3guLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTeC5guC4lOC4ouC5g+C4iuC5ieC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4seC5iOC4p+C5hOC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Liq4Li04LiX4LiY4Li04LmM4LiX4Li14LmI4LiI4Liz4LmA4Lib4LmH4LiZ4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU03guYLguJTguKLguYPguIrguYnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLHguYjguKfguYTguJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4quC4tOC4l+C4mOC4tOC5jOC4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC5g+C4meC4geC4suC4o+C5gOC4reC4suC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNN4LmC4LiU4Lii4LmD4LiK4LmJ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Lix4LmI4Lin4LmE4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC5guC4oeC4lOC4ueC4peC4oOC4suC4nuC4o+C4p+C4oeC5g+C4meC4geC4suC4o+C5geC4quC4lOC4h+C4oeC4uOC4oeC4oeC4reC4h+C4guC4meC4suC4lOC5gOC4peC5h+C4geC4guC4reC4h+C4o+C4suC4ouC4geC4suC4oyAgQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4meC4tOC4nuC4iOC4meC5jOC4l+C4seC5iOC4p+C5hOC4m+C5gOC4m+C5h+C4meC4o+C4suC4ouC4muC4uOC4hOC4hOC4peC5g+C4mUNvbmZpZ0l0ZW0g4LmB4LiV4LmI4Lil4Liw4LiK4Lix4LmJ4LiZIOC5gOC4nuC4t+C5iOC4reC4leC4o+C4p+C4iOC4quC4reC4muC4iuC4t+C5iOC4rSBDb25maWdJdGVtIOC5geC4peC4sOC5gOC4nuC4t+C5iOC4reC5geC4quC4lOC4h+C4guC5ieC4reC4hOC4p+C4suC4oeC4nOC4tOC4lOC4nuC4peC4suC4lOC4l+C4teC5iOC4quC4reC4lOC4hOC4peC5ieC4reC4h+C4geC4seC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LiV4Lix4LmL4Lin4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmA4Lij4Li14Lii4LiH4Lil4Liz4LiU4Lix4Lia4LiV4Lix4LmL4Lin4LiC4Lit4LiH4Lic4Lil4Lil4Lix4Lie4LiY4LmM4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4Lin4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJXguLHguYvguKfguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJrguJXguLHguYvguKfguILguK3guIfguJzguKXguKXguLHguJ7guJjguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKfguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJXguLHguYvguKfguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJrguJXguLHguYvguKfguILguK3guIfguJzguKXguKXguLHguJ7guJjguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKfguILguK3guIfguIHguLLguKPguJTguLPguYDguJnguLTguJnguIHguLLguKPguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4geC4suC4o+C4iOC4seC4lOC5gOC4o+C4teC4ouC4h+C5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4leC4seC5i+C4p+C5g+C4meC4nOC4peC4peC4seC4nuC4mOC5jOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4p+C4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCDguILguLbguYnguJk6IOC5gOC4geC5iOC4suC4l+C4teC5iOC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSDguKXguIc6IOC4peC5iOC4suC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiB4Liy4Lij4LiI4Lix4LiU4LmA4Lij4Li14Lii4LiH4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiC4Lit4LiH4Lic4Lil4Lil4Lix4Lie4LiY4LmM4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Lil4Li54LiB4LiE4LmJ4LiyIOC4guC4tuC5ieC4mTog4LmA4LiB4LmI4Liy4LiX4Li14LmI4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZIOC4peC4hzog4Lil4LmI4Liy4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jOC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4p+C4l+C4teC5iOC5geC4quC4lOC4h+C4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4Lin4LiX4Li14LmI4LiW4Li54LiB4LmB4Liq4LiU4LiH4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4LinIOC4leC4seC4p+C4reC4ouC5iOC4suC4hzogIuC4hOC4teC4ouC5jCIg4LiV4LmJ4Lit4LiH4Lih4Li14LiK4Li34LmI4Lit4LiC4Lit4LiH4Lif4Li04Lil4LiU4LmM4LmB4Lia4Lia4LmE4LiU4LiZ4Liy4Lih4Li04LiB4LmD4LiZ4LiB4Lij4LiT4Li14LiZ4Li14LmJ4LiE4Li34LitIFwnWFwnICAi4LmA4LiZ4Li34LmJ4Lit4Lir4LiyIiDguJXguYnguK3guIfguKHguLXguITguYjguLLguILguK3guIfguJ/guLTguKXguJTguYzguYTguJTguJnguLLguKHguLTguIHguIvguLbguYjguIfguILguLbguYnguJnguK3guKLguLnguYjguIHguLHguJrguJvguKPguLDguYDguKDguJfguILguK3guIfguJ/guLTguKXguJTguYzguYTguJTguJnguLLguKHguLTguIEg4LiC4LmJ4Lit4LiE4Lin4Liy4LihOiDguITguLfguK0gXCfguILguYnguK3guITguKfguLLguKFcJyAg4LmA4Lih4LiZ4Li54LmB4Lia4Lia4LmA4Lil4Li34LmI4Lit4LiZ4Lil4LiHOiBcJzFcJywgIOC4p+C4seC4meC4l+C4teC5iCAvIOC5gOC4p+C4peC4sjogU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXIgPSAxOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguK3guJrguYDguIjguIHguJXguYzguKLguYjguK3guKLguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguITguKXguLLguKogXCdJVFNNQ29uZmlnSXRlbVwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4Lin4Liy4Lih4Liq4Li54LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lit4Lih4LmC4Lie4LmA4LiZ4LiZ4LiV4LmM4LmB4LiB4LmJ4LmE4LiC4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiZ4Li14LmJIOC5g+C4quC5iOC4q+C4oeC4suC4ouC5gOC4peC4giAo4Lie4Li04LiB4LmA4LiL4LilKSDguKvguKPguLfguK3guITguYjguLLguKPguYnguK3guKLguKXguLAgKOC5gOC4l+C4teC4ouC4miknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiI4Liz4LiZ4Lin4LiZ4LmB4LiW4Lin4Liq4Liz4Lir4Lij4Lix4Lia4LiV4Lix4Lin4LmB4LiB4LmJ4LmE4LiC4LiB4Liy4Lij4LiZ4Li04Lii4Liy4LihIENJIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4quC4guC4reC4h+C4nOC4ueC5ieC4lOC4ueC5geC4peC4o+C4sOC4muC4mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguILguLXguJTguIjguLPguIHguLHguJTguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK0gQWdlbnRJVFNNQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4guC4teC4lOC4iOC4s+C4geC4seC4lOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4rSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiC4Li14LiU4LiI4Liz4LiB4Lix4LiU4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4LitIEFnZW50SVRTTUNvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguILguLXguJTguIjguLPguIHguLHguJTguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK0gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC4reC4peC4seC4oeC4meC5jOC4l+C4teC5iOC5geC4quC4lOC4hyBDSXMg4LmD4LiZ4LiV4Liy4Lij4Liy4LiH4LiB4Liy4Lij4LmA4LiK4Li34LmI4Lit4Lih4LmC4Lii4LiH4Lih4Li44Lih4Lih4Lit4LiH4LiX4Li14LmI4LiL4Lix4Lia4LiL4LmJ4Lit4LiZ4LiL4Li24LmI4LiH4LiC4Li24LmJ4LiZ4Lit4Lii4Li54LmI4LiB4Lix4Lia4LiE4Lil4Liy4LiqIENJIOC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4m+C5ieC4reC4meC5geC4leC5iOC4peC4sOC4o+C4suC4ouC4geC4suC4o+C4iOC4sOC4leC5ieC4reC4h+C4meC4s+C4q+C4meC5ieC4suC4lOC5ieC4p+C4ouC4iuC4t+C5iOC4reC4hOC4peC4suC4quC5geC4peC4sOC5gOC4hOC4o+C4t+C5iOC4reC4h+C4q+C4oeC4suC4ouC4l+C4p+C4tOC4oOC4suC4hOC4hOC4ueC5iCAo4LmA4LiK4LmI4LiZ4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOiA6KSDguKHguLXguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgQ0kg4LmA4Lie4Li14Lii4LiH4LmE4Lih4LmI4LiB4Li14LmI4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIOC4l+C4teC5iOC5g+C4iuC5ieC4geC4seC4meC4l+C4seC5iOC4p+C5hOC4m+C5g+C4mSBDSXMg4LiX4Lix4LmJ4LiH4Lir4Lih4LiUICjguJXguLHguKfguK3guKLguYjguLLguIfguKrguLPguKvguKPguLHguJrguITguKXguLLguKrguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6IOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64LiK4Li34LmI4LitLCDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OkN1ckRlcGxTdGF0ZSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjpDcmVhdGVUaW1lKSDguYPguJnguIHguLLguKPguYHguKrguJTguIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgQ0kg4LiV4Liy4Lih4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJ4LmD4LiZ4LiE4Liz4LiZ4Li04Lii4Liy4LihIENJIOC4iOC4sOC4leC5ieC4reC4h+C5g+C4iuC5ieC4o+C4ueC4m+C5geC4muC4muC4leC5iOC4reC5hOC4m+C4meC4teC5iSjguJXguLHguKfguK3guKLguYjguLLguIfguKrguLPguKvguKPguLHguJrguITguKXguLLguKrguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYwpOiDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OuC4ruC4suC4o+C5jOC4lOC4lOC4tOC4quC4geC5jDo6MSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjrguK7guLLguKPguYzguJTguJTguLTguKrguIHguYw6OjE6OuC4hOC4p+C4suC4oeC4iOC4uDo6MSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjrguK7guLLguKPguYzguJTguJTguLTguKrguIHguYw6OjIsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64Liu4Liy4Lij4LmM4LiU4LiU4Li04Liq4LiB4LmMOjoyOjrguITguKfguLLguKHguIjguLg6OjEg4Lir4Liy4LiB4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4Lib4LmJ4Lit4LiZ4LiE4Lil4Liy4Liq4LiX4Li14LmIIENJIOC5geC4peC5ieC4p+C4hOC4reC4peC4seC4oeC4meC5jOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4iOC4sOC5geC4quC4lOC4h+C4leC4suC4oeC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5ieC5g+C4meC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNQ29uZmlnSXRlbSA6OkZyb250ZW5kIDo6IEFnZW50SVRTTUNvbmZpZ0l0ZW0gIyMjIFNob3dDb2x1bW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LiX4Li14LmI4LmD4LiK4LmJ4LmE4LiU4LmJ4Liq4Liz4Lir4Lij4Lix4LiaIFwn4LiB4Liy4Lij4LiB4Lij4Liw4LiX4LizXCcg4LmD4LiZ4Lij4Liw4LiU4Lix4Lia4LiX4Li14LmI4Liq4Liy4Lih4LiC4Lit4LiH4LmC4LiE4Lij4LiH4Liq4Lij4LmJ4Liy4LiHIEFDTCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4l+C4teC5iOC5g+C4iuC5ieC5hOC4lOC5ieC5g+C4meC4o+C4sOC4lOC4seC4muC5geC4o+C4geC4guC4reC4h+C5guC4hOC4o+C4h+C4quC4o+C5ieC4suC4hyBBQ0wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LiX4Li14LmI4LmD4LiK4LmJ4LmE4LiU4LmJ4LmD4LiZ4Lij4Liw4LiU4Lix4Lia4LiX4Li14LmI4Liq4Lit4LiH4LiC4Lit4LiH4LmC4LiE4Lij4LiH4Liq4Lij4LmJ4Liy4LiHIEFDTCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4geC4s+C4q+C4meC4lOC4hOC5iOC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn4LiL4LmJ4LizJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKvguLHguKfguILguYnguK3guJ/guLTguKXguJTguYzguYPguJnguKvguJnguYnguLLguIjguK3guJ/guLTguKXguJTguYzguYDguJ7guLTguYjguKHguYDguJXguLTguKHguILguK3guIcgSVRTTeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKvguLHguKfguILguYnguK3guJ/guLTguKXguJTguYzguYPguJnguKvguJnguYnguLLguIjguK3guJ/guLTguKXguJTguYzguYDguJ7guLTguYjguKHguYDguJXguLTguKHguILguK3guIcgSVRTTeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKvguLHguKfguILguYnguK3guJ/guLTguKXguJTguYzguYPguJnguKvguJnguYnguLLguIjguK3guJ/guLTguKXguJTguYzguYDguJ7guLTguYjguKHguYDguJXguLTguKHguILguK3guIcgSVRTTeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguKPguLLguKLguIHguLLguKPguITguLjguJPguKXguLHguIHguKnguJPguLDguILguK3guIfguIHguLLguKPguJfguLPguIfguLLguJnguYDguJvguYfguJnguIHguKXguLjguYjguKEg4Liq4Liz4Lir4Lij4Lix4Lia4Lif4Lij4Lit4LiZ4LiV4LmM4LmA4Lit4LiZ4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4LmA4Lie4Li34LmI4Lit4LiX4Liz4LiH4Liy4LiZ4LiB4Lix4Lia4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LiX4Li14LmI4Lih4Li14Lih4Liy4LiB4LiB4Lin4LmI4Liy4Lir4LiZ4Li24LmI4LiH4LmD4LiZ4Lir4LiZ4Li24LmI4LiH4LiE4Lij4Lix4LmJ4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguKPguLLguKLguIHguLLguKPguITguLjguJPguKXguLHguIHguKnguJPguLDguILguK3guIfguIHguLLguKPguJfguLPguIfguLLguJnguYDguJvguYfguJnguIHguKXguLjguYjguKHguYDguInguJ7guLLguLDguKrguLPguKvguKPguLHguJrguIHguKXguLjguYjguKHguJfguLXguYjguKPguLDguJrguLjguYTguKfguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEdlbmVyaWNJbnRlcmZhY2Ug4Liq4Liz4Lir4Lij4Lix4Lia4LiK4Lix4LmJ4LiZ4LiC4Lit4LiH4Lic4Li54LmJ4Lij4LmJ4Lit4LiH4LiC4LitJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEdlbmVyaWNJbnRlcmZhY2Ug4Liq4Liz4Lir4Lij4Lix4Lia4LiK4Lix4LmJ4LiZ4LiC4Lit4LiH4Lic4Li54LmJ4Lij4LmJ4Lit4LiH4LiC4LitJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBHZW5lcmljSW50ZXJmYWNlIOC4quC4s+C4q+C4o+C4seC4muC4iuC4seC5ieC4meC4guC4reC4h+C4nOC4ueC5ieC4o+C5ieC4reC4h+C4guC4rSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C5gOC4q+C4leC5jOC4geC4suC4o+C4k+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ+C5guC4oeC4lOC4ueC4peC5g+C4meC4geC4suC4o+C4leC4o+C4p+C4iOC4quC4reC4muC4nOC4ueC5ieC4o+C4seC4muC4nOC4tOC4lOC4iuC4reC4muC4geC4peC4uOC5iOC4oeC4quC4s+C4q+C4o+C4seC4muC4hOC4peC4suC4qic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ+C5guC4oeC4lOC4ueC4peC5g+C4meC4geC4suC4o+C4leC4o+C4p+C4iOC4quC4reC4muC4nOC4ueC5ieC4o+C4seC4muC4nOC4tOC4lOC4iuC4reC4muC4geC4peC4uOC5iOC4oeC4quC4s+C4q+C4o+C4seC4miBjb25maWd1cmF0aW9uIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfguYLguKHguJTguLnguKXguKrguKPguYnguLLguIfguKrguJbguLTguJXguLQgSVRTTSBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4Lia4LiZ4LmB4LiV4LmI4Lil4Liw4Lir4LiZ4LmJ4Liy4LiC4Lit4LiH4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4Lia4LiZ4LmB4LiV4LmI4Lil4Liw4Lir4LiZ4LmJ4Liy4LiC4Lit4LiH4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfguKDguLLguJ7guKPguKfguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C4quC4teC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguJXguLHguKfguK3guKLguYjguLLguIfguIHguKXguLjguYjguKHguJfguLXguYjguYTguJTguYnguKPguLHguJrguK3guJnguLjguI3guLLguJXguILguK3guIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguYHguITguYfguJXguJXguLLguKXguYfguK3guIHguJfguLHguYjguKfguYTguJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguYHguJXguYjguKXguLDguKvguJnguYnguLIo4LiL4Li24LmI4LiHIGNvbmZpZ3VyYXRpb24gaXRlbXMg4LmB4Liq4LiU4LiHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guIHguLLguKPguITguYnguJnguKvguLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guIHguLLguKPguITguYnguJnguKvguLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiL4Li54Lih4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LiB4Liy4Lij4LmA4Lie4Li04LmI4Lih4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguIHguLLguKPguYHguIHguYnguYTguILguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4Lib4Lij4Liw4Lin4Lix4LiV4Li04LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguIHguLLguKPguJ7guLTguKHguJ7guYzguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ+C4quC4tOC4l+C4mOC4tOC4nuC4tOC5gOC4qOC4qeC4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC5g+C4meC4geC4suC4o+C4peC4muC4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Liq4LiW4Liy4LiZ4Liw4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LmA4Lib4LmH4LiZ4LiB4Lil4Li44LmI4Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4leC4seC5ieC4h+C4hOC5iOC4suC4quC4luC4suC4meC4sOC4guC4reC4h+C5gOC4q+C4leC4uOC4geC4suC4o+C4k+C5jOC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4o+C4suC4ouC4geC4suC4o+C5gOC4m+C5h+C4meC4geC4peC4uOC5iOC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4peC4tOC4h+C4hOC5jOC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4geC4seC4muC4reC4reC4muC5gOC4iOC4geC4hOC5jOC4reC4t+C5iOC4meC5g+C4meC4geC4suC4o+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC5gOC4guC5ieC4suC4iuC4oeC4m+C4o+C4sOC4p+C4seC4leC4tOC4guC4reC4hyBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiX4Lix4LmI4Lin4LmE4Lib4LiC4Lit4LiHY29uZmlndXJhdGlvbiBpdGVt4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC5gOC4guC5ieC4suC4iuC4oeC4m+C4o+C4sOC4p+C4seC4leC4tOC4guC4reC4hyBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LmB4LiB4LmJ4LmE4LiCIGNvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4iOC4s+C4peC4reC4hyBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiX4Lix4LmI4Lin4LmE4Lib4LiC4Lit4LiHY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LiI4Liz4Lil4Lit4LiHY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC5geC4geC5ieC5hOC4giBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guIHguKXguLHguJrguYTguJvguKLguLHguIfguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguILguK3guIfguIHguLLguKPguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYPguJnguIHguLLguKPguJfguLXguYjguIjguLDguJ7guLTguKHguJ7guYwgY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4i+C4ueC4oeC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguJvguKPguLDguKfguLHguJXguLQgY29uZmlnIGl0ZW0gKOC4peC4s+C4lOC4seC4muC4ouC5ieC4reC4meC4geC4peC4seC4mikg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn4LiV4Lix4Lin4Lia4LmI4LiH4LiK4Li14LmJ4Liq4Liz4Lir4Lij4Lix4LiaICBDb25maWd1cmF0aW9uIEl0ZW0g4LmA4LiK4LmI4LiZIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jIOC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4hOC4t+C4rSBDb25maWdJdGVtIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ+C4hOC4peC4suC4qic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ+C4geC4suC4o+C4quC4o+C5ieC4suC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ+C4i+C4teC4nuC4teC4ouC4uSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfguYDguJTguKrguJfguK3guJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn4Lif4Lij4Li14LmB4Lin4Lij4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ+C5geC4m+C5ieC4meC4nuC4tOC4oeC4nuC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn4LmB4Lil4LmH4Lib4LiX4LmH4Lit4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfguYLguKHguYDguJTguKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ+C5gOC4oeC5ieC4suC4quC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn4Lit4Li34LmI4LiZ4LmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfguILguYnguK3guKHguLnguKXguJfguLXguYjguKrguYjguIfguK3guK3guIHguKHguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfguKvguYnguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfguILguYnguK3guJXguIHguKXguIfguKPguLDguJTguLHguJrguIHguLLguKPguYPguKvguYnguJrguKPguLTguIHguLLguKMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+C4oeC4suC4leC4o+C4kOC4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/tr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lbCDDp2FsxLHFn21hIHZlcmlsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdHZWxlbiB0YWxlcCB2ZXJpbGVyaSBpw6dpbiBheWFybGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnR2lkZW4geWFuxLF0IHZlcmlsZXJpIGnDp2luIGF5YXJsYXInOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdLb25maWfDvHJhc3lvbiDDlsSfZXNpIFnDtm5ldGltaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ1PEsW7EsWYgdGFuxLFtxLFuxLEgZGXEn2nFn3Rpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnUm9sIHRhbsSxbcSxbsSxIGRlxJ9pxZ90aXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgU8SxbsSxZiBQYWtldGxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdCdXJhZGEsIGVuIHlheWfEsW4geWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbWl6aSBzZXJnaWxleWVuIFJlYWR5MkltcG9ydCBzxLFuxLFmIHBha2V0bGVyaW5pIGnDp2UgYWt0YXJhYmlsaXJzaW5pei4gQmF6xLEgZWsgeWFwxLFsYW5kxLFybWFsYXLEsW4gZ2VyZWtsaSBvbGFiaWxlY2XEn2luaSBsw7x0ZmVuIHVudXRtYXnEsW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ01ldmN1dCB2YXJsxLFrbGFyxLEgZ8O8bmNlbGxleWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQgc8SxbsSxZiBwYWtldGxlcmluaSBpw6dlIGFrdGFyxLFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ29uZmlnIMOWxJ9lIFPEsW7EsWbEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBSb2zDvCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdZYXDEsWxhbmTEsXJtYSDDlsSfZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ1PEsW7EsWZsYXIgacOnaW4gRmlsdHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1llbmkgYmlyIFlhcMSxbGFuZMSxcm1hIMOWxJ9lc2kgb2x1xZ90dXJtYWsgacOnaW4gbGlzdGVkZW4gYmlyIFPEsW7EsWYgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ1PEsW7EsWYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gVG9wbHUgRXlsZW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEYcSfxLF0xLFtIGR1cnVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ09sYXkgZHVydW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0RpxJ9lcmluZSBiYcSfbGFudMSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdHZcOnZXJzaXogWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBudW1hcmFzxLEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0JhxJ9sYW50xLEga3VydWxhY2FrIGJhxZ9rYSBiaXIgWWFwxLFsYW5kxLFybWEgw5bEn2VzaW5pbiBudW1hcmFzxLEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIGdlcsOnZWt0ZW4gc2lsbWVrIGlzdGl5b3IgbXVzdW51ej8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBhZMSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdBZCwgYcWfYcSfxLFkYWtpIFNhecSxKGxhcilhIHNhaGlwIENvbmZpZ0l0ZW1zIHRhcmFmxLFuZGFuIHphdGVuIGt1bGxhbsSxbMSxeW9yOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1PDvHLDvG0gTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmluIHPDvHLDvG0gbnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnU8O8csO8bSBOdW1hcmFzxLEsIGHFn2HEn8SxZGFraSBOdW1hcmF5YS9OdW1hcmFsYXJhIHNhaGlwIENvbmZpZ0l0ZW1zIHRhcmFmxLFuZGFuIHphdGVuIGt1bGxhbsSxbMSxeW9yOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGHEn8SxdMSxbSBEdXJ1bXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdPbGF5IER1cnVtdSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaW5pbiBHZcOnbWnFn2k6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1RhcmloIMSww6dlcmnEn2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7wnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnU2F5ZmEgYmHFn8SxbmEgS29uZmlnw7xyYXN5b24gw5bEn2VsZXJpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHZlcmlzaSBidWx1bmFtYWTEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgc2XDp2luJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnQXJhbWEgw4dhbMSxxZ90xLFyJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSBpw6dpbiBUcmVlVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0RlcmlubGlrIFNldml5ZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWWFrxLFubGHFn3TEsXJtYS9VemFrbGHFn3TEsXJtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdDb25maWdJdGVtIGnDp2luIG1ha3NpbXVtIGJhxJ9sYW50xLEgZMO8emV5aW5lIHVsYcWfxLFsZMSxISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1lhcMSxbGFuZMSxcm1hIMOWxJ9lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBCaWxnaWxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTWV2Y3V0IERhxJ/EsXTEsW0gRHVydW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdNZXZjdXQgT2xheSBEdXJ1bXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnU29uIGRlxJ9pxZ9pa2xpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTb24gZGXEn2nFn3RpcmVuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnQ29uZmlnSXRlbXMgw7bEn2VsZXJpbml6JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gQXJhbWEnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBxZ9hxJ/EsWRha2kgc8SxbsSxZmxhciBpw6dlIGFrdGFyxLFsYWNha3TEsXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQcWfYcSfxLFkYWtpIHJvbGxlciBpw6dlIGFrdGFyxLFsYWNha3TEsXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnxLBsZ2lsaSBkaW5hbWlrIGFsYW5sYXLEsW4gdmUgR2VuZXJhbENhdGFsb2cgc8SxbsSxZmxhcsSxbsSxbiBkYSBvbHXFn3R1cnVsYWNhxJ/EsW7EsSB2ZSBvdG9tYXRpayBvbGFyYWsga2FsZMSxcsSxbG1heWFjYcSfxLFuxLEgdW51dG1hecSxbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEZXZhbSBldG1layBpc3RpeW9yIG11c3VuPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfDlnJuZWsgU8SxbsSxZmxhcmEgxLBodGl5YcOnIFZhciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnVGFuxLFtIGdlw6dlcmxpIGJpciBZQU1MIGthcm1hc8SxIGRlxJ9pbGRpci4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdHZW5lbCBCYWvEscWfOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEIHZlcmlsbWVtacWfISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0VuIGF6IGJpciBzZcOnaWxpIFlhcMSxbGFuZMSxcm1hIMOWxJ9lc2luZSBpaHRpeWFjxLFuxLF6IHZhciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgeWF6bWEgZXJpxZ9pbWluaXogeW9rOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnU8SxbsSxZiAlcyBpw6dpbiB0YW7EsW1sYW1hIHlhcMSxbG1hZMSxISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSAiJXMiIHZlcml0YWJhbsSxbmRhIGJ1bHVuYW1hZMSxISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kga2ltbGnEn2kgJXMgc2lsaW5lbWVkaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBpw6dpbiBzw7xyw7xtIGJ1bHVuYW1hZMSxISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIHZleWEgQ2xhc3NJRCB2ZXJpbG1lbWnFn3RpciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0VyacWfaW0gaXpuaSB5b2shJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCB2ZXJpbG1lZGnEn2kgacOnaW4gZ2XDp21pxZ8gZ8O2c3RlcmlsZW1peW9yISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0dlw6dtacWfIGfDtnN0ZXJpbGVtaXlvciwgZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdZZW5pIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnWWVuaSBzw7xyw7xtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdEYcSfxLF0xLFtIGR1cnVtdSBnw7xuY2VsbGVuZGkgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdPbGF5IGR1cnVtdSBnw7xuY2VsbGVuZGkgKHllbmk9JXMsIGVza2k9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIHNpbGluZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdzICh0eXBlPSVzKSBiYcSfbGFudMSxc8SxIGVrbGVuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ3MgKHR5cGU9JXMpIGJhxJ9sYW50xLFzxLEgc2lsaW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSB0YW7EsW3EsSBnw7xuY2VsbGVuZGkgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0FkIGfDvG5jZWxsZW5kaSAoeWVuaT0lcywgZXNraT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfDlnpuaXRlbGlrICVzICIlcyAiZGVuICIlcyAieWUgZ8O8bmNlbGxlbmRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1PDvHLDvG0gJXMgc2lsaW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQgdmV5YSBWZXJzaW9uSUQgdmVyaWxtZWRpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGfDtnN0ZXJpbGVtaXlvciwgZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIHZlcml0YWJhbsSxbmRhIGJ1bHVuYW1hZMSxISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnc1wnZGUgJXMgdGFyYWbEsW5kYW4geWF6ZMSxcsSxbGTEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJhbnMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdHZcOnZXJzaXogQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lEIHZlcmlsbWVtacWfdGlyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0J1IHPEsW7EsWYgacOnaW4gZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ90aXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdTb251w6cgeW9rISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ8O8cmFzeW9uIMOWxJ9lc2kgQXJhbWEgU29udcOnbGFyxLEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ8OWxJ9lIGfDtnN0ZXJpbGVtaXlvciwgQ29uZmlnSXRlbSBpw6dpbiBlcmnFn2ltIGhha2vEsSB2ZXJpbG1lbWnFnyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBidWx1bmFtYWTEsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnSGnDp2JpciB2ZXJzaXlvbiBidWx1bmFtYWTEsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXN5b25lbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndXlhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnb2xheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBkYcSfxLF0xLFtIGR1cnVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0J1IHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gb2xheSBkdXJ1bXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfEsHppbiB5b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJlIGdlw6dlcnNpeiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ0FyYW1hIHBhcmFtZXRyZWxlcmkgZ2XDp2Vyc2l6ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0fDtnN0ZXJpbGVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdEYcSfxLF0xLFtIER1cnVtdSBUw7xyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnTWV2Y3V0IE9sYXkgRHVydW0gVMO8csO8JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0FyYXPEsW5kYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBpw6dpbiBzxLFuxLFmIGvEsXPEsXRsYW1hbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1Nlw6dpbGViaWxpciB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBrxLFzxLF0bGFtYWsgacOnaW4gYmlyIHZleWEgZGFoYSBmYXpsYSBzxLFuxLFmIHNlw6dpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBpw6dpbiBzxLFuxLFmIGvEsXPEsXRsYW1hbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZcOnaWxlYmlsaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmkga8Sxc8SxdGxhbWFrIGnDp2luIGJpciB2ZXlhIGRhaGEgZmF6bGEgc8SxbsSxZiBzZcOnaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWlrIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaXlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnQmHEn2xhbnTEsSBSZWZlcmFuc2xhbWEgVMO8csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0J1IGJhxJ9sYW50xLFuxLFuIENvbmZpZ0l0ZW0gacOnaW4gbWkgeW9rc2EgYmHFn3Z1cmFuIG5lc25lbmluIHN0YXRpayBzw7xyw7xtw7wgacOnaW4gbWkgZ2XDp2VybGkgb2xkdcSfdS4gR2XDp2VybGkgT2xheSBEdXJ1bXUgaGVzYXBsYW1hc8SxIHlhbG7EsXpjYSBkaW5hbWlrIGJhxJ9sYW50xLFsYXJkYSBnZXLDp2VrbGXFn3RpcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmluIGFyYW5hY2HEn8SxIMO2em5pdGVsacSfaSBzZcOnaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ1RlbWVsIHlhcMSxIGdlw6dlcmxpIGRlxJ9pbC4gTMO8dGZlbiBZQU1MIGJpw6dpbWluZGUgdmVyaSBpw6dlcmVuIGJpciBrYXJtYSBnaXJpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdZQU1MIGRpemVzaW5pbiBcJy0tLVwnIGlsZSBiYcWfbGFtYXPEsSBnZXJla2xpZGlyLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdjb25maWdpdGVtX2xpbmsgdGFibG9zdSB0ZW1pemxlbmVtZWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnxLBsZ2lsaSBkaW5hbWlrIGFsYW4gYnVsdW5hbWFkxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdjb25maWdpdGVtX2xpbmsgdGFibG9zdW5hIGVrbGVuZW1lZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGluayB0YWJsb3N1bmEgMCBzYXTEsXIgZWtsZW5kaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYWtzaW11bSBiaXIgZWxlbWFuIHNhecSxc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1PDvHLDvG0gRGl6ZXNpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ1RhbsSxbWxhciBzZW5rcm9uaXplIGVkaWxpcmtlbiBoYXRhIG9sdcWfdHUuIEzDvHRmZW4gZ8O8bmzDvMSfw7wga29udHJvbCBlZGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1Nlbmtyb25pemUgZWRpbG1lbWnFnyBJVFNNQ29uZmlnSXRlbSB0YW7EsW1sYXLEsW7EsXogdmFyLiBMw7x0ZmVuIElUU01Db25maWdJdGVtIGRpbmFtaWsgYWxhbiBkZcSfacWfaWtsaWtsZXJpbml6aSBkYcSfxLF0xLFuLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnU8O8cmVzaSBkb2xkdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0Jha8SxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFubcSxxZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnT25hcsSxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnRW1la2xpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ8SwbmNlbGVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnR2VuZWwgQmFrxLHFnyB2ZSBPbmF5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ1PEsW7EsWZsYXLEsS9yb2xsZXJpIHZlIGlsZ2lsaSBhbGFubGFyxLEgacOnZSBha3Rhcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU8SxbsSxZiBpw6dlIGFrdGFyxLFtxLEgc8SxcmFzxLFuZGEgYmlyIGhhdGEgb2x1xZ90dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIEdpemxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBHw7ZzdGVyaWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYXPEsW5kYSBnZW5pxZ9sZXRpbG1pxZ8gYXJhbWEga2/Fn3VsbGFyxLFuYSBpemluIHZlcmlyLiBCdSDDtnplbGxpayBzYXllc2luZGUsIMO2cm5lxJ9pbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFkxLFuxLEgIigqa2V5MSomKmtleTIqKSIgdmV5YSAiKCprZXkxKnwqa2V5MiopIiBnaWJpIGJ1IHTDvHIga2/Fn3VsbGFybGEgYXJheWFiaWxpcnNpbml6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hc8SxbmRhIGdlbmnFn2xldGlsbWnFnyBhcmFtYSBrb8WfdWxsYXLEsW5hIGl6aW4gdmVyaXIuIEJ1IMO2emVsbGlrIHNheWVzaW5kZSwgw7ZybmXEn2luIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYWTEsW7EsSAiKCphbmFodGFyMSomKmFuYWh0YXIyKikiIHZleWEgIigqYW5haHRhcjEqfCphbmFodGFyMiopIiBnaWJpIGJ1IHTDvHIga2/Fn3VsbGFybGEgYXJheWFiaWxpcnNpbml6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdBdGFubcSxxZ8gQ0lcJ2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdNw7zFn3RlcmkgxZ9pcmtldGUgYXRhbmFuIENJXCdsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdNw7zFn3Rlcmkga3VsbGFuxLFjxLF5YSBhdGFuYW4gQ0lcJ2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBBeWFybGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1lhbG7EsXpjYSBheW7EsSBDb25maWdJdGVtIHPEsW7EsWbEsSAoXCdjbGFzc1wnKSBpw6dpbmRlIHZleWEgZ2VuZWwgb2xhcmFrIChcJ2dsb2JhbFwnKSBiZW56ZXJzaXogYmlyIGFkIG9sdXAgb2xtYWTEscSfxLFuxLEga29udHJvbCBlZGluOyBidSwgeWluZWxlbmVubGVyaSBhcmFya2VuIG1ldmN1dCBoZXIgQ29uZmlnSXRlbVwnxLFuIGRpa2thdGUgYWzEsW5kxLHEn8SxIGFubGFtxLFuYSBnZWxpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0JpciBhZGxhbmTEsXJtYSDFn2VtYXPEsSB1eWd1bGFtYWsgacOnaW4gYmlyIG1vZMO8bCBzZcOnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdCaXIgc2F5xLEgxZ9lbWFzxLFuxLEgdXlndWxhbWFrIGnDp2luIGJpciBtb2TDvGwgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdTw7xyw7xtIGRpemVzaSDFn2VtYXPEsW7EsSB1eWd1bGFtYWsgacOnaW4gYmlyIG1vZMO8bCBzZcOnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnWWVuaSBiaXIgc8O8csO8bcO8biBvbHXFn3R1cnVsbWFzxLFuxLEgdGV0aWtsZW1layBpw6dpbiDDtnpuaXRlbGlrbGVyaSBzZcOnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0J1IHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZsSxbmEgYXRhbmFjYWsga2F0ZWdvcmlsZXJpIHNlw6dpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb25maWdJdGVtIE92ZXJ2aWV3IGnDp2luIHPDvHR1biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGZpbHRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luZSBnZW5lbCBiYWvEscWfxLFuZGEgZmlsdHJlbGVuZWJpbGVuIHPDvHR1bmxhci4gTm90OiBZYWxuxLF6Y2EgWWFwxLFsYW5kxLFybWEgw5bEn2VzaSDDtnpuaXRlbGlrbGVyaW5lIHZlIERpbmFtaWsgQWxhbmxhcmEgKER5bmFtaWNGaWVsZF9OYW1lWCkgaXppbiB2ZXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdZYXDEsWxhbmTEsXJtYSDDlsSfZWxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGTDvHplbmxlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIGdlw6dtacWfZSBnw7xubMO8xJ9lIGtheWRldG1leWkgc2HEn2xheWFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgb2xheSBtb2TDvGzDvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmkgZ2XDp2VybGkgdGFuxLFtbGFyxLFuYSBnw7ZyZSBnw7xuY2VsbGV5ZW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBvbGF5IG1vZMO8bMO8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2XDp21pxZ9pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHlhemTEsXJtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHlha8SxbmxhxZ90xLFybWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBBxJ9hw6cgR8O2csO8bsO8bcO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gU8O8csO8bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdBxZ9hxJ/EsWRha2kgc8SxbsSxZmxhcsSxbiBDb25maWdJdGVtcyDDtsSfZWxlcmkgRWxhc3RpY3NlYXJjaCBzdW51Y3VzdW5kYSBzYWtsYW5tYXlhY2FrdMSxci4gQnVudSBtZXZjdXQgQ0lcJ2xhcmEgdXlndWxhbWFrIGnDp2luLCBidSBzZcOnZW5layBkZcSfacWfdGlyaWxkaWt0ZW4gc29ucmEgQ0kgZ2XDp2nFn2luaW4ga29uc29sIMO8emVyaW5kZW4gw6dhbMSxxZ90xLFyxLFsbWFzxLEgZ2VyZWtpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQcWfYcSfxLFkYWtpIGRhxJ/EsXTEsW0gZHVydW1sYXLEsW5hIHNhaGlwIENvbmZpZ0l0ZW1zLCBFbGFzdGljc2VhcmNoIHN1bnVjdXN1bmRhIGRlcG9sYW5tYXlhY2FrdMSxci4gQnVudSBtZXZjdXQgQ0lcJ2xhcmEgdXlndWxhbWFrIGnDp2luLCBidSBzZcOnZW5layBkZcSfacWfdGlyaWxkaWt0ZW4gc29ucmEgQ0kgZ2XDp2nFn2luaW4ga29uc29sIMO8emVyaW5kZW4gw6dhbMSxxZ90xLFyxLFsbWFzxLEgZ2VyZWtpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBTxLFuxLFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ8O8cmFzeW9uIFNheWZhIGJhxZ/EsW5hIMO2xJ9lIHPEsW7EsXLEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0tvbmZpZ8O8cmFzeW9uIFnDtm5ldGltaSBWZXJpdGFiYW7EsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgdG9wbHUgbW9kw7xsw7wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FyYWPEsSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgYXJrYSB1w6cgecO2bmxlbmRpcmljaXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VsZXJpIGnDp2luIHRhbsSxbWxhciBvbHXFn3R1cnVuIHZlIHnDtm5ldGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0JlbGlybGkgemFtYW4gbm9rdGFsYXLEsW5kYSBDb25maWdJdGVtcyBpw6dpbiBCaWxldGxlciBvbHXFn3R1cnVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdNw7zFn3RlcmlsZXIgZ2XDp21pxZ8gQ0kgc8O8csO8bWxlcmluaSBnw7ZyZWJpbGlybGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdNw7zFn3RlcmlsZXIsIGdlw6dtacWfIENJIHPDvHLDvG1sZXJpIGFyYXPEsW5kYSBtYW51ZWwgb2xhcmFrIGdlw6dpxZ8geWFwbWEgb2xhbmHEn8SxbmEgc2FoaXB0aXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBla3JhbsSxIGnDp2luIMO2em5pdGVsaWt0ZSBrdWxsYW7EsWxhY2FrIHZhcnNhecSxbGFuIHZlcmlsZXIuIMOWcm5lazogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLEgacOnaW4gw7Z6bml0ZWxpa3RlIGt1bGxhbsSxbGFjYWsgdmFyc2F5xLFsYW4gdmVyaWxlci4gw5ZybmVrOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnQmHEn2xhbnTEsWzEsSBuZXNuZWxlciB3aWRnZXRcJ8SxbmRhIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikgYmlyIGF5YXIgZMO8xJ9tZXNpbmluIG1ldmN1dCBvbGR1xJ91IEV5bGVtbGVyaSB0YW7EsW1sYXnEsW4uIEzDvHRmZW4gYnUgRXlsZW1sZXJpbiBhxZ9hxJ/EsWRha2kgSlMgdmUgQ1NTIGRvc3lhbGFyxLFuxLEga2F5ZGV0bWnFnyBvbG1hc8SxIGdlcmVrdGnEn2luaSB1bnV0bWF5xLFuOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyB2ZSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdTw7xyw7xtIGRpemVsZXJpIGnDp2luIGJpciBUZW1wbGF0ZTo6VG9vbGtpdCDFn2VtYXPEsSB0YW7EsW1sYXnEsW4uIFlhbG7EsXpjYSBTw7xyw7xtIERpemVzaSBNb2TDvGzDvCBUZW1wbGF0ZVRvb2xraXQgb2xhcmFrIGF5YXJsYW5txLHFn3NhIGt1bGxhbsSxbMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0JpciBtw7zFn3RlcmluaW4gYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSBnw7ZybWVzaW5lIGl6aW4gdmVyaWxlbiBiaXIgZGl6aSBrb8WfdWwgdGFuxLFtbGF5xLFuLiBLb8WfdWxsYXIgaXN0ZcSfZSBiYcSfbMSxIG9sYXJhayBiZWxpcmxpIG3DvMWfdGVyaSBncnVwbGFyxLF5bGEgc8SxbsSxcmxhbmTEsXLEsWxhYmlsaXIuIEFkIHRlayB6b3J1bmx1IG5pdGVsaWt0aXIuIEJhxZ9rYSBiaXIgc2XDp2VuZWsgYmVsaXJ0aWxtZXpzZSwgdMO8bSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmkgYnUga2F0ZWdvcmkgYWx0xLFuZGEgZ8O2csO8bsO8ciBvbGFjYWt0xLFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnR2VuZWwgQXJhecO8esO8IGt1bGxhbmFyYWsgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBzaWxtZWsgacOnaW4gR2VyZWtsaSBpemlubGVyaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdHZW5lbCBBcmF5w7x6w7wga3VsbGFuYXJhayBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGFsbWFrIGnDp2luIEdlcmVrbGkgaXppbmxlcmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnR2VuZWwgQXJhecO8esO8IGt1bGxhbmFyYWsgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBhcmFtYWsgacOnaW4gR2VyZWtsaSBpemlubGVyaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdHZW5lbCBBcmF5w7x6w7wga3VsbGFuYXJhayBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGF5YXJsYW1hayBpw6dpbiBHZXJla2xpIGl6aW5sZXJpIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnQmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgbGlzdGVzaW5pbiBrw7zDp8O8ayBnw7Zyw7xuw7xtw7xuw7wgZ8O2c3Rlcm1layBpw6dpbiBiaXIgZ2VuZWwgYmFrxLHFnyBtb2TDvGzDvCB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0JhxJ9sYW50xLEgdMO8csO8IGV0aWtldGxlcmluaW4gZMO8xJ/DvG0gYmHEn2xhbnTEsWxhcsSxbmRhIGfDtnN0ZXJpbGlwIGfDtnN0ZXJpbG1leWVjZcSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW0gYWTEsW7EsSBkZW5ldGxlbWVrIHZlIGlsZ2lsaSBoYXRhIGlsZXRpbGVyaW5pIGfDtnN0ZXJtZWsgacOnaW4gaGVyIENvbmZpZ0l0ZW0gc8SxbsSxZsSxIGnDp2luIGF5csSxIGF5csSxIGTDvHplbmxpIGlmYWRlbGVyIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSBzxLFuxLFmxLFuYSBiYcSfbMSxIG9sYXJhayB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGdlbmVsIGfDtnLDvG7DvG3DvG5kZWtpIGt1bGxhbsSxbGFiaWxpciBDSSBzw7x0dW5sYXLEsW7EsSB0YW7EsW1sYXIuIEhlciBnaXJpxZ8gYmlyIHPEsW7EsWYgYWTEsSB2ZSBpbGdpbGkgc8SxbsSxZiBpw6dpbiBrdWxsYW7EsWxhYmlsaXIgYWxhbmxhcmRhbiBvbHXFn2FuIGJpciBkaXppZGVuIG9sdcWfbWFsxLFkxLFyLiBEaW5hbWlrIGFsYW4gZ2lyacWfbGVyaSBEeW5hbWljRmllbGRfRmllbGROYW1lIMWfZW1hc8SxbmEgdXltYWsgem9ydW5kYWTEsXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBcmFjxLEgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIHNvbnVjdW51biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhbGFtYXPEsSBpw6dpbiB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIMO2em5pdGVsacSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DvMWfdGVyaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgc29udWN1bnVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxcmFsYW1hc8SxIGnDp2luIHZhcnNhecSxbGFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgw7Z6bml0ZWxpxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0J1IGnFn2xlbWluIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgc29udWN1bnVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxcmFsYW1hc8SxIGnDp2luIHZhcnNhecSxbGFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgw7Z6bml0ZWxpxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBzb251Y3VuZGFraSB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhc8SxbsSxIHRhbsSxbWxhci4gWXVrYXLEsTogZW4gZXNraSBlbiDDvHN0dGUuIEHFn2HEn8SxOiBlbiBzb24gw7xzdHRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBzb251Y3VuZGFraSB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhc8SxbsSxIHRhbsSxbWxhci4gWXVrYXLEsTogZW4gZXNraSBlbiDDvHN0dGUuIEHFn2HEn8SxOiBlbiBzb24gw7xzdHRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0kgc8SxbsSxZsSxbmEgYmHEn2zEsSBvbGFyYWsgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGUgQ0lcJ2xhcsSxbiB2YXJzYXnEsWxhbiBnw7Zyw7xudMO8bGVuZW4gc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXIgZ2lyacWfIGJpciBzxLFuxLFmIGFkxLEgdmUgaWxnaWxpIHPEsW7EsWYgacOnaW4ga3VsbGFuxLFsYWJpbGlyIGFsYW5sYXLEsW4gYmlyIGRpemlzaW5kZW4gb2x1xZ9tYWzEsWTEsXIuIERpbmFtaWsgYWxhbiBnaXJpxZ9sZXJpIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgxZ9lbWFzxLFuYSB1eW1hayB6b3J1bmRhZMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnR8O2c3RlcmlsZWNlayB2YXJzYXnEsWxhbiBpbGnFn2tpIGRlcmlubGnEn2luaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgZWtyYW7EsSBpw6dpbiB2YXJzYXnEsWxhbiBnw7ZzdGVyaWxlbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIMO2em5pdGVsacSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgZWtyYW7EsSBpw6dpbiB2YXJzYXnEsWxhbiBnw7ZzdGVyaWxlbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIG5pdGVsacSfaW5pIHRhbsSxbWxhci4gw5ZybmVrOiAiQW5haHRhciIgRGluYW1payBBbGFuxLFuIGFkxLFuxLEgacOnZXJtZWxpZGlyLCBidSBkdXJ1bWRhIFwnWFwnLCAixLDDp2VyaWsiIERpbmFtaWsgQWxhbiB0w7xyw7xuZSBiYcSfbMSxIG9sYXJhayBEaW5hbWlrIEFsYW7EsW4gZGXEn2VyaW5pIGnDp2VybWVsaWRpciwgTWV0aW46IFwnYmlyIG1ldGluXCcsIEHDp8SxbMSxciBtZW7DvDogXCcxXCcsIFRhcmloL1NhYXQ6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyB2ZSB2ZXlhIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ1wnSVRTTUNvbmZpZ0l0ZW1cJyBzxLFuxLFmxLFuxLFuIHZhcnNhecSxbGFuIGFsdCBuZXNuZXNpbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0kgc8SxbsSxZsSxbmEgYmHEn2zEsSBvbGFyYWsgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGVraSBrdWxsYW7EsWxhYmlsaXIgQ0kgc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXIgZ2lyacWfIGJpciBzxLFuxLFmIGFkxLEgdmUgaWxnaWxpIHPEsW7EsWYgacOnaW4ga3VsbGFuxLFsYWJpbGlyIGFsYW5sYXJkYW4gb2x1xZ9hbiBiaXIgZGl6aWRlbiBvbHXFn21hbMSxZMSxci4gRGluYW1payBhbGFuIGdpcmnFn2xlcmkgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDFn2VtYXPEsW5hIHV5bWFrIHpvcnVuZGFkxLFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdCdSBla3JhbiBpw6dpbiB6ZW5naW4gbWV0aW4gZMO8emVubGV5aWNpIGJpbGXFn2VuaW5pbiB5w7xrc2VrbGnEn2luaSB0YW7EsW1sYXIuIFNhecSxIChwaWtzZWwpIHZleWEgecO8emRlIGRlxJ9lcmkgKGfDtnJlbGkpIGdpcmluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdZw7ZuZXRpY2kgYXJhecO8esO8bmRla2kgQ0kgdGFuxLFtxLEgZMO8emVubGV5aWNpc2kgacOnaW4gc2F0xLFyIHNhecSxc8SxbsSxIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnT2xheSBkdXJ1bWxhcsSxbsSxbiB5w7xrc2VrICjDtnJuLiBrcmlraXRhbCkgaWxlIGTDvMWfw7xrICjDtnJuLiBmb25rc2l5b25lbCkgYXJhc8SxbmRha2kgc8SxcmFzxLFuxLEgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0JhxJ9sYW50xLFsxLEgZGVzdGVrIHRhbGVwbGVyaW5pbiBiaXIgQ0lcJ27EsW4gZHVydW11bnUgZXRraWxleWViaWxlY2XEn2kgaWxnaWxpIGRhxJ/EsXTEsW0gZHVydW1sYXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbSBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ1TDvG0gQ0kgc8SxbsSxZmxhcsSxIGnDp2luIGJhxJ9sYW50xLEgdGFibG9zdSBrYXJtYcWfxLFrIGfDtnLDvG7DvG3DvG5kZSBDSVwnbGFyxLFuIGfDtnN0ZXJpbGVuIHPDvHR1bmxhcsSxbsSxIHRhbsSxbWxhci4gSGVyaGFuZ2kgYmlyIGdpcmnFnyB5b2tzYSwgdmFyc2F5xLFsYW4gc8O8dHVubGFyIGfDtnN0ZXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnQ0kgc8SxbsSxZsSxbmEgYmHEn2zEsSBvbGFyYWsgYmHEn2xhbnTEsSB0YWJsb3N1IGthcm1hxZ/EsWsgZ8O2csO8bsO8bcO8bmRlIENJXCdsYXLEsW4gZ8O2c3RlcmlsZW4gc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXIgZ2lyacWfaW4gw7Zuw7xuZSBzxLFuxLFmIGFkxLEgdmUgw6dpZnQgaWtpIG5va3RhIMO8c3Qgw7xzdGUga29udWxtYWzEsWTEsXIgKMO2cm5lxJ9pbiBCaWxnaXNheWFyOjopLiBUw7xtIENJXCdsYXJkYSBvcnRhayBvbGFuIGJpcmthw6cgQ0ktw5Z6bml0ZWxpxJ9pIHZhcmTEsXIgKEJpbGdpc2F5YXIgc8SxbsSxZsSxIGnDp2luIMO2cm5lazogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gQ0ktVGFuxLFtxLFuZGEgdGFuxLFtbGFuZMSxxJ/EsSBnaWJpIGJpcmV5c2VsIENJLcOWem5pdGVsaWtsZXJpbmkgZ8O2c3Rlcm1layBpw6dpbiBhxZ9hxJ/EsWRha2kgxZ9lbWEga3VsbGFuxLFsbWFsxLFkxLFyIChCaWxnaXNheWFyIHPEsW7EsWbEsSBpw6dpbiDDtnJuZWspOiBCaWxnaXNheWFyOjpIYXJkRGlzazo6MSwgQmlsZ2lzYXlhcjo6SGFyZERpc2s6OjE6OkthcGFzaXRlOjoxLCBCaWxnaXNheWFyOjpIYXJkRGlzazo6MiwgQmlsZ2lzYXlhcjo6SGFyZERpc2s6OjI6OkthcGFzaXRlOjoxLiBCaXIgQ0kgc8SxbsSxZsSxIGnDp2luIGdpcmnFnyB5b2tzYSwgdmFyc2F5xLFsYW4gc8O8dHVubGFyIGfDtnN0ZXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00gQ29uZmlnIEl0ZW0gQUNMIHlhcMSxc8SxbsSxbiDDvMOnw7xuY8O8IHNldml5ZXNpbmRlIGhhbmdpIMO2xJ9lbGVyaW4gXCdFeWxlbVwnIGnDp2luIGt1bGxhbsSxbGFiaWxpciBvbGR1xJ91bnUgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00gQ29uZmlnIEl0ZW0gQUNMIHlhcMSxc8SxbsSxbiBiaXJpbmNpIHNldml5ZXNpbmRlIGhhbmdpIMO2xJ9lbGVyaW4gbWV2Y3V0IG9sZHXEn3VudSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00gQ29uZmlnIEl0ZW0gQUNMIHlhcMSxc8SxbsSxbiBpa2luY2kgc2V2aXllc2luZGUgaGFuZ2kgw7bEn2VsZXJpbiBtZXZjdXQgb2xkdcSfdW51IHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnSGFuZ2kgYmHEn2xhbnTEsSB0w7xyw7xuw7xuIChiaWxldCBwZXJzcGVrdGlmaW5kZW4gYWRsYW5kxLFyxLFsYW4pIGJhxJ9sYW50xLFsxLEgYmlyIENJXCduxLFuIGR1cnVtdW51IGV0a2lsZXllYmlsZWNlxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0JhxJ9sxLEgYmlyIENJXCduxLFuIGR1cnVtdW51IGhhbmdpIHTDvHIgYmlsZXRsZXJpbiBldGtpbGV5ZWJpbGVjZcSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdUYW7EsW0gR8O8bmNlbGxlbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaW5pIFNpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0RhxJ/EsXTEsW0gRHVydW11IFJlbmdpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdZaW5lbGVuZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEaW5hbWlrIGFsYW4gb2xheSBtb2TDvGzDvCwgZGluYW1payBhbGFubGFyxLFuIGRlxJ9pxZ9tZXNpIGR1cnVtdW5kYSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRhbsSxbWxhcsSxbsSxIHNlbmtyb25pemFzeW9uIGTEscWfxLEgb2xhcmFrIGnFn2FyZXRsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIGVrIElUU00gYWxhbsSxIGVrcmFuxLFuZGEgZ8O2c3RlcmlsZW4gZGluYW1payBhbGFubGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgZ2VuZWwgYmFrxLHFnyBla3JhbsSxbmRhIGfDtnN0ZXJpbGVuIGRpbmFtaWsgYWxhbmxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLFuZGEgZ8O2c3RlcmlsZW4gZGluYW1payBhbGFubGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdUZW1zaWxjaSDDtm4gdWN1bnVuIGF5bsSxIGFuZGEgYmlyZGVuIGZhemxhIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgw7x6ZXJpbmRlIMOnYWzEscWfbWFzxLEgacOnaW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB0b3BsdSBleWxlbSDDtnplbGxpxJ9pbmkgZXRraW5sZcWfdGlyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRvcGx1IGV5bGVtIMO2emVsbGnEn2luaSB5YWxuxLF6Y2EgbGlzdGVsZW5lbiBncnVwbGFyIGnDp2luIGV0a2lubGXFn3RpcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdCaWxldC1jb25maWdpdGVtLWxpbmsgw7x6ZXJpbmRlIGNvbmZpZ2l0ZW0tc3RhdHVzIGF5YXJsYW1hayBpw6dpbiBvbGF5IG1vZMO8bMO8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdUYW0gbWV0aW4gYXJhbWEgacOnaW4ga3VsbGFuxLFsYW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBkaXppbmkgYWxhbmxhcsSxLiBBbGFubGFyIGRhIHNha2xhbsSxciwgYW5jYWsgZ2VuZWwgacWfbGV2c2VsbGlrIGnDp2luIHpvcnVubHUgZGXEn2lsZGlyLiBFa2xlcmluIGRhaGlsIGVkaWxtZXNpLCBnaXJpxZ9pIDAgb2xhcmFrIGF5YXJsYXlhcmFrIHZleWEgc2lsZXJlayBkZXZyZSBkxLHFn8SxIGLEsXJha8SxbGFiaWxpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZGl6aW5pbmRlIGRlcG9sYW5hbiB2ZSB0YW0gbWV0aW4gYXJhbWFsYXLEsW7EsW4geWFuxLEgc8SxcmEgYmHFn2thIMWfZXlsZXIgacOnaW4gZGUga3VsbGFuxLFsYW4gYWxhbmxhci4gVGFtIGnFn2xldnNlbGxpayBpw6dpbiB0w7xtIGFsYW5sYXIgem9ydW5sdWR1ci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2ggw6dhxJ/EsXLEsWPEsSBrYXRtYW7EsSBpw6dpbiBHZW5lcmljSW50ZXJmYWNlIG1vZMO8bCBrYXlkxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIMOnYcSfxLFyxLFjxLEga2F0bWFuxLEgacOnaW4gR2VuZXJpY0ludGVyZmFjZSBtb2TDvGwga2F5ZMSxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2ggw6dhxJ/EsXLEsWPEsSBrYXRtYW7EsSBpw6dpbiBHZW5lcmljSW50ZXJmYWNlIG1vZMO8bCBrYXlkxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaW5lIGdlbmVsIGJha8SxxZ8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYXPEsW5kYSBkYcSfxLF0xLFtIGR1cnVtbGFyxLFuxLEgacOnZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYXPEsW5hIG9sYXkgZHVydW1sYXLEsW7EsSBkYWhpbCBlZGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdCdSBpxZ9sZW1pbiBzb251Y3VuZGEgZ8O2csO8bnTDvGxlbmVjZWsgbWFrc2ltdW0geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzYXnEsXPEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdCaXIgc8SxbsSxZnRhbiBzb3J1bWx1IGdydWJ1IGtvbnRyb2wgZXRtZWsgacOnaW4gbW9kw7xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ0JpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmRlbiBzb3J1bWx1IGdydWJ1IGtvbnRyb2wgZXRtZWsgacOnaW4gbW9kw7xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ0lUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBpc3RhdGlzdGlrbGVyaSBvbHXFn3R1cm1hayBpw6dpbiBtb2TDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnxLBzaW0gTW9kw7xsw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWFyYSBNb2TDvGzDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBcmFjxLEgYXJhecO8esO8bmRlIGJpciBhcmFtYSBzb251Y3VudW4gaGVyIHNheWZhc8SxbmRhIGfDtnLDvG50w7xsZW5lY2VrIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pbiBzYXnEsXPEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG5kZSBiaXIgYXJhbWEgc29udWN1bnVuIGhlciBzYXlmYXPEsW5kYSBnw7Zyw7xudMO8bGVuZWNlayB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaW4gc2F5xLFzxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ0FyYW5hY2FrIG5lc25lbGVyLCBrYcOnIGdpcmnFnyB2ZSBoYW5naSDDtnpuaXRlbGlrbGVyaW4gZ8O2c3RlcmlsZWNlxJ9pLiBDb25maWdJdGVtIMO2em5pdGVsaWtsZXJpbmluIEVsYXN0aWNzZWFyY2ggYXJhY8SxbMSxxJ/EsXlsYSBhw6fEsWvDp2EgZGVwb2xhbm1hc8SxIGdlcmVraXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ0dlbmVsIGJha8SxxZ8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHRlcmNpaGxlciBnw7Zyw7xuw7xtw7xuZGUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFuxLFmbGFyxLEga2F0ZWdvcmlsZXJpIGnDp2luIHBhcmFtZXRyZWxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLw7zDp8O8ayB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgZ2VuZWwgYmFrxLHFn8SxbiBzw7x0dW4gZmlsdHJlbGVyaSBpw6dpbiBwYXJhbWV0cmVsZXIuIEzDvHRmZW4gZGlra2F0OiBcJ0FrdGlmXCcgZGXEn2VyaW5pIDAgb2xhcmFrIGF5YXJsYW1haywgdGVtc2lsY2lsZXJpbiBidSBncnVidW4gYXlhcmxhcsSxbsSxIGtpxZ9pc2VsIHRlcmNpaGxlcmluZGUgZMO8emVubGVtZWxlcmluaSBlbmdlbGxlciwgYW5jYWsgecO2bmV0aWNpbGVyaW4gYmHFn2thIGJpciBrdWxsYW7EsWPEsSBhZMSxbmEgYXlhcmxhcsSxIGTDvHplbmxlbWVsZXJpbmUgaXppbiB2ZXJpci4gQnUgYXlhcmxhcsSxbiBrdWxsYW7EsWPEsSBhcmF5w7x6w7xuZGUgaGFuZ2kgYWxhbmRhIGfDtnN0ZXJpbGVjZcSfaW5pIGtvbnRyb2wgZXRtZWsgacOnaW4gXCdQcmVmZXJlbmNlR3JvdXBcJyBrdWxsYW7EsW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGHEn8SxdMSxbSBkdXJ1bWxhcsSxIGnDp2luIHBhcmFtZXRyZWxlciwgbcO8xZ90ZXJpIHRlbXNpbGNpc2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRlIHJlbmtsZW5kaXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZWtpIGRhxJ/EsXTEsW0gZHVydW1sYXLEsSBpw6dpbiBwYXJhbWV0cmVsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ0dlbmVsIGthdGFsb2cgw7Z6bml0ZWxpa2xlcmluaW4gw7ZybmVrIGl6aW4gZ3J1cGxhcsSxbsSxbiBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWZsYXLEsSBpw6dpbiBhZCBtb2TDvGzDvCBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRlIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZmxhcsSxIGnDp2luIHNhecSxIG1vZMO8bMO8IHBhcmFtZXRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1NheWZhbGFyIGnDp2luIHBhcmFtZXRyZWxlciAoeWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmluIGfDtnN0ZXJpbGRpxJ9pKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRlIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZmxhcsSxIGnDp2luIHPDvHLDvG0gZGl6ZXNpIG1vZMO8bMO8IHBhcmFtZXRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRla2kgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFuxLFmbGFyxLEgacOnaW4gc8O8csO8bSBkaXplc2kgxZ9hYmxvbiBhcmHDpyBzZXRpIG1vZMO8bMO8IHBhcmFtZXRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWZsYXLEsSBpw6dpbiBzw7xyw7xtIHRldGlrbGV5aWNpc2kgcGFyYW1ldHJlbGVyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfEsHppbiBncnVidSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtsZW1lIGV5bGVtaW5pIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhxJ9hw6cgZ8O2csO8bsO8bcO8IGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YWvEsW5sYcWfdMSxcm1hIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGVrbGVtZSBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSB0b3BsdSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGTDvHplbmxlbWUgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgZ2XDp21pxZ8gSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgeWF6ZMSxciBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBzaWxtZWsgacOnaW4gZ2VyZWtsaSBheXLEsWNhbMSxa2xhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBhcmF5xLFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQmlyIEJpbGV0IGJpciBDSVwneWEgQmHEn2xhbmTEscSfxLFuZGEgQ0lcJ27EsW4gb2xheSBkdXJ1bXVudSBvdG9tYXRpayBvbGFyYWsgYXlhcmxhecSxbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBcmFjxLEgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRvcGx1IGVrcmFuxLFuZGEgZGHEn8SxdMSxbSBkdXJ1bXVudSBheWFybGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgdG9wbHUgZWtyYW7EsW5kYSBvbGF5IGR1cnVtdW51IGF5YXJsYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuw7xkZSwgYXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIGJhxZ9rYSBiaXIgbmVzbmV5bGUgaWxpxZ9raWxlbmRpcm1leWkgc2HEn2xheWFuIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRla2kgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gZ2XDp21pxZ9pbmUgZXJpxZ9tZWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gZ2XDp21pxZ9pbmUgZXJpxZ9tZWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIHNpbG1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYmHEn2xhbnTEsWxhcsSxbsSxIEHEn2HDpyBHw7Zyw7xuw7xtw7wgb2xhcmFrIGfDtnLDvG50w7xsZW1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgw6dvxJ9hbHRtYWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSDDp2/En2FsdG1hayBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSBkw7x6ZW5sZW1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5lIGdlcmkgZMO2bm1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlha8SxbmxhxZ90xLFybWEgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgeWF6ZMSxcm1hayBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgeWFrxLFubGHFn3TEsXJtYWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGdlw6dtacWfaW5pICh0ZXJzIHPEsXJhbMSxKSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0hpw6diaXJpIHNlw6dpbG1lbWnFn3NlIGfDtnN0ZXJpbGVuIHZhcnNhecSxbGFuIGthdGVnb3JpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnQmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gdGFuxLFtbGF5xLFjxLFzxLEsIMO2cm5lxJ9pbiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVmFyc2F5xLFsYW4gQ29uZmlnSXRlbSNcJ2Rpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0NvbmZpZ0l0ZW1GZXRjaCDDp2HEn8SxcsSxY8Sxc8SxbsSxIG90b21hdGlrIG9sYXJhayB0ZXRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnU8O8csO8bSBEaXplc2kgxLBmYWRlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnU8O8csO8bSBEaXplc2kgTW9kw7xsw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnU8O8csO8bSBUZXRpa2xleWljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUFDTFwnbmluIHnDvHLDvHTDvGxtZXNpbmluIMO2bmJlbGxlxJ9lIGFsxLFubcSxxZ8gYWxhbiBiYcSfxLFtbMSxbMSxa2xhcsSxbsSxIGtvbnRyb2wgZWRlcmVrIMO2bmxlbmlwIMO2bmxlbmVtZXllY2XEn2kuIEJ1LCBmb3Jtw7xsZXJsZXJpbiB5w7xrbGVtZSBzw7xyZWxlcmluaSBpeWlsZcWfdGlyZWJpbGlyLCBhbmNhayBBQ0xNb2TDvGxsZXJpIElUU01Db25maWdJdGVtLSB2ZSBGb3JtLVJldHVyblR5cGVzIGnDp2luIGt1bGxhbsSxbGFjYWtzYSBkZXZyZSBkxLHFn8SxIGLEsXJha8SxbG1hbMSxZMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0JhxZ9sxLFrdGEgaGFuZ2kgZ2VuZWwgYmlsZ2lsZXIgZ8O2c3RlcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnc8SxbsSxZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdrw7xyZXNlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ8OcUkVNRSBTT05SQVNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfDnFJFTUUgw5ZOQ0VTxLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ8O8cmV0a2VuJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGluw6cgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBpbsOnICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgaW7DpyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBpbsOnICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkgaW7DpyBSYWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGluw6cgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgaW7DpyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgaW7DpyBSYWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGluw6cgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMyBpbsOnIFJhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaW7DpyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgaW7DpyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgaW7DpyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGluw6cgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgaW7DpyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgaW7DpyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaW7DpyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgaW7DpyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgaW7DpyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGluw6cgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBpbsOnICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgaW7DpyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgaW7DpyAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBpbsOnICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGluw6cgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBpbsOnICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgaW7DpyAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGluw6cgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGluw6cgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGluw6cgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgaW7DpyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbsOnICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IGluw6cgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ011aGFzZWJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZXMgVGFoc2lzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnWcO2bmV0aWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZyBUZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnQ2loYXogVGlwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0Frw7wgS2FwYXNpdGVzaSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1BpbCBUaXBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQmluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnT3RvYsO8cyBBcmF5w7x6w7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUgU8SxbsSxZsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhc2l0ZSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnR3JhZmlrIGthcnTEsSBiYcWfxLFuYSBrYXBhc2l0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0thcnQgTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS2FydCBPa3V5dWN1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0thcnQgVGlwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnTcO8xZ90ZXJpIFNlcnRpZmlrYWxhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ03DvMWfdGVyaSBZYXrEsWzEsW3EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdNw7zFn3Rlcmkga2F0ZWdvcmlzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdTYWF0IEjEsXrEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnU2FhdCBIxLF6xLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0tvZCDEsG16YWxhbWEgU2VydGlmaWthbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmFucyBUZWxlZm9udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0RhbsSxxZ9tYW5sxLFrIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnxLBsZXRpxZ9pbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnRGlzdHJpYsO8dMO2cmxlIMSwbGV0acWfaW1lIEdlw6dpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnRleW5lciBZw7ZuZXRpbWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdTw7Z6bGXFn21lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdTw7Z6bGXFn21lIFTDvHLDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1PDtnpsZcWfbWUgc8O8cmVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdTw7Z6bGXFn21lIHPDvHJlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnS2FibG9zdXogVGVsZWZvbiAoREVDVCBUZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdNYWxpeWV0IGJpcmltaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ1J1aHNhdCBzYXnEsXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnT2x1xZ90dXJ1bG1hIFRhcmloaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnw5Z6ZWwgUmFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIEF5csSxbG3EscWfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMgU3VudWN1c3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0ZhdHVyYSBUYXJpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1NpcGFyacWfIFRhcmloaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnVGVtaW5hdCBUYXJpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnWWF5xLFubGFubWEgdGFyaWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdNYXNhw7xzdMO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdCZWxnZSDEsG16YWxhbWEgU2VydGlmaWthbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhZsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLXBvc3RhIFNlcnRpZmlrYWxhcsSxIChTL01JTUUgU2VydGlmaWthbGFyxLEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ8SwxZ8gU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnU29uIElQIEFkcmVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0Rlc3RlxJ9pbiBzb251JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnU29uIEt1bGxhbm1hIFRhcmloaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnSGFyaWNpIFNhYml0IFPDvHLDvGPDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0fDvHZlbmxpayBEdXZhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnw5xyw7xuIFlhesSxbMSxbcSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnVm9sYW4gRW5lcmppIERlcG9sYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybSBGYWt0w7Zyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzZSBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfDnGNyZXRzaXogeWF6xLFsxLFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0dlbmVsIEJpbGdpbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlrIEthcnRsYXLEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlrIGthcnTEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0RvbmFuxLFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnRG9uYW7EsW0gTW9kZWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0RvbmFuxLFtIEHEn8SxcmzEscSfxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0t1bGFrbMSxayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIFByb3Rva29sw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnS2ltbGlrIHZlIEVyacWfaW0gWcO2bmV0aW1pIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdFbnZhbnRlciBOdW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0ZhdHVyYSBOdW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbGF2eWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIE1vbml0w7ZyIChTxLF2xLEgS3Jpc3RhbCBFa3JhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCBNb25pdMO2ciAoScWfxLFrIFlheWFuIERpeW90KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdTYWJpdCBUZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0RpesO8c3TDvCBCaWxnaXNheWFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnRW5sZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdLYXRtYW4gMTogRml6aWtzZWwgS2F0bWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0thdG1hbiAyOiBWZXJpIEJhxJ9sYW50xLEgS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0thdG1hbiAzOiBBxJ8gS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnS2F0bWFuIDM6IEHEnyBLYXRtYW7EsSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0thdG1hbiA0OiBUYcWfxLFtYSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnS2F0bWFuIDU6IE90dXJ1bSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdLYXRtYW4gNjogU3VudW0gS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdLYXRtYW4gNzogVXlndWxhbWEgS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnS2lyYSBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaXNhbnMgU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaXNhbnMgQW5haHRhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpc2FucyBUw7xyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpc2FucyBzw7xyZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnxZ51IHRhcmloZSBrYWRhciBsaXNhbnMgc8O8cmVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0eXVtIERlbWlyIEZvc2ZhdCAoTGlGZVBPNCkgUGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXR5dW0gxLB5b24gKExpLWlvbikgUGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnS3JlZGkgU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfEsMOnaW5kZSBidWx1bmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0JveWxhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ8OccmV0aWNpIGZpcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW11bSBZw7xrIEthcGFzaXRlc2kgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0hhZsSxemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdCZWxsZWsgVMO8csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pIFJhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnQ2VwIFRlbGVmb251IE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWwgQcOnxLFrbGFtYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdMO2ciDDh8O2esO8bsO8cmzDvMSfw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXTDtnIgQm95dXR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnRmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnxZ5lYmVrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdBxJ8gQmlsZ2lzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnQcSfIEJpbGdpbGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQcSfIEthdG1hbsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrZWwtS2FkbWl5dW0gKE5pQ2QpIFBpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2VsLU1ldGFsIEhpZHJpdCAoTmlNSCkgUGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0dpemxpbGlrIFPDtnpsZcWfbWVzaSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdCBEZWZ0ZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQ1BVIHNhecSxc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1JBTSBtb2TDvGzDvCBzYXnEsXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdHcmFmaWsga2FydMSxIHNhecSxc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIE1vbml0w7ZyIChPcmdhbmlrIEnFn8SxayBZYXlhbiBEaXlvdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnxLDFn2xldG1lIG1hbGl5ZXRsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ1NpcGFyacWfIE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0RpxJ9lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnw4fEsWt0xLFsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnT3J0YWtsxLFrIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb24gTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9uIFRpcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGaXppa3NlbCDDh2VraXJkZWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdHw7zDpyBEYcSfxLF0xLFtxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfFnnVyYWRhbiBzYXTEsW4gYWzEsW5kxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1JhZiBEZXJpbmxpxJ9pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmFmIMOcbml0ZWxlcmkgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdPZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0gS2FydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMgU2VydGlmaWthbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdTYXTEscWfIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdVeWR1IFRlbGVmb251JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1PEsXpkxLFybWF6IEt1csWfdW4tQXNpdCAoU0xBKSBBa8O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaSBudW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU3VudWN1IFlhesSxbMSxbcSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnSGl6bWV0IFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpcyBFdGlrZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1Nva2V0IFRpcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdZYXrEsWzEsW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdLb251xZ9tYWPEsWxhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0JhxZ9sYW5nxLHDpyBJUCBBZHJlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0RlcG9sYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnRGVwb2xhbWEgQsO2bMO8bcO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnQmHEn2zEsSBPcnRha2zEsWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ8OWemV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnxLBuY2UgxLBzdGVtY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ8SwcGxpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3BsYW0gR3JhZmlrIGthcnTEsSBSQU1cJ2kgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvcGxhbSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnRG9rdW5tYXRpayBFa3JhbiBNb25pdMO2csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnS3VsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIEh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIEt1bGFrbMSxayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIFRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYiBrYW1lcmFzxLEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/uk_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnVrX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQl9Cw0LPQsNC70YzQvdGWINC10LrRgdC/0LvRg9Cw0YLQsNGG0ZbQudC90ZYg0LTQsNC90ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQstGF0ZbQtNC90LjRhSDQtNCw0L3QuNGFINC30LDQv9C40YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQstC40YXRltC00L3QuNGFINC00LDQvdC40YUg0LLRltC00L/QvtCy0ZbQtNGWJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0JrQtdGA0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LDQvNC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ9CX0LzRltC90LjRgtC4INCy0LjQt9C90LDRh9C10L3QvdGPINC60LvQsNGB0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9CX0LzRltC90LjRgtC4INCy0LjQt9C90LDRh9C10L3QvdGPINGA0L7Qu9GWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn0J/QsNC60LXRgtC4INC60LvQsNGB0YMgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn0KLRg9GCINCy0Lgg0LzQvtC20LXRgtC1INGW0LzQv9C+0YDRgtGD0LLQsNGC0Lgg0L/QsNC60YPQvdC60Lgg0LrQu9Cw0YHRltCyIFJlYWR5MkltcG9ydCwg0YnQviDQvNGW0YHRgtGP0YLRjCDQvdCw0LnQv9C+0YjQuNGA0LXQvdGW0YjRliDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0JfQstC10YDQvdGW0YLRjCDRg9Cy0LDQs9GDLCDRidC+INC80L7QttC1INC30L3QsNC00L7QsdC40YLQuNGB0Y8g0LTQvtC00LDRgtC60L7QstCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAn0J7QvdC+0LLQu9C10L3QvdGPINGW0YHQvdGD0Y7Rh9C40YUg0YHRg9GC0L3QvtGB0YLQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0IbQvNC/0L7RgNGCINC/0LDQutC10YLRltCyINC60LvQsNGB0ZbQsiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0LvQsNGBINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICfQldC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0KDQvtC70YwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9Ck0ZbQu9GM0YLRgCDQtNC70Y8g0LrQu9Cw0YHRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LrQu9Cw0YEg0LfRliDRgdC/0LjRgdC60YMsINGJ0L7QsSDRgdGC0LLQvtGA0LjRgtC4INC90L7QstC40Lkg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9Ca0LvQsNGBLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ9Ch0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfQn9C+0YHQuNC70LDQvdC90Y8g0L3QsCDRltC90YjQuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0L3QvtC80LXRgCDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn0J3QvtC80LXRgCDRltC90YjQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINC3INGP0LrQuNC8INC/0L7RgtGA0ZbQsdC90L4g0LfQslwn0Y/Qt9Cw0YLQuC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfQktC4INC00ZbQudGB0L3QviDRhdC+0YfQtdGC0LUg0LLQuNC00LDQu9C40YLQuCDRhtC10Lkg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQndCw0LfQstCwINGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9CG0LxcJ9GPINCy0LbQtSDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDQtdC70LXQvNC10L3RgtCw0LzQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0Lcg0YLQsNC60LjQvNC4INC90L7QvNC10YDQsNC80Lg6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQstC10YDRgdGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Cd0L7QvNC10YAg0LLQtdGA0YHRltGXINGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQndC+0LzQtdGAINCy0LXRgNGB0ZbRlyDQstC20LUg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GU0YLRjNGB0Y8g0LXQu9C10LzQtdC90YLQsNC80Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC3INGC0LDQutC40LzQuCDQvdC+0LzQtdGA0LDQvNC4OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ch0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0IbRgdGC0L7RgNGW0Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zc6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9CX0LzRltGB0YIg0ZbRgdGC0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9Cn0LDRgSDRgdGC0LLQvtGA0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn0JfQsdGW0LvRjNGI0LXQvdC40Lkg0LLQuNC0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9CV0LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC90LAg0YHRgtC+0YDRltC90YbRlic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0J3QtSDQt9C90LDQudC00LXQvdC+INC00LDQvdC40YUg0L/RgNC+INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQktC40LHQtdGA0ZbRgtGMINGG0LXQuSDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfQl9Cw0L/Rg9GB0YLQuNGC0Lgg0L/QvtGI0YPQuic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3INC00LvRjyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAn0KDRltCy0LXQvdGMINCz0LvQuNCx0LjQvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAn0JfQsdGW0LvRjNGI0LjRgtC4L9C30LzQtdC90YjQuNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAn0JTQvtGB0Y/Qs9C90YPRgtC+INC80LDQutGB0LjQvNCw0LvRjNC90L7Qs9C+INGA0ZbQstC90Y8g0L/QvtGB0LjQu9Cw0L3RjCDQtNC70Y8gQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQldC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn0IbQvdGE0L7RgNC80LDRhtGW0Y8g0L/RgNC+INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfQn9C+0YLQvtGH0L3QuNC5INGB0YLQsNC9INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ9Cf0L7RgtC+0YfQvdC40Lkg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9Ce0YHRgtCw0L3QvdGW0Lkg0YDQsNC3INC30LzRltC90LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9Ce0YHRgtCw0L3QvdGW0Lkg0YDQsNC3INC30LzRltC90LXQvdC+JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn0JLQsNGI0ZYg0LXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAn0J/QvtGI0YPQuiDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9CR0YPQtNC1INGW0LzQv9C+0YDRgtC+0LLQsNC90L4g0L3QsNGB0YLRg9C/0L3RliDQutC70LDRgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9CR0YPQtNGD0YLRjCDRltC80L/QvtGA0YLQvtCy0LDQvdGWINC90LDRgdGC0YPQv9C90ZYg0YDQvtC70ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn0JfQstC10YDQvdGW0YLRjCDRg9Cy0LDQs9GDLCDRidC+INGC0LDQutC+0LYg0LHRg9C00YPRgtGMINGB0YLQstC+0YDQtdC90ZYg0LLRltC00L/QvtCy0ZbQtNC90ZYg0LTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPINGWINC60LvQsNGB0LggR2VuZXJhbENhdGFsb2csINGWINCw0LLRgtC+0LzQsNGC0LjRh9C90LUg0LLQuNC00LDQu9C10L3QvdGPINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfQpdC+0YfQtdGC0LUg0L/RgNC+0LTQvtCy0LbQuNGC0Lg/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ9Cf0L7RgtGA0ZbQsdC90ZYg0L/RgNC40LrQu9Cw0LTQuCDQutC70LDRgdGW0LIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ9CS0LjQt9C90LDRh9C10L3QvdGPINC90LUg0ZQg0LrQvtGA0LXQutGC0L3QuNC8IFlBTUwg0YXQtdGI0LXQvC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfQntCz0LvRj9C0OiDQldC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQg0L3QtSDQstC60LDQt9GD0ZTRgtGM0YHRjyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfQktCw0Lwg0L/QvtGC0YDRltCx0LXQvSDQv9GA0LjQvdCw0LnQvNC90ZYg0L7QtNC40L0g0LLQuNCx0YDQsNC90LjQuSDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn0KMg0LLQsNGBINC90LXQvNCw0ZQg0L/RgNCw0LIg0L3QsCDQt9Cw0L/QuNGBINC00L4g0YbRjNC+0LPQviDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlzogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ9CU0LvRjyDQutC70LDRgdGDICVzINC90LUg0LLQuNC30L3QsNGH0LXQvdC+INCy0LjQt9C90LDRh9C10L3QvdGPISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXICIlcyIg0L3QtSDQt9C90LDQudC00LXQvdC+INCyINCx0LDQt9GWINC00LDQvdC40YUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn0J3QtSDQstC00LDQu9C+0YHRjyDQstC40LTQsNC70LjRgtC4INGW0LTQtdC90YLQuNGE0ZbQutCw0YLQvtGAINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ9CS0LXRgNGB0ZbRjiDQtNC70Y8gQ29uZmlnSXRlbUlEICVzINC90LUg0LfQvdCw0LnQtNC10L3QviEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCDQsNCx0L4gQ2xhc3NJRCDQvdC1INCy0LrQsNC30YPRjtGC0YzRgdGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn0JTQvtGB0YLRg9C/INC90LUg0L3QsNC00LDRlNGC0YzRgdGPISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfQndC10LzQvtC20LvQuNCy0L4g0L/QvtC60LDQt9Cw0YLQuCDRltGB0YLQvtGA0ZbRjiwg0L3QtSDQstC60LDQt9Cw0L3QviBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtdC80L7QttC70LjQstC+INC/0L7QutCw0LfQsNGC0Lgg0ZbRgdGC0L7RgNGW0Y4sINC90LXQvNCw0ZQg0L/RgNCw0LIg0LTQvtGB0YLRg9C/0YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfQndC+0LLQsCDQstC10YDRgdGW0Y8gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ce0L3QvtCy0LvQtdC90L4g0YHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3RjyAo0L3QvtCy0LjQuT0lcywg0YHRgtCw0YDQuNC5PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQntC90L7QstC70LXQvdC40Lkg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDICjQvdC+0LLQuNC5PSVzLCDRgdGC0LDRgNC40Lk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpINCy0LjQtNCw0LvQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfQlNC+0LTQsNC90L4g0L/QvtGB0LjQu9Cw0L3QvdGPINC90LAgJXMgKNGC0LjQvz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ9Cf0L7RgdC40LvQsNC90L3RjyDQvdCwICVzICh0eXBlPSVzKSDQstC40LTQsNC70LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfQntC90L7QstC70LXQvdC+INCy0LjQt9C90LDRh9C10L3QvdGPIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9CG0LxcJ9GPINC+0L3QvtCy0LvQtdC90L4gKNC90L7QstC1PSVzLCDRgdGC0LDRgNC1PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ9CQ0YLRgNC40LHRg9GCICVzINC30LzRltC90LXQvdC+INC3ICIlcyIg0L3QsCAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ9CS0LjQtNCw0LvQtdC90L4g0LLQtdGA0YHRltGOICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCDQsNCx0L4gVmVyc2lvbklEINC90LUg0LLQutCw0LfRg9GO0YLRjNGB0Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LXQvNC+0LbQu9C40LLQviDQv9C+0LrQsNC30LDRgtC4INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0L3QtdC80LDRlCDQv9GA0LDQsiDQtNC+0YHRgtGD0L/RgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMg0L3QtSDQt9C90LDQudC00LXQvdC+INCyINCx0LDQt9GWINC00LDQvdC40YUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfQvdCw0LTRgNGD0LrQvtCy0LDQvdC+INC30LAg0LTQvtC/0L7QvNC+0LPQvtGOICVzINCyICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfQn9C+0YHQuNC70LDQvdC90Y8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfQndC10L/RgNCw0LLQuNC70YzQvdC40LkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lEINC90LUg0L3QsNC00LDRlNGC0YzRgdGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ9Cf0YDQsNCy0LAg0LTQvtGB0YLRg9C/0YMg0LTQu9GPINGG0YzQvtCz0L4g0LrQu9Cw0YHRgyDQvdC1INC90LDQtNCw0L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ9CR0LXQt9GA0LXQt9GD0LvRjNGC0LDRgtC90L4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn0KDQtdC30YPQu9GM0YLQsNGC0Lgg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ9Cd0LXQvNC+0LbQu9C40LLQviDQv9C+0LrQsNC30LDRgtC4INC10LvQtdC80LXQvdGCLCDQvdC10LzQsNGUINC/0YDQsNCyINC00L7RgdGC0YPQv9GDINC00LvRjyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtINC90LUg0LfQvdCw0LnQtNC10L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn0JLQtdGA0YHRltC5INC90LUg0LfQvdCw0LnQtNC10L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfQvtC/0LXRgNCw0YLQuNCy0L3QuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfQv9C+0L/QtdGA0LXQtNC20LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfRltC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQodGC0LDQvSDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPINGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQodGC0LDQvSDRltC90YbQuNC00LXQvdGC0YMg0YbRjNC+0LPQviDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9Cd0LXQvNCw0ZQg0L/RgNCw0LIg0LTQvtGB0YLRg9C/0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAn0KTRltC70YzRgtGAINC90LXQtNGW0LnRgdC90LjQuSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQv9C+0YjRg9C60YMg0L3QtdCy0ZbRgNC90ZYhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn0J/QvtC60LDQt9Cw0L3RliDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfQotC40L8g0YHRgtCw0L3RgyDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Cf0L7RgtC+0YfQvdC40Lkg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDINCi0LjQvyDRltC90YbQuNC00LXQvdGC0YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnINCc0ZbQtic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn0J7QsdC80LXQttC10L3QvdGPINC60LvQsNGB0ZbQsiDQtNC70Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ9CS0LjQsdC10YDRltGC0Ywg0L7QtNC40L0g0LDQsdC+INC00LXQutGW0LvRjNC60LAg0LrQu9Cw0YHRltCyLCDRidC+0LEg0L7QsdC80LXQttC40YLQuCDQstC40LHRltGAINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ9Ce0LHQvNC10LbQtdC90L3RjyDQutC70LDRgdGW0LIg0LTQu9GPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JLQuNCx0LXRgNGW0YLRjCDQvtC00LjQvSDQsNCx0L4g0LTQtdC60ZbQu9GM0LrQsCDQutC70LDRgdGW0LIsINGJ0L7QsSDQvtCx0LzQtdC20LjRgtC4INCy0LjQsdGW0YAg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ9CU0LjQvdCw0LzRltGH0L3QuNC5IChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAn0KHRgtCw0YLQuNGH0L3QuNC5ICjQstC10YDRgdGW0Y8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ9Ci0LjQvyDQv9C+0YHQuNC70LDQvdC90Y8g0L3QsCDQv9C+0YHQuNC70LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn0KfQuCDRgdGC0L7RgdGD0ZTRgtGM0YHRjyDRhtC1INC/0L7RgdC40LvQsNC90L3RjyBDb25maWdJdGVtINCw0LHQviDRgdGC0LDRgtC40YfQvdC+0Zcg0LLQtdGA0YHRltGXINC+0LFcJ9GU0LrRgtCwLCDQvdCwINGP0LrQuNC5INC/0L7RgdC40LvQsNGU0YLRjNGB0Y8g0L/QvtGB0LjQu9Cw0L3QvdGPLiDQlNC70Y8g0LTQuNC90LDQvNGW0YfQvdC40YUg0L/QvtGB0LjQu9Cw0L3RjCDQstC40LrQvtC90YPRlNGC0YzRgdGPINC70LjRiNC1INC+0LHRh9C40YHQu9C10L3QvdGPINC/0L7RgtC+0YfQvdC+0LPQviDRgdGC0LDQvdGDINGW0L3RhtC40LTQtdC90YLRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfQktC40LHQtdGA0ZbRgtGMINCw0YLRgNC40LHRg9GCLCDQt9CwINGP0LrQuNC8INCx0YPQtNC1INC30LTRltC50YHQvdGO0LLQsNGC0LjRgdGPINC/0L7RiNGD0Log0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAn0KHRgtGA0YPQutGC0YPRgNCwINCx0LDQt9C4INC00LDQvdC40YUg0L3QtdCy0ZbRgNC90LAuINCR0YPQtNGMINC70LDRgdC60LAsINC90LDQtNCw0LnRgtC1INGF0LXRiCDQtyDQtNCw0L3QuNC80Lgg0YMg0YTQvtGA0LzQsNGC0ZYgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfQoNGP0LTQvtC6IFlBTUwg0L/QvtGC0YDRltCx0L3QviDQv9C+0YfQuNC90LDRgtC4INC3IFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ9Cd0LUg0LLQtNCw0LvQvtGB0Y8g0L7Rh9C40YHRgtC40YLQuCDRgtCw0LHQu9C40YbRjiBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfQktGW0LTQv9C+0LLRltC00L3QuNGFINC00LjQvdCw0LzRltGH0L3QuNGFINC/0L7Qu9GW0LIg0L3QtSDQt9C90LDQudC00LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0J3QtSDQstC00LDQu9C+0YHRjyDQstGB0YLQsNCy0LjRgtC4INCyINGC0LDQsdC70LjRhtGOIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0JLRgdGC0LDQstC40LIgMCDRgNGP0LTQutGW0LIg0YMg0YLQsNCx0LvQuNGG0Y4gY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0LrRltC70YzQutGW0YHRgtGMINC+0LTQvdC+0LPQviDQtdC70LXQvNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ9Cg0Y/QtNC+0Log0LLQtdGA0YHRltGXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ9Cf0L7QvNC40LvQutCwINGB0LjQvdGF0YDQvtC90ZbQt9Cw0YbRltGXINCy0LjQt9C90LDRh9C10L3RjC4g0JHRg9C00Ywg0LvQsNGB0LrQsCwg0L/QtdGA0LXQstGW0YDRgtC1INC70L7Qsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfQoyDQstCw0YEg0ZQg0LLQuNC30L3QsNGH0LXQvdC90Y8gSVRTTUNvbmZpZ0l0ZW0sINGP0LrRliDQvdC1INGB0LjQvdGF0YDQvtC90ZbQt9C+0LLQsNC90ZYuINCR0YPQtNGMINC70LDRgdC60LAsINGA0L7Qt9Cz0L7RgNC90ZbRgtGMINC00LjQvdCw0LzRltGH0L3RliDQt9C80ZbQvdC4INC/0L7Qu9GW0LIgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfQl9Cw0LrRltC90YfQuNCy0YHRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Ce0LHRgdC70YPQs9C+0LLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfQn9GW0LvQvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfQl9Cw0L/Qu9Cw0L3QvtCy0LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9Cg0LXQvNC+0L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn0J3QsCDQv9C10L3RgdGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9Ce0LPQu9GP0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9Ci0LXRgdGC0YPQstCw0L3QvdGPL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfQntCz0LvRj9C0INGC0LAg0L/RltC00YLQstC10YDQtNC20LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn0IbQvNC/0L7RgNGCINC60LvQsNGB0ZbQsi/RgNC+0LvQtdC5INGC0LAg0L/QvtCyXCfRj9C30LDQvdC40YUg0Lcg0L3QuNC80Lgg0L/QvtC70ZbQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ9CS0LjQvdC40LrQu9CwINC/0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0ZbQvNC/0L7RgNGC0YMg0LrQu9Cw0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtINCf0YDQuNGF0L7QstCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g0J/QvtC60LDQt9Cw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0JTQvtC30LLQvtC70Y/RlCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0Lgg0YDQvtC30YjQuNGA0LXQvdGWINGD0LzQvtCy0Lgg0L/QvtGI0YPQutGDINC00LvRjyDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuINCX0LAg0LTQvtC/0L7QvNC+0LPQvtGOINGG0ZbRlNGXINGE0YPQvdC60YbRltGXINCy0Lgg0LzQvtC20LXRgtC1INGI0YPQutCw0YLQuCwg0L3QsNC/0YDQuNC60LvQsNC0LCDQvdCw0LfQstGDINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC3INGC0LDQutC40LzQuCDRg9C80L7QstCw0LzQuCwg0Y/QuiAiKCprZXkxKiYmKmtleTIqKSIg0LDQsdC+ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0JTQvtC30LLQvtC70Y/RlCDRgNC+0LfRiNC40YDQtdC90ZYg0YPQvNC+0LLQuCDQv9C+0YjRg9C60YMg0YMg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LrQu9GW0ZTQvdGC0LAuINCX0LAg0LTQvtC/0L7QvNC+0LPQvtGOINGG0ZbRlNGXINGE0YPQvdC60YbRltGXINCy0Lgg0LzQvtC20LXRgtC1INGI0YPQutCw0YLQuCwg0L3QsNC/0YDQuNC60LvQsNC0LCDQvdCw0LfQstGDINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC3INGC0LDQutC40LzQuCDRg9C80L7QstCw0LzQuCwg0Y/QuiAiKCprZXkxKiYmKmtleTIqKSIg0LDQsdC+ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn0J/RgNC40LfQvdCw0YfQtdC90ZYg0JrQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfQmtCGLCDQv9GA0LjQt9C90LDRh9C10L3RliDQutC+0LzQv9Cw0L3RltGXLdC60LvRltGU0L3RgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn0J/RltC70L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAn0J3QsNC70LDRiNGC0YPQstCw0L3QvdGPIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9Cf0LXRgNC10LLRltGA0Y/RgtC4INGD0L3RltC60LDQu9GM0L3QtSDRltC8XCfRjyDRgtGW0LvRjNC60Lgg0LIg0LzQtdC20LDRhSDQvtC00L3QvtCz0L4g0LrQu9Cw0YHRgyBDb25maWdJdGVtIChcJ2NsYXNzXCcpINCw0LHQviDQs9C70L7QsdCw0LvRjNC90L4gKFwnZ2xvYmFsXCcpLCDRidC+INC+0LfQvdCw0YfQsNGULCDRidC+INC/0YDQuCDQv9C+0YjRg9C60YMg0LTRg9Cx0LvRltC60LDRgtGW0LIg0LLRgNCw0YXQvtCy0YPRlNGC0YzRgdGPINC60L7QttC10L0g0ZbRgdC90YPRjtGH0LjQuSBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAn0JLQuNCx0LXRgNGW0YLRjCDQvNC+0LTRg9C70YwsINGJ0L7QsSDQt9Cw0YHRgtC+0YHRg9Cy0LDRgtC4INGB0YXQtdC80YMg0ZbQvNC10L3Rg9Cy0LDQvdC90Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfQktC40LHQtdGA0ZbRgtGMINC80L7QtNGD0LvRjCwg0YnQvtCxINC30LDRgdGC0L7RgdGD0LLQsNGC0Lgg0L3QvtC80LXRgNC90YMg0YHRhdC10LzRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAn0JLQuNCx0LXRgNGW0YLRjCDQvNC+0LTRg9C70Ywg0LTQu9GPINC30LDRgdGC0L7RgdGD0LLQsNC90L3RjyDRgdGF0LXQvNC4INGA0Y/QtNC60ZbQsiDQstC10YDRgdGW0LkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn0JLQuNCx0LXRgNGW0YLRjCDQsNGC0YDQuNCx0YPRgtC4LCDRidC+0LEg0LfQsNC/0YPRgdGC0LjRgtC4INGB0YLQstC+0YDQtdC90L3RjyDQvdC+0LLQvtGXINCy0LXRgNGB0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn0JLQuNCx0LXRgNGW0YLRjCDQutCw0YLQtdCz0L7RgNGW0ZcsINGP0LrRliDRgdC70ZbQtCDQv9GA0LjQt9C90LDRh9C40YLQuCDRhtGM0L7QvNGDINC60LvQsNGB0YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfQpNGW0LvRjNGC0YDQuCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGB0YLQvtCy0L/RhtGPINC00LvRjyDQntCz0LvRj9C00YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ9Ch0YLQvtCy0L/RhtGWLCDRj9C60ZYg0LzQvtC20L3QsCDQstGW0LTRhNGW0LvRjNGC0YDRg9Cy0LDRgtC4INCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4g0J/RgNC40LzRltGC0LrQsDog0JTQvtC/0YPRgdC60LDRjtGC0YzRgdGPINC70LjRiNC1INCw0YLRgNC40LHRg9GC0Lgg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgtCwINC00LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjyAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9CU0L7QtNCw0YLQuCDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn0KDQtdC00LDQs9GD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQvNC+0LTRg9C70Y8g0L/QvtC00ZbQuSwg0Y/QutC40Lkg0LTQvtC30LLQvtC70Y/RlCDQt9Cw0L/QuNGB0YPQstCw0YLQuCDRltGB0YLQvtGA0ZbRjiDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDQv9C+0LTRltC5INC00LvRjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60LjQuSDQvtC90L7QstC70Y7RlCDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtNC+INGX0YUg0L/QvtGC0L7Rh9C90L7Qs9C+INCy0LjQt9C90LDRh9C10L3QvdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9CG0YHRgtC+0YDRltGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ9CU0YDRg9C6INC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ9Cc0LDRgdGI0YLQsNCxINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ9CU0LXRgNC10LLQviDQtdC70LXQvNC10L3RgtCwINC90LDQu9Cw0YjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtINCS0LXRgNGB0ZbRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyDQvdCw0YHRgtGD0L/QvdC40YUg0LrQu9Cw0YHRltCyINC90LUg0LHRg9C00YPRgtGMINC30LHQtdGA0ZbQs9Cw0YLQuNGB0Y8g0L3QsCDRgdC10YDQstC10YDRliBFbGFzdGljc2VhcmNoLiDQqdC+0LEg0LfQsNGB0YLQvtGB0YPQstCw0YLQuCDRhtC1INC00L4g0ZbRgdC90YPRjtGH0LjRhSBDSSwg0LzRltCz0YDQsNGG0ZbRjyBDSSDQv9C+0LLQuNC90L3QsCDQsdGD0YLQuCDQt9Cw0L/Rg9GJ0LXQvdCwINGH0LXRgNC10Lcg0LrQvtC90YHQvtC70Ywg0L/RltGB0LvRjyDQt9C80ZbQvdC4INGG0ZbRlNGXINC+0L/RhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zINC3INC90LDRgdGC0YPQv9C90LjQvNC4INGB0YLQsNC90LDQvNC4INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0L3QtSDQsdGD0LTRg9GC0Ywg0LfQsdC10YDRltCz0LDRgtC40YHRjyDQvdCwINGB0LXRgNCy0LXRgNGWIEVsYXN0aWNzZWFyY2guINCp0L7QsSDQt9Cw0YHRgtC+0YHRg9Cy0LDRgtC4INGG0LUg0LTQviDRltGB0L3Rg9GO0YfQuNGFIENJLCDQvNGW0LPRgNCw0YbRltGPIENJINC/0L7QstC40L3QvdCwINCx0YPRgtC4INC30LDQv9GD0YnQtdC90LAg0YfQtdGA0LXQtyDQutC+0L3RgdC+0LvRjCDQv9GW0YHQu9GPINC30LzRltC90Lgg0YbRltGU0Zcg0L7Qv9GG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn0J7QsdC80LXQttC10L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfQmtC+0L3RhNGW0LPRg9GA0LDRhtGW0Y8g0J7QsdC80LXQttC10L3QvdGPINC60ZbQu9GM0LrQvtGB0YLRliDQtdC70LXQvNC10L3RgtGW0LIg0L3QsCDRgdGC0L7RgNGW0L3RhtGWLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn0JHQsNC30LAg0LTQsNC90LjRhSDRg9C/0YDQsNCy0LvRltC90L3RjyDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZTRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ9CV0LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQvNCw0YHQvtCy0L7Qs9C+INC80L7QtNGD0LvRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC90YTRltCz0YPRgNCw0YbRltGPINC10LvQtdC80LXQvdGC0LAg0L/QvtGI0YPQutGDINCx0LXQutC10L3QtC3QvNCw0YDRiNGA0YPRgtC40LfQsNGC0L7RgNCwINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ9Ch0YLQstC+0YDRjtC50YLQtSDRgtCwINC60LXRgNGD0LnRgtC1INCy0LjQt9C90LDRh9C10L3QvdGP0LzQuCDQtNC70Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICfQodGC0LLQvtGA0Y7RlCDQutCy0LjRgtC60Lgg0LTQu9GPIENvbmZpZ0l0ZW1zINGDINC/0LXQstC90ZYg0LzQvtC80LXQvdGC0Lgg0YfQsNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ9Ca0LvRltGU0L3RgtC4INC80L7QttGD0YLRjCDQv9C10YDQtdCz0LvRj9C00LDRgtC4INGW0YHRgtC+0YDQuNGH0L3RliDQstC10YDRgdGW0ZcgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ9Ca0LvRltGU0L3RgtC4INC80LDRjtGC0Ywg0LzQvtC20LvQuNCy0ZbRgdGC0Ywg0LLRgNGD0YfQvdGDINC/0LXRgNC10LzQuNC60LDRgtC40YHRjyDQvNGW0LYg0ZbRgdGC0L7RgNC40YfQvdC40LzQuCDQstC10YDRgdGW0Y/QvNC4IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ9CU0LDQvdGWINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQsiDQsNGC0YDQuNCx0YPRgtGWINC90LAg0LXQutGA0LDQvdGWINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0J/RgNC40LrQu9Cw0LQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn0JTQsNC90ZYg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINCyINCw0YLRgNC40LHRg9GC0ZYg0L3QsCDQtdC60YDQsNC90ZYg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLiDQn9GA0LjQutC70LDQtDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Iic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0YLQtSDQtNGW0ZcsINC00LvRjyDRj9C60LjRhSDQutC90L7Qv9C60LAg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDQtNC+0YHRgtGD0L/QvdCwINGDINCy0ZbQtNC20LXRgtGWINC/0L7Qslwn0Y/Qt9Cw0L3QuNGFINC+0LFcJ9GU0LrRgtGW0LIgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g0JfQstC10YDQvdGW0YLRjCDRg9Cy0LDQs9GDLCDRidC+INCyINGG0LjRhSDQtNGW0Y/RhSDQv9C+0LLQuNC90L3RliDQsdGD0YLQuCDQt9Cw0YDQtdGU0YHRgtGA0L7QstCw0L3RliDQvdCw0YHRgtGD0L/QvdGWIEpTINGWIENTUyDRhNCw0LnQu9C4OiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDRliBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINGB0YXQtdC80YMgVGVtcGxhdGU6OlRvb2xraXQg0LTQu9GPINGA0Y/QtNC60ZbQsiDQstC10YDRgdGW0LkuINCS0LjQutC+0YDQuNGB0YLQvtCy0YPRlNGC0YzRgdGPINC70LjRiNC1INGDINCy0LjQv9Cw0LTQutGDLCDRj9C60YnQviDQvNC+0LTRg9C70Ywg0YDRj9C00LrRltCyINCy0LXRgNGB0ZbQuSDQvNCw0ZQg0LfQvdCw0YfQtdC90L3RjyBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfRgtC1INC90LDQsdGW0YAg0YPQvNC+0LIsINC30LAg0Y/QutC40YUg0LrQvtGA0LjRgdGC0YPQstCw0YfQtdCy0ZYg0LTQvtC30LLQvtC70LXQvdC+INCx0LDRh9C40YLQuCDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuINCX0LAg0LHQsNC20LDQvdC90Y/QvCwg0YPQvNC+0LLQuCDQvNC+0LbRg9GC0Ywg0LHRg9GC0Lgg0L7QsdC80LXQttC10L3RliDQv9C10LLQvdC40LzQuCDQs9GA0YPQv9Cw0LzQuCDQutC+0YDQuNGB0YLRg9Cy0LDRh9GW0LIuINCE0LTQuNC90LjQvCDQvtCx0L7Qslwn0Y/Qt9C60L7QstC40Lwg0LDRgtGA0LjQsdGD0YLQvtC8INGUINC90LDQt9Cy0LAuINCv0LrRidC+INC90LUg0LLQutCw0LfQsNC90L4g0LbQvtC00L3QuNGFINGW0L3RiNC40YUg0L/QsNGA0LDQvNC10YLRgNGW0LIsINCy0YHRliDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsdGD0LTRg9GC0Ywg0LLQuNC00LjQvNC40LzQuCDRgyDRhtGW0Lkg0LrQsNGC0LXQs9C+0YDRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvdC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQtNCw0LvQtdC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0LfQsNCz0LDQu9GM0L3QvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC90LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0L7RgtGA0LjQvNCw0L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiDQt9Cw0LPQsNC70YzQvdC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0L3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOINC30LDQs9Cw0LvRjNC90L7Qs9C+INGW0L3RgtC10YDRhNC10LnRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvdC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINC90LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0LfQsNCz0LDQu9GM0L3QvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQvtC00YPQu9GMINC+0LPQu9GP0LTRgyDQtNC70Y8g0LLRltC00L7QsdGA0LDQttC10L3QvdGPINC90LXQstC10LvQuNC60L7Qs9C+INGB0L/QuNGB0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRh9C4INC/0L7RgtGA0ZbQsdC90L4g0L/QvtC60LDQt9GD0LLQsNGC0Lgg0LzRltGC0LrQuCDRgtC40L/RgyDQt9CyXCfRj9C30LrRgyDRgyDQt1wn0ZTQtNC90LDQvdC90Y/RhSDQstGD0LfQu9GW0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC80LXQttGDINC/0L7RiNGD0LrRgyDQtNC70Y8g0LXQutGA0LDQvdCwIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQtNC+0YHRgtGD0L/QvdGWINGB0YLQvtCy0L/RhtGWIENJINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LDQu9C10LbQvdC+INCy0ZbQtCDQutC70LDRgdGDIENJLiDQmtC+0LbQtdC9INC30LDQv9C40YEg0LzQsNGUINGB0LrQu9Cw0LTQsNGC0LjRgdGPINC3INC90LDQt9Cy0Lgg0LrQu9Cw0YHRgyDRgtCwINC80LDRgdC40LLRgyDQtNC+0YHRgtGD0L/QvdC40YUg0L/QvtC70ZbQsiDQtNC70Y8g0LLRltC00L/QvtCy0ZbQtNC90L7Qs9C+INC60LvQsNGB0YMuINCX0LDQv9C40YHQuCDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0LvRltCyINC/0L7QstC40L3QvdGWINCy0ZbQtNC/0L7QstGW0LTQsNGC0Lgg0YHRhdC10LzRliBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQsNGC0YDQuNCx0YPRgiDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDRgdC+0YDRgtGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQsNGC0YDQuNCx0YPRgiDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDRgdC+0YDRgtGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LrQu9GW0ZTQvdGC0YHRjNC60L7QvNGDINGW0L3RgtC10YDRhNC10LnRgdGWLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LDRgtGA0LjQsdGD0YIg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQtNC70Y8g0YHQvtGA0YLRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LAg0YbRltGU0Y4g0L7Qv9C10YDQsNGG0ZbRlNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQv9C+0YDRj9C00L7QuiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0YMg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuINCS0LPQvtGA0YM6INC90LDQudGB0YLQsNGA0ZbRiNGWINC30LLQtdGA0YXRgy4g0JLQvdC40Lc6INC90LDQudC90L7QstGW0YjRliDQt9Cy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC/0L7RgNGP0LTQvtC6INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDRgyDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINC60LvRltGU0L3RgtGB0YzQutC+0LzRgyDRltC90YLQtdGA0YTQtdC50YHRli4g0JLQs9C+0YDRgzog0L3QsNC50YHRgtCw0YDRltGI0ZYg0LfQstC10YDRhdGDLiDQktC90LjQtzog0L3QsNC50L3QvtCy0ZbRiNGWINC30LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0YHRgtC+0LLQv9GG0ZYgQ0ksINGJ0L4g0LLRltC00L7QsdGA0LDQttCw0Y7RgtGM0YHRjyDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LDQu9C10LbQvdC+INCy0ZbQtCDQutC70LDRgdGDIENJLiDQmtC+0LbQtdC9INC30LDQv9C40YEg0LzQsNGUINGB0LrQu9Cw0LTQsNGC0LjRgdGPINC3INC90LDQt9Cy0Lgg0LrQu9Cw0YHRgyDRgtCwINC80LDRgdC40LLRgyDQtNC+0YHRgtGD0L/QvdC40YUg0L/QvtC70ZbQsiDQtNC70Y8g0LLRltC00L/QvtCy0ZbQtNC90L7Qs9C+INC60LvQsNGB0YMuINCX0LDQv9C40YHQuCDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0LvRltCyINC80LDRjtGC0Ywg0LLRltC00L/QvtCy0ZbQtNCw0YLQuCDRgdGF0LXQvNGWIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ9CS0LjQt9C90LDRh9Cw0ZQg0LPQu9C40LHQuNC90YMg0LfQslwn0Y/Qt9C60ZbQsiDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8LCDRj9C60YMg0LHRg9C00LUg0L/QvtC60LDQt9Cw0L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQsNGC0YDQuNCx0YPRgiDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrQuNC5INCx0YPQtNC1INC/0L7QutCw0LfQsNC90L4g0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQvdCwINC10LrRgNCw0L3RliDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINGC0LjQv9C+0LLQuNC5INCw0YLRgNC40LHRg9GCINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0Y/QutC40Lkg0LHRg9C00LUg0L/QvtC60LDQt9Cw0L3QviDQvdCwINC10LrRgNCw0L3RliDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuINCf0YDQuNC60LvQsNC0OiAi0JrQu9GO0YciINC80LDRlCDQvNGW0YHRgtC40YLQuCDQvdCw0LfQstGDINC00LjQvdCw0LzRltGH0L3QvtCz0L4g0L/QvtC70Y8sINGDINGG0YzQvtC80YMg0LLQuNC/0LDQtNC60YMgXCdYXCcsICLQl9C80ZbRgdGCIiDQvNCw0ZQg0LzRltGB0YLQuNGC0Lgg0LfQvdCw0YfQtdC90L3RjyDQtNC40L3QsNC80ZbRh9C90L7Qs9C+INC/0L7Qu9GPINC30LDQu9C10LbQvdC+INCy0ZbQtCDRgtC40L/RgyDQtNC40L3QsNC80ZbRh9C90L7Qs9C+INC/0L7Qu9GPLCDQotC10LrRgdGCOiBcJ9GC0LXQutGB0YJcJywg0JLQuNC/0LDQtNCw0Y7Rh9C40Lkg0YHQv9C40YHQvtC6OiBcJzFcJywg0JTQsNGC0LAv0KfQsNGBOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcg0YLQsCDQsNCx0L4gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQv9GW0LTQvtCxXCfRlNC60YIg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQutC70LDRgdGDIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LTQvtGB0YLRg9C/0L3RliDRgdGC0L7QstC/0YbRliBDSSDQsiDQvtCz0LvRj9C00ZYg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQt9Cw0LvQtdC20L3QviDQstGW0LQg0LrQu9Cw0YHRgyBDSS4g0JrQvtC20LXQvSDQt9Cw0L/QuNGBINC80LDRlCDRgdC60LvQsNC00LDRgtC40YHRjyDQtyDQvdCw0LfQstC4INC60LvQsNGB0YMg0YLQsCDQvNCw0YHQuNCy0YMg0LTQvtGB0YLRg9C/0L3QuNGFINC/0L7Qu9GW0LIg0LTQu9GPINCy0ZbQtNC/0L7QstGW0LTQvdC+0LPQviDQutC70LDRgdGDLiDQl9Cw0L/QuNGB0Lgg0LTQuNC90LDQvNGW0YfQvdC40YUg0L/QvtC70ZbQsiDQv9C+0LLQuNC90L3RliDQstGW0LTQv9C+0LLRltC00LDRgtC4INGB0YXQtdC80ZYgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQstC40YHQvtGC0YMg0LrQvtC80L/QvtC90LXQvdGC0LAg0YDQtdC00LDQutGC0L7RgNCwINGA0L7Qt9GI0LjRgNC10L3QvtCz0L4g0YLQtdC60YHRgtGDINC00LvRjyDRhtGM0L7Qs9C+INC10LrRgNCw0L3QsC4g0JLQstC10LTRltGC0Ywg0YfQuNGB0LvQviAo0L/RltC60YHQtdC70ZYpINCw0LHQviDQt9C90LDRh9C10L3QvdGPINGDINCy0ZbQtNGB0L7RgtC60LDRhSAo0LLRltC00L3QvtGB0L3QtSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LrRltC70YzQutGW0YHRgtGMINGA0Y/QtNC60ZbQsiDQtNC70Y8g0YDQtdC00LDQutGC0L7RgNCwINCy0LjQt9C90LDRh9C10L3RjCBDSSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNC00LzRltC90ZbRgdGC0YDQsNGC0L7RgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC/0L7RgNGP0LTQvtC6INGB0YLQsNC90ZbQsiDRltC90YbQuNC00LXQvdGC0YMg0LLRltC0INCy0LjRgdC+0LrQvtCz0L4gKNC90LDQv9GA0LjQutC70LDQtCwg0LrRgNC40YLQuNGH0L3QvtCz0L4pINC00L4g0L3QuNC30YzQutC+0LPQviAo0L3QsNC/0YDQuNC60LvQsNC0LCDRhNGD0L3QutGG0ZbQvtC90LDQu9GM0L3QvtCz0L4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LLRltC00L/QvtCy0ZbQtNC90ZYg0YHRgtCw0L3QuCDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPLCDQsiDRj9C60LjRhSDQv9C+0LJcJ9GP0LfQsNC90ZYg0YLRltC60LXRgtC4INC80L7QttGD0YLRjCDQstC/0LvQuNCy0LDRgtC4INC90LAg0YHRgtCw0YLRg9GBIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQtdC20YMg0L/QvtGI0YPQutGDINC00LvRjyDQtdC60YDQsNC90LAgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC80LXQttGDINC/0L7RiNGD0LrRgyDQtNC70Y8g0LXQutGA0LDQvdCwIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNC10LbRgyDQv9C+0YjRg9C60YMg0LTQu9GPINC10LrRgNCw0L3QsCBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQtdC20YMg0L/QvtGI0YPQutGDINC00LvRjyDQtdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDRgdGC0L7QstC/0YbRliDQmtCGLCDRidC+INCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0LIg0LrQvtC80L/Qu9C10LrRgdC90L7QvNGDINC/0L7QtNCw0L3QvdGWINGC0LDQsdC70LjRhtGWINC/0L7RgdC40LvQsNC90Ywg0LTQu9GPINCy0YHRltGFINC60LvQsNGB0ZbQsiDQmtCGLiDQr9C60YnQviDQt9Cw0L/QuNGBINCy0ZbQtNGB0YPRgtC90ZbQuSwg0YLQviDQv9C+0LrQsNC30YPRjtGC0YzRgdGPINGB0YLQvtCy0L/RhtGWINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRj9C60ZYg0YHRgtC+0LLQv9GG0ZYg0JrQhiDQstGW0LTQvtCx0YDQsNC20LDRgtC40LzRg9GC0YzRgdGPINGDINC60L7QvNC/0LvQtdC60YHQvdC+0LzRgyDQv9C+0LTQsNC90L3RliDRgtCw0LHQu9C40YbRliDQv9C+0YHQuNC70LDQvdGMLCDQt9Cw0LvQtdC20L3QviDQstGW0LQg0LrQu9Cw0YHRgyDQmtCGLiDQmtC+0LbQtdC9INC30LDQv9C40YEg0LzQsNGUINC/0L7Rh9C40L3QsNGC0LjRgdGPINC3INC90LDQt9Cy0Lgg0LrQu9Cw0YHRgyDRgtCwINC/0L7QtNCy0ZbQudC90L7Qs9C+INC00LLQvtC60YDQsNC/0LrQuCAo0L3QsNC/0YDQuNC60LvQsNC0LCBDb21wdXRlcjo6KS4g0IbRgdC90YPRlCDQtNC10LrRltC70YzQutCwINCw0YLRgNC40LHRg9GC0ZbQsiDQmtCGLCDRj9C60ZYg0ZQg0YHQv9GW0LvRjNC90LjQvNC4INC00LvRjyDQstGB0ZbRhSDQmtCGICjQvdCw0L/RgNC40LrQu9Cw0LQsINC00LvRjyDQutC70LDRgdGDIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDQlNC70Y8g0LLRltC00L7QsdGA0LDQttC10L3QvdGPINC+0LrRgNC10LzQuNGFIENJLdCw0YLRgNC40LHRg9GC0ZbQsiwg0LLQuNC30L3QsNGH0LXQvdC40YUg0YMgQ0kt0LLQuNC30L3QsNGH0LXQvdC90ZYsINGB0LvRltC0INCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDQvdCw0YHRgtGD0L/QvdGDINGB0YXQtdC80YMgKNC/0YDQuNC60LvQsNC0INC00LvRjyDQutC70LDRgdGDIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCv0LrRidC+INC00LvRjyDQutC70LDRgdGDIENJINC90LXQvNCw0ZQg0LbQvtC00L3QvtCz0L4g0LfQsNC/0LjRgdGDLCDQsdGD0LTQtSDQv9C+0LrQsNC30LDQvdC+INGB0YLQvtCy0L/Rh9C40LrQuCDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQsINGP0LrRliDQtdC70LXQvNC10L3RgtC4INC00L7RgdGC0YPQv9C90ZYg0LTQu9GPICLQlNGW0ZciINC90LAg0YLRgNC10YLRjNC+0LzRgyDRgNGW0LLQvdGWINGB0YLRgNGD0LrRgtGD0YDQuCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRj9C60ZYg0LXQu9C10LzQtdC90YLQuCDQtNC+0YHRgtGD0L/QvdGWINC90LAg0L/QtdGA0YjQvtC80YMg0YDRltCy0L3RliDRgdGC0YDRg9C60YLRg9GA0LggSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQsINGP0LrRliDQtdC70LXQvNC10L3RgtC4INC00L7RgdGC0YPQv9C90ZYg0L3QsCDQtNGA0YPQs9C+0LzRgyDRgNGW0LLQvdGWINGB0YLRgNGD0LrRgtGD0YDQuCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCwg0Y/QutC40Lkg0YLQuNC/INC30LJcJ9GP0LfQutGDICjQvdCw0LfQstCw0L3QuNC5INC3INGC0L7Rh9C60Lgg0LfQvtGA0YMg0LrQstC40YLQutCwKSDQvNC+0LbQtSDQstC/0LvQuNCy0LDRgtC4INC90LAg0YHRgtCw0YLRg9GBINC30LJcJ9GP0LfQsNC90L7Qs9C+INCa0IYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCwg0Y/QutC40Lkg0YLQuNC/INC60LLQuNGC0LrQsCDQvNC+0LbQtSDQstC/0LvQuNCy0LDRgtC4INC90LAg0YHRgtCw0YLRg9GBINC/0L7Qslwn0Y/Qt9Cw0L3QvtGXINCa0IYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn0J7QvdC+0LLQu9C10L3QvdGPINCy0LjQt9C90LDRh9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQktC40LTQsNC70LjRgtC4INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ9Ca0L7Qu9GW0YAg0YHRgtCw0L3RgyDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfQlNGD0LHQu9GW0LrQsNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINC/0L7QtNGW0Lkg0LTQuNC90LDQvNGW0YfQvdC40YUg0L/QvtC70ZbQsiwg0Y/QutC40Lkg0L/QvtC30L3QsNGH0LDRlCDQstC40LfQvdCw0YfQtdC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGP0Log0L3QtdGB0LjQvdGF0YDQvtC90ZbQt9C+0LLQsNC90ZYsINGP0LrRidC+INC30LzRltC90Y7RjtGC0YzRgdGPINC00LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjywg0L/QvtC60LDQt9Cw0L3RliDQvdCwINC00L7QtNCw0YLQutC+0LLQvtC80YMg0LXQutGA0LDQvdGWINC/0L7Qu9GW0LIgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjywg0YnQviDQstGW0LTQvtCx0YDQsNC20LDRjtGC0YzRgdGPINC90LAg0LXQutGA0LDQvdGWINC+0LPQu9GP0LTRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC60LvRltGU0L3RgtGB0YzQutC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPLCDRidC+INCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0L3QsCDQtdC60YDQsNC90ZYg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQktC80LjQutCw0ZQg0YTRg9C90LrRhtGW0Y4g0LzQsNGB0L7QstC40YUg0LTRltC5INC3INC10LvQtdC80LXQvdGC0LDQvNC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtNC70Y8g0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLCDRidC+INC00L7Qt9Cy0L7Qu9GP0ZQg0L/RgNCw0YbRjtCy0LDRgtC4INC3INC00LXQutGW0LvRjNC60L7QvNCwINC10LvQtdC80LXQvdGC0LDQvNC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQvtC00L3QvtGH0LDRgdC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfQktC80LjQutCw0ZQg0YTRg9C90LrRhtGW0Y4g0LzQsNGB0L7QstC40YUg0LTRltC5INC00LvRjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC70LjRiNC1INC00LvRjyDQv9C10YDQtdC70ZbRh9C10L3QuNGFINCz0YDRg9C/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0L/QvtC00ZbQuSDQtNC70Y8g0LLRgdGC0LDQvdC+0LLQu9C10L3QvdGPIGNvbmZpZ2l0ZW0tc3RhdHVzINC30LAg0L/QvtGB0LjQu9Cw0L3QvdGP0LwgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn0J/QvtC70Y8g0ZbQvdC00LXQutGB0YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0YnQviDQstC40LrQvtGA0LjRgdGC0L7QstGD0Y7RgtGM0YHRjyDQtNC70Y8g0L/QvtCy0L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+INC/0L7RiNGD0LrRgy4g0J/QvtC70Y8g0YLQsNC60L7QtiDQt9Cx0LXRgNGW0LPQsNGO0YLRjNGB0Y8sINCw0LvQtSDQvdC1INGUINC+0LHQvtCyXCfRj9C30LrQvtCy0LjQvNC4INC00LvRjyDQt9Cw0LPQsNC70YzQvdC+0Zcg0YTRg9C90LrRhtGW0L7QvdCw0LvRjNC90L7RgdGC0ZYuINCS0LrQu9GO0YfQtdC90L3RjyDQstC60LvQsNC00LXQvdGMINC80L7QttC90LAg0LLQuNC80LrQvdGD0YLQuCwg0LLRgdGC0LDQvdC+0LLQuNCy0YjQuCDQt9C90LDRh9C10L3QvdGPIDAg0LDQsdC+INCy0LjQtNCw0LvQuNCy0YjQuCDRl9GFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn0J/QvtC70Y8sINGJ0L4g0LfQsdC10YDRltCz0LDRjtGC0YzRgdGPINCyINGW0L3QtNC10LrRgdGWINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrRliDQstC40LrQvtGA0LjRgdGC0L7QstGD0Y7RgtGM0YHRjyDQtNC70Y8g0ZbQvdGI0LjRhSDRhtGW0LvQtdC5LCDQvtC60YDRltC8INC/0L7QstC90L7RgtC10LrRgdGC0L7QstC+0LPQviDQv9C+0YjRg9C60YMuINCU0LvRjyDQv9C+0LLQvdC+0Zcg0YTRg9C90LrRhtGW0L7QvdCw0LvRjNC90L7RgdGC0ZYg0LLRgdGWINC/0L7Qu9GPINGUINC+0LHQvtCyXCfRj9C30LrQvtCy0LjQvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXRlNGB0YLRgNCw0YbRltGPINC80L7QtNGD0LvRjyBHZW5lcmljSW50ZXJmYWNlINC00LvRjyDRiNCw0YDRgyDQstC40LrQu9C40LrRgyBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdGU0YHRgtGA0LDRhtGW0Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGI0LDRgNGDINCy0LjQutC70LjQutGDIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdGU0YHRgtGA0LDRhtGW0Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGI0LDRgNGDINCy0LjQutC70LjQutGDIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAn0J7Qs9C70Y/QtCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0ZQg0YHRgtCw0L3QuCDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPINC00L4g0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LrQu9GW0ZTQvdGC0YHRjNC60L7QvNGDINGW0L3RgtC10YDRhNC10LnRgdGWLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDRlCDRgdGC0LDQvdC4INGW0L3RhtC40LTQtdC90YLRltCyINGDINC/0L7RiNGD0Log0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQutC70ZbRlNC90YLRgdGM0LrQvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0LrRltC70YzQutGW0YHRgtGMINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrRliDQsdGD0LTQtSDQstGW0LTQvtCx0YDQsNC20LXQvdC+INCyINGA0LXQt9GD0LvRjNGC0LDRgtGWINGG0ZbRlNGXINC+0L/QtdGA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDQv9C10YDQtdCy0ZbRgNC60Lgg0LPRgNGD0L/QuCwg0LLRltC00L/QvtCy0ZbQtNCw0LvRjNC90L7RlyDQt9CwINC60LvQsNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0L/QtdGA0LXQstGW0YDQutC4INCz0YDRg9C/0LgsINCy0ZbQtNC/0L7QstGW0LTQsNC70YzQvdC+0Zcg0LfQsCDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDQs9C10L3QtdGA0LDRhtGW0Zcg0YHRgtCw0YLQuNGB0YLQuNC60Lgg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ9Cc0L7QtNGD0LvRjCDRltC80LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn0JzQvtC00YPQu9GMINGH0LjRgdC70LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrRltC70YzQutGW0YHRgtGMINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrRliDQsdGD0LTRg9GC0Ywg0LLRltC00L7QsdGA0LDQttCw0YLQuNGB0Y8g0L3QsCDQutC+0LbQvdGW0Lkg0YHRgtC+0YDRltC90YbRliDRgNC10LfRg9C70YzRgtCw0YLRltCyINC/0L7RiNGD0LrRgyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60ZYg0LHRg9C00YPRgtGMINCy0ZbQtNC+0LHRgNCw0LbQsNGC0LjRgdGPINC90LAg0LrQvtC20L3RltC5INGB0YLQvtGA0ZbQvdGG0ZYg0YDQtdC30YPQu9GM0YLQsNGC0ZbQsiDQv9C+0YjRg9C60YMg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LrQu9GW0ZTQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ9Ce0LFcJ9GU0LrRgtC4INC00LvRjyDQv9C+0YjRg9C60YMsINC60ZbQu9GM0LrRltGB0YLRjCDQt9Cw0L/QuNGB0ZbQsiDRliDRj9C60ZYg0LDRgtGA0LjQsdGD0YLQuCDQv9C+0LrQsNC30YPQstCw0YLQuC4g0JDRgtGA0LjQsdGD0YLQuCBDb25maWdJdGVtINC80LDRjtGC0Ywg0LHRg9GC0Lgg0Y/QstC90L4g0LfQsdC10YDQtdC20LXQvdGWINGH0LXRgNC10LcgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn0J7Qs9C70Y/QtC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQutCw0YLQtdCz0L7RgNGW0Lkg0LTQu9GPINC60LvQsNGB0ZbQsiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRhNGW0LvRjNGC0YDRltCyINGB0YLQvtCy0L/RhtGW0LIg0LIg0L7Qs9C70Y/QtNGWINC80LDQu9C40YUg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0JfQstC10YDQvdGW0YLRjCDRg9Cy0LDQs9GDOiDQstGB0YLQsNC90L7QstC70LXQvdC90Y8g0LfQvdCw0YfQtdC90L3RjyAi0JDQutGC0LjQstC90LjQuSIg0L3QsCAwINC70LjRiNC1INC30LDQsdC+0YDQvtC90LjRgtGMINCw0LPQtdC90YLQsNC8INGA0LXQtNCw0LPRg9Cy0LDRgtC4INC90LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDRhtGW0ZTRlyDQs9GA0YPQv9C4INGDINGB0LLQvtGX0YUg0L7RgdC+0LHQuNGB0YLQuNGFINC90LDQu9Cw0YjRgtGD0LLQsNC90L3Rj9GFLCDQsNC70LUg0LTQvtC30LLQvtC70LjRgtGMINCw0LTQvNGW0L3RltGB0YLRgNCw0YLQvtGA0LDQvCDRgNC10LTQsNCz0YPQstCw0YLQuCDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8g0LLRltC0INGW0LzQtdC90ZYg0ZbQvdGI0L7Qs9C+INC60L7RgNC40YHRgtGD0LLQsNGH0LAuINCS0LjQutC+0YDQuNGB0YLQvtCy0YPQudGC0LUgIlByZWZlcmVuY2VHcm91cCIsINGJ0L7QsSDQutC+0L3RgtGA0L7Qu9GO0LLQsNGC0LgsINCyINGP0LrRltC5INC+0LHQu9Cw0YHRgtGWINC60L7RgNC40YHRgtGD0LLQsNGG0YzQutC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgyDQstGW0LTQvtCx0YDQsNC20LDRgtC4INGG0ZYg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0YHRgtCw0L3RltCyINGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0L/QvtC30L3QsNGH0LDRjtGC0YzRgdGPINC60L7Qu9GM0L7RgNC+0Lwg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINGB0YLQsNC90ZbQsiDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPINGDINCy0ZbQutC90ZYg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0L/RgNC40LrQu9Cw0LTRgyDQtNC+0LfQstC+0LvRgyDQs9GA0YPQvyDQt9Cw0LPQsNC70YzQvdC40YUg0LDRgtGA0LjQsdGD0YLRltCyINC60LDRgtCw0LvQvtCz0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC80L7QtNGD0LvRjyDRltC80LXQvSDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQvNC+0LTRg9C70Y8g0YfQuNGB0LvQsCDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRgdGC0L7RgNGW0L3QvtC6ICjQvdCwINGP0LrQuNGFINCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0LXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINC80L7QtNGD0LvRjyDRgNGP0LTQutCwINCy0LXRgNGB0ZbRlyDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINC80L7QtNGD0LvRjyDRiNCw0LHQu9C+0L3RgyDRgNGP0LTQutCwINCy0LXRgNGB0ZbRlyDRltC90YHRgtGA0YPQvNC10L3RgtCw0YDRltGOINC00LvRjyDQutC70LDRgdGW0LIg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQv9C+0LTQsNC90L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRgtGA0LjQs9C10YDQsCDQstC10YDRgdGW0Zcg0LTQu9GPINC60LvQsNGB0ZbQsiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn0JPRgNGD0L/QsCDQtNC+0LfQstC+0LvRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LTRltGXINC/0YDQuNC60YDRltC/0LvQtdC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQutC70ZbRlNC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0L/QtdGA0LXQs9C70Y/QtNGDINC00LXRgNC10LLQsCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LzQsNGB0YjRgtCw0LHRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LTQvtC00LDQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LzQsNGB0L7QstC40YUg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LXQutGA0LDQvdCwINGA0LXQtNCw0LPRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LXQutGA0LDQvdCwINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0ZbRgdGC0L7RgNGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LTRgNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn0J3QtdC+0LHRhdGW0LTQvdGWINC/0YDQuNCy0ZbQu9C10Zcg0LTQu9GPINCy0LjQtNCw0LvQtdC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ9Cf0L7RiNGD0Log0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ9CQ0LLRgtC+0LzQsNGC0LjRh9C90L4g0LLRgdGC0LDQvdC+0LLQu9GO0LLQsNGC0Lgg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDINC00LvRjyDQmtCGLCDQutC+0LvQuCDQotGW0LrQtdGCINC/0YDQuNCyXCfRj9C30LDQvdC40Lkg0LTQviDQmtCGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0YHRgtCw0L3QvtCy0LvRjtGUINGB0YLQsNC9INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0L3QsCDQvtGB0L3QvtCy0L3QvtC80YMg0LXQutGA0LDQvdGWINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLRgdGC0LDQvdC+0LLQu9GO0ZQg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDINC90LAg0L7RgdC90L7QstC90L7QvNGDINC10LrRgNCw0L3RliDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOLCDRj9C60LUg0LTQvtC30LLQvtC70Y/RlCDQt9CyXCfRj9C30LDRgtC4INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtyDRltC90YjQuNC8INC+0LFcJ9GU0LrRgtC+0Lwg0YMg0LLRltC60L3RliDQvNCw0YHRiNGC0LDQsdGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQtNC+0YHRgtGD0L/RgyDQtNC+INGW0YHRgtC+0YDRltGXINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQtNC+0YHRgtGD0L/RgyDQtNC+INGW0YHRgtC+0YDRltGXINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0LzQsNGB0YjRgtCw0LHRg9Cy0LDQvdC90Y8g0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0LLQuNC00LDQu9C10L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINC30LHRltC70YzRiNC10L3QvtC80YMg0LLQuNCz0LvRj9C00ZYg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQstGW0LTQvtCx0YDQsNC20LXQvdC90Y8g0L/QvtGB0LjQu9Cw0L3RjCDQvdCwINC10LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0LjQs9C70Y/QtNGWINC00LXRgNC10LLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00YPQsdC70Y7QstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQtNGD0LHQu9GO0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDQudC+0LPQviDQt9Cx0ZbQu9GM0YjQtdC90L7QvNGDINCy0LjQs9C70Y/QtNGWINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQstGW0LrQvdGWINC80LDRgdGI0YLQsNCx0YPQstCw0L3QvdGPINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0L/QvtCy0LXRgNC90LXQvdC90Y8g0LTQviDQv9GD0L3QutGC0YMg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPINC80LDRgdGI0YLQsNCx0YPQstCw0L3QvdGPINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00YDRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LfQsdGW0LvRjNGI0LXQvdC+0LzRgyDQstC40LPQu9GP0LTRliDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQt9Cx0ZbQu9GM0YjQtdC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDQvtCz0LvRj9C00ZYg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINGW0YHRgtC+0YDRltGOINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgKNGDINC30LLQvtGA0L7RgtC90L7QvNGDINC/0L7RgNGP0LTQutGDKSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0ZbRjyDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8LCDRj9C60LAg0LLRltC00L7QsdGA0LDQttCw0ZTRgtGM0YHRjywg0Y/QutGJ0L4g0L3QtSDQstC40LHRgNCw0L3QviDQttC+0LTQvdC+0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQhtC00LXQvdGC0LjRhNGW0LrQsNGC0L7RgCDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0L3QsNC/0YDQuNC60LvQsNC0LCBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4g0JfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDRhtC1IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn0JDQstGC0L7QvNCw0YLQuNGH0L3QviDQt9Cw0L/Rg9GB0LrQsNGUINCy0LjQutC70LjRh9C90LjQuiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9CS0LjRgNCw0Lcg0YDRj9C00LrQsCDQstC10YDRgdGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn0JzQvtC00YPQu9GMINGA0Y/QtNC60LAg0LLQtdGA0YHRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ9Ci0YDQuNCz0LXRgCDQstC10YDRgdGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9Cn0Lgg0LzQvtC20L3QsCDRg9C90LjQutC90YPRgtC4INCy0LjQutC+0L3QsNC90L3RjyBDb25maWdJdGVtQUNMINGI0LvRj9GF0L7QvCDQv9C10YDQtdCy0ZbRgNC60Lgg0LrQtdGI0L7QstCw0L3QuNGFINC30LDQu9C10LbQvdC+0YHRgtC10Lkg0L/QvtC70ZbQsi4g0KbQtSDQvNC+0LbQtSDQv9C+0LrRgNCw0YnQuNGC0Lgg0YfQsNGBINC30LDQstCw0L3RgtCw0LbQtdC90L3RjyDRhNC+0YDQvNGD0LssINCw0LvQtSDQudC+0LPQviDRgdC70ZbQtCDQstC40LzQutC90YPRgtC4LCDRj9C60YnQviBBQ0xNLdC80L7QtNGD0LvRliDQsdGD0LTQtSDQstC40LrQvtGA0LjRgdGC0LDQvdC+INC00LvRjyBJVFNNQ29uZmlnSXRlbS0g0ZYgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ9Cv0LrQsCDQt9Cw0LPQsNC70YzQvdCwINGW0L3RhNC+0YDQvNCw0YbRltGPINCy0ZbQtNC+0LHRgNCw0LbQsNGU0YLRjNGB0Y8g0LIg0LfQsNCz0L7Qu9C+0LLQutGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9C60LvQsNGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ9Cz0LvQvtCx0LDQu9GM0L3QuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn0L/QvtGB0YLQv9GA0L7QtNGD0LrRgtC40LLQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ9C/0YDQtdC/0YDQvtC00YPQutGC0LjQstC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn0L/RgNC+0LTRg9C60YLQuNCy0L3QuNC5JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1INC00Y7QudC80ZbQsiAoNDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEg0LTRjtC50LwgKDUzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1INC00Y7QudC80LAgKDY2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSDQtNGO0LnQvNCwICg4MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS3QtNGO0LnQvNC+0LLQsCDRgdGC0ZbQudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1INC00Y7QudC80LAgKDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSDQtNGO0LnQvNGW0LIgKDg4LDkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEt0LTRjtC50LzQvtCy0LAg0YHRgtGW0LnQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSDQtNGO0LnQvNGW0LIgKDk3LDc5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLdC00Y7QudC80L7QstCwINGB0YLRltC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYg0LTRjtC50LzQsCAoNjAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiDQtNGO0LnQvNC4ICgxMDYsNjgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1INC00Y7QudC80ZbQsiAoMTIwLDAyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUg0LTRjtC50LzQsCAoOCw4OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1INC00Y7QudC80LAgKDEzMywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUg0LTRjtC50LzQsCAoODAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSDQtNGO0LnQvNGW0LIgKDE0Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQg0LTRjtC50LzQsCAoOTAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyDQtNGO0LnQvNC4ICgxNjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCDQtNGO0LnQvNCwICgxMDAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSDQtNGO0LnQvNGW0LIgKDE3MywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1INC00Y7QudC80LAgKDEzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUg0LTRjtC50LzQsCAoMTg2LDY5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzINC00Y7QudC80LAgKDExMDAg0LzQvCk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSDQtNGO0LnQvNGW0LIgKDIwMCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyINC00Y7QudC80LAgKDEyMDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0INC00Y7QudC80LggKDIxMywzNiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3INC00Y7QudC80ZbQsiAoMTcsNzgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSDQtNGO0LnQvNCwICgyMiwyMyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1INC00Y7QudC80ZbQsiAoMjYsNjcg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1INC00Y7QudC80LAgKDMxLDEyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCDQtNGO0LnQvNGW0LIgKDM1LDU2INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSDQtNGO0LnQvNCwICg0MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ9CR0YPRhdCz0LDQu9GC0LXRgNGB0YzQutC40Lkg0L7QsdC70ZbQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ9Cf0YDQuNGB0LLQvtGU0L3QvdGPINCw0LTRgNC10YHQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn0JDQtNC80ZbQvdGW0YHRgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn0JDQvdCw0LvQvtCz0L7QstC40Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfQotC40L8g0L/RgNC40LvQsNC00YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfQhNC80L3RltGB0YLRjCDQsNC60YPQvNGD0LvRj9GC0L7RgNCwICjQkNGHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfQotC40L8g0LHQsNGC0LDRgNC10ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfQsdGD0LTQuNC90L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn0IbQvdGC0LXRgNGE0LXQudGBINGI0LjQvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfQn9Cg0J7QptCV0KHQntCgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ9Ca0LvQsNGBINC/0YDQvtGG0LXRgdC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAn0ITQvNC90ZbRgdGC0YwgKNCT0JEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn0J/QvtGC0YPQttC90ZbRgdGC0Ywg0L3QsCDQvtC00L3RgyDQstGW0LTQtdC+0LrQsNGA0YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0LrQsNGA0YLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn0JfRh9C40YLRg9Cy0LDRhyDQutCw0YDRgtC+0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAn0KLQuNC/INC60LDRgNGC0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn0JrQu9GW0ZTQvdGC0YHRjNC60ZYg0YHQtdGA0YLQuNGE0ZbQutCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfQmtC70ZbRlNC90YLRgdGM0LrQtSDQv9GA0L7Qs9GA0LDQvNC90LUg0LfQsNCx0LXQt9C/0LXRh9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ9Ca0LDRgtC10LPQvtGA0ZbRjyDQutC70ZbRlNC90YLRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ9Ci0LDQutGC0L7QstCwINGH0LDRgdGC0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfQotCw0LrRgtC+0LLQsCDRh9Cw0YHRgtC+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn0KHQtdGA0YLQuNGE0ZbQutCw0YLQuCDQutC+0LTQvtCy0L7Qs9C+INC/0ZbQtNC/0LjRgdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICfQmtC+0L3RhNC10YDQtdC90YYt0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0ZbRgCDQv9GA0L4g0L3QsNC00LDQvdC90Y8g0LrQvtC90YHRg9C70YzRgtCw0YbRltC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfQmtC+0L3RgtCw0LrRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfQl9CyXCfRj9C30LDRgtC40YHRjyDQtyDQtNC40YHRgtGA0LjQsVwn0Y7RgtC+0YDQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70ZbQvdC90Y8g0LrQvtC90YLQtdC50L3QtdGA0LDQvNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAn0JrQvtC90YLRgNCw0LrRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn0KLQuNC/INC60L7QvdGC0YDQsNC60YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ9Cf0LXRgNGW0L7QtCDQtNGW0Zcg0LrQvtC90YLRgNCw0LrRgtGDINCy0ZbQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICfQotC10YDQvNGW0L0g0LTRltGXINC60L7QvdGC0YDQsNC60YLRgyDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ9CR0LXQt9C00YDQvtGC0L7QstC40Lkg0YLQtdC70LXRhNC+0L0gKERFQ1Qt0YLQtdC70LXRhNC+0L0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ9Ce0LTQuNC90LjRhtGPINCy0LjQvNGW0YDRgyDQstC40YLRgNCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfQmtGW0LvRjNC60ZbRgdGC0Ywg0LvRltGG0LXQvdC30ZbQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAn0JTQsNGC0LAg0YHRgtCy0L7RgNC10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICfQodC/0LXRhtGW0LDQu9GM0L3QuNC5INGB0YLQtdC70LDQtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDQt9Cw0YDQtdC30LXRgNCy0L7QstCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLdGB0LXRgNCy0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn0JTQsNGC0LAg0ZbQvdCy0L7QudGB0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ9CU0LDRgtCwINC30LDQvNC+0LLQu9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfQlNCw0YLQsCDQv9C+0YfQsNGC0LrRgyDQtNGW0Zcg0LPQsNGA0LDQvdGC0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfQlNCw0YLQsCDQstC40L/Rg9GB0LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn0KDQvtCx0L7Rh9C40Lkg0YHRgtGW0LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNGW0LrQsNGC0Lgg0L/RltC00L/QuNGB0LDQvdC90Y8g0LTQvtC60YPQvNC10L3RgtGW0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ9Ch0LXRgNGC0LjRhNGW0LrQsNGC0Lgg0LXQu9C10LrRgtGA0L7QvdC90L7RlyDQv9C+0YjRgtC4IChTL01JTUUg0YHQtdGA0YLQuNGE0ZbQutCw0YLQuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn0KLRgNGD0LTQvtCy0LjQuSDQtNC+0LPQvtCy0ZbRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ9Ca0ZbQvdGG0LXQstCwIElQLdCw0LTRgNC10YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ9Ca0ZbQvdC10YbRjCDQv9GW0LTRgtGA0LjQvNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfQotC10YDQvNGW0L0g0L/RgNC40LTQsNGC0L3QvtGB0YLRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn0JfQvtCy0L3RltGI0L3RltC5INC20L7RgNGB0YLQutC40Lkg0LTQuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfQkdGA0LDQvdC00LzQsNGD0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ9Cf0YDQvtGI0LjQstC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICfQndCw0LrQvtC/0LjRh9GD0LLQsNGHINC10L3QtdGA0LPRltGXINC80LDRhdC+0LLQuNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICfQpNC+0YDQvC3RhNCw0LrRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLRltGAINGE0YDQsNC90YfQsNC50LfQuNC90LPRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9CR0LXQt9C60L7RiNGC0L7QstC90LUg0L/RgNC+0LPRgNCw0LzQvdC1INC30LDQsdC10LfQv9C10YfQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfQl9Cw0LPQsNC70YzQvdCwINGW0L3RhNC+0YDQvNCw0YbRltGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn0JLRltC00LXQvtC60LDRgNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ9CS0ZbQtNC10L7QutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn0JDQv9Cw0YDQsNGC0L3QtSDQt9Cw0LHQtdC30L/QtdGH0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfQnNC+0LTQtdC70Ywg0L7QsdC70LDQtNC90LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn0JLQsNCz0LAg0L7QsdC70LDQtNC90LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ9CT0LDRgNC90ZbRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ9Cf0YDQvtGC0L7QutC+0LsgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn0KPQv9GA0LDQstC70ZbQvdC90Y8g0ZbQtNC10L3RgtC40YTRltC60LDRhtGW0ZTRjiDRgtCwINC00L7RgdGC0YPQv9C+0LwgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ9CG0L3QstC10L3RgtCw0YDQvdC40Lkg0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgNCw0YXRg9C90LrRgy3RhNCw0LrRgtGD0YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ9Ca0LvQsNCy0ZbQsNGC0YPRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ9Cg0Jot0LzQvtC90ZbRgtC+0YAgKNGA0ZbQtNC60L7QutGA0LjRgdGC0LDQu9GW0YfQvdC40Lkg0LTQuNGB0L/Qu9C10LkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICfQodCy0ZbRgtC70L7QtNGW0L7QtNC90LjQuSDQvNC+0L3RltGC0L7RgCAo0YHQstGW0YLQu9C+0LTRltC+0LTQuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn0KHRgtCw0YbRltC+0L3QsNGA0L3QuNC5INGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9Cd0L7Rg9GC0LHRg9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn0KjQuNGA0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn0KDRltCy0LXQvdGMIDE6INCk0ZbQt9C40YfQvdC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCAyOiDQmtCw0L3QsNC70YzQvdC40Lkg0YDRltCy0LXQvdGMINC/0LXRgNC10LTQsNGH0ZYg0LTQsNC90LjRhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn0KDRltCy0LXQvdGMIDM6INCc0LXRgNC10LbQtdCy0LjQuSDRgNGW0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn0KDRltCy0LXQvdGMIDM6INCc0LXRgNC10LbQtdCy0LjQuSDRgNGW0LLQtdC90YwgKNGB0YPQv9C10YDQvNC10YDQtdC20LApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCA0OiDQotGA0LDQvdGB0L/QvtGA0YLQvdC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgNTog0KDRltCy0LXQvdGMINGB0LXQsNC90YHRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgNjog0KDRltCy0LXQvdGMINC/0YDQtdC30LXQvdGC0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgNzog0L/RgNC40LrQu9Cw0LTQvdC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLRltGAINC+0YDQtdC90LTQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ9Cb0ZbRhtC10L3Qt9GW0LnQvdCwINGD0LPQvtC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ9Cb0ZbRhtC10L3Qt9GW0LnQvdC40Lkg0LrQu9GO0YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn0KLQuNC/INC70ZbRhtC10L3Qt9GW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ9Ci0LXRgNC80ZbQvSDQtNGW0Zcg0LvRltGG0LXQvdC30ZbRlyDQstGW0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICfQotC10YDQvNGW0L0g0LTRltGXINC70ZbRhtC10L3Qt9GW0Zcg0LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn0JvRltGC0ZbQuS3Qt9Cw0LvRltC30L4t0YTQvtGB0YTQsNGC0L3QuNC5IChMaUZlUE80KSDQsNC60YPQvNGD0LvRj9GC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn0JvRltGC0ZbQuS3RltC+0L3QvdC40LkgKExpLWlvbikg0LDQutGD0LzRg9C70Y/RgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICfQmtGA0LXQtNC40YLQvdC40Lkg0LTQvtCz0L7QstGW0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ9Cg0L7Qt9GC0LDRiNC+0LLQsNC90LjQuSDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfQlNC+0LLQs9C+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ9CS0LjRgNC+0LHQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0L3QsNCy0LDQvdGC0LDQttGD0LLQsNC70YzQvdCwINC30LTQsNGC0L3RltGB0YLRjCAo0JLRgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn0J/QsNC8XCfRj9GC0YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICfQotC40L8g0L/QsNC8XCfRj9GC0ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ9Cc0ZbQvdGWLdGB0YLQtdC70LDQtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvNC+0LHRltC70YzQvdC+0LPQviDRgtC10LvQtdGE0L7QvdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ9Cc0L7QsdGW0LvRjNC90LjQuS/QstCx0YPQtNC+0LLQsNC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9Cc0L7QtNC10LvRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ9Ce0L/QuNGBINC80L7QtNC10LvRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfQoNC+0LfQtNGW0LvRjNC90LAg0LfQtNCw0YLQvdGW0YHRgtGMINC80L7QvdGW0YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn0KDQvtC30LzRltGAINC80L7QvdGW0YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQnNC40YjQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ9Cc0LXRgNC10LbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfQhtC90YTQvtGA0LzQsNGG0ZbRjyDQv9GA0L4g0LzQtdGA0LXQttGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfQhtC90YTQvtGA0LzQsNGG0ZbRjyDQv9GA0L4g0LzQtdGA0LXQttGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfQnNC10YDQtdC20LXQstC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn0J3RltC60LXQu9GMLdC60LDQtNC80ZbRlNCy0ZYgKE5pQ2QpINCw0LrRg9C80YPQu9GP0YLQvtGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfQndGW0LrQtdC70Ywt0LzQtdGC0LDQuy3Qs9GW0LTRgNC40LTQvdC40LkgKE5pTUgpINCw0LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ9Cj0LPQvtC00LAg0L/RgNC+INC90LXRgNC+0LfQs9C+0LvQvtGI0LXQvdC90Y8gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfQkdC70L7QutC90L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQv9GA0L7RhtC10YHQvtGA0ZbQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICfQmtGW0LvRjNC60ZbRgdGC0Ywg0LzQvtC00YPQu9GW0LIg0L7Qv9C10YDQsNGC0LjQstC90L7RlyDQv9Cw0LxcJ9GP0YLRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICfQmtGW0LvRjNC60ZbRgdGC0Ywg0LLRltC00LXQvtC60LDRgNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELdC80L7QvdGW0YLQvtGAICjQvtGA0LPQsNC90ZbRh9C90LjQuSDRgdCy0ZbRgtC70L7QtNGW0L7QtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn0J7Qv9C10YDQsNGG0ZbQudC90ZYg0LLQuNGC0YDQsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQt9Cw0LzQvtCy0LvQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ9CG0L3RiNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQoNC10LfRg9C70YzRgtCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICfQn9CG0J0t0JrQntCUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOLdCa0J7QlCAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ9CR0JvQrtCS0J7QotCQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn0J/QsNGA0YLQvdC10YDRgdGM0LrQsCDRg9Cz0L7QtNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfQotC40L8g0YLQtdC70LXRhNC+0L3Rgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ9Ck0ZbQt9C40YfQvdGWINGP0LTRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn0J/QvtGB0YLQsNGH0LDQvdC90Y8g0LXQu9C10LrRgtGA0L7QtdC90LXRgNCz0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ9Cf0YDQuNC00LHQsNC90L4g0LfQsCDQsNC00YDQtdGB0L7Rjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn0JPQu9C40LHQuNC90LAg0YHRgtGW0LnQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn0KHRgtC10LvQsNC20L3RliDQsdC70L7QutC4IChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn0JrRltC80L3QsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0t0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNGW0LrQsNGC0LggU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ9CU0L7Qs9C+0LLRltGAINC60YPQv9GW0LLQu9GWLdC/0YDQvtC00LDQttGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ9Ch0YPQv9GD0YLQvdC40LrQvtCy0LjQuSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICfQk9C10YDQvNC10YLQuNGH0L3QuNC5INGB0LLQuNC90YbQtdCy0L4t0LrQuNGB0LvQvtGC0L3QuNC5IChTTEEpINCw0LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn0KHQtdGA0ZbQudC90LjQuSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ9Ch0LXRgNCy0LXRgNC90LUg0L/RgNC+0LPRgNCw0LzQvdC1INC30LDQsdC10LfQv9C10YfQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLRltGAINC/0YDQviDQvdCw0LTQsNC90L3RjyDQv9C+0YHQu9GD0LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfQodC10YDQstGW0YHQvdC40Lkg0YLQtdCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ9Ci0LjQvyDRgNC+0LfQtdGC0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ9Cf0YDQvtCz0YDQsNC80L3QtSDQt9Cw0LHQtdC30L/QtdGH0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICfQodC/0ZbQutC10YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfQodGC0LDQvdC00LDRgNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICfQn9C+0YfQsNGC0LrQvtCy0LAgSVAt0LDQtNGA0LXRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfQl9Cx0LXRgNGW0LPQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ9Cg0L7Qt9C00ZbQuyDQtNC70Y8g0LfQsdC10YDRltCz0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfQlNC+0YfRltGA0L3RlCDQv9GW0LTQv9GA0LjRlNC80YHRgtCy0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ9Cf0ZbQtNGB0YPQvNC+0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfQotC+0L3QutC40Lkg0LrQu9GW0ZTQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfQndC40YLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn0JHQu9C40YHQutCw0LLQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn0JfQsNCz0LDQu9GM0L3QuNC5INC+0LHRgdGP0LMg0L7Qv9C10YDQsNGC0LjQstC90L7RlyDQv9Cw0LxcJ9GP0YLRliDQstGW0LTQtdC+0LrQsNGA0YLQuCAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfQl9Cw0LPQsNC70YzQvdCwINC+0L/QtdGA0LDRgtC40LLQvdCwINC/0LDQvFwn0Y/RgtGMICjQk9CRKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn0KHQtdC90YHQvtGA0L3QuNC5INC80L7QvdGW0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn0JLQtdC20LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi3QutC+0L3RhtC10L3RgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi3Qs9Cw0YDQvdGW0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC3RgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn0JLQtdCxLdC60LDQvNC10YDQsCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/vi_VN_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnZpX1ZOX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdC4bqhbiBjw7MgdGjhuq10IHPhu7EgbXXhu5FuIHhvw6EgxJHDoXAgw6FuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUcuG6oW5nIHRow6FpIHRyaeG7g24ga2hhaSBj4bunYSDEkeG7kWkgdMaw4bujbmcgbsOgeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUcuG6oW5nIHRow6FpIHRyaeG7g24ga2hhaSBj4bunYSDEkeG7kWkgdMaw4bujbmcgbsOgeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnVHLhuqFuZyB0aMOhaSBz4buxIGPhu5EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1ThuqFvIGzhuqduIGPhuq1wIG5o4bqtdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ+G6pXUgaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSBoaeG7h24gdGjhu51pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1RoYXkgxJHhu5VpIGzhuqduIGN14buRaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdUaGF5IMSR4buVaSBs4bqnbiBjdeG7kWknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdUaGFtIGNoaeG6v3UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdIb+G6oXQgxJHhu5luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnQ+G6o25oIGLDoW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Ry4bqhbmcgdGjDoWkgdHJp4buDbiBraGFpIGPhu6dhIMSR4buRaSB0xrDhu6NuZyBuw6B5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVHLhuqFuZyB0aMOhaSB0cmnhu4NuIGtoYWkgY+G7p2EgxJHhu5FpIHTGsOG7o25nIG7DoHknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdLaMO0bmcgY8OzIHF1eeG7gW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSBoaeG7h24gdGjhu51pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0dp4buvYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfEkMOjIGjhur90IGjhuqFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnQuG6o28gdHLDrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnVGhlbyBr4bq/IGhv4bqhY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnU+G7rWEgY2jhu69hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdLaMO0bmcgc+G7rSBk4bulbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnVGjhuqltIMSR4buLbmgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ0tp4buDbSB0cmEvSOG7j2kgxJHDoXAnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQ+G6pXUgaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnxJDhu4tuaCBuZ2jEqWEgbeG7mXQgbcO0LcSRdW4gdOG7lW5nIHF1w6F0IMSR4buDIGhp4buDbiB0aOG7iyBt4buZdCBkYW5oIHPDoWNoIGto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdD4bqldSBoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdOaMOibiDEkcO0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnVHLhuqFuZyB0aMOhaSBz4buxIGPhu5EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ1Ry4bqhbmcgdGjDoWkgc+G7sSBj4buRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Thu5VuZyBxdWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnVGhhbSBz4buRIGNobyBuaMOzbSBj4bqlcCBwaMOpcCBj4bunYSB0aHXhu5ljIHTDrW5oIGRhbmggbeG7pWMgY2h1bmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4Mgc+G7rWEga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4Mgc+G7rWEga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4Mgc+G7rWEga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHF1YXkgbOG6oWkgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4Mgc+G7rWEga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4Mgc+G7rWEga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ1F14bqjbiBsw70gdGjhu51pIGdpYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnVG/DoCBuaMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdHaWFvIGRp4buHbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnTcOheSDEkeG7gyBiw6BuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ1Bo4bqnbiBt4buBbSBtaeG7hW4gcGjDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdCw6BuIHBow61tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdNw6F5IHjDoWNoIHRheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnQ2jhu6duZyBsb+G6oWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ0NodeG7mXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0tow6FjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdL4bq/dCBxdeG6oyB04burJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUGjDsm5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnVGhv4bqjIHRodeG6rW4gTeG7qWMgxJHhu5kgROG7i2NoIHbhu6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1Rpw6p1IGNodeG6qW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/zh_CN_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzov5DooYzmlbDmja4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+aOpeaUtuivt+axguaVsOaNrueahOiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+WkluWPkeWTjeW6lOaVsOaNrueahOiuvue9ric7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+euoeeQhumFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+S/ruaUueexu+WumuS5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5pu05pS56KeS6Imy5a6a5LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOexu+WMhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+WcqOi/memHjO+8jOaCqOWPr+S7peWvvOWFpSBSZWFkeTJJbXBvcnQg57G75o2G57uR5YyF77yM5YW25Lit5bGV56S65LqG5oiR5Lus5pyA5bi455So55qE6YWN572u6aG544CC6K+35rOo5oSP77yM5Y+v6IO96ZyA6KaB5LiA5Lqb6aKd5aSW55qE6YWN572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+abtOaWsOeOsOacieWunuS9kyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ+WvvOWFpSBSZWFkeTJBZG9wdCDnsbvmjYbnu5HljIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfphY3nva7pobnnsbsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ+mFjee9rumhueS9nOeUqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn57G76L+H5ruk5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+WFiOS7juWIl+ihqOS4remAieaLqeexu++8jOeEtuWQjuWIm+W7uuaWsOeahOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+exuyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00g6YWN572u6aG5IOaJuemHj+aTjeS9nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn6YOo572y54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn5LqL5Lu254q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ+mTvuaOpeWIsOWFtuS7lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn5peg5pWI55qE6YWN572u6aG557yW5Y+377yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ+WwhuimgemTvuaOpeeahOWPpuWkluS4gOS4qumFjee9rumhuee8luWPt+OAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+S9oOecn+eahOaDs+imgeWIoOmZpOi/meS4qumFjee9rumhueWQlz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn5Li66L+Z5Liq6YWN572u6aG55ZG95ZCNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfnvJblj7fkuLoocyk6JXPnmoTphY3nva7pobnlt7Lnu4/kvb/nlKjkuobmraTlkI3lrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfniYjmnKzlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ivpemFjee9rumhueeahOeJiOacrOWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+eJiOacrOWPt+W3suiiq+mFjee9rumhueS9v+eUqO+8jOWFtue8luWPt+WmguS4i++8miVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfmlYXpmpznirbmgIEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ+mFjee9rumhue+8miVzIOeahOWOhuWPsuS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfljoblj7LlgLwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+WIm+W7uuaXtumXtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfor6bmg4Xop4blm74nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn5q+P6aG16YWN572u6aG55Liq5pWwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfmnKrmib7liLDphY3nva7pobnmlbDmja7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfpgInmi6nor6XphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfmkJzntKInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfphY3nva7pobnmoJHlvaLop4blm74nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfmt7HluqbnrYnnuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICfmlL7lpKcv57yp5bCPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0NvbmZpZ0l0ZW0g5bey6L6+5Yiw5pyA5aSn6ZO+5o6l57qn5Yir77yBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ+mFjee9rumhueS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICflvZPliY3nmoTpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ+W9k+WJjeeahOaVhemanOeKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfmnIDlkI7kv67mlLknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn5pyA5ZCO5L+u5pS55Lq6JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn5oKo55qE6YWN572u6aG5JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ+mFjee9rumhueaQnOe0oic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+WwhuWvvOWFpeS7peS4i+exu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICflsIblr7zlhaXku6XkuIvop5LoibInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn6K+35rOo5oSP77yM5Lmf5Lya5Yib5bu655u45bqU55qE5Yqo5oCB5a2X5q615ZKMIEdlbmVyYWxDYXRhbG9nIOexu++8jOiAjOS4lOS4jeS8muiHquWKqOWIoOmZpOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ+aCqOimgee7p+e7rei/m+ihjOWQl++8nyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfpnIDopoHnpLrkvovnsbvvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn5a6a5LmJ5rKh5pyJ5pyJ5pWI55qEIFlBTUwg5ZOI5biM5YC844CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTemFjee9rumhueamguiniCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfmsqHmnInmjIflrprphY3nva7poblJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ+aCqOiHs+WwkemcgOimgeS4gOS4qumAieWumueahOmFjee9rumhue+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ+S9oOayoeacieatpOmFjee9rumhueeahOWGmeadg+mZkO+8miVz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ+ayoeacieexuyAlc+eahOWumuS5ie+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn5Zyo5pWw5o2u5bqT5Lit5om+5LiN5Yiw6YWN572u6aG54oCcJXPigJ3vvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfml6Dms5XliKDpmaTphY3nva7poblJRCAlc++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAn5om+5LiN5Yiw6YWN572u6aG5SUQlc+eahOeJiOacrO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfmsqHmnInmjIflrprphY3nva7poblJROOAgUR1cGxpY2F0ZUlE5oiWQ2xhc3NJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ6K6/6Zeu5p2D6ZmQ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+S4jeiDveaYvuekuuWOhuWPsuS/oeaBr++8jOWboOS4uuayoeacieaMh+WumumFjee9rumhuUlE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5peg5rOV5pi+56S65Y6G5Y+y6K6w5b2V77yM5Zug5Li65rKh5pyJ6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfmlrDlu7rphY3nva7pobnvvIhJRD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn5paw5bu654mI5pys77yISUQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfpg6jnvbLnirbmgIHlt7Lmm7TmlrDvvIjmlrA9JXPvvIzml6c9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5pWF6Zqc54q25oCB5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn6YWN572u6aG577yISUQ9JXPvvInlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfliLAlc+mTvuaOpeeahO+8iOexu+Weiz0lc++8ieW3sua3u+WKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn5YiwJXPpk77mjqXnmoTvvIjnsbvlnos9JXPvvInlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ+mFjee9rumhueWumuS5ieW3suabtOaWsO+8iElEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5ZCN56ew5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn5bGe5oCnJXPlt7Lku47igJwlc+KAneabtOaWsOS4uuKAnCVz4oCdJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ+eJiOacrCVzIOW3suWIoOmZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICfmsqHmnInmjIflrprphY3nva7poblJROaIlueJiOacrElE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+aXoOazleaYvuekuumFjee9rumhue+8jOWboOS4uuayoeacieiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+WcqOaVsOaNruW6k+S4reaJvuS4jeWIsOmFjee9rumhuUlEICVz77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ+aJk+WNsOS6uu+8miVzIO+8jOaJk+WNsOaXpeacn++8miVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdBQ0zorr7nva7lj4LogIMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfml6DmlYjnmoTnsbtJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+Wumuexu0lE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn5rKh5pyJ6L+Z5Liq5oyH5a6a57G755qE6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfml6Dnu5PmnpzvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfphY3nva7pobnmkJzntKLnu5PmnpwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ+aXoOazleaYvuekuumFjee9rumhue+8jOWboOS4uuayoeaciee7meWumumFjee9rumhueeahOiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfmnKrmib7liLDphY3nva7pobnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn5pyq5om+5Yiw5Lu75L2V54mI5pys77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn5q2j5bi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICforablkYonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfmlYXpmpwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhuemDqOe9sueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhueaVhemanOeKtuaAgSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ+ayoeacieadg+mZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfov4fmu6Tlmajml6DmlYjvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ+aQnOe0ouWPguaVsOaXoOaViO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ+W3suaYvuekuueahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfpg6jnvbLnirbmgIHnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn5b2T5YmN55qE5pWF6Zqc54q25oCB57G75Z6LJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ+aXtumXtOWMuumXtCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aG555qE57G75Yir6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfpgInmi6nkuIDkuKrmiJblpJrkuKrnsbvliKvmnaXpmZDliLblj6/pgInmi6nnmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhueeahOexu+WIq+mZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+mAieaLqeS4gOS4quaIluWkmuS4quexu+WIq+adpemZkOWItuWPr+mAieaLqeeahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ+WKqOaAge+8iENvbmZpZ0l0ZW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ+mdmeaAge+8iOeJiOacrO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfpk77mjqXlvJXnlKjnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn5q2k6ZO+5o6l6YCC55So5LqO5byV55So5a+56LGh55qE6YWN572u6aG56L+Y5piv6Z2Z5oCB54mI5pys44CC5b2T5YmN5LqL5Lu254q25oCB6K6h566X5LuF5Zyo5Yqo5oCB6ZO+5o6l5LiK5omn6KGM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn6YCJ5oup5pCc57Si6YWN572u6aG555qE5bGe5oCnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfln7rnoYDnu5PmnoTml6DmlYjjgILor7fmj5DkvpvljIXlkKsgWUFNTCDmoLzlvI/mlbDmja7nmoTlk4jluIzlgLzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICflv4Xpobvku6UiLS0tIuW8gOWniyBZQU1MIOWtl+espuS4suOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICfml6Dms5XmuIXpmaTooaggY29uZmlnaXRlbV9saW5r44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfmnKrmib7liLDnm7jlhbPliqjmgIHlrZfmrrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICfml6Dms5Xmj5LlhaXooaggY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICflkJHooaggY29uZmlnaXRlbV9saW5rIOaPkuWFpeS6hiAwIOadoeiusOW9lSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfljZXkuKrlhYPntKDnmoTmnIDlpKfmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAn54mI5pys5a2X56ym5LiyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ+WQjOatpeWumuS5ieaXtuWHuumUmeOAguivt+afpeeci+aXpeW/l+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ+aCqOeahCBJVFNNQ29uZmlnSXRlbSDlrprkuYnmnKrlkIzmraXjgILor7fpg6jnvbLmgqjnmoQgSVRTTUNvbmZpZ0l0ZW0g5Yqo5oCB5a2X5q615pu05pS544CCJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICflt7Lov4fmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfnu7TmiqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfor5XpqownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ+W3suiuoeWIkic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfkv67lpI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ+aKpeW6nyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICflpI3lrqEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ+a1i+ivlS/lk4HotKjkv53or4EnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ+amgui/sOWSjOehruiupCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICflr7zlhaXnsbsv6KeS6Imy5Y+K5YW255u45YWz5a2X5q61JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn57G75a+85YWl5pe25Y+R55Sf6ZSZ6K+v44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDpmpDol48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIOaYvuekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn5YWB6K645Zyo5Luj55CG55WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5L2/55So5omp5bGV5pCc57Si5p2h5Lu244CC5Yip55So6K+l5Yqf6IO977yM5oKo5Y+v5Lul5L2/55SoIigqa2V5MSomJiprZXkyKikgIuaIliIoKmtleTEqfHwqa2V5MiopICLnrYnmnaHku7bmkJzntKLphY3nva7pobnlkI3np7DjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn5YWB6K645Zyo5a6i5oi355WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5L2/55So5omp5bGV5pCc57Si5p2h5Lu244CC5Yip55So6K+l5Yqf6IO977yM5oKo5Y+v5Lul5L2/55SoIigqa2V5MSomJiprZXkyKikgIuaIliIoKmtleTEqfHwqa2V5MiopICLnrYnmnaHku7bmkJzntKLphY3nva7pobnlkI3np7DjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn5bey5YiG6YWN55qE6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ+W3suWIhumFjee7meWuouaIt+WNleS9jeeahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ+W3suWIhumFjee7meWuouaIt+eUqOaIt+eahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQuiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn5qOA5p+l5piv5ZCm5Li65ZSv5LiA5ZCN56ew55qE6IyD5Zu05piv5LuF5ZyoXCdjbGFzc1wn77yI6YWN572u6aG557G777yJ5YaF6L+Y5pivXCdnbG9iYWxcJyjlhajlsYAp77yM5bCx5piv5Zyo5p+l5om+6YeN5aSN6YWN572u6aG55ZCN56ew5pe255qE6IyD5Zu044CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfpgInmi6nkuIDkuKrmqKHlnZfmnaXmiafooYzlkb3lkI3mlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ+mAieaLqeS4gOS4quaooeWdl+adpeaJp+ihjOaVsOWtl+aWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfpgInmi6nkuIDkuKrmqKHlnZfmnaXmiafooYzniYjmnKzlrZfnrKbkuLLmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfpgInmi6nop6blj5HliJvlu7rmlrDniYjmnKznmoTlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn6YCJ5oup6KaB5YiG6YWN57uZ5q2k6YWN572u6aG557G75Yir55qE57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAn6YWN572u6aG55qaC6KeI55qE5YiX6YWN572u6aG56L+H5ruk5Zmo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICflj6/lnKjku6PnkIbnlYzpnaLphY3nva7pobnmpoLop4jkuK3ov4fmu6TnmoTliJfjgILms6jmhI/vvJrlj6rlhYHorrjkvb/nlKjphY3nva7pobnlsZ7mgKflkozliqjmgIHlrZfmrrUgKER5bmFtaWNGaWVsZF9OYW1lWCnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICfmt7vliqDphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfnvJbovpHphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLnlKjkuo7orrDlvZXphY3nva7pobnkuovku7bliLDljoblj7LnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn6YWN572u6aG55LqL5Lu25qih5Z2X77yM55So5LqO5bCG6YWN572u6aG55pu05paw5Li65b2T5YmN5a6a5LmJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn6YWN572u6aG55Y6G5Y+y44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ+aJk+WNsOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ+mFjee9rumhueivpuaDheOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ+mFjee9rumhueagkeW9ouinhuWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICfphY3nva7pobnnm67niYjmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn5Lul5LiL57G75Yir55qE6YWN572u6aG55bCG5LiN5Lya5a2Y5YKo5ZyoIEVsYXN0aWNzZWFyY2gg5pyN5Yqh5Zmo5LiK44CC6KaB5bCG5q2k5bqU55So5LqO546w5pyJ55qEIENJ77yM5b+F6aG75Zyo5pu05pS55q2k6YCJ6aG55ZCO6YCa6L+H5o6n5Yi25Y+w6L+Q6KGMIENJIOi/geenu+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICflhbfmnInku6XkuIvpg6jnvbLnirbmgIHnmoTphY3nva7pobnlsIbkuI3kvJrlrZjlgqjlnKggRWxhc3RpY3NlYXJjaCDmnI3liqHlmajkuIrjgILopoHlsIbmraTlupTnlKjkuo7njrDmnInnmoQgQ0nvvIzlv4XpobvlnKjmm7TmlLnmraTpgInpobnlkI7pgJrov4fmjqfliLblj7Dov5DooYwgQ0kg6L+B56e744CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ+mFjee9rumhuemZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn5q+P5Liq6aG16Z2i5LiK55qE6YWN572u6aG56ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfphY3nva7nrqHnkIbmlbDmja7lupPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ+mFjee9rumhueaJueWkhOeQhuaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLnmoTphY3nva7pobnmkJzntKLlkI7nq6/ot6/nlLHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ+WIm+W7uuWSjOeuoeeQhumFjee9rumhueWumuS5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ+WcqOeJueWumuaXtumXtOeCueS4uiBDb25maWdJdGVtcyDliJvlu7ogVGlja2V0c+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICflrqLmiLflj6/ku6Xmn6XnnIvljoblj7IgQ0kg54mI5pys44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ+WuouaIt+WPr+S7peaJi+WKqOWIh+aNouWOhuWPsiBDSSDniYjmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICflnKjphY3nva7pobnmkJzntKLlsY/luZXnmoTlsZ7mgKfkuIrkvb/nlKjnmoTpu5jorqTmlbDmja7jgILkvovlpoLvvJoiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9Mjsi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn5Zyo6YWN572u6aG55pCc57Si5bGP5bmV55qE5bGe5oCn5LiK5L2/55So55qE6buY6K6k5pWw5o2u44CC5L6L5aaC77yaIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn5a6a5LmJ6ZO+5o6l5a+56LGh5bCP6YOo5Lu2KExpbmtPYmplY3Q6OlZpZXdNb2RlID0gXCJjb21wbGV4XCIp6K6+572u5oyJ6ZKu5Lit55qE5pON5L2c44CC6K+35rOo5oSP77yM6L+Z5Lqb5pON5L2c5b+F6aG75bey57uP5Zyo5Lul5LiLSlPlkoxDU1Pmlofku7bkuK3ms6jlhozvvJpDb3JlLkFsbG9jYXRpb25MaXN0LmNzc+OAgUNvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanPjgIEgQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz44CBQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanPlkoxDb3JlLkFnZW50LkxpbmtPYmplY3QuanPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ+S4uueJiOacrOWtl+espuS4suWumuS5ieS4gOS4qiBUZW1wbGF0ZTo6VG9vbGtpdCDmlrnmoYjjgILku4XlnKjniYjmnKzlrZfnrKbkuLLmqKHlnZforr7nva7kuLogVGVtcGxhdGVUb29sa2l0IOaXtuS9v+eUqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAn5a6a5LmJ5LiA57uE5YWB6K645a6i5oi35p+l55yL6YWN572u6aG555qE5p2h5Lu244CC5Y+v6YCJ5oup5bCG5p2h5Lu26ZmQ5Yi25Li65p+Q5Lqb5a6i5oi357uE44CC5ZCN56ew5piv5ZSv5LiA55qE5by65Yi25bGe5oCn44CC5aaC5p6c5rKh5pyJ57uZ5Ye65YW25LuW6YCJ6aG577yM5YiZ6K+l57G75Yir5LiL55qE5omA5pyJ6YWN572u6aG56YO95bCG5Y+v6KeB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6PliKDpmaRJVFNN6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6Pojrflj5ZJVFNN6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6PmkJzntKJJVFNN6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6Porr7nva4gSVRTTSDphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn5a6a5LmJ5pi+56S66YWN572u6aG55YiX6KGo566A5rSB6KeG5Zu+55qE5qaC6KeI5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ+WumuS5ieaYr+WQpuW/hemhu+WcqOiKgueCuei/nuaOpeS4reaYvuekuumTvuaOpeexu+Wei+agh+etvuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn5Li65q+P5Liq6YWN572u6aG557G75a6a5LmJ54us56uL55qE5q2j5YiZ6KGo6L6+5byP77yM5Lul5qOA5p+l6YWN572u6aG55ZCN56ew5bm25pi+56S655u45bqU55qE6ZSZ6K+v5raI5oGv44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn5qC55o2uIENJIOexu+WIq+WumuS5iemFjee9rumhueamguiniOS4rSBDSSDnmoTlj6/nlKjliJfjgILmr4/kuKrmnaHnm67lv4XpobvljIXlkKvkuIDkuKrnsbvlkI3lkoznm7jlupTnsbvnmoTlj6/nlKjlrZfmrrXmlbDnu4TjgILliqjmgIHlrZfmrrXmnaHnm67lv4XpobvpgbXlroggRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS7o+eQhueVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4remFjee9rumhueaOkuW6j+eahOm7mOiupOmFjee9rumhueWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi355WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit6YWN572u6aG55o6S5bqP55qE6buY6K6k6YWN572u6aG55bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn5a6a5LmJ5q2k5pON5L2c55qE6YWN572u6aG55pCc57Si57uT5p6c55qE6YWN572u6aG55o6S5bqP6buY6K6k6YWN572u6aG55bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnku6PnkIbnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3nmoTpu5jorqTphY3nva7pobnpobrluo/jgILkuIrvvJrmnIDml6fnmoTlnKjmnIDliY3pnaLjgILkuIvvvJrmnIDmlrDnmoTlnKjkuIrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt+eVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4reeahOm7mOiupOmFjee9rumhuemhuuW6j+OAguS4iu+8muacgOaXp+eahOWcqOacgOWJjemdouOAguS4i++8muacgOaWsOeahOWcqOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn5qC55o2uIENJIOexu+WumuS5iemFjee9rumhueamguiniOS4rem7mOiupOaYvuekuueahCBDSSDliJfjgILmr4/kuKrmnaHnm67lv4XpobvljIXlkKvkuIDkuKrnsbvlkI3lkoznm7jlupTnsbvnmoTlj6/nlKjlrZfmrrXmlbDnu4TjgILliqjmgIHlrZfmrrXmnaHnm67lv4XpobvpgbXlroggRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn5a6a5LmJ6buY6K6k5pi+56S655qE5YWz57O75rex5bqm44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5iemFjee9rumhueebruaQnOe0oueVjOmdoum7mOiupOaYvuekuueahOmFjee9rumhueebruaQnOe0ouWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn5a6a5LmJ6YWN572u6aG55pCc57Si5bGP5bmV6buY6K6k5pi+56S655qE6YWN572u6aG55pCc57Si5bGe5oCn44CCRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTpTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc077ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAx77ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNu+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAw77ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMe+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTnvvJtcJ+WSjOaIliBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ+WumuS5iVwnSVRTTUNvbmZpZ0l0ZW1cJ+exu+eahOm7mOiupOWtkOWvueixoeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn5qC55o2uIENJIOexu+WIq+WumuS5iemFjee9rumhueamguiniOS4rSBDSSDnmoTlj6/nlKjliJfjgILmr4/kuKrmnaHnm67lv4XpobvljIXlkKvkuIDkuKrnsbvlkI3lkoznm7jlupTnsbvnmoTlj6/nlKjlrZfmrrXmlbDnu4TjgILliqjmgIHlrZfmrrXmnaHnm67lv4XpobvpgbXlroggRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn5a6a5LmJ5pys5bGP5bmV5a+M5paH5pys57yW6L6R5Zmo57uE5Lu255qE6auY5bqm44CC6L6T5YWl5pWw5YC877yI5YOP57Sg5YC877yJ5oiW55m+5YiG5q+U5YC877yI55u45a+55YC877yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOezu+e7n+euoeeQhumdouadv+S4reS/ruaUuemFjee9rumhueWumuS5ieeahOe8lui+keWZqOeahOihjOaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICflrprkuYnmlYXpmpznirbmgIHku47pq5jvvIjlpoLntKfmgKXvvInliLDkvY7vvIjlpoLmraPluLjvvInnmoTpobrluo/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICflrprkuYnlhbPogZTnmoTpg6jnvbLnirbmgIHvvIzljbPpk77mjqXnmoTlt6XljZXlj6/ku6XlvbHlk43phY3nva7pobnnirbmgIHnmoTmg4XlhrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICflrprkuYlBZ2VudElUU01Db25maWdJdGVt77yI5pyN5Yqh5Lq65ZGY6YWN572u6aG577yJ56qX5Y+j55qE5pCc57Si6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaO+8iOacjeWKoeS6uuWRmOmFjee9rumhueaQnOe0ou+8ieeql+WPo+eahOaQnOe0oumZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt0lUU01Db25maWdJdGVtIOWxj+W5leeahOaQnOe0oumZkOWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt0lUU01Db25maWdJdGVtU2VhcmNoIOWxj+W5leeahOaQnOe0oumZkOWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICflnKjmiYDmnInphY3nva7pobnnsbvnmoTpk77mjqXooajlpI3mnYLop4blm77kuK3lrprkuYnopoHmmL7npLrnmoTphY3nva7pobnlrZfmrrXjgIIg5aaC5p6c5rKh5pyJ5p2h55uu77yM5YiZ5pi+56S66buY6K6k5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICflrprkuYnpk77mjqXooajlpI3lkIjop4blm77kuK3mjInphY3nva7pobnnsbvliIbnsbvmmL7npLrnmoTlrZfmrrXjgILmr4/kuKrmnaHnm67lnYfpnIDku6XnsbvlkI3kuLrliY3nvIDlho3liqDkuIrlj4zlhpLlj7fvvIjlpoLorqHnrpfmnLo6Ou+8ieOAguacieS4gOS6m+mFjee9rumhueWxnuaAp+aYr+aJgOaciemFjee9rumhuemDveacieeahO+8iOS+i+Wmgu+8jOWvueS6juiuoeeul+acuuexu++8muiuoeeul+acujo65ZCN56ew44CB6K6h566X5py6OjpDdXJEZXBsU3RhdGXlvZPliY3pg6jnvbLnirbmgIHjgIHorqHnrpfmnLo6OkNyZWF0ZVRpbWXliJvlu7rml7bpl7TvvInjgILopoHmmL7npLrlnKjphY3nva7pobnlrprkuYnkuK3lrprkuYnnmoTni6znibnnmoTphY3nva7pobnlsZ7mgKfvvIzlv4Xpobvkvb/nlKjkuIvpnaLnmoTmlrnmoYjvvIjkvovlpoLvvJrlr7nkuo7orqHnrpfmnLrnsbvvvJrorqHnrpfmnLo6OuehrOebmDo6MeOAgeiuoeeul+acujo656Gs55uYOjrlrrnph486OjHjgIHorqHnrpfmnLo6OuehrOebmDo6MuOAgeiuoeeul+acujo656Gs55uYOjoy6K6h566X5py6Ojrnoaznm5g6OjLvvInjgILlpoLmnpzkuIDkuKrphY3nva7pobnnsbvmsqHmnInmnaHnm67lrZjlnKjvvIzliJnkvb/nlKjlnKhJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1uc+S4reiuvue9rueahOm7mOiupOWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+WumuS5ieWTquS6m+mhueebruWPr+eUqOS6jiBJVFNNIENvbmZpZyDpobnnm64gQUNMIOe7k+aehOesrOS4ieWxguS4reeahCAi5pON5L2cIuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+WumuS5iSBJVFNNIENvbmZpZyDpobnnm64gQUNMIOe7k+aehOesrOS4gOWxguS4reeahOWPr+eUqOmhueebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICflrprkuYkgSVRTTSBDb25maWcg6aG555uuIEFDTCDnu5PmnoTnrKzkuozlsYLkuK3nmoTlj6/nlKjpobnnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn5a6a5LmJ5ZOq5LiA57G7KOS7juW3peWNleinkuW6puWRveWQjeeahCnpk77mjqXlj6/ku6XlvbHlk43kuIDkuKrpk77mjqXnmoTphY3nva7pobnnmoTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICflrprkuYnlk6rkuIDnsbvlt6XljZXlj6/ku6XlvbHlk43kuIDkuKrpk77mjqXnmoTphY3nva7pobnnmoTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICflrprkuYnmm7TmlrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+WIoOmZpOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ+mDqOe9sueKtuaAgeeahOminOiJsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn5aSN5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn5Yqo5oCB5a2X5q615LqL5Lu25qih5Z2X77yM55So5LqO5Zyo5YyF5ZCr55qE5Yqo5oCB5a2X5q615Y+R55Sf5Y+Y5YyW5pe25bCG6YWN572u6aG55a6a5LmJ5qCH6K6w5Li65LiN5ZCM5q2l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLnmoTpmYTliqBJVFNN5a2X5q6156qX5Y+j5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WuouaIt+eVjOmdoumFjee9rumhueebruamguiniOWxj+W5leS4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnmkJzntKLlsY/luZXkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5ZCv55So6YWN572u6aG55om56YeP5pON5L2c5Yqf6IO977yM5Y+v5Lul5LiA5qyh5aSE55CG5aSa5Liq6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICflj6rmnInliJfooajkuK3nmoTnu4TmiY3mnInmnYPpmZDkvb/nlKjphY3nva7pobnmibnph4/mk43kvZzlip/og73jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn5Zyo5bel5Y2VLemFjee9rumhueeahOmTvuaOpeS4reiuvue9rumFjee9rumhuS3nirbmgIHnmoTkuovku7bmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn6YWN572u6aG557Si5byV5a2X5q6177yM55So5LqO5YWo5paH5pCc57Si44CC5a2X5q615Lmf5Lya6KKr5a2Y5YKo77yM5L2G5a+55LqO5pW05L2T5Yqf6IO95p2l6K+05bm26Z2e5b+F6aG744CC5Y+v6YCa6L+H5bCG5p2h55uu6K6+572u5Li6IDAg5oiW5Yig6Zmk5p2l56aB55So6ZmE5Lu255qE5YyF5ZCr44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICflrZjlgqjlnKjphY3nva7pobnntKLlvJXkuK3nmoTlrZfmrrXvvIzpmaTnlKjkuo7lhajmlofmo4DntKLlpJbvvIzov5jlj6/nlKjkuo7lhbbku5bnlKjpgJTjgILkuLrkuoblrp7njrDlrozmlbTnmoTlip/og73vvIzmiYDmnInlrZfmrrXpg73mmK/lv4XloavlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfnlKjkuo4gQ29uZmlnSXRlbUZldGNoIOiwg+eUqOWxgueahCBHZW5lcmljSW50ZXJmYWNlIOaooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00g6YWN572u6aG555uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTemFjee9rumhueamguiniOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+S6i+S7tueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5YyF5ZCr6YOo572y54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdoueahOmFjee9rumhueebruaQnOe0ouS4reWMheWQq+S6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICflnKjmraTmk43kvZznu5PmnpzkuK3mmL7npLrnmoTphY3nva7pobnnmoTmnIDlpKfmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfnlKjkuo7mo4Dmn6XphY3nva7pobnnsbvnmoTnu4TmnYPpmZDnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfnlKjkuo7mo4Dmn6XphY3nva7pobnnmoTnu4TmnYPpmZDnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfnlKjkuo7nlJ/miJBJVFNN6YWN572u6aG557uf6K6h55qE5qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAn5ZCN56ew5qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICfnvJblj7fmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5pCc57Si57uT5p6c55qE5q+P5LiA6aG15Lit5pi+56S655qE6YWN572u6aG55pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WuouaIt+eVjOmdouaQnOe0oue7k+aenOavj+mhteaYvuekuueahOmFjee9rumhueaVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICfopoHmkJzntKLnmoTlr7nosaHjgIHmnaHnm67mlbDph4/ku6Xlj4ropoHmmL7npLrnmoTlsZ7mgKfjgILphY3nva7pobnlsZ7mgKflv4XpobvpgJrov4cgRWxhc3RpY3NlYXJjaCDmmI7noa7lrZjlgqjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn5qaC6KeI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvliKvnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflsI/phY3nva7pobnnm67mpoLop4jnmoTliJfov4fmu6Tlmajlj4LmlbDjgILor7fms6jmhI/vvJrlsIYgIkFjdGl2Ze+8iOa0u+WKqO+8iSLorr7nva7kuLogMCDlj6rkvJrpmLvmraLku6PnkIblnKjlhbbkuKrkurrlgY/lpb3orr7nva7kuK3nvJbovpHor6Xnu4TnmoTorr7nva7vvIzkvYbku43lhYHorrjnrqHnkIblkZjnvJbovpHlhbbku5bnlKjmiLfnmoTorr7nva7jgILkvb/nlKggIlByZWZlcmVuY2VHcm91cO+8iOWBj+Wlvee7hO+8iSLlj6/mjqfliLbov5nkupvorr7nva7lupTmmL7npLrlnKjnlKjmiLfnlYzpnaLnmoTlk6rkuKrljLrln5/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlgY/lpb3orr7nva7op4blm77kuK3nlKjkuo7pg6jnvbLnirbmgIHpopzoibLnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlgY/lpb3orr7nva7op4blm77kuK3nlKjkuo7pg6jnvbLnirbmgIHnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn55uu5b2V5bGe5oCn5qC35L6LLeadg+mZkOe7hOeahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+WQjeensOaooeWdl+eahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G75Yir55qE57yW5Y+35qih5Z2X5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ+aYvuekuumFjee9rumhueeahOmhtemdouWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvnmoTniYjmnKzlrZfnrKbkuLLmqKHlnZflj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfnlKjkuo7ku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvnmoTniYjmnKzlrZfnrKbkuLLmqKHmnb/lt6XlhbfljIXmqKHlnZflj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G755qE54mI5pys6Kem5Y+R5Zmo5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn5p2D6ZmQ57uEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu6ZmE5Lu25pON5L2c5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG556qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5L2/55SoSVRTTemFjee9rumhueaQnOe0oueql+WPo+mcgOimgeeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS9v+eUqCBJVFNNIOmFjee9rumhueebruaQnOe0ouWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebruagkeinhuWbvuWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG56K+m5oOF56qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5L2/55So5re75YqgSVRTTemFjee9rumhueeql+WPo+mcgOimgeeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKjmibnph48gSVRTTSDphY3nva7pobnnm67lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5L2/55So57yW6L6RSVRTTemFjee9rumhueeql+WPo+mcgOimgeeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG55Y6G5Y+y56qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG55omT5Y2w56qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfliKDpmaTphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfmkJzntKLphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+W9k+S4gOS4quW3peWNlemTvuaOpeWIsOS4gOS4qumFjee9rumhueaXtuiHquWKqOiuvue9rui/meS4qumFjee9rumhueeahOaVhemanOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueaJuemHj+aTjeS9nOeql+WPo+iuvue9rumDqOe9sueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnmibnph4/mk43kvZznqpflj6Porr7nva7kuovku7bnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlhYHorrjpk77mjqXphY3nva7pobnliLDlj6bkuIDlr7nosaHnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnmpoLop4jop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlhYHorrjorr/pl67phY3nva7pobnljoblj7LnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5YWB6K646K6/6Zeu6YWN572u6aG55Y6G5Y+y55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5Yig6Zmk6YWN572u6aG555qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICflnKjoj5zljZXkuK3mmL7npLrkuIDkuKrpk77mjqXvvIzku6XmoJHlvaLop4blm77mmL7npLrphY3nva7pobnpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnmpoLop4jop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlpI3liLbphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5aSN5Yi26YWN572u6aG555qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrnvJbovpHphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4qui/lOWbnumTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quaJk+WNsOmFjee9rumhueeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueamguiniOinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quafpeeci+mFjee9rumhueivpuaDheeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLmmL7npLrphY3nva7pobnljoblj7LvvIjlgJLluo/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn5aaC5p6c5pyq6YCJ5oup5Lu75L2V57G75Yir77yM5YiZ5pi+56S66buY6K6k57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfphY3nva7pobnmoIfor4bnrKbvvIzlpoJDb25maWdJdGVtI+OAgU15Q29uZmlnSXRlbSPvvIzpu5jorqTmmK9Db25maWdJdGVtI+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn6Ieq5Yqo6Kem5Y+RIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlmajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn54mI5pys5a2X56ym5Liy6KGo6L6+5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ+eJiOacrOWtl+espuS4suaooeWdlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfniYjmnKzop6blj5HlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAn5a2X5q615piv5ZCm6Ieq5Yqo5aGr5YWFKDEp77yMIOmCo+enjeaDheWGteS4i+WwhuS8muWcqOW3peWNleihqOS4remakOiXj+i1t+adpSgyKeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfmmK/lkKblj6/ku6XpgJrov4fmo4Dmn6XnvJPlrZjnmoTlrZfmrrXkvp3otZblhbPns7vmnaXpgb/lhY3miafooYwgQ29uZmlnSXRlbUFDTOOAgui/meWPr+S7pee8qeefreihqOagvOeahOWKoOi9veaXtumXtO+8jOS9huWmguaenOimgeWcqCBJVFNNQ29uZmlnSXRlbSDlkowgRm9ybS1SZXR1cm5UeXBlIOS4reS9v+eUqCBBQ0wg5qih5Z2X77yM5YiZ5b+F6aG756aB55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfmoIfpopjkuK3mmL7npLrkuoblk6rkupvkuIDoiKzkv6Hmga/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfnsbsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn5YWo5bGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn6Zey572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICflh4blpIfmipXkuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ+aKleS6pyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVe+8mjE3LjUg6Iux5a+477yINDQuNDUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlXvvJoyMSDoi7Hlr7jvvIg1My4zNCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1Ve+8mjI2LjI1IOiLseWvuO+8iDY2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFXvvJozMS41IOiLseWvuO+8iDgwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOSDoi7Hlr7jmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFV77yaMS43NSDoi7Hlr7jvvIg0LjQ1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFXvvJozNSDoi7Hlr7jvvIg4OC45IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSDoi7Hlr7jmlK/mnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJV77yaMzguNSDoi7Hlr7jvvIg5Ny43OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMg6Iux5a+45py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNiDoi7Hlr7jvvIg2MDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRV77yaNDIg6Iux5a+477yIMTA2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3Ve+8mjQ3LjI1IOiLseWvuO+8iDEyMC4wMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlXvvJozLjUg6Iux5a+477yIOC44OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVe+8mjUyLjUg6Iux5a+477yIMTMzLjM1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjUg6Iux5a+477yIODAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVe+8mjU3Ljc1IOiLseWvuO+8iDE0Ni42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNS40IOiLseWvuO+8iDkwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlXvvJo2MyDoi7Hlr7jvvIgxNjAuMDIg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjQg6Iux5a+477yIMTAwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVXvvJo2OC4yNSDoi7Hlr7jvvIgxNzMuMzUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1XvvJo1LjI1IOiLseWvuO+8iDEzLjM0IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJV77yaNzMuNSDoi7Hlr7jvvIgxODYuNjkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zIOiLseWvuO+8iDExMDAg5q+r57Gz77yJ77yaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVV77yaNzguNzUg6Iux5a+477yIMjAwLjAyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4yIOiLseWvuO+8iDEyMDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhV77yaODQg6Iux5a+477yIMjEzLjM2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRV77yaNyDoi7Hlr7jvvIgxNy43OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1Ve+8mjguNzUg6Iux5a+477yIMjIuMjMg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlXvvJoxMC41IOiLseWvuO+8iDI2LjY3IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3Ve+8mjEyLjI1IOiLseWvuO+8iDMxLjEyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4Ve+8mjE0IOiLseWvuO+8iDM1LjU2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5Ve+8mjE1Ljc1IOiLseWvuO+8iDQwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ+S8muiuoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ+WcsOWdgOWIhumFjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn566h55CG5ZGYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ+aooeaLn+eUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ+iuvuWkh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ+eUteaxoOWuuemHj++8iOWuieaXtu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfnlLXmsaDnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICflpKfljqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ+aAu+e6v+aOpeWPoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSDnrYnnuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+WuuemHj++8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn5q+P5Liq5Zu+5b2i5Y2h55qE5a656YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn5Y2h5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn6K+75Y2h5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ+WNoeeJh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn5a6i5oi36K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ+WuouaIt+err+i9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICflrqLmiLfnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn5pe26ZKf6aKR546HJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfml7bpkp/pgJ/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+S7o+eggeetvuWQjeivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn5Lya6K6u55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn5ZKo6K+i5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfogZTns7vmlrnlvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ+iBlOezu+e7j+mUgOWVhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ+mbhuijheeuseeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ+WQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn5ZCI5ZCM57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn5ZCI5ZCM5pyf5LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ+WQiOWQjOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfml6Dnu7PnlLXor53vvIhERUNUIOeUteivne+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfmiJDmnKzljZXkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICforrjlj6/or4HmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+WIm+W7uuaXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn5a6a5Yi25py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIOS/neeVmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIOacjeWKoeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn5Y+R56Wo5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICforqLotK3ml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+aOiOadg+aXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICflj5HluIPml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+WPsOW8j+eUteiEkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn5paH5Lu2562+5ZCN6K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ+eUteWtkOmCruS7tuivgeS5pu+8iFMvTUlNRSDor4HkuabvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6ZuH5L2j5ZCI5ZCMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn57uI56uvIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ+aUr+aMgee7k+adnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ+acieaViOacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn5aSW572u56Gs55uYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn6Ziy54Gr5aKZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn5Zu65Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn6aOe6L2u5YKo6IO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn5aSW5b2i5bC65a+4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfnibnorrjnu4/okKXljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICflhY3otLnova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn5LiA6Iis5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn5Zu+5b2i5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICflm77lvaLljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfnoazku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfnoazku7blnovlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn56Gs5Lu26YeN6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfogLPmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn6Lqr5Lu95ZKM6K6/6Zeu566h55CG77yISUFN77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICflupPlrZjnvJblj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ+WPkeelqOWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ+mUruebmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qg5pi+56S65Zmo77yI5ray5pm25pi+56S65Zmo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQg5pi+56S65Zmo77yI5Y+R5YWJ5LqM5p6B566h77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ+WbuuWumueUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfnrJTorrDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfnuqzluqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfnrKwgMSDlsYLvvJrniannkIblsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn56ysIDIg5bGC77ya5pWw5o2u6ZO+6Lev5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfnrKwgMyDlsYLvvJrnvZHnu5zlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn56ysIDMg5bGC77ya572R57uc5bGC77yI6LaF57qn572R77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ+esrCA0IOWxgu+8muS8oOi+k+Wxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn56ysIDUg5bGC77ya5Lya6K+d5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ+esrCA2IOWxgu+8muaYvuekuuWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ+esrCA3IOWxgu+8muW6lOeUqOWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfnp5/otYHljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICforrjlj6/ljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+iuuOWPr+ivgeWvhumSpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICforrjlj6/or4HnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ+iuuOWPr+ivgeacieaViOacn+S7jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+iuuOWPr+ivgeacieaViOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn56O36YW46ZOB6ZSC77yITGlGZVBPNO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn6ZSC56a75a2Q77yITGktSW9u77yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn6LS35qy+5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfkvY3kuo4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn57uP5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn5Yi26YCg5ZWGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfmnIDlpKfotJ/ovb3og73lipvvvIjnk6bvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn5YaF5a2YJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn5YaF5a2Y57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICfov7fkvaDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ+aJi+acuuWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfnp7vliqgv5bWM5YWl5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn5Z6L5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn5Z6L5Y+36K+05piOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ+aYvuekuuWZqOWIhui+qOeOhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfmmL7npLrlmajlsLrlr7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfpvKDmoIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ+e9kee7nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfnvZHnu5zkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ+e9kee7nOS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn572R57uc5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn6ZWN6ZWJ77yITmlDZO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ+mVjeawou+8iE5pTUjvvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn5L+d5a+G5Y2P6K6u77yITkRB77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn56yU6K6w5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQ1BVIOaVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICflhoXlrZjmqKHlnZfmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn5Zu+5b2i5Y2h5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIOaYvuekuuWZqO+8iOacieacuuWPkeWFieS6jOaegeeuoe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfov5DokKXmiJDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn6K6i5Y2V5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn5YW25a6DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfovpPlh7onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAn5a+G56CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn5a+G56CBIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn5ZCI5LyZ5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn55S16K+d5Y+356CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfnlLXor53nsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfniannkIbno4Hoiq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfnlLXlipvovpPpgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICflnKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ+acuuaetua3seW6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ+acuuaetuWNleWFgyAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+aIv+mXtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSDljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIOivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ+mUgOWUruWQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfljavmmJ/nlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn5a+G5bCB6ZOF6YW4IChTTEEpIOeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ+W6j+WIl+WPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfmnI3liqHlmajova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfmnI3liqHljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfmnI3liqHmoIfnrb4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn5o+S5bqn57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn6L2v5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn5Y+R6KiA5Lq6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+agh+WHhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn5ZCv5YqoIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAn5a2Y5YKoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn5a2Y5YKo5YiG5Yy6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn6ZmE5bGe5py65p6EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfmkZjopoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfnmKblrqLmiLfmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ+e6v+eoiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ+mbt+eUtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn5pi+5Y2h5oC75YaF5a2Y77yIR0LvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfmgLvlhoXlrZjvvIhHQu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn6Kem5pG45bGP5pi+56S65ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn5aGU5qW8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0Ig6ZuG57q/5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ+iZmuaLn+S4k+eUqOe9kSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIg5aS055uUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAn6Jma5ouf6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICfnvZHnu5znlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ+e9kee7nOaRhOWDj+WktCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/zh_TW_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX1RXX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzov5DooYzmlbDmja4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+aOpeaUtuivt+axguaVsOaNrueahOiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+WkluWPkeWTjeW6lOaVsOaNrueahOiuvue9ric7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+euoeeQhumFjee9rumghSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+S/ruaUuemhnuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5pu05pS56KeS6Imy5a6a5LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOexu+WMhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+WcqOi/memHjO+8jOaCqOWPr+S7peWvvOWFpSBSZWFkeTJJbXBvcnQg57G75o2G57uR5YyF77yM5YW25Lit5bGV56S65LqG5oiR5Lus5pyA5bi455So55qE6YWN572u6aG544CC6K+35rOo5oSP77yM5Y+v6IO96ZyA6KaB5LiA5Lqb6aKd5aSW55qE6YWN572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+abtOaWsOeOsOacieWunuS9kyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ+WvvOWFpSBSZWFkeTJBZG9wdCDnsbvmjYbnu5HljIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfphY3nva7pobnnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ+mFjee9rumhueS9nOeUqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfphY3nva7poIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn6YGO5r++6aGeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+WFiOW+nuWIl+ihqOS4remBuOaTh+mhnuWIpe+8jOeEtuW+jOW7uueri+aWsOeahOmFjee9rumgheOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+mhnuWIpSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00g6YWN572u6aG555uu5om56YeP5pON5L2cJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfpg6jnvbLni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfmlYXpmpzni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn5Y+m5LiA5Liq6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfphY3nva7pobnnm67nvJblj7fml6DmlYjvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn6KaB6ZO+5o6l55qE5Y+m5LiA5Liq6YWN572u6aG555qE57yW5Y+344CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAn5oKo55yf55qE5oOz5Yig6Zmk6L+Z5Liq6YWN572u6aG55ZCX77yfJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+eCuumAmeWAi+mFjee9rumgheWRveWQjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn5ZCN56ew5bey6KKr6YWN572u6aG55L2/55So77yM57yW5Y+35aaC5LiL77yaJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfniYjmnKzomZ/norwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ivpemFjee9rumhueeahOeJiOacrOWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+eJiOacrOWPt+W3suiiq+mFjee9rumhueS9v+eUqO+8jOWFtue8luWPt+WmguS4i++8miVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfpg6jnvbLni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfmlYXpmpzni4DmhYsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ+mFjee9rumhueWOhuWPsu+8miAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfmrbflj7LlhoXlrrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+WJteW7uuaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfnvKnmlL7oppblnJYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn5q+P6aCB6YWN572u6aCF5YCL5pW4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfmnKrmib7liLDphY3nva7pobnmlbDmja7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfpgInmi6nor6XphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfmkJzntKInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfphY3nva7pobnmoJHlvaLop4blm74nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfmt7HluqbnrYnnuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICfmlL7lpKcv57yp5bCPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0NvbmZpZ0l0ZW0g5bey6L6+5Yiw5pyA5aSn6ZO+5o6l57qn5Yir77yBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn6YWN572u6aCFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ+mFjee9rumgheS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfnlbbliY3nmoTpg6jnvbLni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ+eVtuWJjeeahOaVhemanOeLgOaFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfmnIDlvozkv67mlLknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn5pyA5b6M5L+u5pS55pa8JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn5oKo55qE6YWN572u6aG5JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ+mFjee9rumhueaQnOe0oic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+WwhuWvvOWFpeS7peS4i+exu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICflsIblr7zlhaXku6XkuIvop5LoibInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn6K+35rOo5oSP77yM5Lmf5Lya5Yib5bu655u45bqU55qE5Yqo5oCB5a2X5q615ZKMIEdlbmVyYWxDYXRhbG9nIOexu++8jOiAjOS4lOS4jeS8muiHquWKqOWIoOmZpOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ+S9oOaDs+e7p+e7reWQl++8nyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfpnIDopoHnpLrkvovnsbvvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn5a6a5LmJ5rKh5pyJ5pyJ5pWI55qEIFlBTUwg5ZOI5biM5YC844CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn5qaC6L+w77yaSVRTTSDphY3nva7pobnnm64nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5pyq57uZ5Ye6IENvbmZpZ0l0ZW1JRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ+aCqOmcgOimgeiHs+WwkeS4gOS4qumAieWumueahOmFjee9rumhue+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ+aCqOayoeacieWGmeWFpeatpOmFjee9rumhueeahOadg+mZkO+8miVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfmnKrlrprkuYkgJXMg57G755qE5a6a5LmJ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfmlbDmja7lupPkuK3mnKrlj5HnjrDphY3nva7pobkgIiVzIu+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ+aXoOazleWIoOmZpOmFjee9rumhuSBJRCAlc++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAn5re75Yqg6YWN572u6aG555uu44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ+acque7meWHuiBDb25maWdJdGVtSUTjgIFEdXBsaWNhdGVJRCDmiJYgQ2xhc3NJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn5pyq5o+Q5L6b6K6/6Zeu5p2D6ZmQ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+aXoOazleaYvuekuuWOhuWPsuiusOW9le+8jOWboOS4uuayoeaciee7meWHuiBDb25maWdJdGVtSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfml6Dms5XmmL7npLrljoblj7LorrDlvZXvvIzmsqHmnInorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ+aWsOmFjee9rumhue+8iElEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfmlrDniYjmnKzvvIhJRD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+mDqOe9sueKtuaAgeW3suabtOaWsO+8iOaWsD0lc++8jOaXpz0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfkuovku7bnirbmgIHlt7Lmm7TmlrDvvIjmlrA9JXPvvIzml6c9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfphY3nva7pobnnm67vvIhJRD0lc++8ieW3suWIoOmZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ+W3sua3u+WKoCAlcyAodHlwZT0lcykg6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICfmjIflkJEgJXMgKHR5cGU9JXMpIOeahOmTvuaOpeW3suWIoOmZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn6YWN572u6aG55a6a5LmJ5bey5pu05paw77yISUQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICflkI3np7Dlt7Lmm7TmlrDvvIjmlrA9JXPvvIzml6c9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICflsZ7mgKcgJXMg5LuOIiVzICLmm7TmlrDkuLoiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ+eJiOacrCAlcyDlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn5pyq57uZ5Ye6IENvbmZpZ0l0ZW1JRCDmiJYgVmVyc2lvbklE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+aXoOazleaYvuekuumFjee9rumhue+8jOacqui1i+S6iOiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+aVsOaNruW6k+S4reaJvuS4jeWIsOmFjee9rumhueebrue8luWPtyAlc++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn6YWN572u6aCFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfnlLEgJXMg5ZyoICVzIOaJk+WNsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn55u46Zec5Y+C6ICDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn5peg5pWIIENsYXNzSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfmnKrnu5nlh7ogQ2xhc3NJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ+ivpeexu+ayoeacieiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn5rKS5pyJ57WQ5p6cISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ+mFjee9rumgheebruaQnOWwi+e1kOaenCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn5peg5rOV5pi+56S66aG555uu77yM5rKh5pyJ57uZ5a6aIENvbmZpZ0l0ZW0g55qE6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ+acquaJvuWIsOmFjee9rumhue+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfmnKrmib7liLDku7vkvZXniYjmnKzvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfkuJrliqEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+itpuWRiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ+S6i+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aCF6YOo572y54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aCF5pWF6Zqc54uA5oWLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn5rKS5pyJ5qyK6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ+i/h+a7pOWZqOaXoOaViO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn5pCc57Si5Y+C5pWw5peg5pWI77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn5pi+56S655qE6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+mDqOe9sueLgOaFi+mhnuWeiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfnlbbliY3nmoTmlYXpmpzni4DmhYvpoZ7lnosnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn5LmL6Ze0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7pobnnmoTnsbvliKvpmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+mAieaLqeS4gOS4quaIluWkmuS4quexu+WIq+adpemZkOWItuWPr+mAieaLqeeahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aG555qE57G75Yir6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn6YCJ5oup5LiA5Liq5oiW5aSa5Liq57G75Yir5p2l6ZmQ5Yi25Y+v6YCJ5oup55qE6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAn5Yqo5oCB77yIQ29uZmlnSXRlbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAn6Z2Z5oCB77yI54mI5pys77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ+mTvuaOpeW8leeUqOexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfmraTpk77mjqXpgILnlKjkuo7lvJXnlKjlr7nosaHnmoTphY3nva7pobnov5jmmK/pnZnmgIHniYjmnKzjgILlvZPliY3kuovku7bnirbmgIHorqHnrpfku4XlnKjliqjmgIHpk77mjqXkuIrmiafooYzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfpgInmi6nmkJzntKLphY3nva7pobnnmoTlsZ7mgKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ+WfuuehgOe7k+aehOaXoOaViOOAguivt+aPkOS+m+WMheWQqyBZQU1MIOagvOW8j+aVsOaNrueahOWTiOW4jOWAvOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ+W/hemhu+S7pSItLS0i5byA5aeLIFlBTUwg5a2X56ym5Liy44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ+aXoOazlea4hemZpOihqCBjb25maWdpdGVtX2xpbmvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ+acquaJvuWIsOebuOWFs+WKqOaAgeWtl+autSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ+aXoOazleaPkuWFpeihqCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ+WQkeihqCBjb25maWdpdGVtX2xpbmsg5o+S5YWl5LqGIDAg5p2h6K6w5b2VJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ+atpOWFg+e0oOeahOacgOWkp+aVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfniYjmnKzlrZfnrKbkuLInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn5ZCM5q2l5a6a5LmJ5pe25Ye66ZSZ44CC6K+35p+l55yL5pel5b+X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn5oKo55qEIElUU01Db25maWdJdGVtIOWumuS5ieacquWQjOatpeOAguivt+mDqOe9suaCqOeahCBJVFNNQ29uZmlnSXRlbSDliqjmgIHlrZfmrrXmm7TmlLnjgIInOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ+WIsOacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ+e2reittyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ+ippumplyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn5bey6KiI5YqDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ+S/ruW+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn5aCx5buiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ+ikh+WvqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn5rWL6KmmL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfmpoLov7Dlkoznoa7orqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn5a+85YWl57G7L+inkuiJsuWPiuWFtuebuOWFs+Wtl+autSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ+exu+WvvOWFpeaXtuWPkeeUn+mUmeivr+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0g6ZqQ6JePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDmmL7npLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+WFgeiuuOWcqOS7o+eQhueVjOmdoueahOmFjee9rumhueaQnOe0ouS4reS9v+eUqOaJqeWxleaQnOe0ouadoeS7tuOAguWIqeeUqOivpeWKn+iDve+8jOaCqOWPr+S7peS9v+eUqCIoKmtleTEqJiYqa2V5MiopICLmiJYiKCprZXkxKnx8KmtleTIqKSAi562J5p2h5Lu25pCc57Si6YWN572u6aG55ZCN56ew44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+WFgeiuuOWcqOWuouaIt+eVjOmdoueahOmFjee9rumhueaQnOe0ouS4reS9v+eUqOaJqeWxleaQnOe0ouadoeS7tuOAguWIqeeUqOivpeWKn+iDve+8jOaCqOWPr+S7peS9v+eUqCIoKmtleTEqJiYqa2V5MiopICLmiJYiKCprZXkxKnx8KmtleTIqKSAi562J5p2h5Lu25pCc57Si6YWN572u6aG55ZCN56ew44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ+WIhumFjeeahCBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfliIbphY3nu5nlrqLmiLflhazlj7jnmoQgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfliIbphY3nu5nlrqLmiLfnlKjmiLfnmoQgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIg6K6+572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfku4XlnKjlkIzkuIAgQ29uZmlnSXRlbSDnsbvvvIgiY2xhc3Mi77yJ5oiW5YWo5bGA77yIImdsb2JhbCLvvInlhoXmo4Dmn6XllK/kuIDlkI3np7DvvIzov5nmhI/lkbPnnYDlnKjmn6Xmib7ph43lpI3ml7bvvIzmr4/kuKrnjrDmnInnmoQgQ29uZmlnSXRlbSDpg73kvJrooqvogIPomZHlnKjlhoXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ+mAieaLqeS4gOS4quaooeWdl+adpeaJp+ihjOWRveWQjeaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn6YCJ5oup5LiA5Liq5qih5Z2X5p2l5omn6KGM5pWw5a2X5pa55qGI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ+mAieaLqeS4gOS4quaooeWdl+adpeaJp+ihjOeJiOacrOWtl+espuS4suaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ+mAieaLqeinpuWPkeWIm+W7uuaWsOeJiOacrOeahOWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfpgInmi6nopoHliIbphY3nu5nmraTphY3nva7pobnnsbvliKvnmoTnsbvliKvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfphY3nva7pobnmpoLop4jnmoTliJfphY3nva7pobnov4fmu6TlmajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ+WPr+WcqOS7o+eQhueVjOmdoumFjee9rumhueamguiniOS4rei/h+a7pOeahOWIl+OAguazqOaEj++8muWPquWFgeiuuOS9v+eUqOmFjee9rumhueWxnuaAp+WSjOWKqOaAgeWtl+autSAoRHluYW1pY0ZpZWxkX05hbWVYKeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfphY3nva7poIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ+a3u+WKoOmFjee9rumhueebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ+mFjee9rumhueebrue8lui+keOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mFjee9rumhueS6i+S7tuaooeWdl++8jOWPr+WwhuaXpeW/l+iusOW9leWIsOS7o+eQhueVjOmdoueahOWOhuWPsuiusOW9leS4reOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICfphY3nva7pobnkuovku7bmqKHlnZfvvIznlKjkuo7lsIbphY3nva7pobnmm7TmlrDkuLrlvZPliY3lrprkuYnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfphY3nva7pobnnm67ljoblj7LjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn6YWN572u6aG555uu5omT5Y2w44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn6YWN572u6aG555uu57yp5pS+44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAn6YWN572u6aG55qCR5b2i6KeG5Zu+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ+mFjee9rumhueebrueJiOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfku6XkuIvnsbvliKvnmoTphY3nva7pobnlsIbkuI3kvJrlrZjlgqjlnKggRWxhc3RpY3NlYXJjaCDmnI3liqHlmajkuIrjgILopoHlsIbmraTlupTnlKjkuo7njrDmnInnmoQgQ0nvvIzlv4XpobvlnKjmm7TmlLnmraTpgInpobnlkI7pgJrov4fmjqfliLblj7Dov5DooYwgQ0kg6L+B56e744CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+WFt+acieS7peS4i+mDqOe9sueKtuaAgeeahOmFjee9rumhueWwhuS4jeS8muWtmOWCqOWcqCBFbGFzdGljc2VhcmNoIOacjeWKoeWZqOS4iuOAguimgeWwhuatpOW6lOeUqOS6jueOsOacieeahCBDSe+8jOW/hemhu+WcqOabtOaUueatpOmAiemhueWQjumAmui/h+aOp+WItuWPsOi/kOihjCBDSSDov4Hnp7vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn6YWN572u6aG555uu6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfmr4/pobXphY3nva7pobnnm67pmZDliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ+mFjee9rueuoeeQhuaVsOaNruW6k+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn6YWN572u6aG55om56YeP5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mFjee9rumhueaQnOe0ouS7o+eQhuaOpeWPo+eahOWQjuerr+i3r+eUseWZqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn5Ym15bu65ZKM566h55CG6YWN572u6aCF5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAn5Zyo54m55a6a5pe26Ze054K55Li6IENvbmZpZ0l0ZW1zIOWIm+W7uiBUaWNrZXRz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ+WuouaIt+WPr+S7peafpeeci+WOhuWPsiBDSSDniYjmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn5a6i5oi35Y+v5Lul5omL5Yqo5YiH5o2i5Y6G5Y+yIENJIOeJiOacrOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ+WcqOmFjee9rumhueaQnOe0ouWxj+W5leeahOWxnuaAp+S4iuS9v+eUqOeahOm7mOiupOaVsOaNruOAguS+i+Wmgu+8miJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICflnKjphY3nva7pobnmkJzntKLlsY/luZXnmoTlsZ7mgKfkuIrkvb/nlKjnmoTpu5jorqTmlbDmja7jgILkvovlpoLvvJoiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9Mzsi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICflrprkuYnlj6/lnKjpk77mjqXlr7nosaEgd2lkZ2V0IOS4reS9v+eUqOiuvue9ruaMiemSrueahOaTjeS9nO+8iExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgi77yJ44CC6K+35rOo5oSP77yM6L+Z5Lqb5pON5L2c5b+F6aG75bey5rOo5YaM5Lul5LiLIEpTIOWSjCBDU1Mg5paH5Lu277yaQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3PjgIFDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz44CBQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz44CBQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMg5ZKMIENvcmUuQWdlbnQuTGlua09iamVjdC5qc+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAn5Li654mI5pys5a2X56ym5Liy5a6a5LmJ5LiA5LiqIFRlbXBsYXRlOjpUb29sa2l0IOaWueahiOOAguS7heWcqOeJiOacrOWtl+espuS4suaooeWdl+iuvue9ruS4uiBUZW1wbGF0ZVRvb2xraXQg5pe25L2/55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICflrprkuYnkuIDnu4TlhYHorrjlrqLmiLfmn6XnnIvphY3nva7pobnnmoTmnaHku7bjgILlj6/pgInmi6nlsIbmnaHku7bpmZDliLbkuLrmn5DkupvlrqLmiLfnu4TjgILlkI3np7DmmK/llK/kuIDnmoTlvLrliLblsZ7mgKfjgILlpoLmnpzmsqHmnInnu5nlh7rlhbbku5bpgInpobnvvIzliJnor6XnsbvliKvkuIvnmoTmiYDmnInphY3nva7pobnpg73lsIblj6/op4HjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+WIoOmZpCBJVFNNIOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5L2/55So6YCa55So5o6l5Y+j6I635Y+WIElUU00g6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6PmkJzntKIgSVRTTSDphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+iuvue9riBJVFNNIOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICflrprkuYnkuIDkuKrmpoLop4jmqKHlnZfvvIznlKjkuo7mmL7npLrphY3nva7pobnnm67liJfooajnmoTlsI/op4blm77jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAn5a6a5LmJ5piv5ZCm5b+F6aG75Zyo6IqC54K56L+e5o6l5Lit5pi+56S66ZO+5o6l57G75Z6L5qCH562+44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfkuLrmr4/kuKogQ29uZmlnSXRlbSDnsbvljZXni6zlrprkuYnmraPliJnooajovr7lvI/vvIzku6Xmo4Dmn6UgQ29uZmlnSXRlbSDlkI3np7DlubbmmL7npLrnm7jlupTnmoTplJnor6/kv6Hmga/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75Yir5a6a5LmJ6YWN572u6aG55qaC6KeI5LitIENJIOeahOWPr+eUqOWIl+OAguavj+S4quadoeebruW/hemhu+WMheWQq+S4gOS4quexu+WQjeWSjOebuOW6lOexu+eahOWPr+eUqOWtl+auteaVsOe7hOOAguWKqOaAgeWtl+auteadoeebruW/hemhu+mBteWuiCBEeW5hbWljRmllbGRfRmllbGROYW1lIOaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5Luj55CG55WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit6YWN572u6aG55o6S5bqP55qE6buY6K6k6YWN572u6aG55bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlrqLmiLfnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3phY3nva7pobnmjpLluo/nmoTpu5jorqTphY3nva7pobnlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICflrprkuYnmraTmk43kvZznmoTphY3nva7pobnmkJzntKLnu5PmnpznmoTphY3nva7pobnmjpLluo/pu5jorqTphY3nva7pobnlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieS7o+eQhueVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4reeahOm7mOiupOmFjee9rumhuemhuuW6j+OAguS4iu+8muacgOaXp+eahOWcqOacgOWJjemdouOAguS4i++8muacgOaWsOeahOWcqOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi355WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit55qE6buY6K6k6YWN572u6aG56aG65bqP44CC5LiK77ya5pyA5pen55qE5Zyo5pyA5YmN6Z2i44CC5LiL77ya5pyA5paw55qE5Zyo5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75a6a5LmJ6YWN572u6aG55qaC6KeI5Lit6buY6K6k5pi+56S655qEIENJIOWIl+OAguavj+S4quadoeebruW/hemhu+WMheWQq+S4gOS4quexu+WQjeWSjOebuOW6lOexu+eahOWPr+eUqOWtl+auteaVsOe7hOOAguWKqOaAgeWtl+auteadoeebruW/hemhu+mBteWuiCBEeW5hbWljRmllbGRfRmllbGROYW1lIOaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICflrprkuYnpu5jorqTmmL7npLrnmoTlhbPns7vmt7HluqbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ6YWN572u6aG555uu5pCc57Si55WM6Z2i6buY6K6k5pi+56S655qE6YWN572u6aG555uu5pCc57Si5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICflrprkuYnphY3nva7pobnmkJzntKLlsY/luZXpu5jorqTmmL7npLrnmoTphY3nva7pobnmkJzntKLlsZ7mgKfjgIJFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzTvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDHvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI277ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDDvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAx77ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01Oe+8m1wn5ZKM5oiWIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnO+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn5a6a5LmJICJJVFNNQ29uZmlnSXRlbSAi57G755qE6buY6K6k5a2Q5a+56LGh44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75Yir5a6a5LmJ6YWN572u6aG55qaC6KeI5LitIENJIOeahOWPr+eUqOWIl+OAguavj+S4quadoeebruW/hemhu+WMheWQq+S4gOS4quexu+WQjeWSjOebuOW6lOexu+eahOWPr+eUqOWtl+auteaVsOe7hOOAguWKqOaAgeWtl+auteadoeebruW/hemhu+mBteWuiCBEeW5hbWljRmllbGRfRmllbGROYW1lIOaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICflrprkuYnor6XlsY/luZXlr4zmlofmnKznvJbovpHlmajnu4Tku7bnmoTpq5jluqbjgILovpPlhaXmlbDlrZfvvIjlg4/ntKDvvInmiJbnmb7liIbmr5TlgLzvvIjnm7jlr7nlgLzvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ566h55CG55WM6Z2i5LitIENJIOWumuS5iee8lui+keWZqOeahOihjOaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICflrprkuYnkuovku7bnirbmgIHku47pq5jliLDkvY7vvIjlpoLnjq/nirbvvInnmoTpobrluo/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICflrprkuYnnm7jlhbPpg6jnvbLnirbmgIHvvIzlhbbkuK3pk77mjqXnmoTnpajljZXlj6/lvbHlk40gQ0kg55qE54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJIEFnZW50SVRTTUNvbmZpZ0l0ZW0g5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi3SVRTTUNvbmZpZ0l0ZW0g5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi3SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ+WumuS5iemTvuaOpeihqOWkjeWQiOinhuWbvuS4reaJgOaciSBDSSDnsbvnmoQgQ0kg5pi+56S65YiX44CC5aaC5p6c5rKh5pyJ5p2h55uu77yM5YiZ5pi+56S66buY6K6k5YiX44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75Yir77yM5a6a5LmJ6ZO+5o6l6KGo5aSN5ZCI6KeG5Zu+5Lit5pi+56S655qEIENJIOWIl+OAguavj+S4quadoeebrumDveW/hemhu+S7peexu+WQjeWSjOWPjOWGkuWPt+S4uuWJjee8gO+8iOWmgiBDb21wdXRlcjo677yJ44CC5omA5pyJIENJIOmDveacieS4gOS6m+WFseWQjOeahCBDSSDlsZ7mgKfvvIjku6UgIuiuoeeul+acuiAi57G75Li65L6L77yaQ29tcHV0ZXI6Ok5hbWXjgIFDb21wdXRlcjo6Q3VyRGVwbFN0YXRl44CBQ29tcHV0ZXI6OkNyZWF0ZVRpbWXvvInjgILopoHmmL7npLogQ0kg5a6a5LmJ5Lit5a6a5LmJ55qE5Y2V5LiqIENJIOWxnuaAp++8jOW/hemhu+S9v+eUqOS7peS4i+aWueahiO+8iOS7peiuoeeul+acuuexu+S4uuS+i++8ie+8mkNvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLuWmguaenOayoeaciSBDSSDnsbvmnaHnm67vvIzliJnmmL7npLrpu5jorqTliJfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICflrprkuYnlk6rkupvpobnnm67lj6/nlKjkuo4gSVRTTSBDb25maWcg6aG555uuIEFDTCDnu5PmnoTnrKzkuInlsYLkuK3nmoQgIuaTjeS9nCLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICflrprkuYkgSVRTTSBDb25maWcg6aG555uuIEFDTCDnu5PmnoTnrKzkuIDlsYLkuK3nmoTlj6/nlKjpobnnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn5a6a5LmJIElUU00gQ29uZmlnIOmhueebriBBQ0wg57uT5p6E56ys5LqM5bGC5Lit55qE5Y+v55So6aG555uu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+WumuS5ieWTquenjeexu+Wei+eahOmTvuaOpe+8iOS7juelqOaNruinkuW6puWRveWQje+8ieS8muW9seWTjemTvuaOpSBDSSDnmoTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICflrprkuYnlk6rnp43nsbvlnovnmoTnpajljZXkvJrlvbHlk43pk77mjqUgQ0kg55qE54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn5a6a5LmJ5pu05pawJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfliKDpmaTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfpg6jnvbLnirbmgIHpopzoibInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn6YOo572y54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ+ikh+ijvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ+WKqOaAgeWtl+auteS6i+S7tuaooeWdl++8jOeUqOS6juWcqOWMheWQq+eahOWKqOaAgeWtl+auteWPkeeUn+WPmOWMluaXtuWwhumFjee9rumhueWumuS5ieagh+iusOS4uuS4jeWQjOatpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE6ZmE5YqgIElUU00g5a2X5q615bGP5bmV5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WuouaIt+eVjOmdoumFjee9rumhueebruamguiniOWxj+W5leS4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnmkJzntKLlsY/luZXkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn5ZCv55So6YWN572u6aG55om56YeP5pON5L2c5Yqf6IO977yM5L2/5Luj55CG5YmN5Y+w6IO95ZCM5pe25aSE55CG5aSa5Liq6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfku4Xlr7nliJflh7rnmoTnu4TlkK/nlKjphY3nva7pobnmibnph4/mk43kvZzlip/og73jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn5ZyoIHRpY2tldC1jb25maWdpdGVtLWxpbmsg5LiK6K6+572uIGNvbmZpZ2l0ZW0tc3RhdHVzIOeahOS6i+S7tuaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICfphY3nva7pobnntKLlvJXlrZfmrrXvvIznlKjkuo7lhajmlofmkJzntKLjgILlrZfmrrXkuZ/kvJrooqvlrZjlgqjvvIzkvYblr7nkuo7mlbTkvZPlip/og73mnaXor7TlubbpnZ7lv4XpobvjgILlj6/pgJrov4flsIbmnaHnm67orr7nva7kuLogMCDmiJbliKDpmaTmnaXnpoHnlKjpmYTku7bnmoTljIXlkKvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ+WtmOWCqOWcqOmFjee9rumhuee0ouW8leS4reeahOWtl+aute+8jOmZpOeUqOS6juWFqOaWh+ajgOe0ouWklu+8jOi/mOWPr+eUqOS6juWFtuS7lueUqOmAlOOAguS4uuS6huWunueOsOWujOaVtOeahOWKn+iDve+8jOaJgOacieWtl+autemDveaYr+W/heWhq+Wtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn55So5LqOIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlsYLnmoQgR2VuZXJpY0ludGVyZmFjZSDmqKHlnZfms6jlhozjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn55So5LqOIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlsYLnmoQgR2VuZXJpY0ludGVyZmFjZSDmqKHlnZfms6jlhozjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSDphY3nva7pobnnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIOmFjee9rumhueebruamguiniOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+S6i+S7tueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5YyF5ZCr6YOo572y54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdoueahOmFjee9rumhueebruaQnOe0ouS4reWMheWQq+S6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICflnKjmraTmk43kvZznu5PmnpzkuK3mmL7npLrnmoTphY3nva7pobnnmoTmnIDlpKfmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfmo4Dmn6XotJ/otKPnj63nuqfnmoTlsI/nu4TnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfmqKHlnZfvvIznlKjkuo7mo4Dmn6XotJ/otKPphY3nva7pobnnmoTnu4TjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfnlJ/miJAgSVRTTSDphY3nva7pobnnu5/orqHmlbDmja7nmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICflkI3np7DmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ+e8luWPt+aooeWdlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLmkJzntKLnu5PmnpznmoTmr4/kuIDpobXkuK3mmL7npLrnmoTphY3nva7pobnmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6i5oi355WM6Z2i5pCc57Si57uT5p6c5q+P6aG15pi+56S655qE6YWN572u6aG55pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ+imgeaQnOe0oueahOWvueixoeOAgeadoeebruaVsOmHj+S7peWPiuimgeaYvuekuueahOWxnuaAp+OAgumFjee9rumhueWxnuaAp+W/hemhu+mAmui/hyBFbGFzdGljc2VhcmNoIOaYjuehruWtmOWCqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfmpoLms4EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+WIq+eahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+Wwj+mFjee9rumhueebruamguiniOeahOWIl+i/h+a7pOWZqOWPguaVsOOAguivt+azqOaEj++8muWwhiAiQWN0aXZl77yI5rS75Yqo77yJIuiuvue9ruS4uiAwIOWPquS8mumYu+atouS7o+eQhuWcqOWFtuS4quS6uuWBj+Wlveiuvue9ruS4ree8lui+keivpee7hOeahOiuvue9ru+8jOS9huS7jeWFgeiuuOeuoeeQhuWRmOe8lui+keWFtuS7lueUqOaIt+eahOiuvue9ruOAguS9v+eUqCAiUHJlZmVyZW5jZUdyb3Vw77yI5YGP5aW957uE77yJIuWPr+aOp+WItui/meS6m+iuvue9ruW6lOaYvuekuuWcqOeUqOaIt+eVjOmdoueahOWTquS4quWMuuWfn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remDqOe9sueKtuaAgeminOiJsueahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remDqOe9sueKtuaAgeeahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfpgJrnlKjnm67lvZXlsZ7mgKfmnYPpmZDnu4TnpLrkvovnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvlkI3np7DmqKHlnZfnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+WIq+eahOe8luWPt+aooeWdl+WPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfpobXpnaLvvIjmmL7npLrphY3nva7pobnnmoTpobXpnaLvvInlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G755qE54mI5pys5a2X56ym5Liy5qih5Z2X5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn55So5LqO5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G755qE54mI5pys5a2X56ym5Liy5qih5p2/5bel5YW35YyF5qih5Z2X5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+eahOeJiOacrOinpuWPkeWZqOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ+adg+mZkOe7hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebrumZhOS7tuaTjeS9nOaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu5pCc57Si5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5L2/55SoIElUU00g6YWN572u6aG555uu5pCc57Si5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu5qCR6KeG5Zu+5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebrue8qeaUvuWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S9v+eUqOS7o+eQhueVjOmdouS4reeahOa3u+WKoCBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKjmibnph48gSVRTTSDphY3nva7pobnnm67lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5L2/55So5Luj55CG55WM6Z2i5Lit55qE57yW6L6RIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqOWOhuWPsiBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55So5omT5Y2wIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfliKDpmaTphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfmkJzntKLphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+W9k+elqOWNlemTvuaOpeWIsCBDSSDml7bvvIzoh6rliqjorr7nva4gQ0kg55qE5LqL5Lu254q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE6YWN572u6aG55om56YeP5bGP5bmV5Lit6K6+572u6YOo572y54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueebruaJuemHj+eVjOmdouS4reiuvue9ruS6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aYvuekuuiPnOWNleS4reeahOmTvuaOpe+8jOWFgeiuuOWcqOS7o+eQhueVjOmdoueahOmFjee9rumhuee8qeaUvuinhuWbvuS4reWwhuS4gOS4qumFjee9rumhueS4juWPpuS4gOS4quWvueixoeebuOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueebruamguiniOS4reaYvuekuuS4gOS4quiPnOWNlemTvuaOpe+8jOeUqOS6juiuv+mXrumFjee9rumhueebrueahOWOhuWPsuiusOW9leOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmmL7npLroj5zljZXkuK3nmoTpk77mjqXvvIzku6Xkvr/lnKjku6PnkIbnlYzpnaLnmoTnvKnmlL7op4blm77kuK3orr/pl67phY3nva7pobnnmoTljoblj7LorrDlvZXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnvKnmlL7op4blm77nmoToj5zljZXkuK3mmL7npLrliKDpmaTphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ+WcqOiPnOWNleS4reaYvuekuuS4gOS4qumTvuaOpe+8jOS7peagkeW9ouinhuWbvuaYvuekuumFjee9rumhuemTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueebruamguiniOS4reaYvuekuuiPnOWNlemTvuaOpe+8jOS7peWkjeWItumFjee9rumhueebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjoj5zljZXkuK3mmL7npLrkuIDkuKrpk77mjqXvvIznlKjkuo7lnKjku6PnkIbnlYzpnaLnmoTnvKnmlL7op4blm77kuK3lpI3liLbkuIDkuKrphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOe8qeaUvuinhuWbvuS4reaYvuekuue8lui+kemFjee9rumhueeahOiPnOWNlemTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq6ZO+5o6l77yM55So5LqO6L+U5Zue5Luj55CG55WM6Z2i55qE6YWN572u6aG557yp5pS+6KeG5Zu+44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE57yp5pS+6KeG5Zu+5Lit5pi+56S66I+c5Y2V6ZO+5o6l77yM5Lul5omT5Y2w6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq6ZO+5o6l77yM55So5LqO5pS+5aSn5Luj55CG55WM6Z2i6YWN572u6aG55qaC6KeI5Lit55qE6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aYvuekuuS7o+eQhueVjOmdouS4reeahOmFjee9rumhueebruWOhuWPsuiusOW9le+8iOmAhuW6j++8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICflpoLmnpzmnKrpgInmi6nku7vkvZXnsbvliKvvvIzliJnmmL7npLrpu5jorqTnsbvliKvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ+mFjee9rumhueeahOagh+ivhuespu+8jOWmgiBDb25maWdJdGVtI+OAgU15Q29uZmlnSXRlbSPjgILpu5jorqTkuLogQ29uZmlnSXRlbSPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ+iHquWKqOinpuWPkSBDb25maWdJdGVtRmV0Y2gg6LCD55So5Zmo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ+eJiOacrOWtl+espuS4suihqOi+vuW8jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfniYjmnKzlrZfnrKbkuLLmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn54mI5pys6Kem5Y+R5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfmmK/lkKblj6/ku6XpgJrov4fmo4Dmn6XnvJPlrZjlrZfmrrXkvp3otZblhbPns7vmnaXpgb/lhY3miafooYwgQ29uZmlnSXRlbUFDTOOAgui/meWPr+S7pee8qeefreihqOagvOeahOWKoOi9veaXtumXtO+8jOS9huWmguaenOimgeWcqCBJVFNNQ29uZmlnSXRlbSDlkowgRm9ybS1SZXR1cm5UeXBlIOS4reS9v+eUqCBBQ0wg5qih5Z2X77yM5YiZ5b+F6aG756aB55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfmoIfpopjkuK3mmL7npLrkuoblk6rkupvkuIDoiKzkv6Hmga/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfnsbsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn5YWo55CDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn5ZCO55Sf5LqnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfnlJ/mrpbliY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ+eUn+S6p+aApyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVe+8mjE3LjUg6Iux5a+477yINDQuNDUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlXvvJoyMSDoi7Hlr7jvvIg1My4zNCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1Ve+8mjI2LjI1IOiLseWvuO+8iDY2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFXvvJozMS41IOiLseWvuO+8iDgwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOSDoi7Hlr7jmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFV77yaMS43NSDoi7Hlr7jvvIg0LjQ1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFXvvJozNSDoi7Hlr7jvvIg4OC45IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSDoi7Hlr7jmlK/mnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJV77yaMzguNSDoi7Hlr7jvvIg5Ny43OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMg6Iux5a+45py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNiDoi7Hlr7jvvIg2MDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRV77yaNDIg6Iux5a+477yIMTA2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3Ve+8mjQ3LjI1IOiLseWvuO+8iDEyMC4wMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlXvvJozLjUg6Iux5a+477yIOC44OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVe+8mjUyLjUg6Iux5a+477yIMTMzLjM1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjUg6Iux5a+477yIODAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVe+8mjU3Ljc1IOiLseWvuO+8iDE0Ni42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNS40IOiLseWvuO+8iDkwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlXvvJo2MyDoi7Hlr7jvvIgxNjAuMDIg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjQg6Iux5a+477yIMTAwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVXvvJo2OC4yNSDoi7Hlr7jvvIgxNzMuMzUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1XvvJo1LjI1IOiLseWvuO+8iDEzLjM0IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJV77yaNzMuNSDoi7Hlr7jvvIgxODYuNjkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zIOiLseWvuO+8iDExMDAg5q+r57Gz77yJ77yaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVV77yaNzguNzUg6Iux5a+477yIMjAwLjAyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4yIOiLseWvuO+8iDEyMDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhV77yaODQg6Iux5a+477yIMjEzLjM2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRV77yaNyDoi7Hlr7jvvIgxNy43OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1Ve+8mjguNzUg6Iux5a+477yIMjIuMjMg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlXvvJoxMC41IOiLseWvuO+8iDI2LjY3IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3Ve+8mjEyLjI1IOiLseWvuO+8iDMxLjEyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4Ve+8mjE0IOiLseWvuO+8iDM1LjU2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5Ve+8mjE1Ljc1IOiLseWvuO+8iDQwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ+S8muiuoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ+WcsOWdgOWIhumFjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn566h55CG5ZGYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ+aooeaLn+eUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ+iuvuWkh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ+eUteaxoOWuuemHj++8iOWuieaXtu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfnlLXmsaDnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICflpKflu4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ+aAu+e6v+aOpeWPoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSDnrYnnuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+WuuemHj++8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn5q+P5Liq5Zu+5b2i5Y2h55qE5a656YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn5Y2h5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn6K+75Y2h5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ+WNoeeJh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn5a6i5oi36K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ+WuouaIt+err+i9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICflrqLmiLfnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn5pe26ZKf6aKR546HJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfml7bpkp/pgJ/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+S7o+eggeetvuWQjeivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn5Lya6K6u55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn5ZKo6K+i5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfogZTns7vmlrnlvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ+iBlOezu+e7j+mUgOWVhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ+mbhuijheeuseeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ+WQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn5ZCI5ZCM57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn5ZCI5ZCM5pyf5LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ+WQiOWQjOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfml6Dnu7PnlLXor53vvIhERUNUIOeUteivne+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfmiJDmnKzljZXkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICforrjlj6/or4HmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+WIm+W7uuaXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn5a6a5Yi25py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIOS/neeVmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIOacjeWKoeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn5Y+R56Wo5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICforqLotK3ml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+aOiOadg+aXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICflj5HluIPml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+ahjOS4iuWei+mbu+iFpic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn5paH5Lu2562+5ZCN6K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ+eUteWtkOmCruS7tuivgeS5pu+8iFMvTUlNRSDor4HkuabvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6ZuH5L2j5ZCI5ZCMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn57uI56uvIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ+aUr+aMgee7k+adnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ+acieaViOacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn5aSW572u56Gs55uYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn6Ziy54Gr5aKZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn5Zu65Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn6aOe6L2u5YKo6IO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn5aSW5b2i5bC65a+4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfnibnorrjnu4/okKXljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICflhY3osrvou5/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn5LiA6Iis5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn5Zu+5b2i5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICflm77lvaLljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfnoazku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfnoazku7blnovlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn56Gs5Lu26YeN6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfogLPmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn6Lqr5Lu95ZKM6K6/6Zeu566h55CG77yISUFN77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICflupPlrZjnvJblj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ+WPkeelqOWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ+mNteebpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qg5pi+56S65Zmo77yI5ray5pm25pi+56S65Zmo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQg5pi+56S65Zmo77yI5Y+R5YWJ5LqM5p6B566h77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ+WbuuWumueUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfnrYboqJjmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfnuqzluqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfnrKwgMSDlsYLvvJrniannkIblsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn56ysIDIg5bGC77ya5pWw5o2u6ZO+6Lev5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfnrKwgMyDlsYLvvJrnvZHnu5zlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn56ysIDMg5bGC77ya572R57uc5bGC77yI6LaF57qn572R77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ+esrCA0IOWxgu+8muS8oOi+k+Wxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn56ysIDUg5bGC77ya5Lya6K+d5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ+esrCA2IOWxgu+8muaYvuekuuWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ+esrCA3IOWxgu+8muW6lOeUqOWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfnp5/otYHljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICforrjlj6/ljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+iuuOWPr+ivgeWvhumSpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICforrjlj6/or4HnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ+iuuOWPr+ivgeacieaViOacn+S7jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+iuuOWPr+ivgeacieaViOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn56O36YW46ZOB6ZSC77yITGlGZVBPNO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn6ZSC56a75a2Q77yITGktSW9u77yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn6LS35qy+5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfkvY3kuo4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn57uP5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn5Yi26YCg5ZWGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfmnIDlpKfotJ/ovb3og73lipvvvIjnk6bvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn5YaF5a2YJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn5YaF5a2Y57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICfov7fkvaDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ+aJi+acuuWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfnp7vliqgv5bWM5YWl5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn5Z6L6JmfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn5Z6L5Y+36K+05piOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ+aYvuekuuWZqOWIhui+qOeOhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfmmL7npLrlmajlsLrlr7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfmu5HpvKAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ+e9kee7nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfnvZHnu5zkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ+e9kee7nOS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn572R57uc5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn6ZWN6ZWJ77yITmlDZO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ+mVjeawou+8iE5pTUjvvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn5L+d5a+G5Y2P6K6u77yITkRB77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn56yU6K6w5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQ1BVIOaVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICflhoXlrZjmqKHlnZfmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn5Zu+5b2i5Y2h5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIOaYvuekuuWZqO+8iOacieacuuWPkeWFieS6jOaegeeuoe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfov5DokKXmiJDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn6K6i5Y2V5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn5YW25a6DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfovpPlh7onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAn5a+G56CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn5a+G56CBIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn5ZCI5LyZ5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn55S16K+d5Y+356CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfnlLXor53nsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfniannkIbno4Hoiq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfnlLXlipvovpPpgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICflnKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ+acuuaetua3seW6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ+acuuaetuWNleWFgyAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+aIv+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSDljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIOivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ+mUgOWUruWQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfljavmmJ/nlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn5a+G5bCB6ZOF6YW4IChTTEEpIOeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ+W6j+WIl+WPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfmnI3liqHlmajova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfmnI3liqHljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfmnI3liqHmoIfnrb4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn5o+S5bqn57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn6L2v5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn5Y+R6KiA5Lq6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+aomea6lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn5ZCv5YqoIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAn5a2Y5YKoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn5a2Y5YKo5YiG5Yy6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn6ZmE5bGe5py65p6EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfmkZjopoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfnmKblrqLmiLfmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ+e6v+eoiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ+mbt+eUtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn5pi+5Y2h5oC75YaF5a2Y77yIR0LvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfmgLvlhoXlrZjvvIhHQu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn6Kem5pG45bGP5pi+56S65ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn5aGU5qW8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0Ig6ZuG57q/5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAn5pi+5YOP566hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ+iZmuaLn+S4k+eUqOe9kSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIg5aS055uUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAn6Jma5ouf6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICfnvZHnu5znlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ+e9kee7nOaRhOWDj+WktCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AdminGenericInterfaceInvokerConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckNvbmZpZ0l0ZW07Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkV2Vic2VydmljZUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1dlYnNlcnZpY2VJRCcgKTsKICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoJFdlYnNlcnZpY2VJRCkgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBXZWJzZXJ2aWNlSUQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ1dlYnNlcnZpY2VJRCcsCiAgICAgICAgVmFsdWUgPT4gJFdlYnNlcnZpY2VJRAogICAgKTsKCiAgICBteSAkV2Vic2VydmljZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KAogICAgICAgIElEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZ2V0IGRhdGEgZm9yIFdlYnNlcnZpY2VJRCAlcycsICRXZWJzZXJ2aWNlSUQgKSwKICAgICAgICApOwogICAgfQoKICAgICRTZWxmLT5fRXh0cmFTZXR0aW5ncygKICAgICAgICBXZWJzZXJ2aWNlID0+ICRXZWJzZXJ2aWNlRGF0YS0+e05hbWV9LAogICAgKTsKCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkJyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9BZGQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkQWN0aW9uJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X0FkZEFjdGlvbigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2UnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0NoYW5nZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2VBY3Rpb24nICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hhbmdlQWN0aW9uKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZUFjdGlvbicgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9EZWxldGVBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkRXZlbnQnICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQWRkRXZlbnQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlRXZlbnQnICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fRGVsZXRlRXZlbnQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIFN1YmFjdGlvbiEnKSwKICAgICk7Cn0KCnN1YiBfQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlclR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ0ludm9rZXJUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgIE1vZGUgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgSW52b2tlckNvbmZpZyA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJEdldFBhcmFtLT57SW52b2tlclR5cGV9LAogICAgICAgIH0sCiAgICApOwp9CgpzdWIgX0FkZEFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15IEBFeHRyYVBhcmFtczsKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIGlmICggJFNlbGYtPntTZXR0aW5nc30gJiYgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259ICkgewogICAgICAgICAgICBwdXNoIEBFeHRyYVBhcmFtcywgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259LT5AKjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlclR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ0ludm9rZXJUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnSW52b2tlcicsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdNYXBwaW5nSW5ib3VuZCcsCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdNYXBwaW5nVHlwZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdNYXBwaW5nT3V0Ym91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBARXh0cmFQYXJhbXMsCiAgICAgICAgXSwKICAgICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkV2Vic2VydmljZURhdGEgPSAkUGFyYW17V2Vic2VydmljZURhdGF9OwogICAgbXkgJUVycm9yczsKICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRHZXRQYXJhbS0+e0ludm9rZXJ9ICkgKSB7CiAgICAgICAgJEVycm9yc3tJbnZva2VyU2VydmVyRXJyb3J9ID0gJ1NlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIEludm9rZXIgd2l0aCBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMuCiAgICBlbHNpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gKSApIHsKICAgICAgICAkRXJyb3Jze0ludm9rZXJTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgIG15ICRJbnZva2VyQ29uZmlnID0gewogICAgICAgIERlc2NyaXB0aW9uID0+ICRHZXRQYXJhbS0+e0Rlc2NyaXB0aW9ufSwKICAgICAgICBUeXBlICAgICAgICA9PiAkR2V0UGFyYW0tPntJbnZva2VyVHlwZX0sCiAgICB9OwoKICAgIGZvciBteSAkUGFyYW1Db25maWcgKEBFeHRyYVBhcmFtcykgewogICAgICAgIGlmICggZXhpc3RzICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259ICkgewogICAgICAgICAgICBteSAkRXJyb3IgPSAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufS0+KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgR2V0UGFyYW0gPT4gJEdldFBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRFcnJvcikgewogICAgICAgICAgICAgICAgJEVycm9yc3sgJFBhcmFtQ29uZmlnLT57TmFtZX0gLiAnU2VydmVyRXJyb3InIH0gPSAkRXJyb3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRJbnZva2VyQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICAjIFZhbGlkYXRpb24gZXJyb3JzLgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICA9PiAnQWRkJywKICAgICAgICAgICAgSW52b2tlckNvbmZpZyA9PiAkSW52b2tlckNvbmZpZywKICAgICAgICApOwogICAgfQoKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRHZXRQYXJhbS0+eyREaXJlY3Rpb259OwoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgJEludm9rZXJDb25maWctPnskRGlyZWN0aW9ufSA9IHsKICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICB9OwogICAgfQoKICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfSA9ICRJbnZva2VyQ29uZmlnOwoKICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyRXZWJzZXJ2aWNlRGF0YX0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb3VsZCBub3QgdXBkYXRlIHdlYiBzZXJ2aWNlJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkUmVkaXJlY3RVUkwgPQogICAgICAgICdBY3Rpb249JwogICAgICAgIC4gJFNlbGYtPntBY3Rpb259CiAgICAgICAgLiAnO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgLiAnO0ludm9rZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57SW52b2tlcn0gKQogICAgICAgIC4gJzsnOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0NoYW5nZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ0ludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0V2ZW50VHlwZScsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSA9ICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX07CiAgICBteSAkSW52b2tlckNvbmZpZyAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3IgaW52b2tlciAlcycsICRHZXRQYXJhbS0+e0ludm9rZXJ9ICksCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICVQYXJhbSwKICAgICAgICAleyRHZXRQYXJhbX0sCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgIEludm9rZXIgICAgICAgICA9PiAkR2V0UGFyYW0tPntJbnZva2VyfSwKICAgICAgICBJbnZva2VyQ29uZmlnICAgPT4gJEludm9rZXJDb25maWcsCiAgICAgICAgTWFwcGluZ0luYm91bmQgID0+ICRJbnZva2VyQ29uZmlnLT57TWFwcGluZ0luYm91bmR9LT57VHlwZX0sCiAgICAgICAgTWFwcGluZ091dGJvdW5kID0+ICRJbnZva2VyQ29uZmlnLT57TWFwcGluZ091dGJvdW5kfS0+e1R5cGV9LAogICAgKTsKfQoKc3ViIF9DaGFuZ2VBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBARXh0cmFQYXJhbXM7CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBpZiAoICRTZWxmLT57U2V0dGluZ3N9ICYmICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufSApIHsKICAgICAgICAgICAgcHVzaCBARXh0cmFQYXJhbXMsICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCo7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09sZEludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0ludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnQ29udGludWVBZnRlclNhdmUnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0V2ZW50VHlwZScsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQEV4dHJhUGFyYW1zLAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9IGRlbGV0ZSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBkZXRlcm1pbmUgY29uZmlnIGZvciBpbnZva2VyICVzJywgJEdldFBhcmFtLT57T2xkSW52b2tlcn0gKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntJbnZva2VyfSApICkgewogICAgICAgICRFcnJvcnN7SW52b2tlclNlcnZlckVycm9yfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBJbnZva2VyIHdhcyByZW5hbWVkIGFuZCBuZXcgbmFtZSBhbHJlYWR5IGV4aXN0cy4KICAgIGVsc2lmICgKICAgICAgICAkR2V0UGFyYW0tPntPbGRJbnZva2VyfSBuZSAkR2V0UGFyYW0tPntJbnZva2VyfQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkRXJyb3Jze0ludm9rZXJTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICRJbnZva2VyQ29uZmlnLT57RGVzY3JpcHRpb259ID0gJEdldFBhcmFtLT57RGVzY3JpcHRpb259OwoKICAgIGZvciBteSAkUGFyYW1Db25maWcgKEBFeHRyYVBhcmFtcykgewogICAgICAgIGlmICggZXhpc3RzICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259ICkgewogICAgICAgICAgICBteSAkRXJyb3IgPSAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufS0+KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgR2V0UGFyYW0gPT4gJEdldFBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRFcnJvcikgewogICAgICAgICAgICAgICAgJEVycm9yc3sgJFBhcmFtQ29uZmlnLT57TmFtZX0gLiAnU2VydmVyRXJyb3InIH0gPSAkRXJyb3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRJbnZva2VyQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICBpZiAoJUVycm9ycykgewogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXskR2V0UGFyYW19LAogICAgICAgICAgICAlRXJyb3JzLAogICAgICAgICAgICBNb2RlICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgICAgICBJbnZva2VyICAgICAgID0+ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9LAogICAgICAgICAgICBJbnZva2VyQ29uZmlnID0+ICRJbnZva2VyQ29uZmlnLAogICAgICAgICAgICBOZXdJbnZva2VyICAgID0+ICRHZXRQYXJhbS0+e0ludm9rZXJ9LAogICAgICAgICk7CiAgICB9CgogICAgIyBJZiBtYXBwaW5nIHR5cGVzIHdlcmUgbm90IGNoYW5nZWQsIGtlZXAgdGhlIG1hcHBpbmcgY29uZmlndXJhdGlvbi4KICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CgogICAgICAgICMgTm8gbWFwcGluZyBzZXQsIG1ha2Ugc3VyZSBpdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICBpZiAoICEkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSApIHsKICAgICAgICAgICAgZGVsZXRlICRJbnZva2VyQ29uZmlnLT57JERpcmVjdGlvbn07CiAgICAgICAgICAgIG5leHQgRElSRUNUSU9OOwogICAgICAgIH0KCiAgICAgICAgIyBNYXBwaW5nIGFkZGVkIG9yIGNoYW5nZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgbXkgJE9sZE1hcHBpbmcgPSAkSW52b2tlckNvbmZpZy0+eyREaXJlY3Rpb259LT57VHlwZX07CiAgICAgICAgaWYgKCAhJE9sZE1hcHBpbmcgfHwgKCAkT2xkTWFwcGluZyAmJiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSBuZSAkT2xkTWFwcGluZyApICkgewogICAgICAgICAgICAkSW52b2tlckNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBVcGRhdGUgaW52b2tlciBjb25maWcuCiAgICAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gPSAkSW52b2tlckNvbmZpZzsKCiAgICAjIFRha2UgY2FyZSBvZiBlcnJvciBoYW5kbGVycyB3aXRoIGludm9rZXIgZmlsdGVycyBpZiBpbnZva2VyIHdhcyByZW5hbWVkLgogICAgaWYgKAogICAgICAgICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IG5lICRHZXRQYXJhbS0+e0ludm9rZXJ9CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57RXJyb3JIYW5kbGluZ30gKQogICAgICAgICkKICAgIHsKICAgICAgICBteSAkRXJyb3JIYW5kbGluZ0NvbmZpZyA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57RXJyb3JIYW5kbGluZ307CgogICAgICAgIEVSUk9SSEFORExJTkc6CiAgICAgICAgZm9yIG15ICRFcnJvckhhbmRsaW5nICggc29ydCBrZXlzICV7JEVycm9ySGFuZGxpbmdDb25maWd9ICkgewogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfSApOwoKICAgICAgICAgICAgbXkgJEludm9rZXJGaWx0ZXIgPSAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e0ludm9rZXJGaWx0ZXJ9OwogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkSW52b2tlckZpbHRlcik7CgogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIWdyZXAgeyAkXyBlcSAkR2V0UGFyYW0tPntPbGRJbnZva2VyfSB9IEB7JEludm9rZXJGaWx0ZXJ9OwoKICAgICAgICAgICAgIyBSZW5hbWUgaW52b2tlciBpbiBlcnJvciBoYW5kbGluZyBpbnZva2VyIGZpbHRlciB0byBrZWVwIGNvbnNpc3RlbmN5LgogICAgICAgICAgICBteSBATmV3SW52b2tlckZpbHRlciA9IG1hcCB7ICRfIGVxICRHZXRQYXJhbS0+e09sZEludm9rZXJ9ID8gJEdldFBhcmFtLT57SW52b2tlcn0gOiAkXyB9IEB7JEludm9rZXJGaWx0ZXJ9OwogICAgICAgICAgICAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e0ludm9rZXJGaWx0ZXJ9ID0gXEBOZXdJbnZva2VyRmlsdGVyOwogICAgICAgIH0KCiAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntFcnJvckhhbmRsaW5nfSA9ICRFcnJvckhhbmRsaW5nQ29uZmlnOwogICAgfQoKICAgICMgYWRkZWQgZm9yIE9UT0JPVGlja2V0SW52b2tlcgoKICAgICMgVGFrZSBjYXJlIG9mIGludm9rZXIgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb24gaWYgaW52b2tlciB3YXMgcmVuYW1lZC4KICAgIGlmICggJEdldFBhcmFtLT57T2xkSW52b2tlcn0gbmUgJEdldFBhcmFtLT57SW52b2tlcn0gKSB7CgogICAgICAgICMgSW52b2tlciBjb250cm9sbGVyIG1hcHBpbmcuCiAgICAgICAgaWYgKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9CiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmdDb25maWcKICAgICAgICAgICAgICAgID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ307CgogICAgICAgICAgICBJTlZPS0VSOgogICAgICAgICAgICBmb3IgbXkgJEludm9rZXIgKCBzb3J0IGtleXMgJXskSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnfSApIHsKICAgICAgICAgICAgICAgIG5leHQgSU5WT0tFUiBpZiAkSW52b2tlciBuZSAkR2V0UGFyYW0tPntPbGRJbnZva2VyfTsKCiAgICAgICAgICAgICAgICAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnLT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnLT57ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9CiAgICAgICAgICAgICAgICA9ICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmdDb25maWc7CiAgICAgICAgfQoKICAgICAgICAjIE91dGJvdW5kIGhlYWRlciBjb25maWcuCiAgICAgICAgaWYgKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntPdXRib3VuZEhlYWRlcnN9LT57U3BlY2lmaWN9CiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICRPdXRib3VuZEhlYWRlckNvbmZpZwogICAgICAgICAgICAgICAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfTsKCiAgICAgICAgICAgIElOVk9LRVI6CiAgICAgICAgICAgIGZvciBteSAkSW52b2tlciAoIHNvcnQga2V5cyAleyRPdXRib3VuZEhlYWRlckNvbmZpZ30gKSB7CiAgICAgICAgICAgICAgICBuZXh0IElOVk9LRVIgaWYgJEludm9rZXIgbmUgJEdldFBhcmFtLT57T2xkSW52b2tlcn07CgogICAgICAgICAgICAgICAgJE91dGJvdW5kSGVhZGVyQ29uZmlnLT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkT3V0Ym91bmRIZWFkZXJDb25maWctPnsgJEdldFBhcmFtLT57T2xkSW52b2tlcn0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e091dGJvdW5kSGVhZGVyc30tPntTcGVjaWZpY30KICAgICAgICAgICAgICAgID0gJE91dGJvdW5kSGVhZGVyQ29uZmlnOwogICAgICAgIH0KCiAgICB9CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCB1cGRhdGUgd2ViIHNlcnZpY2UnKSwKICAgICAgICApOwogICAgfQoKICAgICMgSWYgdGhlIHVzZXIgd291bGQgbGlrZSB0byBjb250aW51ZSBlZGl0aW5nIHRoZSBpbnZva2VyIGNvbmZpZywganVzdCByZWRpcmVjdCB0byB0aGUgZWRpdCBzY3JlZW4uCiAgICBteSAkUmVkaXJlY3RVUkw7CiAgICBpZiAoICRHZXRQYXJhbS0+e0NvbnRpbnVlQWZ0ZXJTYXZlfSBlcSAxICkgewogICAgICAgICRSZWRpcmVjdFVSTCA9CiAgICAgICAgICAgICdBY3Rpb249JwogICAgICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJztJbnZva2VyPScKICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkR2V0UGFyYW0tPntJbnZva2VyfSApCiAgICAgICAgICAgIC4gJztFdmVudFR5cGU9JwogICAgICAgICAgICAuICRHZXRQYXJhbS0+e0V2ZW50VHlwZX0KICAgICAgICAgICAgLiAnOyc7CiAgICB9CgogICAgIyBPdGhlcndpc2UgcmV0dXJuIHRvIG92ZXJ2aWV3LgogICAgZWxzZSB7CiAgICAgICAgJFJlZGlyZWN0VVJMID0KICAgICAgICAgICAgJ0FjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAgICAgLiAkUGFyYW17V2Vic2VydmljZUlEfQogICAgICAgICAgICAuICc7JzsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgT1AgPT4gJFJlZGlyZWN0VVJMLAogICAgKTsKfQoKc3ViIF9EZWxldGVBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdJbnZva2VyJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17V2Vic2VydmljZURhdGF9LT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3IgaW52b2tlciAiIC4gJEdldFBhcmFtLT57SW52b2tlcn0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgICMgUmVtb3ZlIGludm9rZXIgZnJvbSBjb25maWcuCiAgICBkZWxldGUgJFBhcmFte1dlYnNlcnZpY2VEYXRhfS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyAkUGFyYW17V2Vic2VydmljZURhdGF9IH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmLT5fSlNPTlJlc3BvbnNlKCBTdWNjZXNzID0+ICRTdWNjZXNzICk7Cn0KCnN1YiBfQWRkRXZlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdJbnZva2VyJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ05ld0V2ZW50JywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdBc3luY2hyb25vdXMnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRXZlbnRUeXBlJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICdUaWNrZXQnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRJbnZva2VyQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIGludm9rZXIgJXMnLCAkR2V0UGFyYW0tPntJbnZva2VyfSApLAogICAgICAgICk7CiAgICB9CgogICAgIyBBZGQgdGhlIG5ldyBldmVudCB0byB0aGUgbGlzdC4KICAgIG15IEBFdmVudHMgPSBJc0FycmF5UmVmV2l0aERhdGEoICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSApID8gQHsgJEludm9rZXJDb25maWctPntFdmVudHN9IH0gOiAoKTsKICAgIHB1c2ggQEV2ZW50cywgewogICAgICAgIEFzeW5jaHJvbm91cyA9PiAkR2V0UGFyYW0tPntBc3luY2hyb25vdXN9LAogICAgICAgIEV2ZW50ICAgICAgICA9PiAkR2V0UGFyYW0tPntOZXdFdmVudH0sCiAgICB9OwoKICAgICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSA9IFxARXZlbnRzOwogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ID0gJEludm9rZXJDb25maWc7CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCB1cGRhdGUgd2ViIHNlcnZpY2UnKSwKICAgICAgICApOwogICAgfQoKICAgICMgU3RheSBpbiBlZGl0IG1vZGUuCiAgICBteSAkUmVkaXJlY3RVUkwgPQogICAgICAgICdBY3Rpb249JwogICAgICAgIC4gJFNlbGYtPntBY3Rpb259CiAgICAgICAgLiAnO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgLiAnO0ludm9rZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57SW52b2tlcn0gKQogICAgICAgIC4gJztFdmVudFR5cGU9JwogICAgICAgIC4gJEdldFBhcmFtLT57RXZlbnRUeXBlfQogICAgICAgIC4gJzsnOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0RlbGV0ZUV2ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlcicsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudE5hbWUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRJbnZva2VyQ29uZmlnKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBkZXRlcm1pbmUgY29uZmlnIGZvciBpbnZva2VyICRHZXRQYXJhbS0+e0ludm9rZXJ9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgICMgZGVsZXRlIHNlbGVjdGVkIGV2ZW50IGZyb20gbGlzdCBvZiBldmVudHMuCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGZpbmQgZXZlbnQgdG8gZGVsZXRlIGluIGNvbmZpZyBjb25maWcgZm9yIGludm9rZXIgJEdldFBhcmFtLT57SW52b2tlcn0hIiwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgQHsgJEludm9rZXJDb25maWctPntFdmVudHN9IH0gPSBncmVwIHsgJF8tPntFdmVudH0gbmUgJEdldFBhcmFtLT57RXZlbnROYW1lfSB9IEB7ICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSB9OwogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ID0gJEludm9rZXJDb25maWc7CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IHVwZGF0ZSB3ZWIgc2VydmljZScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAxICk7Cn0KCnN1YiBfU2hvd1NjcmVlbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdJbnZva2VyJywKICAgICAgICBWYWx1ZSA9PiAkUGFyYW17SW52b2tlcn0sCiAgICApOwoKICAgIG15ICVUZW1wbGF0ZURhdGEgPSAoCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJFBhcmFte0ludm9rZXJDb25maWd9LT57RGVzY3JpcHRpb259LAogICAgICAgIEludm9rZXJUeXBlID0+ICRQYXJhbXtJbnZva2VyQ29uZmlnfS0+e1R5cGV9LAogICAgICAgIEludm9rZXIgICAgID0+ICRQYXJhbXtJbnZva2VyfSwKICAgICAgICBOZXdJbnZva2VyICA9PiAkUGFyYW17TmV3SW52b2tlcn0gLy8gJFBhcmFte0ludm9rZXJ9LAogICAgKTsKCiAgICAjIEhhbmRsZSBtYXBwaW5nLgogICAgbXkgJE1hcHBpbmdNb2R1bGVzICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpNYXBwaW5nOjpNb2R1bGUnKSB8fCB7fTsKICAgIG15IEBNYXBwaW5nTW9kdWxlTGlzdCA9IHNvcnQga2V5cyAleyRNYXBwaW5nTW9kdWxlc307CiAgICBESVJFQ1RJT046CiAgICBmb3IgbXkgJERpcmVjdGlvbiAocXcoTWFwcGluZ0luYm91bmQgTWFwcGluZ091dGJvdW5kKSkgewogICAgICAgIG15ICRPbGRNYXBwaW5nID0gJFBhcmFte0ludm9rZXJDb25maWd9LT57JERpcmVjdGlvbn0tPntUeXBlfTsKICAgICAgICBteSAkTWFwcGluZyAgICA9ICRQYXJhbXskRGlyZWN0aW9ufTsKCiAgICAgICAgJFRlbXBsYXRlRGF0YXsgJERpcmVjdGlvbiAuICdTdHJnJyB9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXEBNYXBwaW5nTW9kdWxlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkRGlyZWN0aW9uLAogICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRNYXBwaW5nLAogICAgICAgICAgICBTb3J0ICAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplIFJlZ2lzdGVyQ2hhbmdlJywKICAgICAgICApOwoKICAgICAgICAjIE9ubHkgc2hvdyBjb25maWd1cmUgYnV0dG9uIGlmIHdlIGhhdmUgYW4gdW5jaGFuZ2VkIGV4aXN0aW5nIG1hcHBpbmcgdHlwZS4KICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAhJE9sZE1hcHBpbmc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICRNYXBwaW5nIG5lICRPbGRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICEkTWFwcGluZ01vZHVsZXMtPnskTWFwcGluZ30tPntDb25maWdEaWFsb2d9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAkRGlyZWN0aW9uIC4gJ0NvbmZpZ3VyZUJ1dHRvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiAuIENvbmZpZ0RpYWxvZyA9PiAkTWFwcGluZ01vZHVsZXMtPnskTWFwcGluZ30tPntDb25maWdEaWFsb2d9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgU0VDVElPTjoKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIG5leHQgU0VDVElPTiBpZiAhJFNlbGYtPntTZXR0aW5nc307CiAgICAgICAgbmV4dCBTRUNUSU9OIGlmICEkU2VsZi0+e1NldHRpbmdzfXskU2VjdGlvbn07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRTZWN0aW9uLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkU2V0dGluZyAoICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCogKSB7CiAgICAgICAgICAgIG15ICRTZXR0aW5nSFRNTDsKICAgICAgICAgICAgaWYgKCAkU2V0dGluZy0+e1R5cGV9IGVxICdBcnJheScgKSB7CiAgICAgICAgICAgICAgICAkU2V0dGluZ0hUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgICAgICAkU2V0dGluZy0+JSosCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SW52b2tlckNvbmZpZ30tPnsgJFNldHRpbmctPntOYW1lfSB9IC8vICRTZXR0aW5nLT57U2VsZWN0ZWRJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NldHRpbmcnIC4gJFNlY3Rpb24sCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nTmFtZSAgICAgICAgPT4gJFNldHRpbmctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nTGFiZWwgICAgICAgPT4gJFNldHRpbmctPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgU2V0dGluZ0hUTUwgICAgICAgID0+ICRTZXR0aW5nSFRNTCwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nRXhwbGFuYXRpb24gPT4gJFNldHRpbmctPntFeHBsYW5hdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgU2VydmVyRXJyb3IgICAgICAgID0+ICRQYXJhbXsgJFNldHRpbmctPntOYW1lfSAuICdTZXJ2ZXJFcnJvcicgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ2hhbmdlJyApIHsKCiAgICAgICAgIyBTaG93IGFsbCBpbnZva2VyIGV2ZW50IHRyaWdnZXJzLgogICAgICAgIG15ICRJbnZva2VyRXZlbnRzID0gJFBhcmFte0ludm9rZXJDb25maWd9LT57RXZlbnRzfSAvLyBbXTsKICAgICAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJEludm9rZXJFdmVudHMpICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0aGUgZXZlbnQgdHJpZ2dlcnMgdGFibGUuCiAgICAgICAgbXkgQEV2ZW50czsKICAgICAgICBteSAlSW52b2tlckV2ZW50TG9va3VwOwogICAgICAgIG15ICVSZWdpc3RlcmVkRXZlbnRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkV2ZW50JyktPkV2ZW50TGlzdCgpOwogICAgICAgIGZvciBteSAkRXZlbnQgKCBAeyRJbnZva2VyRXZlbnRzfSApIHsKICAgICAgICAgICAgcHVzaCBARXZlbnRzLCAkRXZlbnQtPntFdmVudH07CgogICAgICAgICAgICAjIFRvIHN0b3JlIHRoZSBldmVudHMgdGhhdCBhcmUgYWxyZWFkeSBhc3NpZ25lZCB0byB0aGlzIGludm9rZXIKICAgICAgICAgICAgIyAgIHRoZSBzZWxlY3RzIHNob3VsZCBsb29rIGZvciB0aGlzIHZhbHVlcyBhbmQgb21pdCB0aGVtIGZyb20gdGhlaXIgbGlzdHMuCiAgICAgICAgICAgICRJbnZva2VyRXZlbnRMb29rdXB7ICRFdmVudC0+e0V2ZW50fSB9ID0gMTsKCiAgICAgICAgICAgICMgU2V0IHRoZSBldmVudCB0eXBlIChldmVudCBvYmplY3QgbGlrZSBBcnRpY2xlIG9yIFRpY2tldCkuCiAgICAgICAgICAgICMgVmFsdWUgbm90IGN1cnJlbnRseSBpbiB1c2UgYnV0IGtlcHQgYXMgaXQgbWlnaHQgYmUgbmVlZGVkIGluIHRoZSBmdXR1cmUuCiAgICAgICAgICAgIG15ICRFdmVudFR5cGU7CiAgICAgICAgICAgIEVWRU5UVFlQRToKICAgICAgICAgICAgZm9yIG15ICRUeXBlICggc29ydCBrZXlzICVSZWdpc3RlcmVkRXZlbnRzICkgewogICAgICAgICAgICAgICAgbmV4dCBFVkVOVFRZUEUgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJFJlZ2lzdGVyZWRFdmVudHN7JFR5cGV9ICk7CiAgICAgICAgICAgICAgICBuZXh0IEVWRU5UVFlQRSBpZiAhZ3JlcCB7ICRfIGVxICRFdmVudC0+e0V2ZW50fSB9IEB7ICRSZWdpc3RlcmVkRXZlbnRzeyRUeXBlfSB9OwoKICAgICAgICAgICAgICAgICRFdmVudFR5cGUgPSAkVHlwZTsKICAgICAgICAgICAgICAgIGxhc3QgRVZFTlRUWVBFOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0V2ZW50Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkUGFyYW17V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJFBhcmFte0ludm9rZXJ9LAogICAgICAgICAgICAgICAgICAgIEV2ZW50ICAgICAgICA9PiAkRXZlbnQtPntFdmVudH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRFdmVudFR5cGUgLy8gJy0nLAogICAgICAgICAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAkRXZlbnQtPntBc3luY2hyb25vdXN9ICAgICAgICAgICAgICAgICAgID8gVHJhbnNsYXRhYmxlKCdZZXMnKSA6IFRyYW5zbGF0YWJsZSgnTm8nKSwKICAgICAgICAgICAgICAgICAgICBDb25kaXRpb24gICAgPT4gSXNIYXNoUmVmV2l0aERhdGEoICRFdmVudC0+e0NvbmRpdGlvbn0gKSA/IFRyYW5zbGF0YWJsZSgnWWVzJykgOiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnRXZlbnRzJywKICAgICAgICAgICAgVmFsdWUgPT4gXEBFdmVudHMKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBldmVudCB0cmlnZ2VyIHNlbGVjdG9ycyAob25lIGZvciBlYWNoIHR5cGUpLgogICAgICAgIG15IEBFdmVudFR5cGVMaXN0OwogICAgICAgIFRZUEU6CiAgICAgICAgZm9yIG15ICRUeXBlICggc29ydCBrZXlzICVSZWdpc3RlcmVkRXZlbnRzICkgewogICAgICAgICAgICBuZXh0IEVWRU5UVFlQRSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUmVnaXN0ZXJlZEV2ZW50c3skVHlwZX0gKTsKCiAgICAgICAgICAgICMgUmVmcmVzaCBldmVudCBsaXN0IGZvciBlYWNoIGV2ZW50IHR5cGUuCiAgICAgICAgICAgIG15IEBFdmVudExpc3QgPSBncmVwIHsgISRJbnZva2VyRXZlbnRMb29rdXB7JF99IH0gQHsgJFJlZ2lzdGVyZWRFdmVudHN7JFR5cGV9IH07CgogICAgICAgICAgICAjIGhpZGUgaW5hY3RpdmUgZXZlbnQgbGlzdHMKICAgICAgICAgICAgbXkgJEV2ZW50TGlzdEhpZGRlbiA9ICcnOwogICAgICAgICAgICBpZiAoICRUeXBlIG5lICRQYXJhbXtFdmVudFR5cGV9ICkgewogICAgICAgICAgICAgICAgJEV2ZW50TGlzdEhpZGRlbiA9ICdIaWRkZW4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRXZlbnRTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBFdmVudExpc3QsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFR5cGUgLiAnRXZlbnQnLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0V2ZW50JyksCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBFdmVudExpc3QgR2VuZXJpY0ludGVyZmFjZVNwYWNpbmcgJyAuICRFdmVudExpc3RIaWRkZW4sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0V2ZW50QWRkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEV2ZW50U3RyZyA9PiAkRXZlbnRTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEV2ZW50VHlwZUxpc3QsICRUeXBlOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgZXZlbnQgdHlwZSBzZWxlY3Rvci4KICAgICAgICAkVGVtcGxhdGVEYXRhe0V2ZW50VHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXEBFdmVudFR5cGVMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdFdmVudFR5cGUnLAogICAgICAgICAgICBTb3J0ICAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0V2ZW50VHlwZX0sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlVGVtcGxhdGVEYXRhLAogICAgICAgICAgICBXZWJzZXJ2aWNlTmFtZSA9PiAkUGFyYW17V2Vic2VydmljZURhdGF9LT57TmFtZX0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICB9LAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfUGFyYW1zR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAlR2V0UGFyYW07CiAgICBERUZJTklUSU9OOgogICAgZm9yIG15ICREZWZpbml0aW9uICggQHsgJFBhcmFte0RlZmluaXRpb259IH0gKSB7CiAgICAgICAgbXkgJE5hbWUgPSAkRGVmaW5pdGlvbi0+e05hbWV9OwoKICAgICAgICBpZiAoICREZWZpbml0aW9uLT57VHlwZX0gZXEgJ1N0cmluZycgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXskTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkTmFtZSApIC8vICREZWZpbml0aW9uLT57RGVmYXVsdH07CiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiBJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57TWFuZGF0b3J5fTsKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05lZWQgJXMnLCAoICREZWZpbml0aW9uLT57TGFiZWx9IHx8ICREZWZpbml0aW9uLT57TmFtZX0gKSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntUeXBlfSBlcSAnQXJyYXknICkgewogICAgICAgICAgICAkR2V0UGFyYW17JE5hbWV9ID0gWyAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkTmFtZSApIF07CiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXskTmFtZX0gKTsKCiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiAhJERlZmluaXRpb24tPntNYW5kYXRvcnl9OwogICAgICAgICAgICAkR2V0UGFyYW17RXJyb3J9ID0gVHJhbnNsYXRhYmxlKCAnTmVlZCAlcycsICggJERlZmluaXRpb24tPntMYWJlbH0gfHwgJERlZmluaXRpb24tPntOYW1lfSApICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KICAgIH0KCiAgICAjIFR5cGUgY2hlY2tzLgogICAgREVGSU5JVElPTjoKICAgIGZvciBteSAkRGVmaW5pdGlvbiAoIEB7ICRQYXJhbXtEZWZpbml0aW9ufSB9ICkgewogICAgICAgIG5leHQgREVGSU5JVElPTiBpZiAhJERlZmluaXRpb24tPntDaGVja307CgogICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb24tPntOYW1lfTsKCiAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFkZWZpbmVkICRHZXRQYXJhbXskTmFtZX07CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ0ludm9rZXJUeXBlJyApIHsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICRTZWxmLT5fSW52b2tlclR5cGVDaGVjayggSW52b2tlclR5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0ludm9rZXJUeXBlICVzIGlzIG5vdCByZWdpc3RlcmVkJywgJEdldFBhcmFteyROYW1lfSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ01hcHBpbmdUeXBlJyApIHsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW17TmFtZX0gKTsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICRTZWxmLT5fTWFwcGluZ1R5cGVDaGVjayggTWFwcGluZ1R5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ01hcHBpbmdUeXBlICVzIGlzIG5vdCByZWdpc3RlcmVkJywgJEdldFBhcmFteyROYW1lfSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlR2V0UGFyYW07Cn0KCnN1YiBfSW52b2tlclR5cGVDaGVjayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0ludm9rZXJUeXBlfTsKCiAgICBteSAkSW52b2tlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZScpOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlcnMpOwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRJbnZva2Vycy0+eyAkUGFyYW17SW52b2tlclR5cGV9IH0gKTsKICAgIHJldHVybiAxOwp9CgpzdWIgX01hcHBpbmdUeXBlQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtNYXBwaW5nVHlwZX07CgogICAgbXkgJE1hcHBpbmdzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpNYXBwaW5nOjpNb2R1bGUnKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJE1hcHBpbmdzKTsKCiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkTWFwcGluZ3MtPnsgJFBhcmFte01hcHBpbmdUeXBlfSB9ICk7CiAgICByZXR1cm4gMTsKfQoKc3ViIF9KU09OUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJldHVybiBKU09OIG91dHB1dC4KICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkpTT05SZXBseSgKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAkUGFyYW17U3VjY2Vzc30gLy8gMCwKICAgICAgICB9LAogICAgKTsKfQoKc3ViIF9FeHRyYVNldHRpbmdzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENsYXNzTGlzdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KCBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnICk7CiAgICBteSAkQ2xhc3NSZXN0cmljdGlvbnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW1GZXRjaDo6Q2xhc3NlcycpOwogICAgbXkgQENsYXNzZXM7CgogICAgaWYgKCAkQ2xhc3NSZXN0cmljdGlvbnMgJiYgJENsYXNzUmVzdHJpY3Rpb25zLT57ICRQYXJhbXtXZWJzZXJ2aWNlfSB9ICkgewogICAgICAgIG15ICVDbGFzc0xvb2t1cCA9IHJldmVyc2UgJENsYXNzTGlzdC0+JSo7CiAgICAgICAgQENsYXNzZXMgPSBtYXAgeyAkQ2xhc3NMb29rdXB7JF99IH0gJENsYXNzUmVzdHJpY3Rpb25zLT57ICRQYXJhbXtXZWJzZXJ2aWNlfSB9LT5AKjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBDbGFzc2VzID0ga2V5cyAkQ2xhc3NMaXN0LT4lKjsKICAgIH0KCiAgICAkU2VsZi0+e1NldHRpbmdzfXtSZXNwb25zZX0gPSBbCiAgICAgICAgbWFwIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgPT4gJ0lkZW50aWZpZXIgZm9yICcgLiAkQ2xhc3NMaXN0LT57JF99LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0lkZW50aWZpZXInIC4gJF8sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnQXJyYXknLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gPT4gJ1BsZWFzZSBzZWxlY3QgYW4gYXR0cmlidXRlIG9yIGEgY29tYmluYXRpb24gb2YgYXR0cmlidXRlcyB3aGljaCB1bmlxdWVseSBtYXAgdGhlIGNvbmZpZyBpdGVtcy4nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJFNlbGYtPl9Qb3NzaWJsZVZhbHVlc0dldCggQ2xhc3NJRCA9PiAkXyApLAogICAgICAgICAgICB9CiAgICAgICAgfSBAQ2xhc3NlcywKICAgIF07CgogICAgcmV0dXJuOwp9CgpzdWIgX1Bvc3NpYmxlVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICBxdy9DbGFzc2VzIENvbmZpZ0l0ZW1JRCBOdW1iZXIgTmFtZSBEZXBsU3RhdGVzLywKICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyB9IHNvcnQga2V5cyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgXTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AdminGenericInterfaceOperationConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRXZWJzZXJ2aWNlSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnV2Vic2VydmljZUlEJyApOwogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkV2Vic2VydmljZUlEKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIFdlYnNlcnZpY2VJRCEnKSwKICAgICAgICApOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnV2Vic2VydmljZUlEJywKICAgICAgICBWYWx1ZSA9PiAkV2Vic2VydmljZUlECiAgICApOwoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VHZXQoCiAgICAgICAgSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFdlYnNlcnZpY2VEYXRhKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBnZXQgZGF0YSBmb3IgV2Vic2VydmljZUlEICVzJywgJFdlYnNlcnZpY2VJRCApLAogICAgICAgICk7CiAgICB9CgogICAgJFNlbGYtPl9FeHRyYVNldHRpbmdzKAogICAgICAgIFdlYnNlcnZpY2UgPT4gJFdlYnNlcnZpY2VEYXRhLT57TmFtZX0sCiAgICApOwoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGQnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0FkZCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGRBY3Rpb24nICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQWRkQWN0aW9uKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hhbmdlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZUFjdGlvbicgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9DaGFuZ2VBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X0RlbGV0ZUFjdGlvbigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0ludmFsaWQgU3ViYWN0aW9uIScpLAogICAgKTsKfQoKc3ViIF9BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdPcGVyYXRpb25UeXBlJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICAgICAgQ2hlY2sgICAgID0+ICdPcGVyYXRpb25UeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICVQYXJhbSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgT3BlcmF0aW9uQ29uZmlnID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb25UeXBlfSwKICAgICAgICB9LAogICAgKTsKfQoKc3ViIF9BZGRBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBARXh0cmFQYXJhbXM7CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBpZiAoICRTZWxmLT57U2V0dGluZ3N9ICYmICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufSApIHsKICAgICAgICAgICAgcHVzaCBARXh0cmFQYXJhbXMsICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCo7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09wZXJhdGlvblR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ09wZXJhdGlvblR5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdPcGVyYXRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQEV4dHJhUGFyYW1zLAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICMgT3BlcmF0aW9uIHdpdGggc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLgogICAgZWxzaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgIG15ICRPcGVyYXRpb25Db25maWcgPSB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4gJEdldFBhcmFtLT57RGVzY3JpcHRpb259LAogICAgICAgIFR5cGUgICAgICAgID0+ICRHZXRQYXJhbS0+e09wZXJhdGlvblR5cGV9LAogICAgfTsKCiAgICBmb3IgbXkgJFBhcmFtQ29uZmlnIChARXh0cmFQYXJhbXMpIHsKICAgICAgICBpZiAoIGV4aXN0cyAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufSApIHsKICAgICAgICAgICAgbXkgJEVycm9yID0gJFBhcmFtQ29uZmlnLT57RXJyb3JGdW5jdGlvbn0tPigKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIEdldFBhcmFtID0+ICRHZXRQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkRXJyb3IpIHsKICAgICAgICAgICAgICAgICRFcnJvcnN7ICRQYXJhbUNvbmZpZy0+e05hbWV9IC4gJ1NlcnZlckVycm9yJyB9ID0gJEVycm9yOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkT3BlcmF0aW9uQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICAjIFZhbGlkYXRpb24gZXJyb3JzLgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZGQnLAogICAgICAgICAgICBPcGVyYXRpb25Db25maWcgPT4gJE9wZXJhdGlvbkNvbmZpZywKICAgICAgICApOwogICAgfQoKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRHZXRQYXJhbS0+eyREaXJlY3Rpb259OwoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICBUeXBlID0+ICRHZXRQYXJhbS0+eyREaXJlY3Rpb259LAogICAgICAgIH07CiAgICB9CgogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ID0gJE9wZXJhdGlvbkNvbmZpZzsKCiAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VVcGRhdGUoCiAgICAgICAgJXskV2Vic2VydmljZURhdGF9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJFVwZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ291bGQgbm90IHVwZGF0ZSB3ZWIgc2VydmljZScpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFJlZGlyZWN0VVJMID0KICAgICAgICAnQWN0aW9uPScKICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgIC4gJztTdWJhY3Rpb249Q2hhbmdlO1dlYnNlcnZpY2VJRD0nCiAgICAgICAgLiAkUGFyYW17V2Vic2VydmljZUlEfQogICAgICAgIC4gJztPcGVyYXRpb249JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57T3BlcmF0aW9ufSApCiAgICAgICAgLiAnOyc7CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+ICRSZWRpcmVjdFVSTCwKICAgICk7Cn0KCnN1YiBfQ2hhbmdlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnT3BlcmF0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhICA9ICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX07CiAgICBteSAkT3BlcmF0aW9uQ29uZmlnID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9OwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJE9wZXJhdGlvbkNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3Igb3BlcmF0aW9uICVzJywgJEdldFBhcmFtLT57T3BlcmF0aW9ufSApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fU2hvd1NjcmVlbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgIE9wZXJhdGlvbiAgICAgICA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb259LAogICAgICAgIE9wZXJhdGlvbkNvbmZpZyA9PiAkT3BlcmF0aW9uQ29uZmlnLAogICAgICAgIE1hcHBpbmdJbmJvdW5kICA9PiAkT3BlcmF0aW9uQ29uZmlnLT57TWFwcGluZ0luYm91bmR9LT57VHlwZX0sCiAgICAgICAgTWFwcGluZ091dGJvdW5kID0+ICRPcGVyYXRpb25Db25maWctPntNYXBwaW5nT3V0Ym91bmR9LT57VHlwZX0sCiAgICApOwp9CgpzdWIgX0NoYW5nZUFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15IEBFeHRyYVBhcmFtczsKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIGlmICggJFNlbGYtPntTZXR0aW5nc30gJiYgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259ICkgewogICAgICAgICAgICBwdXNoIEBFeHRyYVBhcmFtcywgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259LT5AKjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnT2xkT3BlcmF0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdPcGVyYXRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnQ29udGludWVBZnRlclNhdmUnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEBFeHRyYVBhcmFtcywKICAgICAgICBdLAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSAgPSAkUGFyYW17V2Vic2VydmljZURhdGF9OwogICAgbXkgJE9wZXJhdGlvbkNvbmZpZyA9IGRlbGV0ZSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkT3BlcmF0aW9uQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIG9wZXJhdGlvbiAlcycsICRHZXRQYXJhbS0+e09sZE9wZXJhdGlvbn0gKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICMgT3BlcmF0aW9uIHdhcyByZW5hbWVkIGFuZCBuZXcgbmFtZSBhbHJlYWR5IGV4aXN0cy4KICAgIGVsc2lmICgKICAgICAgICAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IG5lICRHZXRQYXJhbS0+e09wZXJhdGlvbn0KICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ICkKICAgICAgICApCiAgICB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICRPcGVyYXRpb25Db25maWctPntEZXNjcmlwdGlvbn0gPSAkR2V0UGFyYW0tPntEZXNjcmlwdGlvbn07CgogICAgZm9yIG15ICRQYXJhbUNvbmZpZyAoQEV4dHJhUGFyYW1zKSB7CiAgICAgICAgaWYgKCBleGlzdHMgJFBhcmFtQ29uZmlnLT57RXJyb3JGdW5jdGlvbn0gKSB7CiAgICAgICAgICAgIG15ICRFcnJvciA9ICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259LT4oCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBHZXRQYXJhbSA9PiAkR2V0UGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJEVycm9yKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUGFyYW1Db25maWctPntOYW1lfSAuICdTZXJ2ZXJFcnJvcicgfSA9ICRFcnJvcjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyAkUGFyYW1Db25maWctPntOYW1lfSB9ID0gJEdldFBhcmFtLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH07CiAgICB9CgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgICAgICBPcGVyYXRpb24gICAgICAgPT4gJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSwKICAgICAgICAgICAgT3BlcmF0aW9uQ29uZmlnID0+ICRPcGVyYXRpb25Db25maWcsCiAgICAgICAgICAgIE5ld09wZXJhdGlvbiAgICA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb259LAogICAgICAgICk7CiAgICB9CgogICAgIyBJZiBtYXBwaW5nIHR5cGVzIHdlcmUgbm90IGNoYW5nZWQsIGtlZXAgdGhlIG1hcHBpbmcgY29uZmlndXJhdGlvbi4KICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CgogICAgICAgICMgTm8gbWFwcGluZyBzZXQsIG1ha2Ugc3VyZSBpdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICBpZiAoICEkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSApIHsKICAgICAgICAgICAgZGVsZXRlICRPcGVyYXRpb25Db25maWctPnskRGlyZWN0aW9ufTsKICAgICAgICAgICAgbmV4dCBESVJFQ1RJT047CiAgICAgICAgfQoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQgb3IgY2hhbmdlZCwgaW5pdGlhbGl6ZSB3aXRoIGVtcHR5IGNvbmZpZy4KICAgICAgICBteSAkT2xkTWFwcGluZyA9ICRPcGVyYXRpb25Db25maWctPnskRGlyZWN0aW9ufS0+e1R5cGV9OwogICAgICAgIGlmICggISRPbGRNYXBwaW5nIHx8ICggJE9sZE1hcHBpbmcgJiYgJEdldFBhcmFtLT57JERpcmVjdGlvbn0gbmUgJE9sZE1hcHBpbmcgKSApIHsKICAgICAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBVcGRhdGUgb3BlcmF0aW9uIGNvbmZpZy4KICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntPcGVyYXRpb259LT57ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gfSA9ICRPcGVyYXRpb25Db25maWc7CgogICAgIyBUYWtlIGNhcmUgb2YgZXJyb3IgaGFuZGxlcnMgd2l0aCBvcGVyYXRpb24gZmlsdGVycyBpZiBvcGVyYXRpb24gd2FzIHJlbmFtZWQuCiAgICBpZiAoCiAgICAgICAgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSBuZSAkR2V0UGFyYW0tPntPcGVyYXRpb259CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntFcnJvckhhbmRsaW5nfSApCiAgICAgICAgKQogICAgewogICAgICAgIG15ICRFcnJvckhhbmRsaW5nQ29uZmlnID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e0Vycm9ySGFuZGxpbmd9OwoKICAgICAgICBFUlJPUkhBTkRMSU5HOgogICAgICAgIGZvciBteSAkRXJyb3JIYW5kbGluZyAoIHNvcnQga2V5cyAleyRFcnJvckhhbmRsaW5nQ29uZmlnfSApIHsKICAgICAgICAgICAgbmV4dCBFUlJPUkhBTkRMSU5HIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJEVycm9ySGFuZGxpbmdDb25maWctPnskRXJyb3JIYW5kbGluZ30gKTsKCiAgICAgICAgICAgIG15ICRPcGVyYXRpb25GaWx0ZXIgPSAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e09wZXJhdGlvbkZpbHRlcn07CiAgICAgICAgICAgIG5leHQgRVJST1JIQU5ETElORyBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRPcGVyYXRpb25GaWx0ZXIpOwoKICAgICAgICAgICAgbmV4dCBFUlJPUkhBTkRMSU5HIGlmICFncmVwIHsgJF8gZXEgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSB9IEB7JE9wZXJhdGlvbkZpbHRlcn07CgogICAgICAgICAgICAjIFJlbmFtZSBvcGVyYXRpb24gaW4gZXJyb3IgaGFuZGxpbmcgb3BlcmF0aW9uIGZpbHRlciB0byBrZWVwIGNvbnNpc3RlbmN5LgogICAgICAgICAgICBteSBATmV3T3BlcmF0aW9uRmlsdGVyID0gbWFwIHsgJF8gZXEgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSA/ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gOiAkXyB9IEB7JE9wZXJhdGlvbkZpbHRlcn07CiAgICAgICAgICAgICRFcnJvckhhbmRsaW5nQ29uZmlnLT57JEVycm9ySGFuZGxpbmd9LT57T3BlcmF0aW9uRmlsdGVyfSA9IFxATmV3T3BlcmF0aW9uRmlsdGVyOwogICAgICAgIH0KCiAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e0Vycm9ySGFuZGxpbmd9ID0gJEVycm9ySGFuZGxpbmdDb25maWc7CiAgICB9CgogICAgIyBhZGRlZCBmb3IgT1RPQk9UaWNrZXRJbnZva2VyCgogICAgIyBUYWtlIGNhcmUgb2Ygb3BlcmF0aW9uIGRlcGVuZGVudCBjb25maWd1cmF0aW9uIGlmIG9wZXJhdGlvbiB3YXMgcmVuYW1lZC4KICAgIGlmICggJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSBuZSAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgewoKICAgICAgICAjIFJvdXRlIG9wZXJhdGlvbiBtYXBwaW5nLgogICAgICAgIGlmICgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e1JvdXRlT3BlcmF0aW9uTWFwcGluZ30gKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgbXkgJFJvdXRlT3BlcmF0aW9uTWFwcGluZwogICAgICAgICAgICAgICAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntSb3V0ZU9wZXJhdGlvbk1hcHBpbmd9OwoKICAgICAgICAgICAgT1BFUkFUSU9OOgogICAgICAgICAgICBmb3IgbXkgJE9wZXJhdGlvbiAoIHNvcnQga2V5cyAleyRSb3V0ZU9wZXJhdGlvbk1hcHBpbmd9ICkgewogICAgICAgICAgICAgICAgbmV4dCBPUEVSQVRJT04gaWYgJE9wZXJhdGlvbiBuZSAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259OwoKICAgICAgICAgICAgICAgICRSb3V0ZU9wZXJhdGlvbk1hcHBpbmctPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9CiAgICAgICAgICAgICAgICAgICAgPSBkZWxldGUgJFJvdXRlT3BlcmF0aW9uTWFwcGluZy0+eyAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e1JvdXRlT3BlcmF0aW9uTWFwcGluZ30KICAgICAgICAgICAgICAgID0gJFJvdXRlT3BlcmF0aW9uTWFwcGluZzsKICAgICAgICB9CgogICAgICAgICMgT3V0Ym91bmQgaGVhZGVyIGNvbmZpZy4KICAgICAgICBpZiAoCiAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKAogICAgICAgICAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICBteSAkT3V0Ym91bmRIZWFkZXJDb25maWcKICAgICAgICAgICAgICAgID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfTsKCiAgICAgICAgICAgIE9QRVJBVElPTjoKICAgICAgICAgICAgZm9yIG15ICRPcGVyYXRpb24gKCBzb3J0IGtleXMgJXskT3V0Ym91bmRIZWFkZXJDb25maWd9ICkgewogICAgICAgICAgICAgICAgbmV4dCBPUEVSQVRJT04gaWYgJE9wZXJhdGlvbiBuZSAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259OwoKICAgICAgICAgICAgICAgICRPdXRib3VuZEhlYWRlckNvbmZpZy0+eyAkR2V0UGFyYW0tPntPcGVyYXRpb259IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkT3V0Ym91bmRIZWFkZXJDb25maWctPnsgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntPdXRib3VuZEhlYWRlcnN9LT57U3BlY2lmaWN9CiAgICAgICAgICAgICAgICA9ICRPdXRib3VuZEhlYWRlckNvbmZpZzsKICAgICAgICB9CgogICAgfQoKICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyRXZWJzZXJ2aWNlRGF0YX0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb3VsZCBub3QgdXBkYXRlIHdlYiBzZXJ2aWNlJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIElmIHRoZSB1c2VyIHdvdWxkIGxpa2UgdG8gY29udGludWUgZWRpdGluZyB0aGUgb3BlcmF0aW9uIGNvbmZpZywganVzdCByZWRpcmVjdCB0byB0aGUgZWRpdCBzY3JlZW4uCiAgICBteSAkUmVkaXJlY3RVUkw7CiAgICBpZiAoICRHZXRQYXJhbS0+e0NvbnRpbnVlQWZ0ZXJTYXZlfSBlcSAxICkgewogICAgICAgICRSZWRpcmVjdFVSTCA9CiAgICAgICAgICAgICdBY3Rpb249JwogICAgICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJztPcGVyYXRpb249JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gKQogICAgICAgICAgICAuICc7JzsKICAgIH0KCiAgICAjIE90aGVyd2lzZSByZXR1cm4gdG8gb3ZlcnZpZXcuCiAgICBlbHNlIHsKICAgICAgICAkUmVkaXJlY3RVUkwgPQogICAgICAgICAgICAnQWN0aW9uPUFkbWluR2VuZXJpY0ludGVyZmFjZVdlYnNlcnZpY2U7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJzsnOwogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0RlbGV0ZUFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09wZXJhdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fSlNPTlJlc3BvbnNlKCBTdWNjZXNzID0+IDAgKTsKICAgIH0KCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte1dlYnNlcnZpY2VEYXRhfS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntPcGVyYXRpb259LT57ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIG9wZXJhdGlvbiAkR2V0UGFyYW0tPntPcGVyYXRpb259IiwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgIyBSZW1vdmUgb3BlcmF0aW9uIGZyb20gY29uZmlnLgogICAgZGVsZXRlICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX0tPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkR2V0UGFyYW0tPntPcGVyYXRpb259IH07CiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VVcGRhdGUoCiAgICAgICAgJXsgJFBhcmFte1dlYnNlcnZpY2VEYXRhfSB9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAkU3VjY2VzcyApOwp9CgpzdWIgX1Nob3dTY3JlZW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnT3BlcmF0aW9uJywKICAgICAgICBWYWx1ZSA9PiAkUGFyYW17T3BlcmF0aW9ufSwKICAgICk7CgogICAgbXkgJVRlbXBsYXRlRGF0YSA9ICgKICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICRQYXJhbXtPcGVyYXRpb25Db25maWd9LT57RGVzY3JpcHRpb259LAogICAgICAgIE9wZXJhdGlvblR5cGUgPT4gJFBhcmFte09wZXJhdGlvbkNvbmZpZ30tPntUeXBlfSwKICAgICAgICBPcGVyYXRpb24gICAgID0+ICRQYXJhbXtPcGVyYXRpb259LAogICAgICAgIE5ld09wZXJhdGlvbiAgPT4gJFBhcmFte05ld09wZXJhdGlvbn0gLy8gJFBhcmFte09wZXJhdGlvbn0sCiAgICApOwoKICAgICMgSGFuZGxlIG1hcHBpbmcuCiAgICBteSAkTWFwcGluZ01vZHVsZXMgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Ok1hcHBpbmc6Ok1vZHVsZScpIHx8IHt9OwogICAgbXkgQE1hcHBpbmdNb2R1bGVMaXN0ID0gc29ydCBrZXlzICV7JE1hcHBpbmdNb2R1bGVzfTsKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbXkgJE9sZE1hcHBpbmcgPSAkUGFyYW17T3BlcmF0aW9uQ29uZmlnfS0+eyREaXJlY3Rpb259LT57VHlwZX07CiAgICAgICAgbXkgJE1hcHBpbmcgICAgPSAkUGFyYW17JERpcmVjdGlvbn07CgogICAgICAgICRUZW1wbGF0ZURhdGF7ICREaXJlY3Rpb24gLiAnU3RyZycgfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFxATWFwcGluZ01vZHVsZUxpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJERpcmVjdGlvbiwKICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkTWFwcGluZywKICAgICAgICAgICAgU29ydCAgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZSBSZWdpc3RlckNoYW5nZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBPbmx5IHNob3cgY29uZmlndXJlIGJ1dHRvbiBpZiB3ZSBoYXZlIGFuIHVuY2hhbmdlZCBleGlzdGluZyBtYXBwaW5nIHR5cGUuCiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRPbGRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICEkTWFwcGluZzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkTWFwcGluZyBuZSAkT2xkTWFwcGluZzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAhJE1hcHBpbmdNb2R1bGVzLT57JE1hcHBpbmd9LT57Q29uZmlnRGlhbG9nfTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJERpcmVjdGlvbiAuICdDb25maWd1cmVCdXR0b24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXJlY3Rpb24gLiBDb25maWdEaWFsb2cgPT4gJE1hcHBpbmdNb2R1bGVzLT57JE1hcHBpbmd9LT57Q29uZmlnRGlhbG9nfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIFNFQ1RJT046CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBuZXh0IFNFQ1RJT04gaWYgISRTZWxmLT57U2V0dGluZ3N9OwogICAgICAgIG5leHQgU0VDVElPTiBpZiAhJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAkU2VjdGlvbiwKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFNldHRpbmcgKCBzb3J0IHsgJGEtPntOYW1lfSBjbXAgJGItPntOYW1lfSB9ICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCogKSB7CiAgICAgICAgICAgIG15ICRTZXR0aW5nSFRNTDsKICAgICAgICAgICAgaWYgKCAkU2V0dGluZy0+e1R5cGV9IGVxICdBcnJheScgKSB7CiAgICAgICAgICAgICAgICAkU2V0dGluZ0hUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgICAgICAkU2V0dGluZy0+JSosCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17T3BlcmF0aW9uQ29uZmlnfS0+eyAkU2V0dGluZy0+e05hbWV9IH0gLy8gJFNldHRpbmctPntTZWxlY3RlZElEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2V0dGluZycgLiAkU2VjdGlvbiwKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFNldHRpbmdOYW1lICAgICAgICA9PiAkU2V0dGluZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIFNldHRpbmdMYWJlbCAgICAgICA9PiAkU2V0dGluZy0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nSFRNTCAgICAgICAgPT4gJFNldHRpbmdIVE1MLAogICAgICAgICAgICAgICAgICAgIFNldHRpbmdFeHBsYW5hdGlvbiA9PiAkU2V0dGluZy0+e0V4cGxhbmF0aW9ufSwKICAgICAgICAgICAgICAgICAgICBTZXJ2ZXJFcnJvciAgICAgICAgPT4gJFBhcmFteyAkU2V0dGluZy0+e05hbWV9IC4gJ1NlcnZlckVycm9yJyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlVGVtcGxhdGVEYXRhLAogICAgICAgICAgICBXZWJzZXJ2aWNlTmFtZSA9PiAkUGFyYW17V2Vic2VydmljZURhdGF9LT57TmFtZX0sCgogICAgICAgICAgICAjIFRPRE86IENvcGllZCBmcm9tIENJSW52b2tlciAtIG1heWJlIHVubmVjZXNzYXJ5CiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX1BhcmFtc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJUdldFBhcmFtOwogICAgREVGSU5JVElPTjoKICAgIGZvciBteSAkRGVmaW5pdGlvbiAoIEB7ICRQYXJhbXtEZWZpbml0aW9ufSB9ICkgewogICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb24tPntOYW1lfTsKCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e1R5cGV9IGVxICdTdHJpbmcnICkgewogICAgICAgICAgICAkR2V0UGFyYW17JE5hbWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5hbWUgKSAvLyAkRGVmaW5pdGlvbi0+e0RlZmF1bHR9OwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgSXNTdHJpbmdXaXRoRGF0YSggJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICEkRGVmaW5pdGlvbi0+e01hbmRhdG9yeX07CiAgICAgICAgICAgICRHZXRQYXJhbXtFcnJvcn0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzJywgJE5hbWUgKTsKICAgICAgICAgICAgcmV0dXJuIFwlR2V0UGFyYW07CiAgICAgICAgfQoKICAgICAgICBlbHNpZiAoICREZWZpbml0aW9uLT57VHlwZX0gZXEgJ0FycmF5JyApIHsKICAgICAgICAgICAgJEdldFBhcmFteyROYW1lfSA9IFsgJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJE5hbWUgKSBdOwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57TWFuZGF0b3J5fTsKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9IFRyYW5zbGF0YWJsZSggJ05lZWQgJXMnLCAoICREZWZpbml0aW9uLT57TGFiZWx9IHx8ICREZWZpbml0aW9uLT57TmFtZX0gKSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CiAgICB9CgogICAgIyBUeXBlIGNoZWNrcy4KICAgIERFRklOSVRJT046CiAgICBmb3IgbXkgJERlZmluaXRpb24gKCBAeyAkUGFyYW17RGVmaW5pdGlvbn0gfSApIHsKICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57Q2hlY2t9OwoKICAgICAgICBteSAkTmFtZSA9ICREZWZpbml0aW9uLT57TmFtZX07CiAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFkZWZpbmVkICRHZXRQYXJhbXskTmFtZX07CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ09wZXJhdGlvblR5cGUnICkgewogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgJFNlbGYtPl9PcGVyYXRpb25UeXBlQ2hlY2soIE9wZXJhdGlvblR5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ09wZXJhdGlvblR5cGUgJXMgaXMgbm90IHJlZ2lzdGVyZWQnLCAkR2V0UGFyYW17JE5hbWV9ICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e0NoZWNrfSBlcSAnTWFwcGluZ1R5cGUnICkgewogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgIUlzU3RyaW5nV2l0aERhdGEoICRHZXRQYXJhbXtOYW1lfSApOwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgJFNlbGYtPl9NYXBwaW5nVHlwZUNoZWNrKCBNYXBwaW5nVHlwZSA9PiAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICAkR2V0UGFyYW17RXJyb3J9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTWFwcGluZ1R5cGUgJXMgaXMgbm90IHJlZ2lzdGVyZWQnLCAkR2V0UGFyYW17JE5hbWV9ICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVHZXRQYXJhbTsKfQoKc3ViIF9PcGVyYXRpb25UeXBlQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtPcGVyYXRpb25UeXBlfTsKCiAgICBteSAkT3BlcmF0aW9ucyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUnKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJE9wZXJhdGlvbnMpOwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRPcGVyYXRpb25zLT57ICRQYXJhbXtPcGVyYXRpb25UeXBlfSB9ICk7CiAgICByZXR1cm4gMTsKfQoKc3ViIF9NYXBwaW5nVHlwZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17TWFwcGluZ1R5cGV9OwoKICAgIG15ICRNYXBwaW5ncyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6TWFwcGluZzo6TW9kdWxlJyk7CiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRNYXBwaW5ncyk7CgogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJE1hcHBpbmdzLT57ICRQYXJhbXtNYXBwaW5nVHlwZX0gfSApOwogICAgcmV0dXJuIDE7Cn0KCnN1YiBfSlNPTlJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyByZXR1cm4gSlNPTiBvdXRwdXQuCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5KU09OUmVwbHkoCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gJFBhcmFte1N1Y2Nlc3N9IC8vIDAsCiAgICAgICAgfSwKICAgICk7Cn0KCnN1YiBfRXh0cmFTZXR0aW5ncyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDbGFzc0xpc3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApOwogICAgbXkgJENsYXNzUmVzdHJpY3Rpb25zID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1VcHNlcnQ6OkNsYXNzZXMnKTsKICAgIG15IEBDbGFzc2VzOwoKICAgIGlmICggJENsYXNzUmVzdHJpY3Rpb25zICYmICRDbGFzc1Jlc3RyaWN0aW9ucy0+eyAkUGFyYW17V2Vic2VydmljZX0gfSApIHsKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgIEBDbGFzc2VzID0gbWFwIHsgJENsYXNzTG9va3VweyRffSB9ICRDbGFzc1Jlc3RyaWN0aW9ucy0+eyAkUGFyYW17V2Vic2VydmljZX0gfS0+QCo7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBAQ2xhc3NlcyA9IGtleXMgJENsYXNzTGlzdC0+JSo7CiAgICB9CgogICAgJFNlbGYtPntTZXR0aW5nc317UmVxdWVzdH0gPSBbCiAgICAgICAgbWFwIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgPT4gJ0lkZW50aWZpZXIgZm9yICcgLiAkQ2xhc3NMaXN0LT57JF99LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0lkZW50aWZpZXInIC4gJF8sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnQXJyYXknLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gPT4gJ1BsZWFzZSBzZWxlY3QgYW4gYXR0cmlidXRlIG9yIGEgY29tYmluYXRpb24gb2YgYXR0cmlidXRlcyB3aGljaCB1bmlxdWVseSBtYXAgdGhlIGNvbmZpZyBpdGVtcy4nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJFNlbGYtPl9Qb3NzaWJsZVZhbHVlc0dldCggQ2xhc3NJRCA9PiAkXyApLAogICAgICAgICAgICB9CiAgICAgICAgfSBAQ2xhc3NlcywKICAgIF07CgogICAgcmV0dXJuOwp9CgpzdWIgX1Bvc3NpYmxlVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICBxdy9DbGFzc2VzIENvbmZpZ0l0ZW1JRCBOdW1iZXIgTmFtZSBEZXBsU3RhdGVzLywKICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyB9IHNvcnQga2V5cyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgXTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AdminITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5JVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjcwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY2xhc3MgbGlzdCBhbmQgY2hlY2sgaXQKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgJENsYXNzTGlzdDsKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgcmVmICRDbGFzc0xpc3QgZXEgJ0hBU0gnOwoKICAgICMgZ2V0IHJvbGUgbGlzdCBhbmQgY2hlY2sgaXQsIHRoZSByb2xlIGxpc3QgbWF5IGJlIGVtcHR5CiAgICBteSAkUm9sZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICk7CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuIHVubGVzcyAkUm9sZUxpc3Q7CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4gdW5sZXNzIHJlZiAkUm9sZUxpc3QgZXEgJ0hBU0gnOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUGFyYW1PYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkVXNlck9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgbXkgQEV4YW1wbGVDbGFzc2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RGlyZWN0b3J5UmVhZCgKICAgICAgICBEaXJlY3RvcnkgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJykgLiAnL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzJywKICAgICAgICBGaWx0ZXIgICAgPT4gJyoueW1sJywKICAgICk7CgogICAgIyBsb2FkIHRoZSBSZWFkeTJJbXBvcnQgc2VsZWN0aW9uIGxpc3Qgd2l0aCBleGFtcGxlIGNsYXNzZXMgKGZvciBSZWFkeTJJbXBvcnQgZmVhdHVyZSkKICAgIG15ICVFeGFtcGxlQ2xhc3NEYXRhOwoKICAgIGZvciBteSAkRXhhbXBsZUNsYXNzRmlsZW5hbWUgKEBFeGFtcGxlQ2xhc3NlcykgewogICAgICAgIG15ICRLZXkgPSAkRXhhbXBsZUNsYXNzRmlsZW5hbWU7CiAgICAgICAgJEtleSA9fiBze14uKi8oW14vXSspJH17JDF9c214OwogICAgICAgIG15ICRWYWx1ZSA9ICRLZXk7CiAgICAgICAgJFZhbHVlID1+IHN7XiguKykueW1sfXskMX1zbXg7CiAgICAgICAgJFZhbHVlID1+IHN7X317IH1zbXhnOwogICAgICAgICRFeGFtcGxlQ2xhc3NEYXRheyRLZXl9ID0gJFZhbHVlOwogICAgfQoKICAgICRQYXJhbXtFeGFtcGxlQ2xhc3NMaXN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdFeGFtcGxlQ2xhc3MnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUV4YW1wbGVDbGFzc0RhdGEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgVmFsaWRhdGVfUmVxdWlyZWQnLAogICAgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNvbmZpZyBpdGVtIGNsYXNzIGltcG9ydDogbGlzdCBjbGFzc2VzIG9mIGZpbGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdGaWxlQ2xhc3NMaXN0JyApIHsKCiAgICAgICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICAgICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgICAgICBteSAkRXhhbXBsZUZpbGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRXhhbXBsZUZpbGUnICk7CgogICAgICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvdmFyL2l0c20vY29uZmlnaXRlbWNsYXNzZXMvJEV4YW1wbGVGaWxlIiwKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDb250ZW50ICkgewogICAgICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCByZWFkICVzIScsICRFeGFtcGxlRmlsZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAgICAgJENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgICAgICk7CgogICAgICAgIGlmICggcmVmICRDb250ZW50IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgICAgIH0KCiAgICAgICAgbXkgJUltcG9ydEl0ZW1zID0gKAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJEl0ZW0gKCAkQ29udGVudC0+QCogKSB7CiAgICAgICAgICAgIGlmICggJEl0ZW0tPntDbGFzc30gKSB7CiAgICAgICAgICAgICAgICAkSW1wb3J0SXRlbXN7Q2xhc3Nlc30gLy89IFtdOwogICAgICAgICAgICAgICAgcHVzaCAkSW1wb3J0SXRlbXN7Q2xhc3Nlc30tPkAqLCAkSXRlbS0+e0NsYXNzfXtOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRJdGVtLT57Um9sZU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEltcG9ydEl0ZW1ze1JvbGVzfSAvLz0gW107CiAgICAgICAgICAgICAgICBwdXNoICRJbXBvcnRJdGVtc3tSb2xlc30tPkAqLCAkSXRlbS0+e1JvbGVOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkpTT05SZXBseSgKICAgICAgICAgICAgRGF0YSA9PiBcJUltcG9ydEl0ZW1zLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjb25maWcgaXRlbSBjbGFzcyBpbXBvcnQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0ltcG9ydCcgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICRDb250ZW50OwoKICAgICAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgICAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgICAgIG15ICRFeGFtcGxlQ2xhc3MgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRXhhbXBsZUNsYXNzJyApOwogICAgICAgIG15ICRGaWxlV2l0aG91dEV4dGVuc2lvbjsKCiAgICAgICAgbXkgJEV4YW1wbGVDbGFzc0ZpbGVuYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0V4YW1wbGVDbGFzcycgKTsKICAgICAgICAkRXhhbXBsZUNsYXNzRmlsZW5hbWUgPX4gc3svK3xcLnsyLH19e31zbXg7ICAgICMgcmVtb3ZlIHNsYXNoZXMgYW5kIC4uCgogICAgICAgIGlmICggISRFeGFtcGxlQ2xhc3NGaWxlbmFtZSApIHsKICAgICAgICAgICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOZWVkIEV4YW1wbGVDbGFzc2VzIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBleHRyYWN0IGZpbGUgbmFtZSB3aXRob3V0IGV4dGVuc2lvbgogICAgICAgICgkRmlsZVdpdGhvdXRFeHRlbnNpb24pID0gJEV4YW1wbGVDbGFzc0ZpbGVuYW1lID1+IG17KC4qPylcLnltbCR9c214OwoKICAgICAgICAjIHJ1biBfcHJlLnBtIGlmIGF2YWlsYWJsZQogICAgICAgIGlmICggLWUgIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzLyIgLiAkRmlsZVdpdGhvdXRFeHRlbnNpb24gLiAiX3ByZS5wbSIgKSB7CgogICAgICAgICAgICBteSAkQmFja2VuZE5hbWUgPSAndmFyOjppdHNtOjpjb25maWdpdGVtY2xhc3Nlczo6JyAuICRGaWxlV2l0aG91dEV4dGVuc2lvbiAuICdfcHJlJzsKCiAgICAgICAgICAgIG15ICRMb2FkZWQgPSAkTWFpbk9iamVjdC0+UmVxdWlyZSgKICAgICAgICAgICAgICAgICRCYWNrZW5kTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkTG9hZGVkKSB7CiAgICAgICAgICAgICAgICBteSAkQmFja2VuZFByZSA9ICRLZXJuZWw6Ok9NLT5HZXQoCiAgICAgICAgICAgICAgICAgICAgJEJhY2tlbmROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAlU3RhdHVzID0gJEJhY2tlbmRQcmUtPlJ1bigpOwogICAgICAgICAgICAgICAgaWYgKCAhJFN0YXR1c3tTdWNjZXNzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSBlcnJvciBzY3JlZW4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJFN0YXR1c3tFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy8kRXhhbXBsZUNsYXNzRmlsZW5hbWUiLAogICAgICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENvbnRlbnQgKSB7CiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IHJlYWQgJXMhJywgJEV4YW1wbGVDbGFzc0ZpbGVuYW1lICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAkQ29udGVudCA9IFskQ29udGVudF07CiAgICAgICAgfQoKICAgICAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJENvbnRlbnQpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRVcGRhdGVFeGlzdGluZ0VudGl0aWVzID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1VwZGF0ZUV4aXN0aW5nRW50aXRpZXMnICk7CgogICAgICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMgPyAnVVBEQVRFJyA6ICdFUlJPUicsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICBpZiAoICRSZXN1bHQtPntFcnJvck1lc3NhZ2V9ICkgewogICAgICAgICAgICAgICAgbXkgQFBsYWNlaG9sZGVyID0gSXNBcnJheVJlZldpdGhEYXRhKCAkUmVzdWx0LT57UGxhY2Vob2xkZXJEYXRhfSApID8gJFJlc3VsdC0+e1BsYWNlaG9sZGVyRGF0YX0tPkAqIDogKCk7CiAgICAgICAgICAgICAgICAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sIEBQbGFjZWhvbGRlciApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJldHVybiBlcnJvcgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+SlNPTlJlcGx5KAogICAgICAgICAgICAgICAgRGF0YSA9PiAkUmVzdWx0LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBSdW4gX3Bvc3QucG0gaWYgYXZhaWxhYmxlLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkRXhhbXBsZUNsYXNzCiAgICAgICAgICAgICAgICAmJiAtZSAiJEhvbWUvdmFyL2l0c20vY29uZmlnaXRlbWNsYXNzZXMvIiAuICRGaWxlV2l0aG91dEV4dGVuc2lvbiAuICJfcG9zdC5wbSIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJEJhY2tlbmROYW1lID0gJ3Zhcjo6aXRzbTo6Y29uZmlnaXRlbWNsYXNzZXM6OicgLiAkRmlsZVdpdGhvdXRFeHRlbnNpb24gLiAnX3Bvc3QnOwoKICAgICAgICAgICAgICAgIG15ICRMb2FkZWQgPSAkTWFpbk9iamVjdC0+UmVxdWlyZSgKICAgICAgICAgICAgICAgICAgICAkQmFja2VuZE5hbWUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkTG9hZGVkKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRCYWNrZW5kUG9zdCA9ICRLZXJuZWw6Ok9NLT5HZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICRCYWNrZW5kTmFtZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBteSAlU3RhdHVzID0gJEJhY2tlbmRQb3N0LT5SdW4oKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU3RhdHVze1N1Y2Nlc3N9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSBlcnJvciBzY3JlZW4KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkU3RhdHVze0Vycm9yfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5KU09OUmVwbHkoCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGxpc3Qgb2YgdGhlIHZlcnNpb25zIG9mIHRoZSBkZWZpbml0aW9uIG9mIGEgY29uZmlnIGl0ZW0gY2xhc3MKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0RlZmluaXRpb25MaXN0JyApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgaWQKICAgICAgICBteSAkQ2xhc3NJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApIHVubGVzcyAkQ2xhc3NJRDsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzRGVmaW5pdGlvbkxpc3QnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGRlZmluaXRpb24gbGlzdAogICAgICAgIG15ICREZWZpbml0aW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJERlZmluaXRpb24gKCByZXZlcnNlICREZWZpbml0aW9uTGlzdC0+QCogKSB7CgogICAgICAgICAgICAjIGdldCB1c2VyIGRhdGEKICAgICAgICAgICAgbXkgJEZ1bGxOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICREZWZpbml0aW9uLT57Q3JlYXRlQnl9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgZGVmaW5pdGlvbgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzRGVmaW5pdGlvbkxpc3RSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJERlZmluaXRpb24tPiUqLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57JENsYXNzSUR9LAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5VXNlciA9PiAkRnVsbE5hbWUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGxpc3Qgb2YgdGhlIHZlcnNpb25zIG9mIHRoZSBkZWZpbml0aW9uIG9mIGEgY29uZmlnIGl0ZW0gcm9sZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1JvbGVEZWZpbml0aW9uTGlzdCcgKSB7CgogICAgICAgICMgZ2V0IHJvbGUgaWQKICAgICAgICBteSAkUm9sZUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JvbGVJRCcgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKSB1bmxlc3MgJFJvbGVJRDsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JvbGVEZWZpbml0aW9uTGlzdCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgbGlzdCBvZiBkZWZpbml0aW9ucyBmb3IgdGhhdCByb2xlLCBrZWVwaW5nIHRoZSBjYWxsIHRvIERlZmluaXRpb25MaXN0KCkKICAgICAgICBteSAkRGVmaW5pdGlvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25MaXN0KAogICAgICAgICAgICBSb2xlSUQgPT4gJFJvbGVJRCwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJERlZmluaXRpb24gKCByZXZlcnNlICREZWZpbml0aW9uTGlzdC0+QCogKSB7CgogICAgICAgICAgICAjIGdldCB1c2VyIGRhdGEKICAgICAgICAgICAgbXkgJEZ1bGxOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICREZWZpbml0aW9uLT57Q3JlYXRlQnl9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgZGVmaW5pdGlvbgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JvbGVEZWZpbml0aW9uTGlzdFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAkRGVmaW5pdGlvbi0+JSosCiAgICAgICAgICAgICAgICAgICAgUm9sZSAgICAgICAgID0+ICRSb2xlTGlzdC0+eyRSb2xlSUR9LAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5VXNlciA9PiAkRnVsbE5hbWUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNsYXNzIGRlZmluaXRpb24gdmlldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NsYXNzRGVmaW5pdGlvblZpZXcnICkgewoKICAgICAgICAjIGdldCBkZWZpbml0aW9uIGlkCiAgICAgICAgbXkgJERlZmluaXRpb25JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWZpbml0aW9uSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICREZWZpbml0aW9uSUQ7CgogICAgICAgICMgZ2V0IGRlZmluaXRpb24KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRCwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgc2lkZWJhciwgYWN0aXZhdGUgdGhlICdPdmVydmlldycgYmxvY2sKICAgICAgICAkU2VsZi0+X1Nob3dTaWRlYmFyKAogICAgICAgICAgICBPcmlnaW5hbCAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgIENsYXNzTGlzdCAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgUm9sZUxpc3QgICAgICA9PiAkUm9sZUxpc3QsCiAgICAgICAgICAgIENsYXNzU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgSUQgICA9PiAkRGVmaW5pdGlvbi0+e0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRGVmaW5pdGlvbi0+e0NsYXNzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2xhc3NWZXJzaW9uU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgSUQgICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICAgICAgVmVyc2lvbiA9PiAkRGVmaW5pdGlvbi0+e1ZlcnNpb259LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJERlZmluaXRpb24tPntEZWZpbml0aW9uU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIFRleHQgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICBteSAkVXNlck5hbWUgPSAkVXNlck9iamVjdC0+VXNlck5hbWUoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3NEZWZpbml0aW9uVmlldycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERlZmluaXRpb24tPiUqLAogICAgICAgICAgICAgICAgQ3JlYXRlQnlVc2VyID0+ICRVc2VyTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcm9sZSBkZWZpbml0aW9uIHZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdSb2xlRGVmaW5pdGlvblZpZXcnICkgewoKICAgICAgICAjIGdldCBkZWZpbml0aW9uIGlkCiAgICAgICAgbXkgJERlZmluaXRpb25JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWZpbml0aW9uSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICREZWZpbml0aW9uSUQ7CgogICAgICAgICMgZ2V0IGRlZmluaXRpb24KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Sb2xlRGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgIENsYXNzTGlzdCAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBSb2xlTGlzdCAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBSb2xlU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgSUQgICA9PiAkRGVmaW5pdGlvbi0+e1JvbGVJRH0sCiAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZpbml0aW9uLT57Um9sZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFJvbGVWZXJzaW9uU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgSUQgICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICAgICAgVmVyc2lvbiA9PiAkRGVmaW5pdGlvbi0+e1ZlcnNpb259LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJERlZmluaXRpb24tPntEZWZpbml0aW9uU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIFRleHQgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICBteSAkVXNlck5hbWUgPSAkVXNlck9iamVjdC0+VXNlck5hbWUoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm9sZURlZmluaXRpb25WaWV3JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAkRGVmaW5pdGlvbi0+JSosCiAgICAgICAgICAgICAgICBDcmVhdGVCeVVzZXIgPT4gJFVzZXJOYW1lLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjbGFzcyBkZWZpbml0aW9uIGNoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NsYXNzRGVmaW5pdGlvbkNoYW5nZScgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGlkCiAgICAgICAgbXkgJENsYXNzSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2xhc3NJRCcgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKSB1bmxlc3MgJENsYXNzSUQ7CgogICAgICAgICMgQWRkIGNvZGUgbWlycm9yIGxhbmd1YWdlIG1vZGUuCiAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0VkaXRvckxhbmd1YWdlTW9kZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAndGV4dC94LXlhbWwnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY2xhc3MgZGVmaW5pdGlvbgogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBDbGFzc1NlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJERlZmluaXRpb24tPntDbGFzc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEVkaXQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgIG15ICRFZGl0b3JSb3dzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57RWRpdG9yUm93c30gfHwgMzA7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzRGVmaW5pdGlvbkNoYW5nZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXskRGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAkQ2xhc3NMaXN0LT57JENsYXNzSUR9LAogICAgICAgICAgICAgICAgUm93cyAgICA9PiAkRWRpdG9yUm93cywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcm9sZSBkZWZpbml0aW9uIGNoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1JvbGVEZWZpbml0aW9uQ2hhbmdlJyApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgaWQKICAgICAgICBteSAkUm9sZUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JvbGVJRCcgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKSB1bmxlc3MgJFJvbGVJRDsKCiAgICAgICAgIyBBZGQgY29kZSBtaXJyb3IgbGFuZ3VhZ2UgbW9kZS4KICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnRWRpdG9yTGFuZ3VhZ2VNb2RlJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICd0ZXh0L3gteWFtbCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBjbGFzcyBkZWZpbml0aW9uCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUm9sZUlELAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgUm9sZUxpc3QgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgUm9sZVNlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJERlZmluaXRpb24tPntDbGFzc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEVkaXQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgIG15ICRFZGl0b3JSb3dzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57RWRpdG9yUm93c30gfHwgMzA7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JvbGVEZWZpbml0aW9uQ2hhbmdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAleyREZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIFJvbGVJRCA9PiAkUm9sZUlELAogICAgICAgICAgICAgICAgUm9sZSAgID0+ICRSb2xlTGlzdC0+eyRSb2xlSUR9LAogICAgICAgICAgICAgICAgUm93cyAgID0+ICRFZGl0b3JSb3dzLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjbGFzcyBkZWZpbml0aW9uIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0RlZmluaXRpb25TYXZlJyApIHsKCiAgICAgICAgIyBnZXQgYW5kIGNoZWNrIHBhcmFtcwogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgIGZvciBteSAkRm9ybVBhcmFtIChxdyhDbGFzc0lEIERlZmluaXRpb24pKSB7CiAgICAgICAgICAgICREZWZpbml0aW9ueyRGb3JtUGFyYW19ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEZvcm1QYXJhbSApIHx8ICcnOwogICAgICAgIH0KICAgICAgICBmb3IgbXkgJEZvcm1QYXJhbSAocXcoQ2xhc3NJRCBEZWZpbml0aW9uKSkgewogICAgICAgICAgICBpZiAoICEkRGVmaW5pdGlvbnskRm9ybVBhcmFtfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEZvcm1QYXJhbSEiCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVmFsaWRhdGUgWUFNTCBjb2RlIGJ5IGNvbnZlcnRpbmcgaXQgdG8gUGVybC4KICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuIHVubGVzcyByZWYgJERlZmluaXRpb25SZWYgZXEgJ0hBU0gnOwoKICAgICAgICAjIGFkZCB0byBkYXRhYmFzZQogICAgICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgJURlZmluaXRpb24sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkaXNwbGF5IGNoYW5nZSBzY3JlZW4gd2l0aCBlcnJvciBpZiBjaGVjayBmYWlsZWQKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRSZXN1bHQpICYmICEkUmVzdWx0LT57U3VjY2Vzc30gKSB7CgogICAgICAgICAgICAjIHNob3cgc2lkZWJhciwgYWN0aXZhdGUgdGhlICdPdmVydmlldycgYmxvY2sKICAgICAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgICAgIE9yaWdpbmFsICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgIENsYXNzTGlzdCAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICAgICAgQ2xhc3NTZWxlY3RlZCA9PiB7CiAgICAgICAgICAgICAgICAgICAgSUQgICA9PiAkRGVmaW5pdGlvbntDbGFzc0lEfSwKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRDbGFzc0xpc3QtPnsgJERlZmluaXRpb257Q2xhc3NJRH0gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBFZGl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICAgICAgbXkgJEVkaXRvclJvd3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntFZGl0b3JSb3dzfSB8fCAzMDsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDbGFzc0RlZmluaXRpb25DaGFuZ2UnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJURlZmluaXRpb24sCiAgICAgICAgICAgICAgICAgICAgRXJyb3IgICAgICAgID0+ICRSZXN1bHQtPntFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JBcmcxICAgID0+ICRSZXN1bHQtPntFcnJvckFyZ3N9LT5bMF0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JBcmcyICAgID0+ICRSZXN1bHQtPntFcnJvckFyZ3N9LT5bMV0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JDbGFzc2VzID0+ICdTZXJ2ZXJFcnJvciBFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICREZWZpbml0aW9ue0NsYXNzSUR9LAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICREZWZpbml0aW9ue0NsYXNzSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgUm93cyAgICAgICAgID0+ICRFZGl0b3JSb3dzLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICB9CgogICAgICAgIG15ICRDb250aW51ZUFmdGVyU2F2ZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKTsKICAgICAgICBpZiAoJENvbnRpbnVlQWZ0ZXJTYXZlKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1DbGFzc0RlZmluaXRpb25DaGFuZ2U7Q2xhc3NJRD0kRGVmaW5pdGlvbntDbGFzc0lEfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcm9sZSBkZWZpbml0aW9uIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdSb2xlRGVmaW5pdGlvblNhdmUnICkgewoKICAgICAgICAjIGdldCBhbmQgY2hlY2sgcGFyYW1zCiAgICAgICAgbXkgJURlZmluaXRpb247CiAgICAgICAgZm9yIG15ICRGb3JtUGFyYW0gKHF3KFJvbGVJRCBEZWZpbml0aW9uKSkgewogICAgICAgICAgICAkRGVmaW5pdGlvbnskRm9ybVBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRGb3JtUGFyYW0gKSB8fCAnJzsKICAgICAgICB9CiAgICAgICAgZm9yIG15ICRGb3JtUGFyYW0gKHF3KFJvbGVJRCBEZWZpbml0aW9uKSkgewogICAgICAgICAgICBpZiAoICEkRGVmaW5pdGlvbnskRm9ybVBhcmFtfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEZvcm1QYXJhbSEiCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVmFsaWRhdGUgWUFNTCBjb2RlIGJ5IGNvbnZlcnRpbmcgaXQgdG8gUGVybC4KICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuIHVubGVzcyByZWYgJERlZmluaXRpb25SZWYgZXEgJ0hBU0gnOwoKICAgICAgICAjIGFkZCB0byBkYXRhYmFzZQogICAgICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25BZGQoCiAgICAgICAgICAgICVEZWZpbml0aW9uLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZGlzcGxheSBjaGFuZ2Ugc2NyZWVuIHdpdGggZXJyb3IgaWYgY2hlY2sgZmFpbGVkCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUmVzdWx0KSAmJiAkUmVzdWx0LT57RXJyb3J9ICkgewoKICAgICAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgICAgICBPcmlnaW5hbCAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgIENsYXNzTGlzdCAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICAgICAgUm9sZUxpc3QgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgICAgIFJvbGVTZWxlY3RlZCA9PiB7CiAgICAgICAgICAgICAgICAgICAgSUQgICA9PiAkRGVmaW5pdGlvbntSb2xlSUR9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJFJvbGVMaXN0LT57ICREZWZpbml0aW9ue1JvbGVJRH0gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBFZGl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICAgICAgbXkgJEVkaXRvclJvd3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntFZGl0b3JSb3dzfSB8fCAzMDsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSb2xlRGVmaW5pdGlvbkNoYW5nZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRGVmaW5pdGlvbiwKICAgICAgICAgICAgICAgICAgICBFcnJvciAgICAgICAgPT4gJFJlc3VsdC0+e0Vycm9yfSwKICAgICAgICAgICAgICAgICAgICBFcnJvckFyZzEgICAgPT4gJFJlc3VsdC0+e0Vycm9yQXJnc30tPlswXSwKICAgICAgICAgICAgICAgICAgICBFcnJvckFyZzIgICAgPT4gJFJlc3VsdC0+e0Vycm9yQXJnc30tPlsxXSwKICAgICAgICAgICAgICAgICAgICBFcnJvckNsYXNzZXMgPT4gJ1NlcnZlckVycm9yIEVycm9yJywKICAgICAgICAgICAgICAgICAgICBSb2xlSUQgICAgICAgPT4gJERlZmluaXRpb257Um9sZUlEfSwKICAgICAgICAgICAgICAgICAgICBSb2xlICAgICAgICAgPT4gJFJvbGVMaXN0LT57ICREZWZpbml0aW9ue1JvbGVJRH0gfSwKICAgICAgICAgICAgICAgICAgICBSb3dzICAgICAgICAgPT4gJEVkaXRvclJvd3MsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgICAgIH0KCiAgICAgICAgbXkgJENvbnRpbnVlQWZ0ZXJTYXZlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbnRpbnVlQWZ0ZXJTYXZlJyApOwogICAgICAgIGlmICgkQ29udGludWVBZnRlclNhdmUpIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVJvbGVEZWZpbml0aW9uQ2hhbmdlO1JvbGVJRD0kRGVmaW5pdGlvbntSb2xlSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjbGFzcyBleHBvcnQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0V4cG9ydCcgKSB7CgogICAgICAgIG15IEBDbGFzc0lETGlzdCA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdFeHBvcnRJRCcgKTsKCiAgICAgICAgIyBleHBvcnQgdGhlIGNsYXNzZXMgdG8gYSBZQU1MIHN0cmluZwogICAgICAgIG15ICRZQU1MQ29udGVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0V4cG9ydCggSXRlbUlETGlzdCA9PiBcQENsYXNzSURMaXN0ICk7CgogICAgICAgIGlmICggISRZQU1MQ29udGVudCApIHsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgZXJyb3Igc2NyZWVuCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ0NsYXNzIGV4cG9ydCBmYWlsZWQuJywKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkSFRNTCA9ICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWw7IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFlBTUxDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICJFeHBvcnRDbGFzcy55bWwiLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkSFRNTDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNvbmZpZyBpdGVtIGNsYXNzIG92ZXJ2aWV3IGlzIHRoZSBkZWZhdWx0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoMSkgewoKICAgICAgICAjIHNob3cgc2lkZWJhciwgYWN0aXZhdGUgdGhlICdPdmVydmlldycgYmxvY2sKICAgICAgICAkU2VsZi0+X1Nob3dTaWRlYmFyKAogICAgICAgICAgICBPcmlnaW5hbCAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgIENsYXNzTGlzdCAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgUm9sZUxpc3QgICAgICAgICA9PiAkUm9sZUxpc3QsCiAgICAgICAgICAgIFNob3dPdmVydmlld0xpbmsgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQsIGZvciByb2xlcyBhbmQgZGVmaW5pdGlvbnMKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdMaXN0JywKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJENsYXNzTGlzdC0+eyRhfSBjbXAgJENsYXNzTGlzdC0+eyRifSB9IGtleXMgJENsYXNzTGlzdC0+JSogKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3RGVmaW5pdGlvbkxpc3RSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRSb2xlSUQgKCBzb3J0IHsgJFJvbGVMaXN0LT57JGF9IGNtcCAkUm9sZUxpc3QtPnskYn0gfSBrZXlzICRSb2xlTGlzdC0+JSogKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3Um9sZUxpc3RSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgUm9sZUlEID0+ICRSb2xlSUQsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgID0+ICRSb2xlTGlzdC0+eyRSb2xlSUR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkUGFyYW17T3JpZ2luYWx9LAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9Cn0KCnN1YiBfU2hvd1NpZGViYXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFBhcmFtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRDbGFzc0RlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGdlbmVyYXRlIFJvbGVPcHRpb25TdHJnLCBDbGFzc09wdGlvblN0cmcgYW5kIENsYXNzT3B0aW9uTXVsdFN0cmcgd2hpY2ggYXJlIG5lZWRlZCBmb3IgdGhlIHNpZGVib3gKICAgIG15ICRSb2xlSUQgICAgICAgICA9ICRQYXJhbXtSb2xlU2VsZWN0ZWR9ID8gJFBhcmFte1JvbGVTZWxlY3RlZH0tPntJRH0gOiAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUm9sZUlEJyApOwogICAgbXkgJFJvbGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRQYXJhbXtSb2xlTGlzdH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdSb2xlSUQnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUm9sZUlELAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CiAgICBteSAkQ2xhc3NJRCAgICAgICAgID0gJFBhcmFte0NsYXNzU2VsZWN0ZWR9ID8gJFBhcmFte0NsYXNzU2VsZWN0ZWR9LT57SUR9IDogJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICk7CiAgICBteSAkQ2xhc3NPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRQYXJhbXtDbGFzc0xpc3R9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2xhc3NJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRDbGFzc0lELAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgbXkgQEV4cG9ydElEcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdFeHBvcnRJRCcgKTsKICAgIG15ICVDbGFzc0xpc3RGb3JNdWx0U2VsOwogICAgZm9yIG15ICRDbGFzc0lEICgga2V5cyAleyAkUGFyYW17Q2xhc3NMaXN0fSB9ICkgewogICAgICAgIG15ICRIYXNDb250ZW50ID0gJXsgJENsYXNzRGVmaW5pdGlvbi0+RGVmaW5pdGlvbkdldCggQ2xhc3NJRCA9PiAkQ2xhc3NJRCApIH07CiAgICAgICAgaWYgKCRIYXNDb250ZW50KSB7CiAgICAgICAgICAgICRDbGFzc0xpc3RGb3JNdWx0U2VseyRDbGFzc0lEfSA9ICRQYXJhbXtDbGFzc0xpc3R9LT57JENsYXNzSUR9OwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ2xhc3NPcHRpb25NdWx0U3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlQ2xhc3NMaXN0Rm9yTXVsdFNlbCwKICAgICAgICAgICAgJFBhcmFte1JvbGVMaXN0fS0+JSosCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgICA9PiAnRXhwb3J0SUQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+IFxARXhwb3J0SURzLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZSBWYWxpZGF0ZV9SZXF1aXJlZCcsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CgogICAgIyB0aGlzIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBPdmVydmlldyBibG9jawogICAgbXkgJUJsb2NrRGF0YSA9ICgKICAgICAgICBSb2xlT3B0aW9uU3RyZyAgICAgID0+ICRSb2xlT3B0aW9uU3RyZywKICAgICAgICBDbGFzc09wdGlvblN0cmcgICAgID0+ICRDbGFzc09wdGlvblN0cmcsCiAgICAgICAgQ2xhc3NPcHRpb25NdWx0U3RyZyA9PiAkQ2xhc3NPcHRpb25NdWx0U3RyZywKICAgICAgICBFeGFtcGxlQ2xhc3NMaXN0ICAgID0+ICRQYXJhbXtPcmlnaW5hbH0tPntFeGFtcGxlQ2xhc3NMaXN0fSwKICAgICk7CgogICAgIyB0aGVyZSBtaWdodCBiZSBhZGRpdGlvbmFsIGRhdGEgZm9yIHRoZSBPdmVydmlldyBibG9jawogICAgS0VZOgogICAgZm9yIG15ICRLZXkgKHF3KENsYXNzU2VsZWN0ZWQgQ2xhc3NWZXJzaW9uU2VsZWN0ZWQgUm9sZVNlbGVjdGVkIFJvbGVWZXJzaW9uU2VsZWN0ZWQgRWRpdCkpIHsKICAgICAgICBuZXh0IEtFWSB1bmxlc3MgZGVmaW5lZCAkUGFyYW17JEtleX07CgogICAgICAgICRCbG9ja0RhdGF7JEtleX0gPSAkUGFyYW17JEtleX07CiAgICB9CgogICAgIyB0aGUgT3ZlcnZpZXcgYmxvY2sgaXMgdGhlIGNvbXBsZXRlIHBhZ2UKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3JywKICAgICAgICBEYXRhID0+IFwlQmxvY2tEYXRhLAogICAgKTsKCiAgICBpZiAoICRQYXJhbXtTaG93T3ZlcnZpZXdMaW5rfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQWN0aW9uT3ZlcnZpZXcnLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhIElzU3RyaW5nV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7JVBhcmFtfSwgJFR5cGU7CgogICAgIyBzZXQgZGVidWcKICAgICRTZWxmLT57RGVidWd9ID0gMDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgbXkgJFNvcnRCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CgogICAgaWYgKCAkU29ydEJ5IGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgIH0KCiAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBvcmRlcmluZyB0byBiZSB1c2VkLgogICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ1VwJzsKCiAgICAjIFNldCB0aGUgc29ydCBvcmRlciBmcm9tIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMsIG9yIHRha2UgdGhlIGRlZmF1bHQuCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICMgZ2V0IHNlc3Npb24gb2JqZWN0CiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgc3RvcmUgbGFzdCBxdWV1ZSBzY3JlZW4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBnZXQgZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgIG15ICRGaWx0ZXIgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJ0FsbCc7CiAgICBteSAkQ2F0ZWdvcnlGaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnknICk7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2F0ZWdvcnlMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M6OkNhdGVnb3J5JywKICAgICk7CiAgICBteSAlVHJhbnNsYXRlZENhdGVnb3J5TGlzdCA9IG1hcCB7ICggJF8gPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ2F0ZWdvcnlMaXN0LT57JF99ICkgKSB9IGtleXMgJENhdGVnb3J5TGlzdC0+JSo7CiAgICBteSAlUmV2ZXJzZUNhdGVnb3J5TGlzdCAgICA9IHJldmVyc2UgJVRyYW5zbGF0ZWRDYXRlZ29yeUxpc3Q7CiAgICBteSAkRGVmYXVsdENhdGVnb3J5ICAgICAgICA9ICRDb25maWctPntEZWZhdWx0Q2F0ZWdvcnl9OwogICAgbXkgJERlZmF1bHRDYXRlZ29yeUlEOwogICAgaWYgKCAkRGVmYXVsdENhdGVnb3J5ICYmICRSZXZlcnNlQ2F0ZWdvcnlMaXN0eyAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJERlZmF1bHRDYXRlZ29yeSkgfSApIHsKICAgICAgICAkRGVmYXVsdENhdGVnb3J5SUQgPSAkUmV2ZXJzZUNhdGVnb3J5TGlzdHsgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ29uZmlnLT57RGVmYXVsdENhdGVnb3J5fSApIH07CiAgICAgICAgJENhdGVnb3J5RmlsdGVyIHx8PSAkRGVmYXVsdENhdGVnb3J5SUQ7CiAgICB9CgogICAgIyBnZXQgZmlsdGVycyBzdG9yZWQgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkRmlsdGVyOwogICAgbXkgJEpTT05PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwogICAgbXkgJFN0b3JlZEZpbHRlcnMgICAgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICk7CgogICAgIyBkZWxldGUgc3RvcmVkIGZpbHRlcnMgaWYgbmVlZGVkCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWxldGVGaWx0ZXJzJyApICkgewogICAgICAgICRTdG9yZWRGaWx0ZXJzID0ge307CiAgICB9CgogICAgIyBnZXQgdGhlIGNvbHVtbiBmaWx0ZXJzIGZyb20gdGhlIHdlYiByZXF1ZXN0IG9yIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiAgICAgICAgcXcoRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlIENsYXNzKQogICAgICAgICkKICAgIHsKICAgICAgICAjIGdldCBjb2x1bW4gZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgfHwgJyc7CgogICAgICAgICMgaWYgZmlsdGVyIGlzIG5vdCBwcmVzZW50IGluIHRoZSB3ZWIgcmVxdWVzdCwgdHJ5IHdpdGggdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJENvbHVtbk5hbWUgLiAnSURzJyB9LT5bMF0gfHwgJyc7CiAgICAgICAgfQogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgfQoKICAgICMgZ2V0IGFsbCBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgUGFyYW0gPT4gJ0NvbHVtbkZpbHRlckR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgKTsKCiAgICAgICAgIyBpZiBubyBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdCwgdHJ5IGZyb20gdXNlciBwcmVmZXJlbmNlcwogICAgICAgIGlmICggIWRlZmluZWQgJEZpbHRlclZhbHVlIHx8ICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0tPntFcXVhbHN9OwogICAgICAgIH0KCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIGRlZmluZWQgJEZpbHRlclZhbHVlOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnJzsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmlsdGVyVmFsdWUgZXEgJ0RlbGV0ZUZpbHRlcic7CgogICAgICAgICRDb2x1bW5GaWx0ZXJ7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gewogICAgICAgICAgICBFcXVhbHMgPT4gJEZpbHRlclZhbHVlLAogICAgICAgIH07CiAgICAgICAgJEdldENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRmlsdGVyVmFsdWU7CiAgICB9CgogICAgIyBidWlsZCBOYXZpZ2F0aW9uQmFyICYgdG8gZ2V0IHRoZSBvdXRwdXQgZmFzdGVyIQogICAgbXkgJFJlZnJlc2ggPSAnJzsKICAgIGlmICggJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9ICkgewogICAgICAgICRSZWZyZXNoID0gNjAgKiAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX07CiAgICB9CgogICAgbXkgJE91dHB1dDsKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdBSkFYRmlsdGVyVXBkYXRlJyApIHsKICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBSZWZyZXNoID0+ICRSZWZyZXNoLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CiAgICBteSAlVHJhbnNsYXRlZENsYXNzTGlzdCA9IG1hcCB7ICggJF8gPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ2xhc3NMaXN0LT57JF99ICkgKSB9IGtleXMgJENsYXNzTGlzdC0+JSo7CgogICAgIyBnZXQgcG9zc2libGUgZGVwbG95bWVudCBzdGF0ZSBsaXN0IGZvciBjb25maWcgaXRlbXMgdG8gYmUgc2hvd24KICAgIG15ICRTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdwcmVwcm9kdWN0aXZlJywgJ3Byb2R1Y3RpdmUnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzZXQgdGhlIGRlcGxveW1lbnQgc3RhdGUgSURzIHBhcmFtZXRlciBmb3IgdGhlIHNlYXJjaAogICAgbXkgJERlcGxTdGF0ZUlEczsKICAgIGZvciBteSAkRGVwbFN0YXRlS2V5ICggc29ydCBrZXlzICV7JFN0YXRlTGlzdH0gKSB7CiAgICAgICAgcHVzaCBAeyREZXBsU3RhdGVJRHN9LCAkRGVwbFN0YXRlS2V5OwogICAgfQoKICAgICMgdmlld2FibGUgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15IEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9IGtleXMgJXsKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApCiAgICB9OwoKICAgICMgZ2V0IHBlcm1pc3Npb25zCiAgICBteSAkUGVybWlzc2lvbiA9ICdydyc7CiAgICBpZiAoICRDb25maWctPntWaWV3QWxsUG9zc2libGVDb25maWdJdGVtc30gKSB7CiAgICAgICAgJFBlcm1pc3Npb24gPSAncm8nOwogICAgfQoKICAgICMgc29ydCBvbiBkZWZhdWx0IGJ5IHVzaW5nIGJvdGggKFByaW9yaXR5LCBBZ2UpIGVsc2UgdXNlIG9ubHkgb25lIHNvcnQgYXJndW1lbnQKICAgIG15ICVTb3J0OwoKICAgICMgZ2V0IGlmIHNlYXJjaCByZXN1bHQgc2hvdWxkIGJlIHByZS1zb3J0ZWQgYnkgcHJpb3JpdHkKICAgIG15ICRQcmVTb3J0QnlQcmlvcml0eSA9ICRDb25maWctPnsnUHJlU29ydDo6QnlQcmlvcml0eSd9OwogICAgaWYgKCAhJFByZVNvcnRCeVByaW9yaXR5ICkgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+ICRTb3J0QnksCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+IFsgJ1ByaW9yaXR5JywgJFNvcnRCeSBdLAogICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0Rvd24nLCAgICAgJE9yZGVyQnkgXSwKICAgICAgICApOwogICAgfQoKICAgICMgbXkgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgdG8gc3RvcmUgdGhlIE5hdkJhciBmaWx0ZXJzCiAgICBteSAlRmlsdGVyczsKICAgIG15ICVDYXRlZ29yeTJDbGFzc0lEOwoKICAgIENMQVNTSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJFRyYW5zbGF0ZWRDbGFzc0xpc3R7JGF9IGNtcCAkVHJhbnNsYXRlZENsYXNzTGlzdHskYn0gfSBrZXlzICVUcmFuc2xhdGVkQ2xhc3NMaXN0ICkgewoKICAgICAgICAjIHNob3cgbWVudSBsaW5rIG9ubHkgaWYgdXNlciBoYXMgYWNjZXNzIHJpZ2h0cwogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgICA9PiAkQ29uZmlnLT57UGVybWlzc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDTEFTU0lEIGlmICEkSGFzQWNjZXNzOwoKICAgICAgICAjIGZldGNoIGNsYXNzIHByZWZlcmVuY2VzIHRvIHJldHJpZXZlIGNhdGVnb3JpZXMgZm9yIGNsYXNzCiAgICAgICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTSUQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJENsYXNzUHJlZmVyZW5jZXN7Q2F0ZWdvcmllc30gKTsKCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeSAoICRDbGFzc1ByZWZlcmVuY2Vze0NhdGVnb3JpZXN9LT5AKiApIHsKICAgICAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkUmV2ZXJzZUNhdGVnb3J5TGlzdHsgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDYXRlZ29yeSkgfTsKICAgICAgICAgICAgcHVzaCBAeyAkQ2F0ZWdvcnkyQ2xhc3NJRHskQ2F0ZWdvcnlJRH0gfSwgJENsYXNzSUQ7CiAgICAgICAgfQogICAgfQoKICAgICMgb3JkZXIgdGhlIGNhdGVnb3J5IGZpbHRlcnMgYW5kIC0gaWYgbm90IHlldCBzZXQgLSBzZWxlY3QgdGhlIGNhdGVnb3J5IHNob3duCiAgICBteSAlQ2F0ZWdvcnlGaWx0ZXJzOwogICAgewogICAgICAgIG15IEBTb3J0ZWRDYXRlZ29yaWVzID0gc29ydCB7ICRUcmFuc2xhdGVkQ2F0ZWdvcnlMaXN0eyRhfSBjbXAgJFRyYW5zbGF0ZWRDYXRlZ29yeUxpc3R7JGJ9IH0ga2V5cyAlQ2F0ZWdvcnkyQ2xhc3NJRDsKCiAgICAgICAgbXkgJFByaW8gPSAyOwogICAgICAgICVDYXRlZ29yeUZpbHRlcnMgPSBtYXAgewogICAgICAgICAgICAkXyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICRUcmFuc2xhdGVkQ2F0ZWdvcnlMaXN0eyRffSwKICAgICAgICAgICAgICAgIFByaW8gPT4gJFByaW8rKywKICAgICAgICAgICAgfQogICAgICAgIH0gQFNvcnRlZENhdGVnb3JpZXM7CgogICAgICAgIGlmICggJERlZmF1bHRDYXRlZ29yeUlEICYmICRDYXRlZ29yeUZpbHRlcnN7JERlZmF1bHRDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgJENhdGVnb3J5RmlsdGVyc3skRGVmYXVsdENhdGVnb3J5SUR9e1ByaW99ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIGNsYXNzIGZpbHRlcnMgZm9yIHRoZSBzZWxlY3RlZCBjYXRlZ29yeQogICAgbXkgJENvdW50VG90YWwgPSAwOwogICAgbXkgQEFsbEN1cnJlbnRDbGFzc2VzOwogICAgaWYgKCRDYXRlZ29yeUZpbHRlcikgewoKICAgICAgICBteSAkUHJpbyA9IDI7CiAgICAgICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRUcmFuc2xhdGVkQ2xhc3NMaXN0eyRhfSBjbXAgJFRyYW5zbGF0ZWRDbGFzc0xpc3R7JGJ9IH0gJENhdGVnb3J5MkNsYXNzSUR7JENhdGVnb3J5RmlsdGVyfS0+QCogKSB7CiAgICAgICAgICAgIG15ICRDb3VudENsYXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUlEcywKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgICAgIFBlcm1pc3Npb24gICA9PiAkUGVybWlzc2lvbiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBSZXN1bHQgICAgICAgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENvdW50VG90YWwgKz0gJENvdW50Q2xhc3M7CgogICAgICAgICAgICBwdXNoIEBBbGxDdXJyZW50Q2xhc3NlcywgJENsYXNzSUQ7CgogICAgICAgICAgICAjIGFkZCBmaWx0ZXIgd2l0aCBwYXJhbXMgZm9yIHRoZSBzZWFyY2ggbWV0aG9kCiAgICAgICAgICAgICRGaWx0ZXJzeyRDbGFzc0lEfSA9IHsKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkVHJhbnNsYXRlZENsYXNzTGlzdHskQ2xhc3NJRH0sCiAgICAgICAgICAgICAgICBQcmlvICAgPT4gJFByaW8rKywKICAgICAgICAgICAgICAgIENvdW50ICA9PiAkQ291bnRDbGFzcywKICAgICAgICAgICAgICAgIFNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+ICREZXBsU3RhdGVJRHMsCiAgICAgICAgICAgICAgICAgICAgJVNvcnQsCiAgICAgICAgICAgICAgICAgICAgTGltaXQgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgICAgICAgICBQZXJtaXNzaW9uID0+ICRQZXJtaXNzaW9uLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgImFsbCIgZmlsdGVyIGlmIHRoZXJlIGlzIG5vdCBvbmx5IG9uZSBjdXJyZW50IGZpbHRlciwgc2V0IHRoZSBmaWx0ZXIgaWYgbm90IHByb3ZpZGVkCiAgICBpZiAoIHNjYWxhciBrZXlzICVGaWx0ZXJzID09IDEgKSB7CiAgICAgICAgKCRGaWx0ZXIpID0ga2V5cyAlRmlsdGVyczsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRGaWx0ZXJze0FsbH0gPSB7CiAgICAgICAgICAgIE5hbWUgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0FsbCcpLAogICAgICAgICAgICBQcmlvICAgPT4gMSwKICAgICAgICAgICAgQ291bnQgID0+ICRDb3VudFRvdGFsLAogICAgICAgICAgICBTZWFyY2ggPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFxAQWxsQ3VycmVudENsYXNzZXMsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUlEcywKICAgICAgICAgICAgICAgICVTb3J0LAogICAgICAgICAgICAgICAgTGltaXQgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJFBlcm1pc3Npb24sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgfSwKICAgICAgICB9OwoKICAgICAgICBpZiAoICEkRmlsdGVyIHx8ICEkRmlsdGVyc3skRmlsdGVyfSApIHsKICAgICAgICAgICAgJEZpbHRlciA9ICdBbGwnOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmlldyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFZpZXcgJiYgJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFZpZXcgPSAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICRWaWV3IHx8PSAnU21hbGwnOwoKICAgICMgQ2hlY2sgaWYgc2VsZWN0ZWQgdmlldyBpcyBhdmFpbGFibGUuCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6T3ZlcnZpZXcnKTsKICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKCiAgICAgICAgIyBUcnkgdG8gZmluZCBmYWxsYmFjaywgdGFrZSBmaXJzdCBjb25maWd1cmVkIHZpZXcgbW9kZS4KICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAkVmlldyA9ICRLZXk7CiAgICAgICAgICAgIGxhc3QgS0VZOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBwZXJzb25hbCBwYWdlIHNob3duIGNvdW50CiAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPntTZXNzaW9ufXskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwoKICAgICMgZG8gc2hvd24gY29uZmlnIGl0ZW0gbG9va3VwCiAgICBteSAkTGltaXQgPSAxXzAwMDsKCiAgICBteSAkRWxlbWVudENoYW5nZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRWxlbWVudENoYW5nZWQnICkgfHwgJyc7CiAgICBteSAkSGVhZGVyQ29sdW1uICAgPSAkRWxlbWVudENoYW5nZWQ7CiAgICAkSGVhZGVyQ29sdW1uID1+IHN7XEEgQ29sdW1uRmlsdGVyIH17fW1zeGc7CgogICAgIyBnZXQgZGF0YSAodmlld2FibGUgY29uZmlnIGl0ZW1zLi4uKQogICAgIyBzZWFyY2ggYWxsIGNvbmZpZyBpdGVtcwogICAgbXkgQFZpZXdhYmxlQ29uZmlnSXRlbXM7CiAgICBteSBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zOwoKICAgIGlmICggQFZpZXdhYmxlRGVwbFN0YXRlSURzICYmIEBBbGxDdXJyZW50Q2xhc3NlcyApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gdmFsdWVzCiAgICAgICAgaWYgKAogICAgICAgICAgICAhSXNTdHJpbmdXaXRoRGF0YSgkSGVhZGVyQ29sdW1uKQogICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCRIZWFkZXJDb2x1bW4pCiAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdPbmx5VmFsdWVzT25Db25maWdJdGVtJykKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyfS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBMaW1pdCAgPT4gJExpbWl0LAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkU3RhcnQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMTsKCiAgICAgICAgICAgIEBWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyfS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBMaW1pdCAgPT4gJFN0YXJ0ICsgJFBhZ2VTaG93biAtIDEsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgfQoKICAgICMgVE9ETyBNYXliZSB0aGVyZSBpcyBhIG1vcmUgZWxlZ2FudCB3YXkgdG8gZG8gdGhpcz8KICAgICRTZWxmLT57RmlsdGVyfSAgICAgICAgICA9ICRGaWx0ZXI7CiAgICAkU2VsZi0+e0ZpbHRlcnN9ICAgICAgICAgPSBcJUZpbHRlcnM7CiAgICAkU2VsZi0+e0NhdGVnb3J5RmlsdGVyc30gPSBcJUNhdGVnb3J5RmlsdGVyczsKICAgICRTZWxmLT57Q2F0ZWdvcnlGaWx0ZXJ9ICA9ICRDYXRlZ29yeUZpbHRlcjsKCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWEZpbHRlclVwZGF0ZScgKSB7CgogICAgICAgIG15ICRGaWx0ZXJDb250ZW50ID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdygKICAgICAgICAgICAgRmlsdGVyQ29udGVudE9ubHkgICAgID0+IDEsCiAgICAgICAgICAgIEhlYWRlckNvbHVtbiAgICAgICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICBFbGVtZW50Q2hhbmdlZCAgICAgICAgPT4gJEVsZW1lbnRDaGFuZ2VkLAogICAgICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gXEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgVmlldyAgICAgICAgICAgICAgICAgID0+ICRWaWV3LAogICAgICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXJzICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmlsdGVyQ29udGVudCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBmaWx0ZXIgY29udGVudCBkYXRhIG9mICVzIScsICRIZWFkZXJDb2x1bW4gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWx0ZXJDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgc3RvcmUgY29sdW1uIGZpbHRlcnMKICAgICAgICBteSAkU3RvcmVkRmlsdGVycyA9IFwlQ29sdW1uRmlsdGVyOwoKICAgICAgICBteSAkU3RvcmVkRmlsdGVyc0tleSA9ICdVc2VyU3RvcmVkRmlsdGVyQ29sdW1ucy0nIC4gJFNlbGYtPntBY3Rpb259IC4gJy0nIC4gJFNlbGYtPntGaWx0ZXJ9OwogICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICRTdG9yZWRGaWx0ZXJzS2V5LAogICAgICAgICAgICBWYWx1ZSAgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiAkU3RvcmVkRmlsdGVycyApLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJU5hdkJhckZpbHRlciA9IG1hcCB7CiAgICAgICAgJENhdGVnb3J5RmlsdGVyc3skX317UHJpb30gPT4gewogICAgICAgICAgICBDYXRlZ29yeUZpbHRlciA9PiAkXywKICAgICAgICAgICAgJENhdGVnb3J5RmlsdGVyc3skX30tPiUqLAogICAgICAgIH0KICAgIH0ga2V5cyAlQ2F0ZWdvcnlGaWx0ZXJzOwoKICAgIG15ICVDbGFzc0ZpbHRlciA9IG1hcCB7CiAgICAgICAgJEZpbHRlcnN7JF99e1ByaW99ID0+IHsKICAgICAgICAgICAgRmlsdGVyID0+ICRfLAogICAgICAgICAgICAkRmlsdGVyc3skX30tPiUqLAogICAgICAgIH0KICAgIH0ga2V5cyAlRmlsdGVyczsKCiAgICBteSAkQ29sdW1uRmlsdGVyTGluayA9ICcnOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQga2V5cyAlR2V0Q29sdW1uRmlsdGVyICkgewoKICAgICAgICBuZXh0IENPTFVNTk5BTUUgdW5sZXNzICRDb2x1bW5OYW1lOwogICAgICAgIG5leHQgQ09MVU1OTkFNRSB1bmxlc3MgZGVmaW5lZCAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfTsKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gZXEgJyc7CgogICAgICAgICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgICAgIC49ICc7JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJ0NvbHVtbkZpbHRlcicgLiAkQ29sdW1uTmFtZSApCiAgICAgICAgICAgIC4gJz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gKTsKICAgIH0KCiAgICBteSAkQ2F0ZWdvcnlGaWx0ZXJVUkkgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV0nLAogICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlGaWx0ZXIgPT4gJENhdGVnb3J5RmlsdGVyLAogICAgICAgIH0sCiAgICApOwogICAgbXkgJExpbmtQYWdlID0gJ0ZpbHRlcj0nCiAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgIC4gJztDYXRlZ29yeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2F0ZWdvcnlGaWx0ZXJVUkkgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtTb3J0ID0gJ1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztDYXRlZ29yeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2F0ZWdvcnlGaWx0ZXJVUkkgKQogICAgICAgIC4gJztGaWx0ZXI9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAkQ29sdW1uRmlsdGVyTGluawogICAgICAgIC4gJzsnOwoKICAgIG15ICRMaW5rRmlsdGVyID0gJ1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU29ydEJ5ICkKICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJzsnOwoKICAgIG15ICRMYXN0Q29sdW1uRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xhc3RDb2x1bW5GaWx0ZXInICkgfHwgJyc7CgogICAgaWYgKCAhJExhc3RDb2x1bW5GaWx0ZXIgJiYgJENvbHVtbkZpbHRlckxpbmsgKSB7CgogICAgICAgICMgaXMgcGxhbm5lZCB0byBoYXZlIGEgbGluayB0byBnbyBiYWNrIGhlcmUKICAgICAgICAkTGFzdENvbHVtbkZpbHRlciA9IDE7CiAgICB9CgogICAgIyBzaG93IGNvbmZpZyBpdGVtcwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgIENhdGVnb3J5RmlsdGVyICAgICAgICA9PiAkQ2F0ZWdvcnlGaWx0ZXIsCiAgICAgICAgRmlsdGVycyAgICAgICAgICAgICAgID0+IFwlQ2xhc3NGaWx0ZXIsCiAgICAgICAgQ2F0ZWdvcnlGaWx0ZXJzICAgICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIENvbmZpZ0l0ZW1JRHMgICAgICAgICA9PiBcQFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIEdldENvbHVtbkZpbHRlciAgICAgICA9PiBcJUdldENvbHVtbkZpbHRlciwKICAgICAgICBMYXN0Q29sdW1uRmlsdGVyICAgICAgPT4gJExhc3RDb2x1bW5GaWx0ZXIsCiAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgID0+ICdBZ2VudElUU01Db25maWdJdGVtJywKICAgICAgICBUb3RhbCAgICAgICAgICAgICAgICAgPT4gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgUmVxdWVzdGVkVVJMICAgICAgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICAgICBWaWV3ICAgICAgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgQnVsayAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgVGl0bGVOYW1lICAgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbScpLAogICAgICAgIFRpdGxlVmFsdWUgICAgICAgICAgICA9PiAkU2VsZi0+e0ZpbHRlcnN9eyRGaWx0ZXJ9e05hbWV9LAogICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgICAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgTGlua0ZpbHRlciAgICAgICAgICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXJzICAgPT4gMSwKICAgICAgICBDb2x1bW5GaWx0ZXJGb3JtICAgICAgPT4gewogICAgICAgICAgICBGaWx0ZXIgICA9PiAkRmlsdGVyICAgICAgICAgfHwgJycsCiAgICAgICAgICAgIENhdGVnb3J5ID0+ICRDYXRlZ29yeUZpbHRlciB8fCAnJywKICAgICAgICB9LAoKICAgICAgICAjIGRvIG5vdCBwcmludCB0aGUgcmVzdWx0IGVhcmxpZXIsIGJ1dCByZXR1cm4gY29tcGxldGUgY29udGVudAogICAgICAgIE91dHB1dCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBwYWdlIGZvb3RlcgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKSBpZiAkU2VsZi0+e1N1YmFjdGlvbn0gbmUgJ0FKQVhGaWx0ZXJVcGRhdGUnOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemAdd.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUFkZDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7JVBhcmFtfSwgJFR5cGU7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICBDTEFTU19JRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTX0lEIGlmICRIYXNBY2Nlc3M7CgogICAgICAgICMgcmVtb3ZlIGZyb20gY2xhc3MgbGlzdCB3aGVuIGFjY2VzcyBpcyBkZW5pZWQKICAgICAgICBkZWxldGUgJENsYXNzTGlzdC0+eyRDbGFzc0lEfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc2hvdyB0aGUgbGlzdCBvZiBDSSBjbGFzc2VzIHNvcnRlZCBieSBuYW1lCiAgICBmb3IgbXkgJEl0ZW1JRCAoCiAgICAgICAgc29ydCB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJHskQ2xhc3NMaXN0fXskYX0gKSBjbXAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkeyRDbGFzc0xpc3R9eyRifSApCiAgICAgICAgfSBrZXlzICV7JENsYXNzTGlzdH0KICAgICAgICApCiAgICB7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IGl0ZW0gbGlzdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0l0ZW1MaXN0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc0xpc3QtPnskSXRlbUlEfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0FkZCcpLAogICAgICAgICksCiAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUFkZCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemAttachment.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgSURzCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgY2hlY2sgcGFyYW0KICAgIGlmICggISRDb25maWdJdGVtSUQgfHwgISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnSXRlbUlEIGFuZCBWZXJzaW9uSUQgYXJlIG5lZWRlZCEnLAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAhPSAkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1ZlcnNpb25JRCBkb2VzIG5vdCBiZWxvbmcgdG8gQ29uZmlnSXRlbUlEIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICk7CiAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICBteSAkSFRNTFV0aWxzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIEdldCB0aGUgRmllbGQgY29udGVudC4KICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn07CgogICAgICAgICMgIyBCdWlsZCBiYXNlIFVSTCBmb3IgaW4tbGluZSBpbWFnZXMuCiAgICAgICAgIyBteSAkU2Vzc2lvbklEID0gJyc7CiAgICAgICAgIyBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICMgICAgICRTZXNzaW9uSUQgPSAnOycgLiAkU2VsZi0+e1Nlc3Npb25OYW1lfSAuICc9JyAuICRTZWxmLT57U2Vzc2lvbklEfTsKICAgICAgICAjICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgIyAgICAgICAgIChBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtDb25maWdJdGVtSUQ9XGQrO0ZpbGVuYW1lPVx3KykKICAgICAgICAjICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgICMgfQoKICAgICAgICAjIGZldGNoIGNvbmZpZyBpdGVtIGF0dGFjaG1lbnQgbGlzdCBmb3IgaGFuZGxpbmcgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIGF0dGFjaG1lbnQgZGF0YSBhbmQgc3RvcmUgaW4gaGFzaCBmb3IgUmljaFRleHREb2N1bWVudFNlcnZlCiAgICAgICAgbXkgJUF0dGFjaG1lbnRzOwogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfXtDb250ZW50SUR9ID0gJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX17UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH07CiAgICAgICAgfQoKICAgICAgICAjIG5lZWRlZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBwYXJhbXMgZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCInLAogICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAnaW5saW5lJywKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIGJhc2UgdXJsCiAgICAgICAgbXkgJFVSTCA9ICdBY3Rpb249JyAuICggJExheW91dE9iamVjdC0+e1VzZXJUeXBlfSBlcSAnVXNlcicgPyAnQWdlbnQnIDogJ0N1c3RvbWVyJyApIC4gJ0lUU01Db25maWdJdGVtQXR0YWNobWVudDtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50JwogICAgICAgICAgICAuICI7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTtWZXJzaW9uSUQ9JENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9O0ZpbGVuYW1lPSI7CgogICAgICAgICMgcmVmb3JtYXQgcmljaCB0ZXh0IGRvY3VtZW50IHRvIGhhdmUgY29ycmVjdCBjaGFyc2V0IGFuZCBsaW5rcyB0bwogICAgICAgICMgaW5saW5lIGRvY3VtZW50cwogICAgICAgICVEYXRhID0gJExheW91dE9iamVjdC0+UmljaFRleHREb2N1bWVudFNlcnZlKAogICAgICAgICAgICBEYXRhICAgICAgICAgICAgICAgPT4gXCVEYXRhLAogICAgICAgICAgICBVUkwgICAgICAgICAgICAgICAgPT4gJFVSTCwKICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICAgID0+IFwlQXR0YWNobWVudHMsCiAgICAgICAgICAgIExvYWRFeHRlcm5hbEltYWdlcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkRGF0YXtDb250ZW50fTsKCiAgICAgICAgIyByZW1vdmUgYWN0aXZlIGh0bWwgY29udGVudCAoc2NyaXB0cywgYXBwbGV0cywgZXRjLi4uKQogICAgICAgIG15ICVTYWZlQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPlNhZmV0eSgKICAgICAgICAgICAgU3RyaW5nICAgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIE5vQXBwbGV0ICAgICA9PiAxLAogICAgICAgICAgICBOb09iamVjdCAgICAgPT4gMSwKICAgICAgICAgICAgTm9FbWJlZCAgICAgID0+IDEsCiAgICAgICAgICAgIE5vSW50U3JjTG9hZCA9PiAwLAogICAgICAgICAgICBOb0V4dFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9KYXZhU2NyaXB0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWtlIHRoZSBzYWZlIGNvbnRlbnQgaWYgbmVjY2Vzc2FyeQogICAgICAgIGlmICggJFNhZmVDb250ZW50e1JlcGxhY2V9ICkgewogICAgICAgICAgICAkRmllbGRDb250ZW50ID0gJFNhZmVDb250ZW50e1N0cmluZ307CiAgICAgICAgfQoKICAgICAgICAjIGRldGVjdCBhbGwgcGxhaW4gdGV4dCBsaW5rcyBhbmQgcHV0IHRoZW0gaW50byBhbiBIVE1MIDxhPiB0YWcKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+TGlua1F1b3RlKAogICAgICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICApOwoKICAgICAgICAjIHNldCB0YXJnZXQ9Il9ibGFuayIgYXR0cmlidXRlIHRvIGFsbCBIVE1MIDxhPiB0YWdzCiAgICAgICAgIyB0aGUgTGlua1F1b3RlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGNhbGxlZCBhZ2FpbgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBUYXJnZXRBZGQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCBuZWVkZWQgSFRNTCBoZWFkZXJzCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgIFN0cmluZyAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgQ2hhcnNldCA9PiAndXRmLTgnLAogICAgICAgICk7CgogICAgICAgICMgZXNjYXBlIHNpbmdsZSBxdW90ZXMKICAgICAgICAkRmllbGRDb250ZW50ID1+IHMvJy8mIzM5Oy9nOwoKICAgICAgICAjIFJldHVybiBjb21wbGV0ZSBIVE1MIGFzIGFuIGF0dGFjaG1lbnQuCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWItYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgIG15ICRGaWxlbmFtZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWxlbmFtZScgKTsKCiAgICAgICAgIyBjaGVjayBwYXJhbQogICAgICAgIGlmICggISRGaWxlbmFtZSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ZpbGVuYW1lIGlzIG5lZWRlZCEnLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYW4gYXR0YWNobWVudAogICAgICAgIG15ICREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICApOwogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREYXRhKSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEZpbGVuYW1lKS4iLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRGF0YSkgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KCAkRGF0YS0+JSogKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEZpbGVuYW1lKSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CiAgICB9CgogICAgIyBObyAoa25vd24pIHN1YmFjdGlvbgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIFN1YmFjdGlvbi4nKSwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemBulk.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudElUU01Db25maWdJdGVtQnVsazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0J1bGsgZmVhdHVyZSBpcyBub3QgZW5hYmxlZCEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGludm9sdmVkIGNvbmZpZyBpdGVtcywgZmlsdGVyaW5nIGVtcHR5IENvbmZpZ0l0ZW1JRHMKICAgIG15IEBDb25maWdJdGVtSURzID0gZ3JlcCB7JF99CiAgICAgICAgJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhQENvbmZpZ0l0ZW1JRHMgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnKSwKICAgICAgICApOwogICAgfQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgICMgZGVjbGFyZSB0aGUgdmFyaWFibGVzIGZvciBhbGwgdGhlIHBhcmFtZXRlcnMKICAgIG15ICVFcnJvcjsKCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IGFsbCBwYXJhbWV0ZXJzIGFuZCBjaGVjayBmb3IgZXJyb3JzCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG8nICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGdldCBhbGwgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkS2V5ICgKICAgICAgICAgICAgcXcoIExpbmtUb2dldGhlciBMaW5rVG9nZXRoZXJBbm90aGVyIExpbmtUeXBlIExpbmtUb2dldGhlckxpbmtUeXBlIERlcGxTdGF0ZUlECiAgICAgICAgICAgIEluY2lTdGF0ZUlEICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApIHx8ICcnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNoZWNrSXRlbScpLT5TdHJpbmdDbGVhbigKICAgICAgICAgICAgICAgIFN0cmluZ1JlZiA9PiBcJEdldFBhcmFteydMaW5rVG9nZXRoZXJBbm90aGVyJ30sCiAgICAgICAgICAgICAgICBUcmltTGVmdCAgPT4gMSwKICAgICAgICAgICAgICAgIFRyaW1SaWdodCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRHZXRQYXJhbXsnTGlua1RvZ2V0aGVyQW5vdGhlcid9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICAgICAgICAgJEVycm9yeydMaW5rVG9nZXRoZXJBbm90aGVySW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHByZXByb2Nlc3MgY29uZmlnIGl0ZW0KICAgIG15IEBTZWxlY3RlZENvbmZpZ0l0ZW1zOwogICAgbXkgJUNvbmZpZ0l0ZW1DbGFzc2VzOwoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBsb29wIG92ZXIgY29uZmlnIGl0ZW1zIHRvIHByZWRldGVybWluZSBhY2Nlc3MgYW5kIGR5bmFtaWMgZmllbGQgaGFuZGxpbmcKICAgIENPTkZJR0lURU1fSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1fSUQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtKTsKCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgICAgIG15ICRBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkQWNjZXNzICkgewoKICAgICAgICAgICAgIyBlcnJvciBzY3JlZW4sIGRvbid0IHNob3cgY29uZmlnIGl0ZW0KICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBEYXRhID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJywKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1fSUQ7CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHNlbGVjdGVkIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGlkcwogICAgICAgIHB1c2ggQFNlbGVjdGVkQ29uZmlnSXRlbXMsICRDb25maWdJdGVtOwogICAgICAgICRDb25maWdJdGVtQ2xhc3Nlc3sgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSA9ICRDb25maWdJdGVtLT57Q2xhc3NJRH07CiAgICB9CgogICAgIyBjaGVjayBpZiBkeW5hbWljIGZpZWxkcyBzaG91bGQgYmUgZGlzcGxheWVkIGFuZCB3aGljaCBvbmVzCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKICAgIG15ICVEeW5hbWljRmllbGRWYWx1ZXM7CiAgICBteSAlQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkczsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGFyZSBvbmx5IGRpc3BsYXllZCBpZiBhbGwgY29uZmlnIGl0ZW1zIGFyZSBmcm9tIHRoZSBzYW1lIGNsYXNzCiAgICBpZiAoIHNjYWxhciBrZXlzICVDb25maWdJdGVtQ2xhc3NlcyA9PSAxICkgewogICAgICAgIG15ICRDbGFzcyAgICAgID0gKCBrZXlzICVDb25maWdJdGVtQ2xhc3NlcyApWzBdOwogICAgICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc2VzeyRDbGFzc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzIScsICRDbGFzcyApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntEZWZpbml0aW9ufSA9ICREZWZpbml0aW9uOwogICAgICAgICAgICAkU2VsZi0+e0NsYXNzfSAgICAgID0gJENsYXNzOwogICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCAgID0gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9ID8gWyB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiBdIDogW107CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZmV0Y2ggZHluYW1pYyBmaWVsZCB2YWx1ZXMKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICk7CgogICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBwcm9jZXNzIGNvbmZpZyBpdGVtcwogICAgbXkgJEFjdGlvbkZsYWcgPSAwOwogICAgbXkgJENvdW50ZXIgICAgPSAxOwoKICAgIENPTkZJR0lURU1fSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW0gKEBTZWxlY3RlZENvbmZpZ0l0ZW1zKSB7CgogICAgICAgICMgZG8gc29tZSBhY3Rpb25zIG9uIENJcwogICAgICAgIGlmICggKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RvJyApICYmICggISVFcnJvciApICkgewoKICAgICAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICAgICAjIGJ1bGsgYWN0aW9uIGNvbmZpZ2l0ZW0gdXBkYXRlCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFZhbHVlcywKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGJ1bGsgYWN0aW9uIGxpbmtzCiAgICAgICAgICAgICMgbGluayBhbGwgY29uZmlnIGl0ZW1zIHRvIGFub3RoZXIgY29uZmlnIGl0ZW0KICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSApIHsKICAgICAgICAgICAgICAgIG15ICRNYWluQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzcGxpdCB0aGUgdHlwZSBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICBteSBAVHlwZSA9IHNwbGl0IC86Oi8sICRHZXRQYXJhbXtMaW5rVHlwZX07CgogICAgICAgICAgICAgICAgaWYgKCAkVHlwZVswXSAmJiAkVHlwZVsxXSAmJiAoICRUeXBlWzFdIGVxICdTb3VyY2UnIHx8ICRUeXBlWzFdIGVxICdUYXJnZXQnICkgKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRTb3VyY2VLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgbXkgJFRhcmdldEtleSA9ICRNYWluQ29uZmlnSXRlbUlEOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRUeXBlWzFdIGVxICdUYXJnZXQnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU291cmNlS2V5ID0gJE1haW5Db25maWdJdGVtSUQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRUYXJnZXRLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRFBhcnRuZXIgKCBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWFpbkNvbmZpZ0l0ZW1JRCBuZSAkQ29uZmlnSXRlbUlEUGFydG5lciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkVHlwZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsaW5rIHRvZ2V0aGVyCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteydMaW5rVG9nZXRoZXInfSApIHsKCiAgICAgICAgICAgICAgICAjIHNwbGl0IHRoZSB0eXBlIGlkZW50aWZpZXIKICAgICAgICAgICAgICAgIG15IEBUeXBlID0gc3BsaXQgLzo6LywgJEdldFBhcmFte0xpbmtUb2dldGhlckxpbmtUeXBlfTsKCiAgICAgICAgICAgICAgICBpZiAoICRUeXBlWzBdICYmICRUeXBlWzFdICYmICggJFR5cGVbMV0gZXEgJ1NvdXJjZScgfHwgJFR5cGVbMV0gZXEgJ1RhcmdldCcgKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRFBhcnRuZXIgKCBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTb3VyY2VLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRUYXJnZXRLZXkgPSAkQ29uZmlnSXRlbUlEUGFydG5lcjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFR5cGVbMV0gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU291cmNlS2V5ID0gJENvbmZpZ0l0ZW1JRFBhcnRuZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGFyZ2V0S2V5ID0gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBuZSAkQ29uZmlnSXRlbUlEUGFydG5lciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkVHlwZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkQWN0aW9uRmxhZyA9IDE7CiAgICAgICAgfQogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgIyByZWRpcmVjdAogICAgaWYgKCRBY3Rpb25GbGFnKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgIFVSTCA9PiAoICRTZWxmLT57TGFzdFNjcmVlbk92ZXJ2aWV3fSB8fCAnQWN0aW9uPUFnZW50RGFzaGJvYXJkJyApLAogICAgICAgICk7CiAgICB9CgogICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2soCiAgICAgICAgJVBhcmFtLAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGQgID0+IFwlRHluYW1pY0ZpZWxkVmFsdWVzLAogICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyBdLAogICAgICAgIEVycm9ycyAgICAgICAgPT4gXCVFcnJvciwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfTWFzayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBwcmVwYXJlIGVycm9ycyEKICAgIGlmICggJFBhcmFte0Vycm9yc30gKSB7CiAgICAgICAgZm9yIG15ICRLZXlFcnJvciAoIHNvcnQga2V5cyAleyAkUGFyYW17RXJyb3JzfSB9ICkgewogICAgICAgICAgICAkUGFyYW17JEtleUVycm9yfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFBhcmFte0Vycm9yc30tPnskS2V5RXJyb3J9ICk7CiAgICAgICAgfQogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0J1bGtBY3Rpb24nLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyByZW1lbWJlciBjb25maWcgaXRlbSBpZHMKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVXNlZENvbmZpZ0l0ZW1JRCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGRlcGxveW1lbnQgc3RhdGUKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57RGVwbFN0YXRlfSApIHsKICAgICAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgRGVwbFN0YXRlU3RyZwogICAgICAgICRQYXJhbXtEZXBsU3RhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdEZXBsU3RhdGVJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0RlcGxTdGF0ZUlEfSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgaW5jaWRlbnQgc3RhdGUKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57SW5jaVN0YXRlfSApIHsKCiAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ29wZXJhdGlvbmFsJywgJ2luY2lkZW50JyBdLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgSW5jaVN0YXRlU3RyZwogICAgICAgICRQYXJhbXtJbmNpU3RhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdJbmNpU3RhdGVJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBsaW5rIHR5cGVzIGxpc3QKICAgICMgZ2V0IHBvc3NpYmxlIHR5cGVzIGxpc3QKICAgIG15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgICAgICBPYmplY3QxID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGRlZmluZSBibGFuayBsaW5lIGVudHJ5CiAgICBteSAlQmxhbmtMaW5lID0gKAogICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICBWYWx1ZSAgICA9PiAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScsCiAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgdGhlIHNlbGVjdGFibGUgdHlwZSBsaXN0CiAgICBteSAkQ291bnRlciA9IDA7CiAgICBteSBAU2VsZWN0YWJsZVR5cGVzTGlzdDsKICAgIG15IEBMaW5rVG9nZXRoZXJUeXBlTGlzdDsKICAgIFBPU1NJQkxFVFlQRToKICAgIGZvciBteSAkUG9zc2libGVUeXBlICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJVBvc3NpYmxlVHlwZXNMaXN0ICkgewoKICAgICAgICAjIGxvb2t1cCB0eXBlIGlkCiAgICAgICAgbXkgJFR5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJFBvc3NpYmxlVHlwZSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0eXBlCiAgICAgICAgbXkgJVR5cGUgPSAkTGlua09iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgVHlwZUlEID0+ICRUeXBlSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyB0eXBlIGxpc3QgZm9yIGxpbmsgdG9nZXRoZXIgY2FuIGNvbnRhaW4gb25seQogICAgICAgICMgbGluayB0eXBlcyB3aGljaCBhcmUgbm90IGRpcmVjdGVkIChub3QgcG9pbnRlZCkKICAgICAgICBpZiAoICEkVHlwZXtQb2ludGVkfSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBzb3VyY2UgbmFtZQogICAgICAgICAgICBteSAlU291cmNlTmFtZTsKICAgICAgICAgICAgJFNvdXJjZU5hbWV7S2V5fSAgID0gJFBvc3NpYmxlVHlwZSAuICc6OlNvdXJjZSc7CiAgICAgICAgICAgICRTb3VyY2VOYW1le1ZhbHVlfSA9ICRUeXBle1NvdXJjZU5hbWV9OwoKICAgICAgICAgICAgcHVzaCBATGlua1RvZ2V0aGVyVHlwZUxpc3QsIFwlU291cmNlTmFtZTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRoZSBzb3VyY2UgbmFtZQogICAgICAgIG15ICVTb3VyY2VOYW1lOwogICAgICAgICRTb3VyY2VOYW1le0tleX0gICA9ICRQb3NzaWJsZVR5cGUgLiAnOjpTb3VyY2UnOwogICAgICAgICRTb3VyY2VOYW1le1ZhbHVlfSA9ICRUeXBle1NvdXJjZU5hbWV9OwoKICAgICAgICBwdXNoIEBTZWxlY3RhYmxlVHlwZXNMaXN0LCBcJVNvdXJjZU5hbWU7CgogICAgICAgIG5leHQgUE9TU0lCTEVUWVBFIGlmICEkVHlwZXtQb2ludGVkfTsKCiAgICAgICAgIyBjcmVhdGUgdGhlIHRhcmdldCBuYW1lCiAgICAgICAgbXkgJVRhcmdldE5hbWU7CiAgICAgICAgJFRhcmdldE5hbWV7S2V5fSAgID0gJFBvc3NpYmxlVHlwZSAuICc6OlRhcmdldCc7CiAgICAgICAgJFRhcmdldE5hbWV7VmFsdWV9ID0gJFR5cGV7VGFyZ2V0TmFtZX07CgogICAgICAgIHB1c2ggQFNlbGVjdGFibGVUeXBlc0xpc3QsIFwlVGFyZ2V0TmFtZTsKICAgIH0KICAgIGNvbnRpbnVlIHsKCiAgICAgICAgIyBhZGQgYmxhbmsgbGluZQogICAgICAgIHB1c2ggQFNlbGVjdGFibGVUeXBlc0xpc3QsIFwlQmxhbmtMaW5lOwoKICAgICAgICAkQ291bnRlcisrOwogICAgfQoKICAgICMgcmVtb3ZlZCBsYXN0IChlbXB0eSkgZW50cnkKICAgIHBvcCBAU2VsZWN0YWJsZVR5cGVzTGlzdDsKCiAgICAjIGFkZCBibGFuayBsaW5lcyBvbiB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgbGlzdCBpZiBtb3JlIHRoZW4gdHdvIGxpbmt0eXBlcwogICAgaWYgKCAkQ291bnRlciA+IDIgKSB7CiAgICAgICAgdW5zaGlmdCBAU2VsZWN0YWJsZVR5cGVzTGlzdCwgXCVCbGFua0xpbmU7CiAgICAgICAgcHVzaCBAU2VsZWN0YWJsZVR5cGVzTGlzdCwgXCVCbGFua0xpbmU7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBMaW5rVHlwZVN0cmcKICAgICRQYXJhbXtMaW5rVHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcQFNlbGVjdGFibGVUeXBlc0xpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdMaW5rVHlwZScsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtUeXBlSWRlbnRpZmllcn0gfHwgJ0FsdGVybmF0aXZlVG86OlNvdXJjZScsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICApOwogICAgJFBhcmFte0xpbmtUb2dldGhlckxpbmtUeXBlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFxATGlua1RvZ2V0aGVyVHlwZUxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdMaW5rVG9nZXRoZXJMaW5rVHlwZScsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtUeXBlSWRlbnRpZmllcn0gfHwgJ0FsdGVybmF0aXZlVG86OlNvdXJjZScsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICApOwoKICAgICRQYXJhbXtMaW5rVG9nZXRoZXJZZXNOb09wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIERhdGEgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdZZXNOb09wdGlvbnMnKSwKICAgICAgICBOYW1lICAgICAgID0+ICdMaW5rVG9nZXRoZXInLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xpbmtUb2dldGhlcn0gfHwgMCwKICAgICk7CgogICAgIyByZW5kZXIgZHluYW1pYyBmaWVsZHMKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57RGVmaW5pdGlvbn0gKSAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntEZWZpbml0aW9ufXtEZWZpbml0aW9uUmVmfSApICYmICRTZWxmLT57RGVmaW5pdGlvbn17RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9ICkgewoKICAgICAgICAjIFRPRE86IEl0IHdvdWxkIGJlIG5pY2UgdG8gc3dpdGNoIGJldHdlZW4gcGFnZXMgZm9yIHRoZSBlZGl0IG1hc2ssIHRvby4gS2VlcGluZyB0aGUgZmllbGRzIGluIHN5bmMKICAgICAgICAjICAgICAgIHdoaWxlIGVkaXRpbmcgbmVlZHMgYSBiaXQgbW9yZSBwcmVwYXJhdGlvbiB0aG91Z2gKICAgICAgICAjIFRodXMgZm9yIG5vdyBtYWtlIHN1cmUgdG8gc2hvdyBkeW5hbWljIGZpZWxkcyBvbmx5IG9uY2UsIGV2ZW4gaWYgcHJlc2VudCBvbiBtdWx0aXBsZSBwYWdlcy9zZWN0aW9ucwogICAgICAgIG15ICRGaWVsZHNTZWVuID0ge307CgogICAgICAgIGZvciBteSAkUGFnZSAoICRTZWxmLT57RGVmaW5pdGlvbn17RGVmaW5pdGlvblJlZn17UGFnZXN9LT5AKiApIHsKCiAgICAgICAgICAgIFNFQ1RJT046CiAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkNvbmZpZyAoICRQYWdlLT57Q29udGVudH0tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkU2VsZi0+e0RlZmluaXRpb259e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFNlY3Rpb25Db25maWctPntTZWN0aW9ufSB9OwoKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb247CiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gaWYgJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJzsKCiAgICAgICAgICAgICAgICAjIHdlZWQgb3V0IG11bHRpcGxlIG9jY3VyYW5jZXMgb2YgZHluYW1pYyBmaWVsZHMgLSBzZWUgY29tbWVudCBhYm92ZQogICAgICAgICAgICAgICAgJFNlY3Rpb24tPntDb250ZW50fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICA9PiAkU2VjdGlvbi0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyZWRERnMgPT4gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBTZWVuICAgICAgICAgID0+ICRGaWVsZHNTZWVuLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwcm9jZWVkIGlmIGNvbnRlbnQgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CgogICAgICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9IC49ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpEeW5hbWljRmllbGQ6Ok1hc2snKS0+RWRpdFNlY3Rpb25SZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICAgID0+ICRTZWN0aW9uLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgID0+ICRTZWxmLT57RGVmaW5pdGlvbn17RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZFZhbHVlcyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBBSkFYVXBkYXRhYmxlICAgICAgPT4gMCwKCiAgICAgICAgICAgICAgICAgICAgIyBUT0RPIGFzayBpZiB0aGlzIHNob3VsZCBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIyBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiBcJUR5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICMgRXJyb3JzICAgICAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0LAogICAgICAgICAgICAgICAgICAgICMgVmlzaWJpbGl0eSAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWaXNpYmlsaXR5LAogICAgICAgICAgICAgICAgICAgIE9iamVjdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICRTZWxmLT57Q2xhc3N9LAogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgb3V0cHV0IGJhY2sKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtQnVsaycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwp9CgpzdWIgX0Rpc2NhcmRGaWVsZHNTZWVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnRlbnQ7CiAgICBteSAkUmVmID0gcmVmICRQYXJhbXtDb250ZW50fTsKCiAgICBpZiAoICRSZWYgZXEgJ0FSUkFZJyApIHsKICAgICAgICBteSBAQ2xlYW5lZEFycmF5OwoKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoICRQYXJhbXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgIG15ICRSZWZFbGVtZW50ID0gcmVmICRFbGVtZW50OwoKICAgICAgICAgICAgaWYgKCAkUmVmRWxlbWVudCBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ2xlYW5lZEFycmF5LCAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgU2VlbiAgICA9PiAkUGFyYW17U2Vlbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkUmVmRWxlbWVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkRWxlbWVudC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW17Q29uZmlndXJlZERGc317ICRFbGVtZW50LT57REZ9IH0gfHwgJFBhcmFte1NlZW59eyAkRWxlbWVudC0+e0RGfSB9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRFbGVtZW50OwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcQENsZWFuZWRBcnJheTsKICAgIH0KCiAgICBlbHNpZiAoICRSZWYgZXEgJ0hBU0gnICkgewogICAgICAgIG15ICVDbGVhbmVkSGFzaDsKCiAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICRQYXJhbXtDb250ZW50fS0+JSogKSB7CiAgICAgICAgICAgICRDbGVhbmVkSGFzaHskS2V5fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRQYXJhbXtDb250ZW50fXskS2V5fSwKICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcJUNsZWFuZWRIYXNoOwogICAgfQoKICAgIGVsc2UgewogICAgICAgICRDb250ZW50ID0gJFBhcmFte0NvbnRlbnR9OwogICAgfQoKICAgIHJldHVybiAkQ29udGVudDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemDelete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIENvbmZpZ0l0ZW1JRAogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIG9iamVjdAogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBlcnJvciBzY3JlZW4KICAgIGlmICggISRBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnWW91IG5lZWQgJXMgcGVybWlzc2lvbnMhJywgJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0gKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgICMgY2hlY2sgaWYgY29uZmlnIGl0ZW0gaXMgZm91bmQKICAgIGlmICggISRDb25maWdJdGVtICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJywgJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDb25maWdJdGVtRGVsZXRlJyApIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIGNvbmZpZyBpdGVtCiAgICAgICAgbXkgJENvdWxkRGVsZXRlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvdWxkRGVsZXRlQ29uZmlnSXRlbSkgewoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBjb25maWcgaXRlbSBvdmVydmlldywgd2hlbiB0aGUgZGVsZXRpb24gd2FzIHN1Y2Nlc3NmdWwKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSwgd2hlbiBkZWxldGUgZmFpbGVkCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISRDb25maWdJdGVtLT57VmVyc2lvbklEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vCiAgICBteSAkRGlhbG9nVHlwZSA9ICdDb25maXJtYXRpb24nOwoKICAgICMgb3V0cHV0IGNvbnRlbnQKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtRGVsZXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlCiAgICBteSAlRGF0YSA9ICgKICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgRGlhbG9nVHlwZSA9PiAkRGlhbG9nVHlwZSwKICAgICk7CgogICAgIyByZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUKICAgIG15ICRPdXRwdXRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiBcJURhdGEgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXRKU09OLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemEdit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBteSBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBjb25maWdpdGVtIGlkIGFuZCBjbGFzcyBpZAogICAgbXkgJENvbmZpZ0l0ZW0gID0ge307CiAgICBteSAkRHVwbGljYXRlSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRHVwbGljYXRlSUQnICkgfHwgMDsKICAgICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICkgfHwgMDsKICAgICRDb25maWdJdGVtLT57Q2xhc3NJRH0gICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApICAgICAgfHwgMDsKCiAgICBteSAkSGFzQWNjZXNzOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IG5lZWRlZCBkYXRhCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAmJiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gbmUgJ05FVycgKSB7CgogICAgICAgICMgY2hlY2sgYWNjZXNzIGZvciBjb25maWcgaXRlbQogICAgICAgICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtCiAgICAgICAgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCREdXBsaWNhdGVJRCkgewoKICAgICAgICBteSAkVmVyc2lvbklEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKCiAgICAgICAgIyBUT0RPOiBDaGVjayBkdXBsaWNhdGlvbgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIHRvIGR1cGxpY2F0ZQogICAgICAgICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJER1cGxpY2F0ZUlELAogICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGFjY2VzcyBmb3IgY29uZmlnIGl0ZW0KICAgICAgICAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICAjIHNldCBjb25maWcgaXRlbSBpZCBhbmQgbnVtYmVyCiAgICAgICAgJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ID0gJ05FVyc7CiAgICAgICAgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9ICAgICAgID0gVHJhbnNsYXRhYmxlKCdOZXcnKTsKICAgIH0KICAgIGVsc2lmICggJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSApIHsKCiAgICAgICAgIyBzZXQgY29uZmlnIGl0ZW0gaWQgYW5kIG51bWJlcgogICAgICAgICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSA9ICdORVcnOwogICAgICAgICRDb25maWdJdGVtLT57TnVtYmVyfSAgICAgICA9IFRyYW5zbGF0YWJsZSgnTmV3Jyk7CgogICAgICAgICMgY2hlY2sgYWNjZXNzIGZvciBjb25maWcgaXRlbQogICAgICAgICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtLT57Q2xhc3N9ID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgaWYgdXNlciBoYXMgbm8gYWNjZXNzIHJpZ2h0cyBzaG93IGVycm9yIHBhZ2UKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEVkaXQgdGhlIGNvbmZpZyBpdGVtIHdpdGggdGhlIG5ld2VzdCBjb25maWcgaXRlbSBkZWZpbml0aW9uIG9mIHRoZSByZWxldmFudCBjbGFzcwogICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgICMgYWJvcnQsIGlmIG5vIGRlZmluaXRpb24gaXMgZGVmaW5lZAogICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnLCAkQ29uZmlnSXRlbS0+e0NsYXNzfSApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBmb3JtIGlkCiAgICBteSAkRm9ybUNhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJyk7CgogICAgJFNlbGYtPntGb3JtSUR9ID0gJEZvcm1DYWNoZU9iamVjdC0+UHJlcGFyZUZvcm1JRCgKICAgICAgICBQYXJhbU9iamVjdCAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgKTsKCiAgICBteSAlR2V0UGFyYW07CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsdWVzOwogICAgbXkgJUFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHM7CiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKCiAgICAjIGdldCBpbml0aWFsIHZhbHVlcyBmb3IgdGhlIGNvbmZpZ2l0ZW0KICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSA/IFsgdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogXSA6IFtdOwoKICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBlcSAnTkVXJyApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lOwoKICAgICAgICAgICAgaWYgKCREdXBsaWNhdGVJRCkgewoKICAgICAgICAgICAgICAgICMgZ2V0IERhdGEgZnJvbSBkdXBsaWNhdGUgQ0kKICAgICAgICAgICAgICAgIGZvciBteSAkUGFyYW0gKHF3KE5hbWUgVmVyc2lvblN0cmluZyBEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtfSA9ICRDb25maWdJdGVtLT57JFBhcmFtfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU5hbWUgPSAkR2V0UGFyYW17TmFtZX0gLiAnIChDb3B5KSc7CgogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICAgICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZGVsZXRlICRHZXRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBnZXQgZ2VuZXJhbCBmb3JtIGRhdGEKICAgICAgICAgICAgZm9yIG15ICRQYXJhbSAocXcoTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlc2NyaXB0aW9uKSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbX0gPSAkQ29uZmlnSXRlbS0+eyRQYXJhbX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAgICAgICBteSAkQWN0aXZlRmllbGRzID0gJEZvcm1DYWNoZU9iamVjdC0+R2V0Rm9ybURhdGEoCiAgICAgICAgICAgIEZvcm1JRCAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ0FjdGl2ZUR5bmFtaWNGaWVsZHMnLAogICAgICAgICkgLy8gW107CgogICAgICAgIGZvciBteSAkRmllbGROYW1lICggJEFjdGl2ZUZpZWxkcy0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggQHskRHluYW1pY0ZpZWxkTGlzdH0sICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskRmllbGROYW1lfTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGdlbmVyYWwgZm9ybSBkYXRhCiAgICAgICAgZm9yIG15ICRQYXJhbSAocXcoTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlc2NyaXB0aW9uKSkgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbSApOwogICAgICAgIH0KCiAgICAgICAgIyBzcGVjaWFsIGNhc2UgZm9yIGNsYXNzCiAgICAgICAgJEdldFBhcmFte0NsYXNzSUR9ID0gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntSZWFkb25seX07CgogICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgcGVyZm9ybSBBQ0xzIG9uIHZhbHVlcwogICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CiAgICAgICAgICAgICAgICAkQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15IEBVcGRhdGFibGVGaWVsZHMgPSBxdyhEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbik7CiAgICBwdXNoIEBVcGRhdGFibGVGaWVsZHMsIGtleXMgJUFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHM7CgogICAgIyBjb252ZXJ0IGR5bmFtaWMgZmllbGQgdmFsdWVzIGludG8gYSBzdHJ1Y3R1cmUgZm9yIEFDTHMKICAgIG15ICVEeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZFZhbHVlcyApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZDsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZFZhbHVlc3skRHluYW1pY0ZpZWxkfTsKCiAgICAgICAgJER5bmFtaWNGaWVsZEFDTFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQgfSA9ICREeW5hbWljRmllbGRWYWx1ZXN7JER5bmFtaWNGaWVsZH07CiAgICB9CiAgICAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfSA9IFwlRHluYW1pY0ZpZWxkQUNMUGFyYW1ldGVyczsKCiAgICAjIGdldCB1cGxvYWQgY2FjaGUgb2JqZWN0CiAgICBteSAkVXBsb2FkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpOwoKICAgICMgYXR0YWNobWVudHMgb2YgZXhpc3RpbmcgY29uZmlnIGl0ZW0gbmVlZHMgdG8gYmUgbG9hZGVkIGluIHR3byBjYXNlczoKICAgICMgICAxLiBhbiBleGlzdGluZyBjb25maWcgaXRlbSBpcyBlZGl0ZWQgLSBubyBjbGFzcyBpZCBwcmVzZW50IGluIEdldFBhcmFtCiAgICAjICAgMi4gYW4gZXhpc3RpbmcgY29uZmlnIGl0ZW0gaXMgZHVwbGljYXRlZAogICAgaWYgKCAhJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICkgfHwgJER1cGxpY2F0ZUlEICkgewoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhCiAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJER1cGxpY2F0ZUlEIHx8ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICApOwoKICAgICAgICAjIGNvcHkgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzIHRvIHVwbG9hZCBjYWNoZQogICAgICAgIEZJTEVOQU1FOgogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgZXhpc3RpbmcgYXR0YWNobWVudCBkYXRhCiAgICAgICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkRHVwbGljYXRlSUQgfHwgJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudERhdGEtPntDb250ZW50VHlwZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxvZyBvYmplY3QKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMnKTsKCiAgICBteSAkQXV0b3NlbGVjdCA9ICRDb25maWdPYmplY3QtPkdldCgnQ29uZmlnSXRlbUFDTDo6QXV0b3NlbGVjdCcpIHx8IHVuZGVmOwogICAgbXkgJEFDTFByZXNlbGVjdGlvbjsKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdDb25maWdJdGVtQUNMOjpBQ0xQcmVzZWxlY3Rpb24nKSApIHsKCiAgICAgICAgIyBnZXQgY2FjaGVkIHByZXNlbGVjdGlvbiBydWxlcwogICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgICRBQ0xQcmVzZWxlY3Rpb24gPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbUFDTCcsCiAgICAgICAgICAgIEtleSAgPT4gJ1ByZXNlbGVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkQUNMUHJlc2VsZWN0aW9uICkgewogICAgICAgICAgICAkQUNMUHJlc2VsZWN0aW9uID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5TZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRXJyb3I7CiAgICBteSAkTmFtZUR1cGxpY2F0ZXM7CiAgICBteSAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2U7CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsaWRhdGlvblJlc3VsdDsKICAgIG15ICVEeW5hbWljRmllbGRQb3NzaWJsZVZhbHVlczsKICAgIG15ICVEeW5hbWljRmllbGRWaXNpYmlsaXR5OwoKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICBteSAkTmFtZU1vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkTmFtZU1vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDb25maWdJdGVtLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICROYW1lTW9kdWxlID0gdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX0gPyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uU3RyaW5nTW9kdWxlfVswXSA6ICcnOwogICAgaWYgKCRWZXJzaW9uU3RyaW5nTW9kdWxlKSB7CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBtb2R1bGUgZXhpc3RzCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNsYXNzICRDb25maWdJdGVtLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTYXZlJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHVwbG9hZGVkIGF0dGFjaG1lbnQKICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkUGFyYW1PYmplY3QtPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgUGFyYW0gID0+ICdGaWxlVXBsb2FkJywKICAgICAgICAgICAgU291cmNlID0+ICdzdHJpbmcnLAogICAgICAgICk7CgogICAgICAgIGlmICglVXBsb2FkU3R1ZmYpIHsKCiAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgJVVwbG9hZFN0dWZmLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJEFsbFJlcXVpcmVkID0gMTsKCiAgICAgICAgIyBnZXQgZ2VuZXJhbCBmb3JtIGRhdGEKICAgICAgICBmb3IgbXkgJFBhcmFtIChxdyhEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbikpIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPnskUGFyYW19ID0gJEdldFBhcmFteyRQYXJhbX07CgogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbS0+eyRQYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkR2V0UGFyYW17RGVzY3JpcHRpb259IC8vPSAnJzsKCiAgICAgICAgIyBnZXQgbmFtZSBvbmx5IGlmIGl0IGlzIG5vdCBmaWxsZWQgYnkgYSBtb2R1bGUKICAgICAgICBpZiAoICEkTmFtZU1vZHVsZSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntOYW1lfSA9ICRHZXRQYXJhbXtOYW1lfTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57TmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCB2ZXJzaW9uIHN0cmluZyBvbmx5IGlmIGl0IGlzIG5vdCBmaWxsZWQgYnkgYSBtb2R1bGUKICAgICAgICBpZiAoICEkVmVyc2lvblN0cmluZ01vZHVsZSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntWZXJzaW9uU3RyaW5nfSA9ICRHZXRQYXJhbXtWZXJzaW9uU3RyaW5nfTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ30gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrLCB3aGV0aGVyIHRoZSBmZWF0dXJlIHRvIGNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIGlzIGVuYWJsZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoICRDb25maWdJdGVtLT57TmFtZX0gKQogICAgICAgICAgICAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2hlY2tpbmcgZm9yIGR1cGxpY2F0ZSBuYW1lcyAoQ2xhc3NJRDogJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwgIgogICAgICAgICAgICAgICAgICAgICAgICAuICJOYW1lOiAkQ29uZmlnSXRlbS0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSkiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJE5hbWVEdXBsaWNhdGVzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICRBbGxSZXF1aXJlZCA9IDA7CgogICAgICAgICAgICAgICAgIyBidWlsZCBhIHN0cmluZyBvZiBhbGwgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgbXkgJE5hbWVEdXBsaWNhdGVzU3RyaW5nID0gam9pbiAnLCAnLCBAeyROYW1lRHVwbGljYXRlc307CgogICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBuYW1lICRDb25maWdJdGVtLT57TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1JRChzKTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICROYW1lRHVwbGljYXRlc1N0cmluZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSBjb25maWcgb3B0aW9uIGZvciB0aGUgbmFtZSByZWdleCBjaGVja3MKICAgICAgICBteSAkQ0lOYW1lUmVnZXhDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpDSU5hbWVSZWdleCIpOwoKICAgICAgICAjIGNoZWNrIGlmIHRoZSBDSSBuYW1lIGlzIGdpdmVuIGFuZCBzaG91bGQgYmUgY2hlY2tlZCB3aXRoIGEgcmVndWxhciBleHByZXNzaW9uCiAgICAgICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkQ29uZmlnSXRlbS0+e05hbWV9ICkgJiYgJENJTmFtZVJlZ2V4Q29uZmlnICkgewoKICAgICAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgY2xhc3MgbmFtZQogICAgICAgICAgICBteSAkQ2xhc3NOYW1lID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9IH0gfHwgJyc7CgogICAgICAgICAgICAjIGdldCB0aGUgcmVnZXggZm9yIHRoaXMgY2xhc3MKICAgICAgICAgICAgbXkgJENJTmFtZVJlZ2V4ID0gJENJTmFtZVJlZ2V4Q29uZmlnLT57ICRDbGFzc05hbWUgLiAnOjonIC4gJ0NJTmFtZVJlZ2V4JyB9IHx8ICcnOwoKICAgICAgICAgICAgIyBpZiBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSBDSSBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSByZWd1bGFyIGV4cHJlc3Npb24KICAgICAgICAgICAgaWYgKCAkQ0lOYW1lUmVnZXggJiYgJENvbmZpZ0l0ZW0tPntOYW1lfSAhfiBteyAkQ0lOYW1lUmVnZXggfXhtcyApIHsKCiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBlcnJvciBtZXNzYWdlIGZvciB0aGlzIGNsYXNzCiAgICAgICAgICAgICAgICAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UgPSAkQ0lOYW1lUmVnZXhDb25maWctPnsgJENsYXNzTmFtZSAuICc6OicgLiAnQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UnIH0gfHwgJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGR5bmFtaWMgZmllbGQgZGF0YSBpbnRvIERGTmFtZSA9PiBERk5hbWUgcGFpcgogICAgICAgIG15ICVEeW5hbWljRmllbGRBY2wgPSBtYXAgeyAkXy0+e05hbWV9ID0+ICRfLT57TmFtZX0gfSAkRHluYW1pY0ZpZWxkTGlzdC0+QCo7CgogICAgICAgICMgY2FsbCB0aWNrZXQgQUNMcyBmb3IgRHluYW1pY0ZpZWxkcyB0byBjaGVjayBmaWVsZCB2aXNpYmlsaXR5CiAgICAgICAgbXkgJEFDTFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdGb3JtJywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnLScsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRBY2wsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCRBQ0xSZXN1bHQpIHsKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFZpc2liaWxpdHkgPSBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXy0+e05hbWV9ID0+IDAgfSAkRHluYW1pY0ZpZWxkTGlzdC0+QCo7CiAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKCBzb3J0IGtleXMgJUFjbERhdGEgKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmlzaWJpbGl0eXsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkIH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlRHluYW1pY0ZpZWxkVmlzaWJpbGl0eSA9IG1hcCB7ICdEeW5hbWljRmllbGRfJyAuICRfLT57TmFtZX0gPT4gMSB9ICREeW5hbWljRmllbGRMaXN0LT5AKjsKICAgICAgICB9CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoICREeW5hbWljRmllbGRMaXN0LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgaWYgKCAkQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBoYXMgUG9zc2libGVWYWx1ZXMgcHJvcGVydHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBvc3NpYmxlVmFsdWVzKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICAgICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JFBvc3NpYmxlVmFsdWVzfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVGaWx0ZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbERhdGEoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBGaWx0ZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgICMgcGVyZm9ybSB2YWxpZGF0aW9uCiAgICAgICAgICAgIG15ICRWYWxpZGF0aW9uUmVzdWx0ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFZhbGlkYXRpb25SZXN1bHQpICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCJDb3VsZCBub3QgcGVyZm9ybSB2YWxpZGF0aW9uIG9uIGZpZWxkICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0hIiksCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcm9wYWdhdGUgdmFsaWRhdGlvbiBlcnJvciB0byB0aGUgRXJyb3IgdmFyaWFibGUgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlIGZyb250ZW5kCiAgICAgICAgICAgIGlmICggJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICAgICAgICAgICAgICAgICAgICAgICAgPSAnIFNlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRWYWxpZGF0aW9uUmVzdWx0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkQWxsUmVxdWlyZWQgPSAlRXJyb3IgPyAwIDogMTsKCiAgICAgICAgIyBzYXZlIHZlcnNpb24gdG8gZGF0YWJhc2UKICAgICAgICBpZiAoJEFsbFJlcXVpcmVkKSB7CgogICAgICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgZnJvbSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc0RhdGEoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBidWlsZCBhIGxvb2t1cCBsb29rdXAgaGFzaCBvZiB0aGUgbmV3IGF0dGFjaG1lbnRzCiAgICAgICAgICAgIG15ICVOZXdBdHRhY2htZW50OwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewoKICAgICAgICAgICAgICAgIG15ICRDb250ZW50SUQgPSAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH07CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnRJRAogICAgICAgICAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gL2ltYWdlL2kgKQogICAgICAgICAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29udGVudElESFRNTFF1b3RlID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCA9PiAkQ29udGVudElELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgd29ya2Fyb3VuZCBmb3IgbGluayBlbmNvZGUgb2YgcmljaCB0ZXh0IGVkaXRvciwgc2VlIGJ1ZyM1MDUzCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbnRlbnRJRExpbmtFbmNvZGUgPSAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRDb250ZW50SUQpOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtEZXNjcmlwdGlvbn0gPX4gcy8oQ29udGVudElEPSkkQ29udGVudElETGlua0VuY29kZS8kMSRDb250ZW50SUQvZzsKCiAgICAgICAgICAgICAgICAgICAgIyBpZ25vcmUgYXR0YWNobWVudCBpZiBub3QgbGlua2VkIGluIGJvZHkKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgJEdldFBhcmFte0Rlc2NyaXB0aW9ufSAhfiAvKFxRJENvbnRlbnRJREhUTUxRdW90ZVxFfFxRJENvbnRlbnRJRFxFKS9pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdGhlIGtleSBpcyB0aGUgZmlsZW5hbWUgKyBmaWxlc2l6ZSArIGNvbnRlbnQgdHlwZQogICAgICAgICAgICAgICAgbXkgJEtleSA9ICRBdHRhY2htZW50LT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfQogICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAgICAgIyBzdG9yZSBhbGwgb2YgdGhlIG5ldyBhdHRhY2htZW50IGRhdGEKICAgICAgICAgICAgICAgICROZXdBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdmVyaWZ5IGh0bWwgZG9jdW1lbnQKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9yIGV4aXN0aW5nIENvbmZpZ0l0ZW1zIGNvbXBhcmUgd2l0aCB0aGUgY3VycmVudCBkYXRhCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IG5lICdORVcnICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnRzCiAgICAgICAgICAgICAgICBGSUxFTkFNRToKICAgICAgICAgICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBleGlzdGluZyBhdHRhY2htZW50IGRhdGEKICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyB0aGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplICsgY29udGVudCB0eXBlCiAgICAgICAgICAgICAgICAgICAgIyAobm8gY29udGVudCBpZCwgYXMgZXhpc3RpbmcgYXR0YWNobWVudHMgZG9uJ3QgaGF2ZSBpdCkKICAgICAgICAgICAgICAgICAgICBteSAkS2V5ID0gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnREYXRhLT57RmlsZXNpemV9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnREYXRhLT57Q29udGVudFR5cGV9OwoKICAgICAgICAgICAgICAgICAgICAjIGF0dGFjaG1lbnQgaXMgYWxyZWFkeSBleGlzdGluZywgd2UgY2FuIGRlbGV0ZSBpdCBmcm9tIHRoZSBuZXcgYXR0YWNobWVudCBoYXNoCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkTmV3QXR0YWNobWVudHskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICROZXdBdHRhY2htZW50eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGlzdGluZyBhdHRhY2htZW50IGlzIG5vIGxvbmdlciBpbiBuZXcgYXR0YWNobWVudHMgaGFzaAogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWxldGUgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJERlbGV0ZVN1Y2Nlc3NmdWwgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISREZWxldGVTdWNjZXNzZnVsICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCB2ZXJzaW9uIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICAgICAgbXkgQEV4aXN0aW5nVmVyc2lvbkF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHRoZSBleGlzdGluZyBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgRklMRU5BTUU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChARXhpc3RpbmdWZXJzaW9uQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQgZGF0YQogICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lICsgZmlsZXNpemUgKyBjb250ZW50IHR5cGUKICAgICAgICAgICAgICAgICAgICAjIChubyBjb250ZW50IGlkLCBhcyBleGlzdGluZyBhdHRhY2htZW50cyBkb24ndCBoYXZlIGl0KQogICAgICAgICAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudERhdGEtPntGaWxlbmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0KICAgICAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudERhdGEtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAgICAgICAgICMgYXR0YWNobWVudCBpcyBhbHJlYWR5IGV4aXN0aW5nLCB3ZSBjYW4gZGVsZXRlIGl0IGZyb20gdGhlIG5ldyBhdHRhY2htZW50IGhhc2gKICAgICAgICAgICAgICAgICAgICBpZiAoICROZXdBdHRhY2htZW50eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE5ld0F0dGFjaG1lbnR7JEtleX07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGV4aXN0aW5nIGF0dGFjaG1lbnQgaXMgbm8gbG9uZ2VyIGluIG5ldyBhdHRhY2htZW50cyBoYXNoCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGRlbGV0ZSB0aGUgZXhpc3RpbmcgYXR0YWNobWVudAogICAgICAgICAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2Vzc2Z1bCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJERlbGV0ZVN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRPRE86IGJldHRlciBhbGlnbiB3aXRoIHRoZSBpbml0aWFsIEVkaXRGaWVsZFZhbHVlR2V0PwogICAgICAgICAgICAjIFRPRE86IFZpc2liaWxpdHkKICAgICAgICAgICAgIyBwcmVwYXJlIGR5bmFtaWMgZmllbGQgdmFsdWVzCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkLT57UmVhZG9ubHl9OwoKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IGVxICdORVcnICkgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIHRlbXBvcmFyeSBudW1iZXIgIyBUT0RPOiBjaGVjaywgd2hldGhlciBzZXR0aW5nIG5ldyBhcyBudW1iZXIgaXMgbmVjZXNzYXJ5IGluIHRoZSBmaXJzdCBwbGFjZQogICAgICAgICAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57TnVtYmVyfTsKCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKCiAgICAgICAgICAgICAgICAgICAgIyBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LCAjIFRPRE86IHRoaXMgaXMgbm90IHVzZWQgeWV0CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGZldGNoIHVwZGF0ZWQgY29uZmlnIGl0ZW0gZGF0YSB0byBzZWN1cmUgdmVyc2lvbiBpZCBiZWluZyBwcmVzZW50CiAgICAgICAgICAgIG15ICROZXdDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHdyaXRlIHRoZSBuZXcgYXR0YWNobWVudHMKICAgICAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggdmFsdWVzICVOZXdBdHRhY2htZW50ICkgewoKICAgICAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gJiYgJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJE5ld0NvbmZpZ0l0ZW1EYXRhLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGFsc28gd3JpdGUgYXR0YWNobWVudHMgdG8gbGFzdCB2ZXJzaW9uIGlmIGl0IGRpZmZlcnMgYmVjYXVzZSB3ZSBkZWxldGVkIHRoZW0gcHJldmlvdXNseQogICAgICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9ICYmICRDb25maWdJdGVtLT57VmVyc2lvbklEfSAhPSAkTmV3Q29uZmlnSXRlbURhdGEtPntWZXJzaW9uSUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlbW92ZSBhbGwgZm9ybSBkYXRhCiAgICAgICAgICAgICRGb3JtQ2FjaGVPYmplY3QtPkZvcm1JRFJlbW92ZSggRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSApOwoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byB6b29tIG1hc2sKICAgICAgICAgICAgbXkgJFNjcmVlblR5cGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2NyZWVuVHlwZScgKSB8fCAwOwogICAgICAgICAgICBpZiAoJFNjcmVlblR5cGUpIHsKCiAgICAgICAgICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IjsKCiAgICAgICAgICAgICAgICAjIHJldHVybiB0byBvdmVydmlldyBvciBzZWFyY2ggcmVzdWx0cyBpbnN0ZWFkIGlmIGNhbGxlZCBEdXBsaWNhdGUgZnJvbSByb3cgYWN0aW9uCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTZXNzaW9ufXtMYXN0U2NyZWVuVmlld30gZXEgJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtJwogICAgICAgICAgICAgICAgICAgIHx8ICRTZWxmLT57U2Vzc2lvbn17TGFzdFNjcmVlblZpZXd9ID1+IG17XEEgQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW0oPzogU2VhcmNoKT87fW1zeAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkVVJMID0gJFNlbGYtPntTZXNzaW9ufXtMYXN0U2NyZWVuVmlld307CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgICAgICAgICAgVVJMID0+ICRVUkwsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhVcGRhdGUnICkgewogICAgICAgIG15ICRFbGVtZW50Q2hhbmdlZCAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRWxlbWVudENoYW5nZWQnICkgfHwgJyc7CiAgICAgICAgbXkgJUNoYW5nZWRFbGVtZW50cyA9ICRFbGVtZW50Q2hhbmdlZCA/ICggJEVsZW1lbnRDaGFuZ2VkID0+IDEgKSA6ICgpOwogICAgICAgIG15ICRMb29wUHJvdGVjdGlvbiAgPSAxMDA7CgogICAgICAgICMgZ2V0IHZhbHVlcyBhbmQgdmlzaWJpbGl0eSBvZiBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5GaWVsZFN0YXRlcyA9ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdC0+R2V0RmllbGRTdGF0ZXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1PYmplY3QgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1PYmplY3QsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgICAgICAgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LAogICAgICAgICAgICBEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0+ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LAogICAgICAgICAgICBDaGFuZ2VkRWxlbWVudHMgICAgICAgICAgID0+IFwlQ2hhbmdlZEVsZW1lbnRzLCAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIHRvIHJlZHVjZSBBQ0wgZXZhbHVhdGlvbgogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgICAgICA9PiB7JUdldFBhcmFtfSwKICAgICAgICAgICAgQXV0b3NlbGVjdCAgICAgICAgICAgICAgICA9PiAkQXV0b3NlbGVjdCwKICAgICAgICAgICAgQUNMUHJlc2VsZWN0aW9uICAgICAgICAgICA9PiAkQUNMUHJlc2VsZWN0aW9uLAogICAgICAgICAgICBMb29wUHJvdGVjdGlvbiAgICAgICAgICAgID0+IFwkTG9vcFByb3RlY3Rpb24sCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9yZSBuZXcgdmFsdWVzCiAgICAgICAgJEdldFBhcmFte0R5bmFtaWNGaWVsZH0gPSB7CiAgICAgICAgICAgICV7ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9IH0sCiAgICAgICAgICAgICV7ICREeW5GaWVsZFN0YXRlc3tOZXdWYWx1ZXN9IH0sCiAgICAgICAgfTsKCiAgICAgICAgIyB1cGRhdGUgRHluYW1pYyBGaWVsZHMgUG9zc2libGUgVmFsdWVzIHZpYSBBSkFYCiAgICAgICAgbXkgQER5bmFtaWNGaWVsZEFKQVg7CgogICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJE5hbWUgKCBrZXlzICV7ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9IH0gKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JE5hbWV9OwoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSAmJiByZWYgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJGkgKCAwIC4uICQjeyAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn0gfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtOb3RBQ0xSZWR1Y2libGV9CiAgICAgICAgICAgICAgICAgICAgICAgID8gKCAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn1bJGldIC8vICcnICkKICAgICAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifVskaV0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAkTmFtZSAuICdfJyAuICRpLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9WyRpXSwKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHRlbXBsYXRlIHZhbHVlIGZvciBrZWVwaW5nIHRlbXBsYXRlcyBpbiBsaW5lIHdpdGggQUNMcwogICAgICAgICAgICAgICAgaWYgKCAhJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e05vdEFDTFJlZHVjaWJsZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJERhdGFWYWx1ZXMgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJyBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzIHRvIHVwZGF0ZQogICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19UZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9IC8vICcnLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtOb3RBQ0xSZWR1Y2libGV9CiAgICAgICAgICAgICAgICA/ICggJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9IC8vICcnICkKICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHx8ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRTZXRGaWVsZCAoIHZhbHVlcyAkRHluRmllbGRTdGF0ZXN7U2V0c30tPiUqICkgewogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFNldEZpZWxkLT57RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICAgICAgICAgICMgdGhlIGZyb250ZW5kIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGlubmVyIGZpZWxkIGluY2x1ZGluZyBpdHMgaW5kZXggb3IgdGhlICdfVGVtcGxhdGUnIHN1ZmZpeAogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRnJvbnRlbmROYW1lICgga2V5cyAkU2V0RmllbGQtPntGaWVsZFN0YXRlc30tPiUqICkgewoKICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gJiYgcmVmICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJGkgKCAwIC4uICQjeyAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKCAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSAvLyAnJyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gWyAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEeW5hbWljRmllbGRfJyAuICRGcm9udGVuZE5hbWUgLiAiXyRpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfVskaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e1RyYW5zbGF0YWJsZVZhbHVlc30gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYWRkIHRlbXBsYXRlIHZhbHVlIGZvciBrZWVwaW5nIHRlbXBsYXRlcyBpbiBsaW5lIHdpdGggQUNMcwogICAgICAgICAgICAgICAgICAgIGlmICggISRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtOb3RBQ0xSZWR1Y2libGV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJyBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19UZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gLy8gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtOb3RBQ0xSZWR1Y2libGV9CiAgICAgICAgICAgICAgICAgICAgPyAoICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0gLy8gJycgKQogICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJEZyb250ZW5kTmFtZSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9LAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSApICkgewogICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdSZXN0cmljdGlvbnNfVmlzaWJpbGl0eScsCiAgICAgICAgICAgICAgICBEYXRhID0+ICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb25KU09OKAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICBARHluYW1pY0ZpZWxkQUpBWCwKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBwcmUtZmlsbGluZyBjYWNoZSBmb3IgcmVmZXJlbmNlIGZpZWxkIC0gbmVjZXNzYXJ5IGZvciBBQ0wgY2FsY3VsYXRpb24gb2YgbGVucyBmaWVsZHMKICAgICAgICBEWU5BTUlDRklFTERDT05GSUc6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRJc1JlZmVyZW5jZUZpZWxkID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1JlZmVyZW5jZUZpZWxkJywKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgdW5sZXNzICRJc1JlZmVyZW5jZUZpZWxkOwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJyktPlNldEZvcm1EYXRhKAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgS2V5ICAgICAgICAgID0+ICdQb3NzaWJsZVZhbHVlc19EeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJExvb3BQcm90ZWN0aW9uID0gMTAwOwoKICAgICAgICAjIGdldCB2YWx1ZXMgYW5kIHZpc2liaWxpdHkgb2YgZHluYW1pYyBmaWVsZHMKICAgICAgICBteSAlRHluRmllbGRTdGF0ZXMgPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPkdldEZpZWxkU3RhdGVzKAogICAgICAgICAgICBDb25maWdJdGVtT2JqZWN0ICAgICAgICAgID0+ICRDb25maWdJdGVtT2JqZWN0LAogICAgICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICAgICAgID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIEdldFBhcmFtICAgICAgICAgICAgICAgICAgPT4geyVHZXRQYXJhbX0sCiAgICAgICAgICAgIEF1dG9zZWxlY3QgICAgICAgICAgICAgICAgPT4gJEF1dG9zZWxlY3QsCiAgICAgICAgICAgIEFDTFByZXNlbGVjdGlvbiAgICAgICAgICAgPT4gJEFDTFByZXNlbGVjdGlvbiwKICAgICAgICAgICAgTG9vcFByb3RlY3Rpb24gICAgICAgICAgICA9PiBcJExvb3BQcm90ZWN0aW9uLAogICAgICAgICk7CgogICAgICAgICMgc3RvcmUgbmV3IHZhbHVlcwogICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9ID0gewogICAgICAgICAgICAleyAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfSB9LAogICAgICAgICAgICAleyAkRHluRmllbGRTdGF0ZXN7TmV3VmFsdWVzfSB9LAogICAgICAgIH07CgogICAgICAgICVEeW5hbWljRmllbGRWaXNpYmlsaXR5ICAgICA9ICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fS0+JSo7CiAgICAgICAgJUR5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzID0gbWFwIHsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8gPT4gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JF99e1Bvc3NpYmxlVmFsdWVzfSB9IGtleXMgJER5bkZpZWxkU3RhdGVze0ZpZWxkc30tPiUqOwogICAgfQoKICAgIG15ICROYW1lRWRpdGFibGUgICA9ICROYW1lTW9kdWxlID8gMCA6IDE7CiAgICBteSAkUm93TmFtZUludmFsaWQgPSAkQ29uZmlnSXRlbS0+e05hbWV9CgogICAgICAgICMgSWYgYSBuYW1lIGV4aXN0cyB0aGVuIG1hcmsgcmVnZXggYW5kIGR1cGxpY2F0ZSBlcnJvcnMuCiAgICAgICAgPyAoICggJENJTmFtZVJlZ2V4RXJyb3JNZXNzYWdlIHx8IElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgPyAnU2VydmVyRXJyb3InIDogdW5kZWYgKQoKICAgICAgICAjIElmIHRoZSBuYW1lIGRvZXMgbm90IGV4aXN0IGJ1dCBzaG91bGQgZXhpc3QgdGhlbiBtYXJrIGl0LgogICAgICAgIDogKCAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgJiYgJE5hbWVFZGl0YWJsZSApID8gJ1NlcnZlckVycm9yJyA6IHVuZGVmICk7CgogICAgIyBvdXRwdXQgbmFtZSBibG9jawogICAgaWYgKCAkQ29uZmlnSXRlbS0+e05hbWV9IHx8ICROYW1lRWRpdGFibGUgKSB7CgogICAgICAgICMgb3V0cHV0IG5hbWUgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93TmFtZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgUm93TmFtZUludmFsaWQgPT4gJFJvd05hbWVJbnZhbGlkLAogICAgICAgICAgICAgICAgUmVhZG9ubHkgICAgICAgPT4gISROYW1lRWRpdGFibGUsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgc3BlY2lmaWMgZXJyb3JzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAjIGJ1aWxkIGFycmF5IHdpdGggQ0ktTnVtYmVycwogICAgICAgIG15IEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXI7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyROYW1lRHVwbGljYXRlc30gKSB7CgogICAgICAgICAgICAjIGxvb2t1cCB0aGUgQ0kgbnVtYmVyCiAgICAgICAgICAgIG15ICRDSU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXIsICRDSU51bWJlcjsKICAgICAgICB9CgogICAgICAgIG15ICREdXBsaWNhdGVTdHJpbmcgPSBqb2luICcsICcsIEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXI7CgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJSZW5kZXJpbmcgYmxvY2sgZm9yIGR1cGxpY2F0ZXMgKENJLU51bWJlcnM6ICREdXBsaWNhdGVTdHJpbmcpIGVycm9yIG1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd05hbWVFcnJvckR1cGxpY2F0ZXMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIER1cGxpY2F0ZXMgPT4gJER1cGxpY2F0ZVN0cmluZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCRDSU5hbWVSZWdleEVycm9yTWVzc2FnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dOYW1lRXJyb3JSZWdFeCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgUmVnRXhFcnJvck1lc3NhZ2UgPT4gJENJTmFtZVJlZ2V4RXJyb3JNZXNzYWdlLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoJFJvd05hbWVJbnZhbGlkKSB7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT57RGVidWd9ID4gMCApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJSZW5kZXJpbmcgZGVmYXVsdCBlcnJvciBibG9jayIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93TmFtZUVycm9yRGVmYXVsdCcsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVmVyc2lvblN0cmluZ0VkaXRhYmxlICAgPSAkVmVyc2lvblN0cmluZ01vZHVsZSA/IDAgOiAxOwogICAgbXkgJFZlcnNpb25TdHJpbmdEdXBsaWNhdGVzID0gW107CiAgICBteSAkUm93VmVyc2lvblN0cmluZ0ludmFsaWQgPSAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9CgogICAgICAgICMgSWYgYSB2ZXJzaW9uIHN0cmluZyBleGlzdHMgdGhlbiBtYXJrIGR1cGxpY2F0ZSBlcnJvcnMuCiAgICAgICAgPyAoIElzQXJyYXlSZWZXaXRoRGF0YSgkVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXMpID8gJ1NlcnZlckVycm9yJyA6IHVuZGVmICkKCiAgICAgICAgIyBJZiB0aGUgdmVyc2lvbiBzdHJpbmcgZG9lcyBub3QgZXhpc3QgYnV0IHNob3VsZCBleGlzdCB0aGVuIG1hcmsgaXQuCiAgICAgICAgOiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTYXZlJyAmJiAkVmVyc2lvblN0cmluZ0VkaXRhYmxlICkgPyAnU2VydmVyRXJyb3InIDogdW5kZWYgKTsKCiAgICAjIG91dHB1dCB2ZXJzaW9uIHN0cmluZyBibG9jawogICAgaWYgKCRWZXJzaW9uU3RyaW5nRWRpdGFibGUpIHsKCiAgICAgICAgIyBvdXRwdXQgdmVyc2lvbiBzdHJpbmcgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93VmVyc2lvblN0cmluZycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgUm93VmVyc2lvblN0cmluZ0ludmFsaWQgPT4gJFJvd1ZlcnNpb25TdHJpbmdJbnZhbGlkLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHNwZWNpZmljIGVycm9ycwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFZlcnNpb25TdHJpbmdEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgIyBidWlsZCBhcnJheSB3aXRoIENJLU51bWJlcnMKICAgICAgICBteSBAVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXNCeUNJTnVtYmVyOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXN9ICkgewoKICAgICAgICAgICAgIyBsb29rdXAgdGhlIENJIG51bWJlcgogICAgICAgICAgICBteSAkQ0lOdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXNCeUNJTnVtYmVyLCAkQ0lOdW1iZXI7CiAgICAgICAgfQoKICAgICAgICBteSAkRHVwbGljYXRlU3RyaW5nID0gam9pbiAnLCAnLCBAVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXNCeUNJTnVtYmVyOwoKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiUmVuZGVyaW5nIGJsb2NrIGZvciBkdXBsaWNhdGVzIChDSS1OdW1iZXJzOiAkRHVwbGljYXRlU3RyaW5nKSBlcnJvciBtZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dWZXJzaW9uU3RyaW5nRXJyb3JEdXBsaWNhdGVzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBEdXBsaWNhdGVzID0+ICREdXBsaWNhdGVTdHJpbmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICgkUm93VmVyc2lvblN0cmluZ0ludmFsaWQpIHsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlJlbmRlcmluZyBkZWZhdWx0IGVycm9yIGJsb2NrIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dWZXJzaW9uU3RyaW5nRXJyb3JEZWZhdWx0JywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIG91dHB1dCBkZXBsb3ltZW50IHN0YXRlIGludmFsaWQgYmxvY2sKICAgIG15ICRSb3dEZXBsU3RhdGVJbnZhbGlkID0gJyc7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZUlEfSAmJiAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NhdmUnICkgewogICAgICAgICRSb3dEZXBsU3RhdGVJbnZhbGlkID0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBEZXBsU3RhdGVPcHRpb25TdHJnCiAgICBteSAkRGVwbFN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEJywKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0Zvcm1VcGRhdGUgVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplJyAuICRSb3dEZXBsU3RhdGVJbnZhbGlkLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0UGFyYW17RGVwbFN0YXRlSUR9LAogICAgKTsKCiAgICAjIG91dHB1dCBkZXBsb3ltZW50IHN0YXRlIGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdSb3dEZXBsU3RhdGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBEZXBsU3RhdGVPcHRpb25TdHJnID0+ICREZXBsU3RhdGVPcHRpb25TdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ29wZXJhdGlvbmFsJywgJ2luY2lkZW50JyBdLAogICAgICAgIH0sCiAgICApOwoKICAgICMgb3V0cHV0IGluY2lkZW50IHN0YXRlIGludmFsaWQgYmxvY2sKICAgIG15ICRSb3dJbmNpU3RhdGVJbnZhbGlkID0gJyc7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZUlEfSAmJiAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NhdmUnICkgewogICAgICAgICRSb3dJbmNpU3RhdGVJbnZhbGlkID0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBJbmNpU3RhdGVPcHRpb25TdHJnCiAgICBteSAkSW5jaVN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0luY2lTdGF0ZUlEJywKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0Zvcm1VcGRhdGUgVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplJyAuICRSb3dJbmNpU3RhdGVJbnZhbGlkLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0UGFyYW17SW5jaVN0YXRlSUR9LAogICAgKTsKCiAgICAjIG91dHB1dCBpbmNpZGVudCBzdGF0ZSBibG9jawogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnUm93SW5jaVN0YXRlJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgSW5jaVN0YXRlT3B0aW9uU3RyZyA9PiAkSW5jaVN0YXRlT3B0aW9uU3RyZywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdlbmVyYXRlIGJhc2UgdXJsCiAgICBteSAkVVJMID0gIkFjdGlvbj1QaWN0dXJlVXBsb2FkO0Zvcm1JRD0kU2VsZi0+e0Zvcm1JRH07Q29udGVudElEPSI7CgogICAgIyByZXBsYWNlIGxpbmtzIHRvIGlubGluZSBpbWFnZXMgaW4gaHRtbCBjb250ZW50CiAgICBteSBASW5saW5lQXR0YWNobWVudExpc3Q7CiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBuZSAnTkVXJyApIHsKICAgICAgICBASW5saW5lQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmZXRjaCBhdHRhY2htZW50IGRhdGEgYW5kIHN0b3JlIGluIGhhc2ggZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgbXkgJUlubGluZUF0dGFjaG1lbnRzOwogICAgRklMRU5BTUU6CiAgICBmb3IgbXkgJEZpbGVuYW1lIChASW5saW5lQXR0YWNobWVudExpc3QpIHsKICAgICAgICBteSAkRmlsZURhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgJElubGluZUF0dGFjaG1lbnRzeyAkRmlsZURhdGEtPntQcmVmZXJlbmNlc317Q29udGVudElEfSB9ID0gJEZpbGVEYXRhOwogICAgICAgICRJbmxpbmVBdHRhY2htZW50c3sgJEZpbGVEYXRhLT57UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH0gfS0+e0NvbnRlbnRJRH0gPSAkRmlsZURhdGEtPntQcmVmZXJlbmNlc317Q29udGVudElEfTsKCiAgICAgICAgIyBhZGQgdXBsb2FkZWQgZmlsZSB0byB1cGxvYWQgY2FjaGUKICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVEYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmlsZURhdGEtPntDb250ZW50fSwKICAgICAgICAgICAgQ29udGVudElEICAgPT4gJEZpbGVEYXRhLT57UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRGaWxlRGF0YS0+e0NvbnRlbnRUeXBlfSwKCiAgICAgICAgICAgICMgY3VycmVudGx5LCBvbmx5IGlubGluZSBpbWFnZXMgZm9yIGRlc2NyaXB0aW9uIGFyZSBzdG9yZWQgYXQgdGhlIGNvbmZpZ2l0ZW0gdmVyc2lvbgogICAgICAgICAgICAjICAgc28gd2UgY2FuIHJlbHkgdXBvbiBkZWFsaW5nIHdpdGggaW5saW5lIGltYWdlcyBoZXJlCiAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBuZWVkZWQgdG8gcHJvdmlkZSBuZWNlc3NhcnkgcGFyYW1zIGZvciBSaWNoVGV4dERvY3VtZW50U2VydmUKICAgIG15ICRGaWVsZENvbnRlbnQgPSAkQ29uZmlnSXRlbS0+e0Rlc2NyaXB0aW9ufTsKICAgIG15ICVEYXRhICAgICAgICAgPSAoCiAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCAvLyAnJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCInLAogICAgICAgIERpc3Bvc2l0aW9uID0+ICdpbmxpbmUnLAogICAgKTsKCiAgICAjIHJlZm9ybWF0IHJpY2ggdGV4dCBkb2N1bWVudCB0byBoYXZlIGNvcnJlY3QgY2hhcnNldCBhbmQgbGlua3MgdG8KICAgICMgaW5saW5lIGRvY3VtZW50cwogICAgJURhdGEgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50U2VydmUoCiAgICAgICAgRGF0YSAgICAgICAgICAgICAgID0+IFwlRGF0YSwKICAgICAgICBVUkwgICAgICAgICAgICAgICAgPT4gJFVSTCwKICAgICAgICBBdHRhY2htZW50cyAgICAgICAgPT4gXCVJbmxpbmVBdHRhY2htZW50cywKICAgICAgICBMb2FkRXh0ZXJuYWxJbWFnZXMgPT4gMSwKICAgICk7CgogICAgJEZpZWxkQ29udGVudCA9ICREYXRhe0NvbnRlbnR9OwoKICAgICMgcmVtb3ZlIGFjdGl2ZSBodG1sIGNvbnRlbnQgKHNjcmlwdHMsIGFwcGxldHMsIGV0Yy4uLikKICAgIG15ICRIVE1MVXRpbHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyk7CiAgICBteSAlU2FmZUNvbnRlbnQgICAgID0gJEhUTUxVdGlsc09iamVjdC0+U2FmZXR5KAogICAgICAgIFN0cmluZyAgICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgIE5vQXBwbGV0ICAgICA9PiAxLAogICAgICAgIE5vT2JqZWN0ICAgICA9PiAxLAogICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgIE5vSW50U3JjTG9hZCA9PiAwLAogICAgICAgIE5vRXh0U3JjTG9hZCA9PiAwLAogICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgKTsKCiAgICAjIHRha2UgdGhlIHNhZmUgY29udGVudCBpZiBuZWNlc3NhcnkKICAgIGlmICggJFNhZmVDb250ZW50e1JlcGxhY2V9ICkgewogICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2FmZUNvbnRlbnR7U3RyaW5nfTsKICAgIH0KCiAgICAjIGRldGVjdCBhbGwgcGxhaW4gdGV4dCBsaW5rcyBhbmQgcHV0IHRoZW0gaW50byBhbiBIVE1MIDxhPiB0YWcKICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICApOwoKICAgICMgc2V0IHRhcmdldD0iX2JsYW5rIiBhdHRyaWJ1dGUgdG8gYWxsIEhUTUwgPGE+IHRhZ3MKICAgICMgdGhlIExpbmtRdW90ZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgYWdhaW4KICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgU3RyaW5nICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgVGFyZ2V0QWRkID0+IDEsCiAgICApOwoKICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgIFN0cmluZyAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICApOwoKICAgICMgZXNjYXBlIHNpbmdsZSBxdW90ZXMKICAgICRGaWVsZENvbnRlbnQgPX4gcy8nLyYjMzk7L2c7CgogICAgIyByZW5kZXIgZHluYW1pYyBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRIVE1MOwogICAgbXkgJUdyb3VwTG9va3VwOwogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSApICYmICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9ICkgewoKICAgICAgICAjIFRPRE86IGxvb2sgd2hhdCB0aGlzIHdhcy9pcyBhYm91dAogICAgICAgICMgICAgICAgICRTZWxmLT57Q3VzdG9tZXJTZWFyY2hJdGVtSURzfSA9IFtdOwoKICAgICAgICAjIFRPRE86IEl0IHdvdWxkIGJlIG5pY2UgdG8gc3dpdGNoIGJldHdlZW4gcGFnZXMgZm9yIHRoZSBlZGl0IG1hc2ssIHRvby4gS2VlcGluZyB0aGUgZmllbGRzIGluIHN5bmMKICAgICAgICAjICAgICAgIHdoaWxlIGVkaXRpbmcgbmVlZHMgYSBiaXQgbW9yZSBwcmVwYXJhdGlvbiB0aG91Z2gKICAgICAgICAjIFRodXMgZm9yIG5vdyBtYWtlIHN1cmUgdG8gc2hvdyBkeW5hbWljIGZpZWxkcyBvbmx5IG9uY2UsIGV2ZW4gaWYgcHJlc2VudCBvbiBtdWx0aXBsZSBwYWdlcy9zZWN0aW9ucwogICAgICAgIG15ICRGaWVsZHNTZWVuID0ge307CiAgICAgICAgbXkgJFNob3dEZXNjcmlwdGlvbjsKICAgICAgICBteSBAUGFnZUhUTUw7CiAgICAgICAgbXkgJFNlY3Rpb25IZWFkZXJUZW1wbGF0ZSA9ICc8ZGl2IGNsYXNzPSJSb3cgUm93X1NlY3Rpb25IZWFkZXIiPjxoMz5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2gzPjwvZGl2Pic7CgogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewoKICAgICAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ0FnZW50JyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGlmICggISVHcm91cExvb2t1cCApIHsKICAgICAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdyYW50IGFjY2VzcyB0byB0aGUgcGFnZSBvbmx5IHdoZW4gdGhlIHVzZXIgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzCiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkUGFnZUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICAgICBTRUNUSU9OOgogICAgICAgICAgICBmb3IgbXkgJFNlY3Rpb25Db25maWcgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uOwogICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSBlcSAnRGVzY3JpcHRpb24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2hvd0Rlc2NyaXB0aW9uID0gMTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHdlZWQgb3V0IG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIGR5bmFtaWMgZmllbGRzIC0gc2VlIGNvbW1lbnQgYWJvdmUKICAgICAgICAgICAgICAgICRTZWN0aW9uLT57Q29udGVudH0gPSAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFNlY3Rpb24tPntDb250ZW50fSwKICAgICAgICAgICAgICAgICAgICBTZWVuICAgID0+ICRGaWVsZHNTZWVuLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwcm9jZWVkIGlmIGNvbnRlbnQgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CgogICAgICAgICAgICAgICAgbXkgJEhUTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RHluYW1pY0ZpZWxkOjpNYXNrJyktPkVkaXRTZWN0aW9uUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgICAgID0+ICRTZWN0aW9uLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LAogICAgICAgICAgICAgICAgICAgIFVwZGF0YWJsZUZpZWxkcyAgICAgID0+IFxAVXBkYXRhYmxlRmllbGRzLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZFZhbHVlcyAgID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9LAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+IFwlRHluYW1pY0ZpZWxkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JzICAgICAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0LAogICAgICAgICAgICAgICAgICAgIFZpc2liaWxpdHkgICAgICAgICAgID0+IFwlRHluYW1pY0ZpZWxkVmlzaWJpbGl0eSwKICAgICAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICRDb25maWdJdGVtLT57Q2xhc3N9LAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkSFRNTCA9fiAvXHcvOwoKICAgICAgICAgICAgICAgIG15ICgkU2VjdGlvbkhlYWRlcikgPSBncmVwIHsgJF8tPntIZWFkZXJ9IH0gJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CiAgICAgICAgICAgICAgICBpZiAoJFNlY3Rpb25IZWFkZXIpIHsKICAgICAgICAgICAgICAgICAgICAkUGFnZUR5bmFtaWNGaWVsZEhUTUwgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkU2VjdGlvbkhlYWRlclRlbXBsYXRlLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRTZWN0aW9uSGVhZGVyLT57SGVhZGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRQYWdlRHluYW1pY0ZpZWxkSFRNTCAuPSAkSFRNTDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyAkUGFnZUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICAgICBwdXNoIEBQYWdlSFRNTCwgewogICAgICAgICAgICAgICAgSFRNTCA9PiAkUGFnZUR5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgICAgICBOYW1lID0+ICRQYWdlLT57TmFtZX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSBAQWN0aXZlRHluYW1pY0ZpZWxkcyA9ICgga2V5cyAkRmllbGRzU2Vlbi0+JSogKTsKCiAgICAgICAgIyBzdG9yZSB0aGUgYWN0aXZlIGR5bmFtaWMgZmllbGRzLCB0byBvbmx5IHZhbGlkYXRlIHRob3NlCiAgICAgICAgJEZvcm1DYWNoZU9iamVjdC0+U2V0Rm9ybURhdGEoCiAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ0FjdGl2ZUR5bmFtaWNGaWVsZHMnLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgPT4gXEBBY3RpdmVEeW5hbWljRmllbGRzLAogICAgICAgICk7CgogICAgICAgIGlmICggc2NhbGFyIEBQYWdlSFRNTCA+IDEgKSB7CiAgICAgICAgICAgIG15ICRIZWFkZXJUZW1wbGF0ZSA9CiAgICAgICAgICAgICAgICAnPHN1bW1hcnk+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X1BhZ2VIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgICAgIDxoci8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9zdW1tYXJ5Pic7CgogICAgICAgICAgICBmb3IgbXkgJFBhZ2UgKEBQYWdlSFRNTCkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJzxkZXRhaWxzIGNsYXNzPSJQYWdlQ29udGVudCI+JzsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MIC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkSGVhZGVyVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRQYWdlLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAkUGFnZS0+e0hUTUx9OwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJzwvZGV0YWlscz4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJFNob3dEZXNjcmlwdGlvbikgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJzxkZXRhaWxzIGNsYXNzPSJQYWdlQ29udGVudCI+JzsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MIC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkSGVhZGVyVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKEBQYWdlSFRNTCkgewogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAkUGFnZUhUTUxbMF17SFRNTH07CiAgICAgICAgfQoKICAgICAgICBpZiAoJFNob3dEZXNjcmlwdGlvbikgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRGaWVsZENvbnRlbnQgLy8gJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhCiAgICBteSBAQWxsQXR0YWNobWVudHNMaXN0ID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICk7CgogICAgIyBleGNsdWRlIGlubGluZSBhdHRhY2htZW50cyBhcyB0aGV5IGFyZSBoYW5kbGVkIHNlcGFyYXRlbHkKICAgICRQYXJhbXtBdHRhY2htZW50TGlzdH0gPSBbIGdyZXAgeyAkXy0+e0Rpc3Bvc2l0aW9ufSBuZSAnaW5saW5lJyB9IEBBbGxBdHRhY2htZW50c0xpc3QgXTsKCiAgICAjIFRPRE8gbWF5YmUgcmVzdHJpY3QgdGhpcyB0byBvbmx5IGlmIGRmIHJpY2h0ZXh0IGFyZSB0byBiZSBkaXNwbGF5ZWQKICAgICMgYWRkIHJpY2ggdGV4dCBlZGl0b3IKICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CgogICAgICAgICMgdXNlIGhlaWdodC93aWR0aCBkZWZpbmVkIGZvciB0aGlzIHNjcmVlbgogICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkU2VsZi0+e0NvbmZpZ317UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRTZWxmLT57Q29uZmlnfXtSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgIyBzZXQgdXAgcmljaCB0ZXh0IGVkaXRvcgogICAgICAgICRMYXlvdXRPYmplY3QtPlNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAmJiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gbmUgJ05FVycgKSB8fCAkRHVwbGljYXRlSUQgKSB7CgogICAgICAgICMgb3V0cHV0IGJsb2NrCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0U21hbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0VuZFNtYWxsJyApOwoKICAgICAgICAjIG91dHB1dCBoZWFkZXIKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFZGl0JyksCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnU21hbGwnLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gJER5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlSUQgICAgICA9PiAkRHVwbGljYXRlSUQsCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgTmVjZXNzYXJ5IHN0dWZmIGZvciBBZGQgTmV3CiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGRlbGV0ZSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IGlmICEkSGFzQWNjZXNzOwogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBDbGFzc09wdGlvblN0cmcKICAgICAgICBteSAkQ2xhc3NPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnVzEwMHBjJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBFbmQgTmVjZXNzYXJ5IHN0dWZmIGZvciBBZGQgTmV3CgogICAgICAgICMgb3V0cHV0IGJsb2NrCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0Tm9ybWFsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc09wdGlvblN0cmcgPT4gJENsYXNzT3B0aW9uU3RyZywKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdFbmROb3JtYWwnICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0VkaXQnKSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtRWRpdCcsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyRDb25maWdJdGVtfSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+ICREeW5hbWljRmllbGRIVE1MLAogICAgICAgICAgICAgICAgICAgIER1cGxpY2F0ZUlEICAgICAgPT4gJER1cGxpY2F0ZUlELAogICAgICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQp9CgpzdWIgX0Rpc2NhcmRGaWVsZHNTZWVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnRlbnQ7CiAgICBteSAkUmVmID0gcmVmICRQYXJhbXtDb250ZW50fTsKCiAgICBpZiAoICRSZWYgZXEgJ0FSUkFZJyApIHsKICAgICAgICBteSBAQ2xlYW5lZEFycmF5OwoKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoICRQYXJhbXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgIG15ICRSZWZFbGVtZW50ID0gcmVmICRFbGVtZW50OwoKICAgICAgICAgICAgaWYgKCAkUmVmRWxlbWVudCBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ2xlYW5lZEFycmF5LCAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgU2VlbiAgICA9PiAkUGFyYW17U2Vlbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkUmVmRWxlbWVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkRWxlbWVudC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTZWVufXsgJEVsZW1lbnQtPntERn0gfSsrICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAQ2xlYW5lZEFycmF5LCAkRWxlbWVudDsKICAgICAgICB9CgogICAgICAgICRDb250ZW50ID0gXEBDbGVhbmVkQXJyYXk7CiAgICB9CgogICAgZWxzaWYgKCAkUmVmIGVxICdIQVNIJyApIHsKICAgICAgICBteSAlQ2xlYW5lZEhhc2g7CgogICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAkUGFyYW17Q29udGVudH0tPiUqICkgewogICAgICAgICAgICAkQ2xlYW5lZEhhc2h7JEtleX0gPSAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkUGFyYW17Q29udGVudH17JEtleX0sCiAgICAgICAgICAgICAgICBTZWVuICAgID0+ICRQYXJhbXtTZWVufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRDb250ZW50ID0gXCVDbGVhbmVkSGFzaDsKICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkQ29udGVudCA9ICRQYXJhbXtDb250ZW50fTsKICAgIH0KCiAgICByZXR1cm4gJENvbnRlbnQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemHistory.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdldCBhbmQgY2hlY2sgY29uZmlnIGl0ZW0gSUQKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICkgdW5sZXNzICRDb25maWdJdGVtSUQ7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e1Blcm1pc3Npb259LAogICAgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJyksCiAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgKSB1bmxlc3MgJEhhc0FjY2VzczsKCiAgICAjIERlZmluZSB0cmFuc2xhdGFibGUgaGlzdG9yeSBzdHJpbmdzLgogICAgbXkgJUhpc3RvcnlTdHJpbmdzID0gKAogICAgICAgICdDSUhpc3Rvcnk6OkNvbmZpZ0l0ZW1DcmVhdGUnICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6VmVyc2lvbkNyZWF0ZScgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ05ldyB2ZXJzaW9uIChJRD0lcyknKSwKICAgICAgICAnQ0lIaXN0b3J5OjpEZXBsb3ltZW50U3RhdGVVcGRhdGUnID0+IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknKSwKICAgICAgICAnQ0lIaXN0b3J5OjpJbmNpZGVudFN0YXRlVXBkYXRlJyAgID0+IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6Q29uZmlnSXRlbURlbGV0ZScgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6TGlua0FkZCcgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6TGlua0RlbGV0ZScgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnKSwKICAgICAgICAnQ0lIaXN0b3J5OjpEZWZpbml0aW9uVXBkYXRlJyAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKScpLAogICAgICAgICdDSUhpc3Rvcnk6Ok5hbWVVcGRhdGUnICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKScpLAogICAgICAgICdDSUhpc3Rvcnk6OlZhbHVlVXBkYXRlJyAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIicpLAogICAgICAgICdDSUhpc3Rvcnk6OlZlcnNpb25EZWxldGUnICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdWZXJzaW9uICVzIGRlbGV0ZWQnKSwKICAgICAgICAnQ0lIaXN0b3J5OjpBdHRhY2htZW50QWRkJyAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRmlsZSAiJXMiIHVwbG9hZGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6QXR0YWNobWVudERlbGV0ZScgICAgICA9PiBUcmFuc2xhdGFibGUoJ0ZpbGUgIiVzIiByZW1vdmVkJyksCiAgICApOwoKICAgICMgZ2V0IGFsbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwogICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwoKICAgICMgZ2V0IGFsbCBlbnRyaWVzIGluIHRoZSBoaXN0b3J5IGZvciB0aGlzIGNvbmZpZyBpdGVtCiAgICBteSAkTGluZXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBnZXQgc2hvd24gdXNlciBpbmZvCiAgICBteSBATmV3TGluZXMgPSBAeyRMaW5lc307CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpIaXN0b3J5T3JkZXInKSBlcSAncmV2ZXJzZScgKSB7CiAgICAgICAgQE5ld0xpbmVzID0gcmV2ZXJzZSBAeyRMaW5lc307CiAgICB9CgogICAgbXkgJFZlcnNpb24gPSAwOwogICAgZm9yIG15ICREYXRhVG1wIChATmV3TGluZXMpIHsKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgJXskRGF0YVRtcH0sCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbiwKICAgICAgICApOwoKICAgICAgICAjIHRyaW0gdGhlIGNvbW1lbnQgdG8gb25seSBzaG93IHZlcnNpb24gbnVtYmVyCiAgICAgICAgaWYgKCAkRGF0YXtIaXN0b3J5VHlwZX0gZXEgJ1ZlcnNpb25DcmVhdGUnICkgewogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9fiBzL1xELy9nOwogICAgICAgICAgICAkRGF0YXtWZXJzaW9uSUR9ID0gJERhdGF7Q29tbWVudH07CiAgICAgICAgICAgICRWZXJzaW9uID0gJERhdGF7Q29tbWVudH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERhdGF7SGlzdG9yeVR5cGV9IGVxICdEZXBsb3ltZW50U3RhdGVVcGRhdGUnICkgewoKICAgICAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzaG93IG5hbWVzLCBmaXJzdCBzcGxpdCB0aGUgcmVhc3NlbWJsZQogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9CiAgICAgICAgICAgICAgICBqb2luICclJScsCiAgICAgICAgICAgICAgICBtYXAgeyAkRGVwbFN0YXRlTGlzdC0+eyRffSB8fCAnJyB9CiAgICAgICAgICAgICAgICBzcGxpdCBtLyUlLywgJERhdGF7Q29tbWVudH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERhdGF7SGlzdG9yeVR5cGV9IGVxICdJbmNpZGVudFN0YXRlVXBkYXRlJyApIHsKCiAgICAgICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgICAgICAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgbmFtZXMsIGZpcnN0IHNwbGl0IHRoZSByZWFzc2VtYmxlCiAgICAgICAgICAgICREYXRhe0NvbW1lbnR9ID0KICAgICAgICAgICAgICAgIGpvaW4gJyUlJywKICAgICAgICAgICAgICAgIG1hcCB7ICRJbmNpU3RhdGVMaXN0LT57JF99IHx8ICcnIH0KICAgICAgICAgICAgICAgIHNwbGl0IG0vJSUvLCAkRGF0YXtDb21tZW50fTsKICAgICAgICB9CgogICAgICAgICMgcmVwbGFjZSB0ZXh0CiAgICAgICAgaWYgKCAkRGF0YXtDb21tZW50fSApIHsKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPX4gc3sgXEEgJSUgfXt9eG1zZzsKICAgICAgICAgICAgbXkgQFZhbHVlcyA9IHNwbGl0IC8lJS8sICREYXRhe0NvbW1lbnR9OwoKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkSGlzdG9yeVN0cmluZ3N7ICdDSUhpc3Rvcnk6OicgLiAkRGF0YXtIaXN0b3J5VHlwZX0gfSwKICAgICAgICAgICAgICAgIEBWYWx1ZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlbW92ZSBub3QgbmVlZGVkIHBsYWNlIGhvbGRlcgogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9fiBzL1wlcy8vZzsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3cnLAogICAgICAgICAgICBEYXRhID0+IHslRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIHBhZ2UKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICBUeXBlICA9PiAnU21hbGwnCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICksCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemPrint.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICk7CiAgICBteSAkVmVyc2lvbklEICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEIHx8ICEkVmVyc2lvbklEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e1Blcm1pc3Npb259LAogICAgKTsKCiAgICBpZiAoICEkSGFzQWNjZXNzICkgewoKICAgICAgICAjIGVycm9yIHBhZ2UKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwogICAgaWYgKCAhJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGxhc3QgdmVyc2lvbgogICAgbXkgJExhc3RWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwogICAgJENvbmZpZ0l0ZW0tPntDdXJyZW50TmFtZX0gPSAkTGFzdFZlcnNpb24tPntOYW1lfTsKCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25OdW1iZXIgPSAxOwogICAgTElTVFZFUlNJT05JRDoKICAgIGZvciBteSAkTGlzdFZlcnNpb25JRCAoIEB7JFZlcnNpb25MaXN0fSApIHsKCiAgICAgICAgbGFzdCBMSVNUVkVSU0lPTklEIGlmICRWZXJzaW9uSUQgZXEgJExpc3RWZXJzaW9uSUQ7CiAgICAgICAgJFZlcnNpb25OdW1iZXIrKzsKICAgIH0KCiAgICAjIGdldCB1c2VyIG9iamVjdAogICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgZ2V0IGNyZWF0ZSAmIGNoYW5nZSB1c2VyIGRhdGEKICAgIGZvciBteSAkS2V5IChxdyhDcmVhdGUgQ2hhbmdlKSkgewogICAgICAgICRDb25maWdJdGVtLT57ICRLZXkgLiAnQnlOYW1lJyB9ID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJENvbmZpZ0l0ZW0tPnsgJEtleSAuICdCeScgfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHVzZXIgZGF0YSBvZiB2ZXJzaW9uIChjcmVhdGUgYnkpCiAgICAkQ29uZmlnSXRlbS0+e0NyZWF0ZUJ5TmFtZX0gPSAkVXNlck9iamVjdC0+VXNlck5hbWUoCiAgICAgICAgVXNlcklEID0+ICRDb25maWdJdGVtLT57Q3JlYXRlQnl9LAogICAgKTsKCiAgICAjIGdldCBsaW5rZWQgb2JqZWN0cwogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwoKICAgIG15ICRMaW5rTGlzdFdpdGhEYXRhID0gJExpbmtPYmplY3QtPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgbGluayB0eXBlIGxpc3QKICAgIG15ICVMaW5rVHlwZUxpc3QgPSAkTGlua09iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIGxpbmsgZGF0YQogICAgbXkgJUxpbmtEYXRhOwogICAgaWYgKCAkTGlua0xpc3RXaXRoRGF0YSAmJiByZWYgJExpbmtMaXN0V2l0aERhdGEgZXEgJ0hBU0gnICYmICV7JExpbmtMaXN0V2l0aERhdGF9ICkgewogICAgICAgICVMaW5rRGF0YSA9ICRMYXlvdXRPYmplY3QtPkxpbmtPYmplY3RUYWJsZUNyZWF0ZSgKICAgICAgICAgICAgTGlua0xpc3RXaXRoRGF0YSA9PiAkTGlua0xpc3RXaXRoRGF0YSwKICAgICAgICAgICAgVmlld01vZGUgICAgICAgICA9PiAnU2ltcGxlUmF3JywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGF0dGFjaG1lbnRzCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIGdldCBwZGYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgZ2VuZXJhdGUgcGRmIG91dHB1dAogICAgbXkgJVBhZ2U7CgogICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICRQYWdle01heFBhZ2VzfSA9ICRDb25maWdPYmplY3QtPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgaWYgKCAhJFBhZ2V7TWF4UGFnZXN9IHx8ICRQYWdle01heFBhZ2VzfSA8IDEgfHwgJFBhZ2V7TWF4UGFnZXN9ID4gMTAwMCApIHsKICAgICAgICAkUGFnZXtNYXhQYWdlc30gPSAxMDA7CiAgICB9CgogICAgbXkgJFRpdGxlID0gJENvbmZpZ0l0ZW0tPntDdXJyZW50TmFtZX07CgogICAgJFBhZ2V7TWFyZ2luVG9wfSAgICA9IDMwOwogICAgJFBhZ2V7TWFyZ2luUmlnaHR9ICA9IDQwOwogICAgJFBhZ2V7TWFyZ2luQm90dG9tfSA9IDQwOwogICAgJFBhZ2V7TWFyZ2luTGVmdH0gICA9IDQwOwogICAgJFBhZ2V7SGVhZGVyUmlnaHR9ICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ29uZmlnSXRlbScpIC4gJyMnCiAgICAgICAgLiAkQ29uZmlnSXRlbS0+e051bWJlcn07CiAgICAkUGFnZXtIZWFkbGluZUxlZnR9ID0gJENvbmZpZ0l0ZW0tPntOYW1lfTsKICAgICRQYWdle1BhZ2VUZXh0fSAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1BhZ2UnKTsKICAgICRQYWdle1BhZ2VDb3VudH0gICAgPSAxOwoKICAgICMgY3JlYXRlIG5ldyBwZGYgZG9jdW1lbnQKICAgICRQREZPYmplY3QtPkRvY3VtZW50TmV3KAogICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6JyAuICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgRW5jb2RlID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICApOwoKICAgICMgY3JlYXRlIGZpcnN0IHBkZiBwYWdlCiAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICVQYWdlLAogICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICApOwogICAgJFBhZ2V7UGFnZUNvdW50fSsrOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTYsCiAgICApOwoKICAgICMgb3V0cHV0IHRpdGxlCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRUaXRsZSwKICAgICAgICBGb250U2l6ZSA9PiAxMywKICAgICk7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNiwKICAgICk7CgogICAgIyBvdXRwdXQgInByaW50ZWQgYnkiCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAncHJpbnRlZCBieSAlcyBhdCAlcycsCiAgICAgICAgICAgICRTZWxmLT57VXNlckZ1bGxuYW1lfSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+e1RpbWV9LAogICAgICAgICksCiAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICk7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTQsCiAgICApOwoKICAgICMgb3V0cHV0IGdlbmVyYWwgaW5mb3JtYXRpb24KICAgICRTZWxmLT5fUERGT3V0cHV0R2VuZXJhbEluZm9zKAogICAgICAgIFBhZ2UgICAgICAgPT4gXCVQYWdlLAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICApOwoKICAgIG15ICVTZWN0aW9ucyA9ICRTZWxmLT5fR2V0Q0lTZWN0aW9ucygKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgKTsKCiAgICAjIG91dHB1dCB2ZXJzaW9uIGluZm9zCiAgICAkU2VsZi0+X1BERk91dHB1dFZlcnNpb25JbmZvcygKICAgICAgICBQYWdlICAgICAgICAgID0+IFwlUGFnZSwKICAgICAgICBWZXJzaW9uICAgICAgID0+ICRDb25maWdJdGVtLAogICAgICAgIFZlcnNpb25OdW1iZXIgPT4gJFZlcnNpb25OdW1iZXIsCiAgICAgICAgREZTZWN0aW9ucyAgICA9PiAkU2VjdGlvbnN7REZTZWN0aW9uc30sCiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAkU2VjdGlvbnN7RGVzY3JpcHRpb259LAogICAgKTsKCiAgICAjIG91dHB1dCBhdHRhY2htZW50cwogICAgaWYgKEBBdHRhY2htZW50cykgewogICAgICAgICRTZWxmLT5fUERGT3V0cHV0QXR0YWNobWVudHMoCiAgICAgICAgICAgIFBhZ2VEYXRhICAgICAgID0+IFwlUGFnZSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQXR0YWNobWVudERhdGEgPT4gXEBBdHRhY2htZW50cywKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGludGVybmFsIGJhY2sgbGlua3MKICAgICRTZWxmLT5fUERGT3V0cHV0QmFja2xpbmtzKAogICAgICAgIFBhZ2UgICAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgQ29uZmlnSXRlbSAgID0+ICRDb25maWdJdGVtLAogICAgICAgIExpbmtTZWN0aW9ucyA9PiAkU2VjdGlvbnN7TGlua1NlY3Rpb25zfSwKICAgICk7CgogICAgIyBvdXRwdXQgbGlua2VkIG9iamVjdHMKICAgIGlmICglTGlua0RhdGEpIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dExpbmtlZE9iamVjdHMoCiAgICAgICAgICAgIFBhZ2VEYXRhICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgIExpbmtEYXRhICAgICA9PiBcJUxpbmtEYXRhLAogICAgICAgICAgICBMaW5rVHlwZUxpc3QgPT4gXCVMaW5rVHlwZUxpc3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEdldCBjdXJyZW50IHN5c3RlbSBkYXRldGltZSBvYmplY3QuCiAgICBteSAkQ3VycmVudFN5c3RlbURUT2JqID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CgogICAgIyBjcmVhdGUgZmlsZSBuYW1lCiAgICBteSAkRmlsZW5hbWUgPSBzcHJpbnRmKAogICAgICAgICdjb25maWdpdGVtXyVzXyVzLnBkZicsCiAgICAgICAgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9LAogICAgICAgICRDdXJyZW50U3lzdGVtRFRPYmotPkZvcm1hdCggRm9ybWF0ID0+ICclRl8lSC0lTScgKSwKICAgICk7CiAgICBteSAkQ2xlYW5lZEZpbGVuYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZW5hbWVDbGVhblVwKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICAgICBUeXBlICAgICA9PiAnQXR0YWNobWVudCcsCiAgICApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIEZpbGVuYW1lICAgID0+ICRDbGVhbmVkRmlsZW5hbWUsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL3BkZicsCiAgICAgICAgQ29udGVudCAgICAgPT4gJFBERk9iamVjdC0+RG9jdW1lbnRPdXRwdXQoKSwKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICk7Cn0KCnN1YiBfUERGT3V0cHV0R2VuZXJhbEluZm9zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFBhZ2UgQ29uZmlnSXRlbSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY3JlYXRlIGxlZnQgdGFibGUKICAgIG15ICRUYWJsZUxlZnQgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NsYXNzJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtDb25maWdJdGVtfS0+e0NsYXNzfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb25maWdJdGVtJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtDb25maWdJdGVtfS0+e0N1cnJlbnROYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW19LT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+e0N1ckluY2lTdGF0ZX0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgIF07CgogICAgIyBjcmVhdGUgcmlnaHQgdGFibGUKICAgIG15ICRUYWJsZVJpZ2h0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDcmVhdGVkJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXScsCiAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcJXsgJFBhcmFte0NvbmZpZ0l0ZW19IH0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCBieScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDcmVhdGVCeU5hbWV9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgY2hhbmdlZCcpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DaGFuZ2VUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCV7ICRQYXJhbXtDb25maWdJdGVtfSB9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgY2hhbmdlZCBieScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDaGFuZ2VCeU5hbWV9LAogICAgICAgIH0sCiAgICBdOwoKICAgIG15ICRSb3dzID0gQHskVGFibGVMZWZ0fTsKICAgIGlmICggQHskVGFibGVSaWdodH0gPiAkUm93cyApIHsKICAgICAgICAkUm93cyA9IEB7JFRhYmxlUmlnaHR9OwogICAgfQoKICAgIG15ICVUYWJsZVBhcmFtOwogICAgZm9yIG15ICRSb3cgKCAxIC4uICRSb3dzICkgewogICAgICAgICRSb3ctLTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gICAgICAgICA9ICRUYWJsZUxlZnQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntWYWx1ZX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzJde0NvbnRlbnR9ICAgICAgICAgPSAnICc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzJde0JhY2tncm91bmRDb2xvcn0gPSAnI0ZGRkZGRic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57S2V5fTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bM117Rm9udH0gICAgICAgICAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bNF17Q29udGVudH0gICAgICAgICA9ICRUYWJsZVJpZ2h0LT5bJFJvd10tPntWYWx1ZX07CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSAxNzAuNTsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzJde1dpZHRofSA9IDQ7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVszXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzRde1dpZHRofSA9IDE3MC41OwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ICA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgID0gMzsKCiAgICAjIGdldCBwZGYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBQQUdFOgogICAgZm9yICggJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSAuLiAkUGFyYW17UGFnZX0tPntNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBsYXN0IFBBR0UgaWYgJFRhYmxlUGFyYW17U3RhdGV9OwoKICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAleyAkUGFyYW17UGFnZX0gfSwKICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhcmFte1BhZ2V9LT57UGFnZVRleHR9IC4gJyAnIC4gJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSwKICAgICAgICApOwogICAgICAgICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0rKzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRMaW5rZWRPYmplY3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBMaW5rRGF0YSBMaW5rVHlwZUxpc3QpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVQYWdlICAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKICAgIG15ICVUeXBlTGlzdCA9ICV7ICRQYXJhbXtMaW5rVHlwZUxpc3R9IH07CiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3cgPSAwOwoKICAgICMgbXkgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBmb3IgbXkgJExpbmtUeXBlTGlua0RpcmVjdGlvbiAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICV7ICRQYXJhbXtMaW5rRGF0YX0gfSApIHsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBsaW5rIHR5cGUgbmFtZQogICAgICAgIG15IEBMaW5rRGF0YSAgICAgPSBzcGxpdCAvOjovLCAkTGlua1R5cGVMaW5rRGlyZWN0aW9uOwogICAgICAgIG15ICRMaW5rVHlwZU5hbWUgPSAkVHlwZUxpc3R7ICRMaW5rRGF0YVswXSB9LT57ICRMaW5rRGF0YVsxXSAuICdOYW1lJyB9OwogICAgICAgICRMaW5rVHlwZU5hbWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExpbmtUeXBlTmFtZSk7CgogICAgICAgICMgZGVmaW5lIGhlYWRsaW5lCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJExpbmtUeXBlTmFtZSAuICc6JzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJyc7CgogICAgICAgICMgZXh0cmFjdCBvYmplY3QgbGlzdAogICAgICAgIG15ICRPYmplY3RMaXN0ID0gJFBhcmFte0xpbmtEYXRhfS0+eyRMaW5rVHlwZUxpbmtEaXJlY3Rpb259OwoKICAgICAgICBmb3IgbXkgJE9iamVjdCAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICV7JE9iamVjdExpc3R9ICkgewoKICAgICAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJE9iamVjdExpc3QtPnskT2JqZWN0fSB9ICkgewoKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSB8fD0gJyc7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAkSXRlbS0+e1RpdGxlfSB8fCAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICAgICAkUm93Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSA0MzE7CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xpbmtlZCBPYmplY3RzJyksCiAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyB0YWJsZSBwYXJhbXMKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBQQUdFOgogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRBdHRhY2htZW50cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhQYWdlRGF0YSBDb25maWdJdGVtSUQgQXR0YWNobWVudERhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyRBcmd1bWVudH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJVBhZ2UgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3cgPSAwOwoKICAgICMgYXR0YWNobWVudHMgYXJlIHJlbmRlcmVkIGludG8gYSBzZXBhcmF0ZSByb3cKICAgIEFUVEFDSE1FTlQ6CiAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCBAeyAkUGFyYW17QXR0YWNobWVudERhdGF9IH0gKSB7CgogICAgICAgICMgZ2V0IHRoZSBtZXRhZGF0YSBvZiB0aGUgY3VycmVudCBhdHRhY2htZW50CiAgICAgICAgbXkgJEF0dGFjaG1lbnREYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudCwKICAgICAgICApOwoKICAgICAgICAjIGRlZmluZSBhdHRhY2htZW50IGxpbmUKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gPSAkQXR0YWNobWVudERhdGEtPntGaWxlbmFtZX0gLiAnICAoJyAuICRBdHRhY2htZW50RGF0YS0+e0ZpbGVzaXplfSAuICcpJzsKCiAgICAgICAgJFJvdysrOwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDMxOwoKICAgICMgZ2V0IHBkZiBvYmplY3QKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0F0dGFjaG1lbnRzJyksCiAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyB0YWJsZSBwYXJhbXMKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBQQUdFOgogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9HZXRDSVNlY3Rpb25zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0RlZmluaXRpb25JRH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIGlmICEkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwoKICAgIG15ICREZXNjcmlwdGlvbjsKICAgIG15IEBMaW5rU2VjdGlvbnM7CiAgICBteSBAREZTZWN0aW9uczsKICAgIG15ICVTZWN0aW9uc1NlZW47CiAgICBteSAlR3JvdXBMb29rdXA7CgogICAgUEFHRToKICAgIGZvciBteSAkUGFnZSAoICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17UGFnZXN9LT5AKiApIHsKCiAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgaWYgKCAkUGFnZS0+e0ludGVyZmFjZXN9ICkgewogICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRfIGVxICdBZ2VudCcgfSAkUGFnZS0+e0ludGVyZmFjZXN9LT5AKjsKICAgICAgICB9CgogICAgICAgIGlmICggJFBhZ2UtPntHcm91cHN9ICkgewogICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgdG8gdGhlIHBhZ2Ugb25seSB3aGVuIHRoZSB1c2VyIGlzIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwcwogICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgIH0KCiAgICAgICAgU0VDVElPTjoKICAgICAgICBmb3IgbXkgJFNlY3Rpb25Db25maWcgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFNlY3Rpb25Db25maWctPntTZWN0aW9ufSB9OwoKICAgICAgICAgICAgbmV4dCBTRUNUSU9OIGlmICRTZWN0aW9uc1NlZW57ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfSsrOwogICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uOwoKICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9ICYmICRTZWN0aW9uLT57VHlwZX0gbmUgJ0R5bmFtaWNGaWVsZHMnICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9IGVxICdEZXNjcmlwdGlvbicgKSB7CiAgICAgICAgICAgICAgICAgICAgJERlc2NyaXB0aW9uID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFNlY3Rpb24tPntUeXBlfSBlcSAnQ29uZmlnSXRlbUxpbmtzJyApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBMaW5rU2VjdGlvbnMsICRTZWN0aW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAREZTZWN0aW9ucywgJFNlY3Rpb247CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICgKICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJERlc2NyaXB0aW9uLAogICAgICAgIERGU2VjdGlvbnMgICA9PiBcQERGU2VjdGlvbnMsCiAgICAgICAgTGlua1NlY3Rpb25zID0+IFxATGlua1NlY3Rpb25zLAogICAgKTsKfQoKc3ViIF9QREZPdXRwdXRWZXJzaW9uSW5mb3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUGFnZSBWZXJzaW9uIFZlcnNpb25OdW1iZXIpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBwZGYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ZlcnNpb24nKSAuICcgJwogICAgICAgICAgICAuICRQYXJhbXtWZXJzaW9uTnVtYmVyfSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIGNyZWF0ZSB0YWJsZQogICAgbXkgJFRhYmxlID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDcmVhdGVkJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXScsCiAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcJXsgJFBhcmFte1ZlcnNpb259IH0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCBieScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17VmVyc2lvbn0tPntDcmVhdGVCeU5hbWV9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnICcsCiAgICAgICAgICAgIFZhbHVlID0+ICcgJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOYW1lJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtWZXJzaW9ufS0+e05hbWV9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUGFyYW17VmVyc2lvbn0tPntEZXBsU3RhdGV9ICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnSW5jaWRlbnQgU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUGFyYW17VmVyc2lvbn0tPntJbmNpU3RhdGV9ICksCiAgICAgICAgfSwKICAgIF07CgogICAgaWYgKCAkUGFyYW17RGVzY3JpcHRpb259ICYmICRQYXJhbXtWZXJzaW9ufXtEZXNjcmlwdGlvbn0gKSB7CiAgICAgICAgbXkgJFBsYWluRGVzY3JpcHRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoIFN0cmluZyA9PiAkUGFyYW17VmVyc2lvbn17RGVzY3JpcHRpb259ICk7CiAgICAgICAgJFBsYWluRGVzY3JpcHRpb24gPX4gcy9eW1xuXHJdKy8vOwogICAgICAgICRQbGFpbkRlc2NyaXB0aW9uID1+IHMvW1xuXHJdKyQvLzsKCiAgICAgICAgcHVzaCAkVGFibGUtPkAqLCAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICcgJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICcgJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXNjcmlwdGlvbicpIC4gJzonLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBsYWluRGVzY3JpcHRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFkZCBkeW5hbWljIGZpZWxkIGRhdGEgdG8gdGFibGUKICAgICRTZWxmLT5fUERGT3V0cHV0REZPdXRwdXQoCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICAgICAgREZTZWN0aW9ucyA9PiAkUGFyYW17REZTZWN0aW9uc30sCiAgICAgICAgVGFibGVEYXRhICA9PiAkVGFibGUsCiAgICApOwoKICAgIG15ICVUYWJsZVBhcmFtOwogICAgbXkgJFJvd3MgPSBAeyRUYWJsZX07CgogICAgZm9yIG15ICRSb3cgKCAxIC4uICRSb3dzICkgewogICAgICAgICRSb3ctLTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gPSAkVGFibGUtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRUYWJsZS0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDEwMDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQxMTsKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ICAgICAgPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFyYW17UGFnZX0tPntQYWdlQ291bnR9IC4uICRQYXJhbXtQYWdlfS0+e01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSglVGFibGVQYXJhbSk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGxhc3QgUEFHRSBpZiAkVGFibGVQYXJhbXtTdGF0ZX07CgogICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICV7ICRQYXJhbXtQYWdlfSB9LAogICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFyYW17UGFnZX0tPntQYWdlVGV4dH0gLiAnICcgLiAkUGFyYW17UGFnZX0tPntQYWdlQ291bnR9LAogICAgICAgICk7CiAgICAgICAgJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSsrOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dERGT3V0cHV0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0RlZmluaXRpb25JRH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIGlmICEkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwoKICAgIG15IEBERk9yZGVyZWQ7CiAgICBteSAlREZTZWVuOwogICAgbXkgJEdyZXBERjsKICAgICRHcmVwREYgPSBzdWIgewogICAgICAgIEVOVFJZOgogICAgICAgIGZvciBteSAkRW50cnkgKEBfKSB7CiAgICAgICAgICAgIGlmICggJEVudHJ5LT57REZ9ICkgewogICAgICAgICAgICAgICAgbmV4dCBFTlRSWSBpZiAkREZTZWVueyAkRW50cnktPntERn0gfSsrOwoKICAgICAgICAgICAgICAgIHB1c2ggQERGT3JkZXJlZCwgJEVudHJ5LT57REZ9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEVudHJ5LT57R3JpZH0gJiYgJEVudHJ5LT57R3JpZH17Um93c30gKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoICRFbnRyeS0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAkR3JlcERGLT4oICRSb3ctPkAqICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIFNFQ1RJT046CiAgICBmb3IgbXkgJFNlY3Rpb24gKCBAeyAkUGFyYW17REZTZWN0aW9uc30gLy8gW10gfSApIHsKICAgICAgICBuZXh0IFNFQ1RJT04gaWYgISRTZWN0aW9uLT57Q29udGVudH07CgogICAgICAgICRHcmVwREYtPiggJFNlY3Rpb24tPntDb250ZW50fS0+QCogKTsKICAgIH0KCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIERGTkFNRToKICAgIGZvciBteSAkREZOYW1lIChAREZPcmRlcmVkKSB7CiAgICAgICAgbmV4dCBERk5BTUUgdW5sZXNzICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJERGTmFtZSB9OwoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRERk5hbWV9OwoKICAgICAgICBteSAkRGlzcGxheVZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRERk5hbWUgfSwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFZhbHVlID0gJERpc3BsYXlWYWx1ZS0+e1ZhbHVlfTsKCiAgICAgICAgIyByZXBsYWNlIG5ld2xpbmVzIHdpdGggPGJyLz4gKGZpeCBmb3IgYnVnIyA1OTI4KQogICAgICAgICRWYWx1ZSA9fiBzeyBcbiB9ezxici8+fWd4bXM7CgogICAgICAgICMgY29udmVydCB2YWx1ZSB0byBhc2NpaQogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSggU3RyaW5nID0+ICRWYWx1ZSApOwoKICAgICAgICAjIG5ldyByb3cKICAgICAgICBteSAkTmV3Um93ID0gewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGQtPntMYWJlbH0gKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgIH07CgogICAgICAgICMgYWRkIHJvdyBkYXRhCiAgICAgICAgcHVzaCBAeyAkUGFyYW17VGFibGVEYXRhfSB9LCAkTmV3Um93OwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dEJhY2tsaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhQYWdlIENvbmZpZ0l0ZW0pKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRGVmaW5pdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIERlZmluaXRpb25JRCA9PiAkUGFyYW17Q29uZmlnSXRlbX17RGVmaW5pdGlvbklEfSwKICAgICk7CgogICAgbXkgQEJhY2tsaW5rU2VjdGlvbnMgPSBAeyAkUGFyYW17TGlua1NlY3Rpb25zfSAvLyBbXSB9OwoKICAgIHJldHVybiAgIGlmICEkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwogICAgcmV0dXJuIDEgaWYgIUBCYWNrbGlua1NlY3Rpb25zOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkUERGT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICREZWZhdWx0SGVhZGVyID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdSZWZlcmVuY2VkIGJ5Jyk7CgogICAgU0VDVElPTjoKICAgIGZvciBteSAkU2VjdGlvbiAoQEJhY2tsaW5rU2VjdGlvbnMpIHsKCiAgICAgICAgbXkgJERpcmVjdGlvbiA9ICRTZWN0aW9uLT57TGlua2VkQXN9IHx8ICdTb3VyY2UnOwogICAgICAgIG15ICRUeXBlcyAgICAgPSBJc0FycmF5UmVmV2l0aERhdGEoICRTZWN0aW9uLT57TGlua1R5cGVzfSApID8gJFNlY3Rpb24tPntMaW5rVHlwZXN9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmOwogICAgICAgIG15ICRIZWFkZXIgICAgPSAkU2VjdGlvbi0+e0hlYWRlcn0gICAgICAgICAgICAgICAgICAgICAgICAgID8gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkU2VjdGlvbi0+e0hlYWRlcn0gKSA6ICREZWZhdWx0SGVhZGVyOwoKICAgICAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICREaXJlY3Rpb24sCiAgICAgICAgICAgIFR5cGVzICAgICAgICA9PiAkVHlwZXMsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIG5leHQgU0VDVElPTiBpZiAhQHsgJExpbmtlZENvbmZpZ0l0ZW1zIC8vIFtdIH07CgogICAgICAgIG15ICVMaW5rZWRDbGFzc2VzOwoKICAgICAgICBmb3IgbXkgJExpbmsgKCAkTGlua2VkQ29uZmlnSXRlbXMtPkAqICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMaW5rLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQHsgJExpbmtlZENsYXNzZXN7ICRDb25maWdJdGVtLT57Q2xhc3N9IH0gfSwgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExpbmstPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC0xNSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRIZWFkZXIsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGFibGUKICAgICAgICBteSAkVGFibGUgPSBbXTsKCiAgICAgICAgZm9yIG15ICRDbGFzcyAoIGtleXMgJUxpbmtlZENsYXNzZXMgKSB7CiAgICAgICAgICAgIHB1c2ggJFRhYmxlLT5AKiwgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDbGFzcyksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkTGlua2VkQ2xhc3Nlc3skQ2xhc3N9WzBde05hbWV9LAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZm9yIG15ICRpICggMSAuLiAkI3sgJExpbmtlZENsYXNzZXN7JENsYXNzfSB9ICkgewogICAgICAgICAgICAgICAgcHVzaCAkVGFibGUtPkAqLCB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJyAnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMaW5rZWRDbGFzc2VzeyRDbGFzc31bJGlde05hbWV9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CiAgICAgICAgbXkgJFJvd3MgPSBAeyRUYWJsZX07CgogICAgICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAgICAgJFJvdy0tOwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gPSAkVGFibGUtPlskUm93XS0+e0tleX07CiAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJFRhYmxlLT5bJFJvd10tPntWYWx1ZX07CiAgICAgICAgfQoKICAgICAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSAxMDA7CiAgICAgICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDExOwogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ICAgICAgPSAnI0RERERERCc7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgICA9IDM7CgogICAgICAgICMgb3V0cHV0IHRhYmxlCiAgICAgICAgUEFHRToKICAgICAgICBmb3IgKCAkUGFyYW17UGFnZX0tPntQYWdlQ291bnR9IC4uICRQYXJhbXtQYWdlfS0+e01heFBhZ2VzfSApIHsKCiAgICAgICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgICAgICBsYXN0IFBBR0UgaWYgJFRhYmxlUGFyYW17U3RhdGV9OwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICV7ICRQYXJhbXtQYWdlfSB9LAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhcmFte1BhZ2V9LT57UGFnZVRleHR9IC4gJyAnIC4gJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSB1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IG5lY2Vzc2FyeSBvYmplY3RzCiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRTZWFyY2hQcm9maWxlT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgdXNlIGNvbHVtbiBjb25maWdzIGZyb20gQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0F2YWlsYWJsZX0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbScpLT57Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfTsKICAgICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEZWZhdWx0fSAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0nKS0+e0NsYXNzQ29sdW1uc0RlZmF1bHR9OwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9IHx8IDEwMDAwOwogICAgJFNlbGYtPntTb3J0Qnl9ICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ051bWJlcic7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKICAgICRTZWxmLT57UHJvZmlsZX0gICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgIHx8ICcnOwogICAgJFNlbGYtPntTYXZlUHJvZmlsZX0gICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgfHwgJyc7CiAgICAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzIG9uIHRoZSBjbGFzc2VzCiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFR5cGUgICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgZGVsZXRlICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0gaWYgISRIYXNBY2Nlc3M7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgaWQKICAgIG15ICRDbGFzc0lEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICk7CgogICAgIyBjaGVjayBpZiBjbGFzcyBpZCBpcyB2YWxpZAogICAgaWYgKCAkQ2xhc3NJRCAmJiAhJENsYXNzTGlzdC0+eyRDbGFzc0lEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIENsYXNzSUQhJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNpbmdsZSBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgIG15ICREZWZpbml0aW9uOwoKICAgIGlmICgkQ2xhc3NJRCkgewoKICAgICAgICAjIHNldCBmaWx0ZXIgcGFyYW1zIGZvciBzaG93aW5nIGNvcnJlY3QgY29sdW1ucwogICAgICAgICRTZWxmLT57RmlsdGVyfSA9ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgJFNlbGYtPntGaWx0ZXJzfS0+JSogPSBtYXAgewogICAgICAgICAgICAkXyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICRfLAogICAgICAgICAgICB9CiAgICAgICAgfSB2YWx1ZXMgJENsYXNzTGlzdC0+JSo7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgZGVmaW5pdGlvbgogICAgICAgICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBhYm9ydCwgaWYgbm8gZGVmaW5pdGlvbiBpcyBkZWZpbmVkCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJywgJENsYXNzSUQgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTZXRJbm5lckZpZWxkczsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1NldCc7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0luY2x1ZGV9ICk7CgogICAgICAgICAgICAjIGl0ZXJhdGUgdGhlIGVudGlyZSBJbmNsdWRlIHN0cnVjdHVyZSB0byBnZXQgdGhlIHZlcnNpb25lZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3MKICAgICAgICAgICAgSU5DTFVERUVMRU1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkSW5jbHVkZUVsZW1lbnQgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZUVsZW1lbnQtPntERn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkgLiAnOjonCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkSW5jbHVkZUVsZW1lbnQtPntEZWZpbml0aW9ufXtMYWJlbH0gKTsKICAgICAgICAgICAgICAgICAgICAkU2V0SW5uZXJGaWVsZHN7ICRJbmNsdWRlRWxlbWVudC0+e0RGfSB9ID0gJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9ICkgewoKICAgICAgICAgICAgICAgICAgICBuZXh0IElOQ0xVREVFTEVNRU5UIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJEluY2x1ZGVFbGVtZW50LT57R3JpZH0gKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IElOQ0xVREVFTEVNRU5UIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9e1Jvd3N9ICk7CgogICAgICAgICAgICAgICAgICAgIFJPVzoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgUk9XIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFJvdyk7CgogICAgICAgICAgICAgICAgICAgICAgICBST1dFTEVNRU5UOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvd0VsZW1lbnQgKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFJvd0VsZW1lbnQtPntERn0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJvd0VsZW1lbnQtPntEZWZpbml0aW9ufXtMYWJlbH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKSAuICc6OicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNldElubmVyRmllbGRzeyAkUm93RWxlbWVudC0+e0RGfSB9ID0gJFJvd0VsZW1lbnQtPntEZWZpbml0aW9ufTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9ID0gewogICAgICAgICAgICAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgICAgICAgICAlU2V0SW5uZXJGaWVsZHMsCiAgICAgICAgfTsKCiAgICAgICAgIyBsb2FkIHByb2ZpbGVzIHN0cmluZyBwYXJhbXMKICAgICAgICBpZiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdMb2FkUHJvZmlsZScgJiYgJFNlbGYtPntQcm9maWxlfSApIHx8ICRTZWxmLT57VGFrZUxhc3RTZWFyY2h9ICkgewogICAgICAgICAgICAlR2V0UGFyYW0gPSAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUdldCgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY29udmVydCBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gJiYgcmVmICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSA9IGpvaW4gJzsnLCBAeyAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBkZWZhdWx0IHBhcmFtcyBvZiBkZWZhdWx0IGF0dHJpYnV0ZXMKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9ICkgewogICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICEkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eKENvbmZpZ0l0ZW0pKENyZWF0ZXxDaGFuZ2UpLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQEl0ZW1zID0gc3BsaXQgLzsvLCAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gc3BsaXQgLz0vLCAkSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXskS2V5fSB8fD0gJFZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyhOdW1iZXIgTmFtZSBSZXN1bHRGb3JtIFNob3duQXR0cmlidXRlcykpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkS2V5ICk7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgd2hpdGUgc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXskS2V5fSA9fiBzL1xzKyQvL2c7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID1+IHMvXlxzKy8vZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgYXJyYXkgcGFyYW1zCiAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyhEZXBsU3RhdGVJRHMgSW5jaVN0YXRlSURzKSkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBhcnJheSBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJEtleSApOwogICAgICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXskS2V5fSA9IFxAQXJyYXk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IER5bmFtaWMgZmllbGRzIGZyb20gcGFyYW0gb2JqZWN0CiAgICAgICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHNldCB0aGUgY29tcGxldGUgdmFsdWUgc3RydWN0dXJlIGluIEdldFBhcmFtIHRvIHN0b3JlIGl0IGxhdGVyIGluIHRoZSBzZWFyY2ggcHJvZmlsZQogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGRlbGV0ZSBzZWFyY2ggcHJvZmlsZXMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYUHJvZmlsZURlbGV0ZScgKSB7CgogICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgKTsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAxLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgaW5pdCBzZWFyY2ggZGlhbG9nIChzZWxlY3QgY2xhc3MpCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWCcgKSB7CgogICAgICAgIG15ICRFbXB0eVNlYXJjaCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbXB0eVNlYXJjaCcgKTsKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9ICkgewogICAgICAgICAgICAkRW1wdHlTZWFyY2ggPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgZGVmYXVsdCBwYXJhbXMgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9ICkgewoKICAgICAgICAgICAgS0VZOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICAgICBpZiAoICRLZXkgPX4gL14oQ29uZmlnSXRlbSkoQ3JlYXRlfENoYW5nZSkvICkgewogICAgICAgICAgICAgICAgICAgIG15IEBJdGVtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJEtleSwgJFZhbHVlICkgPSBzcGxpdCAvPS8sICRJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSBjbGFzcwogICAgICAgICMgYXV0b21hdGljYWxseSBzaG93IHNlYXJjaCBtYXNrIGFmdGVyIHNlbGVjdGluZyBhIGNsYXNzIHZpYSBBSkFYCiAgICAgICAgbXkgJENsYXNzT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTZWFyY2hDbGFzc0lEJywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkQ2xhc3NJRCB8fCAnJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEFKQVgnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzT3B0aW9uU3RyZyA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBFbXB0eVNlYXJjaCAgICAgPT4gJEVtcHR5U2VhcmNoLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHRlbXBsYXRlCiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzZXQgc2VhcmNoIGZpZWxkcyBmb3Igc2VsZWN0ZWQgY2xhc3MKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYVXBkYXRlJyB8fCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRQcm9maWxlJyApIHsKCiAgICAgICAgIyBDbGFzc0lEIGlzIHJlcXVpcmVkIGZvciB0aGUgc2VhcmNoIG1hc2sgYW5kIGZvciBhY3R1YWwgc2VhcmNoaW5nCiAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDbGFzc0lEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiB1c2VyIGlzIGFsbG93ZWQgdG8gc2VhcmNoIGNsYXNzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBlcnJvciBzY3JlZW4KICAgICAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGRlZmF1bHQgcGFyYW1zIG9mIGRlZmF1bHQgYXR0cmlidXRlcwogICAgICAgIGlmICggJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSApIHsKCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgISRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eKENvbmZpZ0l0ZW0pKENyZWF0ZXxDaGFuZ2UpLyApIHsKICAgICAgICAgICAgICAgICAgICBteSBASXRlbXMgPSBzcGxpdCAvOy8sICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKEBJdGVtcykgewogICAgICAgICAgICAgICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gc3BsaXQgLz0vLCAkSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9IHx8PSAkVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9IHx8PSAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY29udmVydCBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gJiYgcmVmICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSA9IGpvaW4gJzsnLCBAeyAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFRPRE8gbWF5YmUgbmljZXIgdG8gaGF2ZSB0aGlzIGFsc28gaW4gYSBzeXNjb25maWcgc2V0dGluZwogICAgICAgICMgaW5pdGlhbGl6aW5nIHdpdGggY29tbW9uIGF0dHJpYnV0ZXMKICAgICAgICBteSBAQXR0cmlidXRlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ051bWJlcicpLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ05hbWUnKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyB3YWxrIHRocm91Z2ggZGVmaW5pdGlvbiB0byBjaGVjayBwZXJtaXNzaW9ucyBvbiBwYWdlcyB3aGljaCBjb250YWluIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAlUGVybWl0dGVkRHluYW1pY0ZpZWxkczsKICAgICAgICBteSAlR3JvdXBMb29rdXA7CgogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewoKICAgICAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ0FnZW50JyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGlmICggISVHcm91cExvb2t1cCApIHsKICAgICAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdyYW50IGFjY2VzcyB0byB0aGUgcGFnZSBvbmx5IHdoZW4gdGhlIHVzZXIgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzCiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBTRUNUSU9OOgogICAgICAgICAgICBmb3IgbXkgJFNlY3Rpb25Db25maWcgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uOwogICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSBuZSAnRHluYW1pY0ZpZWxkcycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkbyBub3QgcHJvY2VlZCBpZiBjb250ZW50IGlzIGVtcHR5CiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uLT57Q29udGVudH0tPkAqOwoKICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uREZzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdE1hc2soCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkU2VjdGlvbi0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VjdGlvbkRGcykgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRERk5hbWUgKCAkU2VjdGlvbkRGcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQZXJtaXR0ZWREeW5hbWljRmllbGRzeyRERk5hbWV9ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgYWxzbyBpbmNsdWRlIFNldC1pbm5lciBmaWVsZHMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JERGTmFtZX17RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTZXRJbm5lckZpZWxkcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RNYXNrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRERk5hbWV9e0NvbmZpZ317SW5jbHVkZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRTZXRJbm5lckZpZWxkcykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJbm5lckRGICggJFNldElubmVyRmllbGRzLT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7JElubmVyREZ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZHluYW1pYyBmaWVsZHMKICAgICAgICBteSAkRHluYW1pY0ZpZWxkU2VwYXJhdG9yID0gMTsKCiAgICAgICAgIyBjcmVhdGUgZHluYW1pYyBmaWVsZHMgc2VhcmNoIG9wdGlvbnMgZm9yIGF0dHJpYnV0ZSBzZWxlY3QKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIGRlZmluaXRpb24KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBzb3J0IHsgJGEtPntMYWJlbH0gY21wICRiLT57TGFiZWx9IH0gdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRTZWxmLT57Q29uZmlnfXtEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRQZXJtaXR0ZWREeW5hbWljRmllbGRzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgICAgICMgY3JlYXRlIGEgc2VwYXJhdG9yIGZvciBkeW5hbWljIGZpZWxkcyBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICgkRHluYW1pY0ZpZWxkU2VwYXJhdG9yKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICAgICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlcGFyYXRvciA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBkeW5hbWljIGZpZWxkIGxhYmVsCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkRHluYW1pY0ZpZWxkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIHN1ZmZpeAogICAgICAgICAgICAgICAgbXkgJFRyYW5zbGF0ZWRTdWZmaXggPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgJFByZWZlcmVuY2UtPntMYWJlbFN1ZmZpeH0sCiAgICAgICAgICAgICAgICApIHx8ICcnOwoKICAgICAgICAgICAgICAgIGlmICgkVHJhbnNsYXRlZFN1ZmZpeCkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkU3VmZml4ID0gJyAoJyAuICRUcmFuc2xhdGVkU3VmZml4IC4gJyknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQEF0dHJpYnV0ZXMsICgKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEtleSA9PiAnU2VhcmNoX0R5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVHJhbnNsYXRlZER5bmFtaWNGaWVsZExhYmVsIC4gJFRyYW5zbGF0ZWRTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIEhUTUwgc3RyaW5ncyBmb3IgYWxsIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRTZWxmLT57Q29uZmlnfXtEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRQZXJtaXR0ZWREeW5hbWljRmllbGRzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0FDTFJlZHVjaWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBoYXMgUG9zc2libGVWYWx1ZXMgcHJvcGVydHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBvc3NpYmxlVmFsdWVzKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgaGlzdG9yaWNhbCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQogICAgICAgICAgICAgICAgICAgIG15ICRIaXN0b3JpY2FsVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPkhpc3RvcmljYWxWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREYXRhID0gJFBvc3NpYmxlVmFsdWVzOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBoaXN0b3JpYyB2YWx1ZXMgdG8gY3VycmVudCB2YWx1ZXMgKGlmIHRoZXkgZG9uJ3QgZXhpc3QgYW55bW9yZSkKICAgICAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRIaXN0b3JpY2FsVmFsdWVzKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskSGlzdG9yaWNhbFZhbHVlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkRGF0YS0+eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRhLT57JEtleX0gPSAkSGlzdG9yaWNhbFZhbHVlcy0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgICAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJXskRGF0YX07CiAgICAgICAgICAgICAgICAgICAgQEFjbERhdGF7IGtleXMgJUFjbERhdGEgfSA9IGtleXMgJUFjbERhdGE7CgogICAgICAgICAgICAgICAgICAgICMgc2V0IHBvc3NpYmxlIHZhbHVlcyBmaWx0ZXIgZnJvbSBBQ0xzCiAgICAgICAgICAgICAgICAgICAgbXkgJEFDTCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IEZpbGVyIGtleSA9PiBrZXkgYmFjayB0byBrZXkgPT4gdmFsdWUgdXNpbmcgbWFwCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFBvc3NpYmxlVmFsdWVzRmlsdGVyfSA9IG1hcCB7ICRfID0+ICREYXRhLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgSFRNTAogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSAgICAgICAgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIGF0dHJpYnV0ZXMgc3RyaW5nIGZvciBhdHRyaWJ1dGVzIGxpc3QKICAgICAgICAkUGFyYW17QXR0cmlidXRlc1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBBdHRyaWJ1dGVzLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0F0dHJpYnV0ZScsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCBhdHRyaWJ1dGVzIHN0cmluZyBmb3IgcmVjb3Zlcnkgb24gYWRkIG9yIHN1YnRyYWN0IHNlYXJjaCBmaWVsZHMKICAgICAgICAkUGFyYW17QXR0cmlidXRlc09yaWdTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxAQXR0cmlidXRlcywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdBdHRyaWJ1dGVPcmlnJywKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICBteSAlUHJvZmlsZXMgPSAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUxpc3QoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwoKICAgICAgICAkUGFyYW17UHJvZmlsZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQcm9maWxlcywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdQcm9maWxlJywKICAgICAgICAgICAgSUQgICAgICAgICAgID0+ICdTZWFyY2hQcm9maWxlJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHdhbnRlZCBkZXBsb3ltZW50IHN0YXRlcwogICAgICAgIG15ICRDdXJEZXBsU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERlcGxTdGF0ZUxpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0RlcGxTdGF0ZUlEc30gfHwgW10sCiAgICAgICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgICAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHdhbnRlZCBpbmNpZGVudCBzdGF0ZXMKICAgICAgICBteSAkQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdJbmNpU3RhdGVJRHMnLAogICAgICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJbmNpU3RhdGVJRHN9IHx8IFtdLAogICAgICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIG91dHB1dCBmb3JtYXQgc3RyaW5nCiAgICAgICAgJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5vcm1hbCA9PiBUcmFuc2xhdGFibGUoJ05vcm1hbCcpLAogICAgICAgICAgICAgICAgUHJpbnQgID0+IFRyYW5zbGF0YWJsZSgnUHJpbnQnKSwKICAgICAgICAgICAgICAgIENTViAgICA9PiBUcmFuc2xhdGFibGUoJ0NTVicpLAogICAgICAgICAgICAgICAgRXhjZWwgID0+IFRyYW5zbGF0YWJsZSgnRXhjZWwnKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnUmVzdWx0Rm9ybScsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte1Jlc3VsdEZvcm19IHx8ICdOb3JtYWwnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBSkFYQ29udGVudCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcgPT4gJEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0+ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgQXR0cmlidXRlc1N0cmcgICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlc1N0cmd9LAogICAgICAgICAgICAgICAgQXR0cmlidXRlc09yaWdTdHJnICAgICA9PiAkUGFyYW17QXR0cmlidXRlc09yaWdTdHJnfSwKICAgICAgICAgICAgICAgIFJlc3VsdEZvcm1TdHJnICAgICAgICAgPT4gJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSwKICAgICAgICAgICAgICAgIFByb2ZpbGVzU3RyZyAgICAgICAgICAgPT4gJFBhcmFte1Byb2ZpbGVzU3RyZ30sCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtOdW1iZXJ9IHx8ICcnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0gICB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBEeW5hbWljIGZpZWxkcyBibG9ja3MKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIHNraXAgZmllbGRzIHRoYXQgSFRNTCBjb3VsZCBub3QgYmUgcmV0cmlldmVkCiAgICAgICAgICAgICAgICBuZXh0IFBSRUZFUkVOQ0UgaWYgIUlzSGFzaFJlZldpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+e0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhdHRyaWJ1dGVzIGZvciBzZWFyY2gKICAgICAgICBteSBAU2VhcmNoQXR0cmlidXRlczsKCiAgICAgICAgbXkgJUdldFBhcmFtQmFja3VwID0gJUdldFBhcmFtOwoKICAgICAgICAjIHNob3cgYXR0cmlidXRlcwogICAgICAgIG15IEBTaG93bkF0dHJpYnV0ZXM7CiAgICAgICAgaWYgKCAkR2V0UGFyYW1CYWNrdXB7U2hvd25BdHRyaWJ1dGVzfSApIHsKICAgICAgICAgICAgQFNob3duQXR0cmlidXRlcyA9IHNwbGl0IC87LywgJEdldFBhcmFtQmFja3Vwe1Nob3duQXR0cmlidXRlc307CiAgICAgICAgfQogICAgICAgIG15ICVBbHJlYWR5U2hvd247CgogICAgICAgIGlmICgkQ2xhc3NJRCkgewogICAgICAgICAgICBJVEVNOgogICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKEBBdHRyaWJ1dGVzKSB7CiAgICAgICAgICAgICAgICBteSAkS2V5ID0gJEl0ZW0tPntLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBJVEVNIGlmICEkS2V5OwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgc2hvd24KICAgICAgICAgICAgICAgIGlmIChAU2hvd25BdHRyaWJ1dGVzKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFNob3cgPSAwOwogICAgICAgICAgICAgICAgICAgIFNIT1dOX0FUVFJJQlVURToKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFNob3duQXR0cmlidXRlIChAU2hvd25BdHRyaWJ1dGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJ0xhYmVsJyAuICRLZXkgZXEgJFNob3duQXR0cmlidXRlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNob3cgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBTSE9XTl9BVFRSSUJVVEU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJVEVNIGlmICEkU2hvdzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICMgU2tpcCB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICBuZXh0IElURU0gaWYgIWRlZmluZWQgJEdldFBhcmFtQmFja3VweyRLZXl9OwoKICAgICAgICAgICAgICAgICAgICAjIFNraXAgZW1wdHkgc3RyaW5ncwogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTSBpZiAkR2V0UGFyYW1CYWNrdXB7JEtleX0gZXEgJyc7CgogICAgICAgICAgICAgICAgICAgICMgU2tpcCBlbXB0eSBhcnJheXMKICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkR2V0UGFyYW1CYWNrdXB7JEtleX0gZXEgJ0FSUkFZJyAmJiAhQHsgJEdldFBhcmFtQmFja3VweyRLZXl9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzaG93IGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgbmV4dCBJVEVNIGlmICRBbHJlYWR5U2hvd257JEtleX07CiAgICAgICAgICAgICAgICAkQWxyZWFkeVNob3dueyRLZXl9ID0gMTsKCiAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hBdHRyaWJ1dGVzLCAkS2V5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE5vIHByb2ZpbGUsIHNob3cgZGVmYXVsdCBzY3JlZW4KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgTWVyZ2UgcmVndWxhciBzaG93L2hpZGUgc2V0dGluZ3MgYW5kIHRoZSBzZXR0aW5ncyBmb3IgdGhlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIG15ICVEZWZhdWx0cyA9ICV7ICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30gfHwge30gfTsKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRzICggc29ydCBrZXlzICV7ICRTZWxmLT57Q29uZmlnfXtEeW5hbWljRmllbGR9IHx8IHt9IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnfXtEeW5hbWljRmllbGR9LT57JER5bmFtaWNGaWVsZHN9ID09IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgJERlZmF1bHRzeyJTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRzIn0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSBAT3JkZXJlZERlZmF1bHRzOwogICAgICAgICAgICBpZiAoJURlZmF1bHRzKSB7CgogICAgICAgICAgICAgICAgIyBvcmRlcmluZyBhdHRyaWJ1dGVzIG9uIHRoZSBzYW1lIG9yZGVyIGxpa2UgaW4gQXR0cmlidXRlcwogICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtIChAQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgICAgIG15ICRLZXlBdHIgPSAkSXRlbS0+e0tleX07CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJURlZmF1bHRzICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRLZXkgZXEgJEtleUF0ciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQE9yZGVyZWREZWZhdWx0cywgJEtleTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBLRVk6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoQE9yZGVyZWREZWZhdWx0cykgewogICAgICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7ICAgICMgSWdub3JlIGVudHJ5IGZvciBERiBjb25maWcKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAkQWxyZWFkeVNob3dueyRLZXl9OwogICAgICAgICAgICAgICAgICAgICRBbHJlYWR5U2hvd257JEtleX0gPSAxOwoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hBdHRyaWJ1dGVzLCAkS2V5OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIElmIG5vIGF0dHJpYnV0ZSBpcyBzaG93biwgc2hvdyBmdWxsdGV4dCBzZWFyY2guCiAgICAgICAgICAgIGlmICggIWtleXMgJUFscmVhZHlTaG93biApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEF0dHJpYnV0ZXMsICdGdWxsdGV4dCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15IEBQcm9maWxlQXR0cmlidXRlczsKCiAgICAgICAgIyBzaG93IGF0dHJpYnV0ZXMKICAgICAgICBteSAkQXR0cmlidXRlSXNVc2VkID0gMDsKICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUdldFBhcmFtICkgewogICAgICAgICAgICBuZXh0IEtFWSBpZiAhJEtleTsKICAgICAgICAgICAgbmV4dCBLRVkgaWYgIWRlZmluZWQgJEdldFBhcmFteyRLZXl9OwogICAgICAgICAgICBuZXh0IEtFWSBpZiAkR2V0UGFyYW17JEtleX0gZXEgJyc7CiAgICAgICAgICAgIG5leHQgS0VZIGlmIHJlZiAkR2V0UGFyYW17JEtleX0gZXEgJ0FSUkFZJyAmJiAhJEdldFBhcmFteyRLZXl9LT5AKjsKCiAgICAgICAgICAgICRBdHRyaWJ1dGVJc1VzZWQgPSAxOwoKICAgICAgICAgICAgcHVzaCBAUHJvZmlsZUF0dHJpYnV0ZXMsICRLZXk7CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5vIGF0dHJpYnV0ZSBpcyBzaG93biwgc2hvdyBjb25maWdpdGVtIG51bWJlcgogICAgICAgIGlmICggISRTZWxmLT57UHJvZmlsZX0gKSB7CgogICAgICAgICAgICAjIG1lcmdlIHNlYXJjaCBhbmQgcHJvZmlsZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmIChAU2VhcmNoQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgQFByb2ZpbGVBdHRyaWJ1dGVzID0gdW5pcSggQFByb2ZpbGVBdHRyaWJ1dGVzLCBAU2VhcmNoQXR0cmlidXRlcyApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQFByb2ZpbGVBdHRyaWJ1dGVzID0gdW5pcSggQFByb2ZpbGVBdHRyaWJ1dGVzLCAnTnVtYmVyJyApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNU2VhcmNoUHJvZmlsZUF0dHJpYnV0ZXMnLAogICAgICAgICAgICBWYWx1ZSA9PiBcQFByb2ZpbGVBdHRyaWJ1dGVzLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHRlbXBsYXRlCiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgQUpBWCAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcGVyZm9ybSBzZWFyY2gKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2gnICkgewoKICAgICAgICBteSAkU2VhcmNoRGlhbG9nID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlYXJjaERpYWxvZycgKTsKCiAgICAgICAgIyBmaWxsIHVwIHByb2ZpbGUgbmFtZSAoZS5nLiB3aXRoIGxhc3Qtc2VhcmNoKQogICAgICAgIGlmICggISRTZWxmLT57UHJvZmlsZX0gfHwgISRTZWxmLT57U2F2ZVByb2ZpbGV9ICkgewogICAgICAgICAgICAkU2VsZi0+e1Byb2ZpbGV9ID0gJ2xhc3Qtc2VhcmNoJzsKICAgICAgICB9CgogICAgICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4KICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoO1Byb2ZpbGU9JFNlbGYtPntQcm9maWxlfTsiCiAgICAgICAgICAgIC4gIlRha2VMYXN0U2VhcmNoPTE7U3RhcnRIaXQ9JFNlbGYtPntTdGFydEhpdH07U3ViYWN0aW9uPVNlYXJjaDsiCiAgICAgICAgICAgIC4gIk9yZGVyQnk9JFNlbGYtPntPcmRlckJ5fTtTb3J0Qnk9JFNlbGYtPntTb3J0Qnl9IjsKCiAgICAgICAgaWYgKCRDbGFzc0lEKSB7CiAgICAgICAgICAgICRVUkwgLj0gIjtDbGFzc0lEPSRDbGFzc0lEIjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHNlc3Npb24gb2JqZWN0CiAgICAgICAgbXkgJFNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKTsKCiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIENsYXNzSUQgaXMgcmVxdWlyZWQgZm9yIHRoZSBzZWFyY2ggbWFzayBhbmQgZm9yIGFjdHVhbCBzZWFyY2hpbmcKICAgICAgICBpZiAoICEkQ2xhc3NJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIENsYXNzSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHVzZXIgaXMgYWxsb3dlZCB0byBzZWFyY2ggY2xhc3MKICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFR5cGUgICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGVycm9yIHNjcmVlbgogICAgICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY3VycmVudCBkZWZpbml0aW9uCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICAjIGFib3J0LCBpZiBubyBkZWZpbml0aW9uIGlzIGRlZmluZWQKICAgICAgICBpZiAoICEkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnLCAkQ2xhc3NJRCApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAlU2V0SW5uZXJGaWVsZHM7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfSApOwoKICAgICAgICAgICAgIyBpdGVyYXRlIHRoZSBlbnRpcmUgSW5jbHVkZSBzdHJ1Y3R1cmUgdG8gZ2V0IHRoZSB2ZXJzaW9uZWQgZHluYW1pYyBmaWVsZCBjb25maWdzCiAgICAgICAgICAgIElOQ0xVREVFTEVNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVFbGVtZW50ICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewoKICAgICAgICAgICAgICAgIGlmICggJEluY2x1ZGVFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgICRJbmNsdWRlRWxlbWVudC0+e0RlZmluaXRpb259e0xhYmVsfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSApIC4gJzo6JwogICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ICk7CiAgICAgICAgICAgICAgICAgICAgJFNldElubmVyRmllbGRzeyAkSW5jbHVkZUVsZW1lbnQtPntERn0gfSA9ICRJbmNsdWRlRWxlbWVudC0+e0RlZmluaXRpb259OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfSApIHsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBJTkNMVURFRUxFTUVOVCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfSApOwoKICAgICAgICAgICAgICAgICAgICBST1c6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfXtSb3dzfS0+QCogKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFJPVyB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRSb3cpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRSb3dFbGVtZW50ICggJFJvdy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRSb3dFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkgLiAnOjonCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUm93RWxlbWVudC0+e0RlZmluaXRpb259e0xhYmVsfSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZXRJbm5lckZpZWxkc3sgJFJvd0VsZW1lbnQtPntERn0gfSA9ICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSA9IHsKICAgICAgICAgICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiwKICAgICAgICAgICAgJVNldElubmVyRmllbGRzLAogICAgICAgIH07CgogICAgICAgICMgd2FsayB0aHJvdWdoIGRlZmluaXRpb24gdG8gY2hlY2sgcGVybWlzc2lvbnMgb24gcGFnZXMgd2hpY2ggY29udGFpbiBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVQZXJtaXR0ZWREeW5hbWljRmllbGRzOwogICAgICAgIG15ICVHcm91cExvb2t1cDsKCiAgICAgICAgUEFHRToKICAgICAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CgogICAgICAgICAgICAjIEludGVyZmFjZXMgaXMgb3B0aW9uYWwsIGVmZmVjdGl2ZWx5IGRlZmF1bHQgdG8gWyAnQWdlbnQnIF0KICAgICAgICAgICAgaWYgKCAkUGFnZS0+e0ludGVyZmFjZXN9ICkgewogICAgICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnQWdlbnQnIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntHcm91cHN9ICkgewogICAgICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgICAgICVHcm91cExvb2t1cCA9IHJldmVyc2UgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25Vc2VyR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZ3JhbnQgYWNjZXNzIHRvIHRoZSBwYWdlIG9ubHkgd2hlbiB0aGUgdXNlciBpcyBpbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBncm91cHMKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJEdyb3VwTG9va3VweyRffSB9ICRQYWdlLT57R3JvdXBzfS0+QCo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFNFQ1RJT046CiAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkNvbmZpZyAoICRQYWdlLT57Q29udGVudH0tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFNlY3Rpb25Db25maWctPntTZWN0aW9ufSB9OwoKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb247CiAgICAgICAgICAgICAgICBpZiAoICRTZWN0aW9uLT57VHlwZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwcm9jZWVkIGlmIGNvbnRlbnQgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CgogICAgICAgICAgICAgICAgbXkgJFNlY3Rpb25ERnMgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0TWFzaygKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRTZWN0aW9uLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRTZWN0aW9uREZzKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJERGTmFtZSAoICRTZWN0aW9uREZzLT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7JERGTmFtZX0gPSAxOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhbHNvIGluY2x1ZGUgU2V0LWlubmVyIGZpZWxkcwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfXtGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFNldElubmVyRmllbGRzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdE1hc2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JERGTmFtZX17Q29uZmlnfXtJbmNsdWRlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFNldElubmVyRmllbGRzKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyREYgKCAkU2V0SW5uZXJGaWVsZHMtPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3skSW5uZXJERn0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjb252ZXJ0IGF0dHJpYnV0ZXMKICAgICAgICBpZiAoICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9ICYmIHJlZiAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSBlcSAnJyApIHsKICAgICAgICAgICAgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gPSBbIHNwbGl0IC87LywgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gXTsKICAgICAgICB9CgogICAgICAgICMgc2F2ZSBzZWFyY2ggcHJvZmlsZSAodW5kZXIgbGFzdC1zZWFyY2ggb3IgcmVhbCBwcm9maWxlIG5hbWUpCiAgICAgICAgJFNlbGYtPntTYXZlUHJvZmlsZX0gPSAxOwoKICAgICAgICAjIHJlbWVtYmVyIGxhc3Qgc2VhcmNoIHZhbHVlcyBvbmx5IGlmIHNlYXJjaCBpcyBjYWxsZWQgZnJvbSBhIHNlYXJjaCBkaWFsb2cKICAgICAgICAjIG5vdCBmcm9tIHJlc3VsdHMgcGFnZQogICAgICAgIGlmICggJFNlbGYtPntTYXZlUHJvZmlsZX0gJiYgJFNlbGYtPntQcm9maWxlfSAmJiAkU2VhcmNoRGlhbG9nICkgewoKICAgICAgICAgICAgIyByZW1vdmUgb2xkIHByb2ZpbGUgc3R1ZmYKICAgICAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnIC4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluc2VydCBuZXcgcHJvZmlsZSBwYXJhbXMKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUdldFBhcmFtICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JEtleX0gJiYgJEtleSBuZSAnV2hhdCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEdldFBhcmFteyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVBdHRyaWJ1dGVMb29rdXA7CgogICAgICAgICMgY3JlYXRlIGF0dHJpYnV0ZSBsb29rdXAgdGFibGUKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIEB7ICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9IHx8IFtdIH0gKSB7CiAgICAgICAgICAgICRBdHRyaWJ1dGVMb29rdXB7JEF0dHJpYnV0ZX0gPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBkeW5hbWljIGZpZWxkcyBzZWFyY2ggcGFyYW1ldGVycyBmb3IgdGlja2V0IHNlYXJjaAogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgISRBdHRyaWJ1dGVMb29rdXB7CiAgICAgICAgICAgICAgICAgICAgICAgICdMYWJlbFNlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFByZWZlcmVuY2UtPntUeXBlfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSBAU2VhcmNoUmVzdWx0TGlzdDsKCiAgICAgICAgIyBzdGFydCBzZWFyY2ggaWYgY2FsbGVkIGZyb20gYSBzZWFyY2ggZGlhbG9nIG9yIGZyb20gYSByZXN1bHRzIHBhZ2UKICAgICAgICBpZiAoICRTZWFyY2hEaWFsb2cgfHwgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gKSB7CgogICAgICAgICAgICAjIHN0YXJ0IHNlYXJjaAogICAgICAgICAgICBAU2VhcmNoUmVzdWx0TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICBPcmRlckJ5ICA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICAgICAgICAgIFNvcnRCeSAgID0+IFsgJFNlbGYtPntTb3J0Qnl9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgICAgIENsYXNzSURzID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGNvbmZpZyBpdGVtIGR5bmFtaWMgZmllbGRzIGZvciBDU1YgZGlzcGxheQogICAgICAgIG15ICRDU1ZEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgIE9iamVjdFR5cGUgID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICAgICAgICAgRmllbGRGaWx0ZXIgPT4gJFNlbGYtPntDb25maWd9e1NlYXJjaENTVkR5bmFtaWNGaWVsZH0gfHwge30sCiAgICAgICAgKTsKCiAgICAgICAgIyBDU1Ygb3V0cHV0CiAgICAgICAgaWYgKAogICAgICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicKICAgICAgICAgICAgfHwKICAgICAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdFeGNlbCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgIyBjcmVhdGUgaGVhZCAoYWN0dWFsIGhlYWQgYW5kIGhlYWQgZm9yIGRhdGEgZmlsbCkKICAgICAgICAgICAgbXkgQFRtcENTVkhlYWQgPSBAeyAkU2VsZi0+e0NvbmZpZ317U2VhcmNoQ1NWRGF0YX0gfTsKICAgICAgICAgICAgbXkgQENTVkhlYWQgICAgPSBAeyAkU2VsZi0+e0NvbmZpZ317U2VhcmNoQ1NWRGF0YX0gfTsKCiAgICAgICAgICAgICMgaW5jbHVkZSB0aGUgc2VsZWN0ZWQgZHluYW1pYyBmaWVsZHMgaW4gQ1ZTIHJlc3VsdHMKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JENTVkR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15IEBDU1ZEYXRhOwoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQFNlYXJjaFJlc3VsdExpc3QpIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICAgICAgICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRIYXNBY2Nlc3M7CgogICAgICAgICAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICAgICAgICAgbXkgJExhc3RWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgICAgIEBDU1ZIZWFkID0gQHsgJFNlbGYtPntDb25maWd9LT57U2VhcmNoQ1NWRGF0YX0gfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHN0b3JlIGRhdGEKICAgICAgICAgICAgICAgIG15IEBEYXRhOwogICAgICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBUbXBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgaGVhZGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgZ2V0IHRoZSB2YWx1ZSBmcm9tIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAjIGJhY2tlbmQKICAgICAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgPX4gbXtcQSBEeW5hbWljRmllbGRfICggW2EtekEtWlxkXC1dKyApIFx6fXhtcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbG9vcCBvdmVyIHRoZSBkeW5hbWljIGZpZWxkcyBjb25maWd1cmVkIGZvciBDU1Ygb3V0cHV0CiAgICAgICAgICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNraXAgYWxsIGZpZWxkcyB0aGF0IGRvZXMgbm90IG1hdGNoIHdpdGggY3VycmVudCBmaWVsZCBuYW1lICgkMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCBvdXQgdGhlICdEeW5hbWljRmllbGRfJyBwcmVmaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBuZSAkMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgdmFsdWUgYXMgZm9yIHByaW50ICh0byBjb3JyZWN0bHkgZGlzcGxheSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkTGFzdFZlcnNpb24tPnskSGVhZGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkVmFsdWVTdHJnLT57VmFsdWV9OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGVybWluYXRlIHRoZSBEWU5BTUlDRklFTEQgbG9vcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIHJldHJpZXZlIGRhdGEgZnJvbSBhcnRpY2xlCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQERhdGEsICRMYXN0VmVyc2lvbi0+eyRIZWFkZXJ9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQENTVkRhdGEsIFxARGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgIyB0cmFuc2xhdGUgbm9uIGV4aXN0aW5nIGhlYWRlciBtYXkgcmVzdWx0IGluIGEgZ2FyYmFnZSBmaWxlCiAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgQENTVkhlYWQgPSBAeyAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hDU1ZEYXRhfSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSBoZWFkZXJzCiAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICMgcmVwbGFjZSBDb25maWdJdGVtTnVtYmVyIGhlYWRlciB3aXRoIHRoZSBjdXJyZW50IENvbmZpZ0l0ZW1OdW1iZXIgaG9vayBmcm9tIHN5c2NvbmZpZwogICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdDb25maWdJdGVtTnVtYmVyJyApIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6SG9vaycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkSGVhZGVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBHZXQgU2VwYXJhdG9yIGZyb20gbGFuZ3VhZ2UgZmlsZS4KICAgICAgICAgICAgbXkgJFVzZXJDU1ZTZXBhcmF0b3IgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT57U2VwYXJhdG9yfTsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdQcmVmZXJlbmNlc0dyb3VwcycpLT57Q1NWU2VwYXJhdG9yfS0+e0FjdGl2ZX0gKSB7CiAgICAgICAgICAgICAgICBteSAlVXNlckRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggJFVzZXJEYXRhe1VzZXJDU1ZTZXBhcmF0b3J9ICkgewogICAgICAgICAgICAgICAgICAgICRVc2VyQ1NWU2VwYXJhdG9yID0gJFVzZXJEYXRhe1VzZXJDU1ZTZXBhcmF0b3J9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQ1NWT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q1NWJyk7CiAgICAgICAgICAgIG15ICRDdXJTeXNEVE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnQ1NWJyApIHsKCiAgICAgICAgICAgICAgICAjIEFzc2VtYmxlIENTViBkYXRhLgogICAgICAgICAgICAgICAgbXkgJENTViA9ICRDU1ZPYmplY3QtPkFycmF5MkNTVigKICAgICAgICAgICAgICAgICAgICBIZWFkICAgICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICA9PiBcQENTVkRhdGEsCiAgICAgICAgICAgICAgICAgICAgU2VwYXJhdG9yID0+ICRVc2VyQ1NWU2VwYXJhdG9yLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIFJldHVybiBDU1YgdG8gZG93bmxvYWQuCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICAgICAnY2hhbmdlX3NlYXJjaF8lcy5jc3YnLAogICAgICAgICAgICAgICAgICAgICAgICAkQ3VyU3lzRFRPYmplY3QtPkZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdCA9PiAnJUZfJUgtJU0nLAogICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRDU1YsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdFeGNlbCcgKSB7CgogICAgICAgICAgICAgICAgIyBBc3NlbWJsZSBFeGNlbCBkYXRhLgogICAgICAgICAgICAgICAgbXkgJEV4Y2VsID0gJENTVk9iamVjdC0+QXJyYXkyQ1NWKAogICAgICAgICAgICAgICAgICAgIEhlYWQgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgICAgICBGb3JtYXQgPT4gJ0V4Y2VsJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBSZXR1cm4gRXhjZWwgdG8gZG93bmxvYWQuCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICAgICAnY2hhbmdlX3NlYXJjaF8lcy54bHN4JywKICAgICAgICAgICAgICAgICAgICAgICAgJEN1clN5c0RUT2JqZWN0LT5Gb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQgPT4gJyVGXyVILSVNJywKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCIsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEV4Y2VsLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmludCBQREYgb3V0cHV0CiAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKCiAgICAgICAgICAgIG15IEBQREZEYXRhOwoKICAgICAgICAgICAgIyBnZXQgcGRmIG9iamVjdAogICAgICAgICAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQFNlYXJjaFJlc3VsdExpc3QpIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICAgICAgICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRIYXNBY2Nlc3M7CgogICAgICAgICAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICAgICAgICAgbXkgJExhc3RWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHBkZiByb3dzCiAgICAgICAgICAgICAgICBteSBAUERGUm93OwogICAgICAgICAgICAgICAgZm9yIG15ICRTdG9yZURhdGEgKHF3KENsYXNzIEluY2lTdGF0ZSBOYW1lIE51bWJlciBEZXBsU3RhdGUgVmVyc2lvbklEIENyZWF0ZVRpbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkTGFzdFZlcnNpb24tPnskU3RvcmVEYXRhfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQFBERkRhdGEsIFxAUERGUm93OwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBQREYgT3V0cHV0CiAgICAgICAgICAgIG15ICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ29uZmlndXJhdGlvbiBJdGVtJykgLiAnICcKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdTZWFyY2gnKTsKICAgICAgICAgICAgbXkgJFByaW50ZWRCeSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgncHJpbnRlZCBieScpOwogICAgICAgICAgICBteSAkUGFnZSAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQYWdlJyk7CiAgICAgICAgICAgIG15ICRUaW1lICAgICAgPSAkTGF5b3V0T2JqZWN0LT57VGltZX07CgogICAgICAgICAgICAjIGdldCBtYXhpbXVtIG51bWJlciBvZiBwYWdlcwogICAgICAgICAgICBteSAkTWF4UGFnZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgICAgICAgICAgaWYgKCAhJE1heFBhZ2VzIHx8ICRNYXhQYWdlcyA8IDEgfHwgJE1heFBhZ2VzID4gMTAwMCApIHsKICAgICAgICAgICAgICAgICRNYXhQYWdlcyA9IDEwMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjcmVhdGUgdGhlIGhlYWRlcgogICAgICAgICAgICBteSAkQ2VsbERhdGE7CgogICAgICAgICAgICAjIG91dHB1dCAnTm8gUmVzdWx0JywgaWYgbm8gY29udGVudCB3YXMgZ2l2ZW4KICAgICAgICAgICAgaWYgKEBQREZEYXRhKSB7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NsYXNzJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzFdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0luY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzFdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05hbWUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMl0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bM10tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTnVtYmVyJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzRdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNF0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNV0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVmVyc2lvbicpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPls1XS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPls2XS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDcmVhdGUgVGltZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPls2XS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIHRoZSBjb250ZW50IGFycmF5CiAgICAgICAgICAgICAgICBteSAkQ291bnRlclJvdyA9IDE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoQFBERkRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ291bnRlckNvbHVtbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDb250ZW50ICggQHskUm93fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bJENvdW50ZXJSb3ddLT5bJENvdW50ZXJDb2x1bW5dLT57Q29udGVudH0gPSAkQ29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgJENvdW50ZXJDb2x1bW4rKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXJSb3crKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTm8gUmVzdWx0IScpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHBhZ2UgcGFyYW1zCiAgICAgICAgICAgIG15ICVQYWdlUGFyYW07CiAgICAgICAgICAgICRQYWdlUGFyYW17UGFnZU9yaWVudGF0aW9ufSA9ICdsYW5kc2NhcGUnOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpblRvcH0gICAgICAgPSAzMDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5SaWdodH0gICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luQm90dG9tfSAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpbkxlZnR9ICAgICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtIZWFkZXJSaWdodH0gICAgID0gJFRpdGxlOwoKICAgICAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAgICAgbXkgJVRhYmxlUGFyYW07CiAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfSAgICAgICAgICAgID0gJENlbGxEYXRhOwogICAgICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgICAgICA9IDY7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgID0gMDsKICAgICAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0RERERERCc7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgID0gMTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgPSAzOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgICAgICAgICAjIGNyZWF0ZSBuZXcgcGRmIGRvY3VtZW50CiAgICAgICAgICAgICRQREZPYmplY3QtPkRvY3VtZW50TmV3KAogICAgICAgICAgICAgICAgVGl0bGUgID0+ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICAgICAgICAgIEVuY29kZSA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzdGFydCB0YWJsZSBvdXRwdXQKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlUGFyYW0sCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgMScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IHRpdGxlCiAgICAgICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgICAgICBUZXh0ICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICBGb250U2l6ZSA9PiAxMywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC02LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgInByaW50ZWQgYnkiCiAgICAgICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgICAgICBUZXh0ID0+ICRQcmludGVkQnkgLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckZ1bGxuYW1lfSAuICcgJwogICAgICAgICAgICAgICAgICAgIC4gJFRpbWUsCiAgICAgICAgICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTE0LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgUEFHRToKICAgICAgICAgICAgZm9yIG15ICRDb3VudCAoIDIgLi4gJE1heFBhZ2VzICkgewoKICAgICAgICAgICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSglVGFibGVQYXJhbSk7CgogICAgICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBhbm90aGVyIHBhZ2UKICAgICAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAgICAgICAgICVQYWdlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdlIC4gJyAnIC4gJENvdW50LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0dXJuIHRoZSBwZGYgZG9jdW1lbnQKICAgICAgICAgICAgbXkgJEN1cnJlbnRTeXN0ZW1EVE9iaiA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICAgICBteSAkUERGU3RyaW5nICAgICAgICAgID0gJFBERk9iamVjdC0+RG9jdW1lbnRPdXRwdXQoKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICdjb25maWdpdGVtX3NlYXJjaF8lc18lcy5wZGYnLAogICAgICAgICAgICAgICAgICAgICRDdXJyZW50U3lzdGVtRFRPYmotPkZvcm1hdCggRm9ybWF0ID0+ICclRl8lSC0lTScgKSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgbm9ybWFsIEhUTUwgb3V0cHV0CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHN0YXJ0IGh0bWwgcGFnZQogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAgICAgIyB1c2UgY2xhc3NuYW1lIGFzIGZpbHRlcgogICAgICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9ICAgICAgICAgICAgICAgICAgICB8fCAnQWxsJzsKICAgICAgICAgICAgJFNlbGYtPntWaWV3fSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgfHwgJyc7CgogICAgICAgICAgICAjIHNob3cgY29uZmlnIGl0ZW1zCiAgICAgICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57RmlsdGVyfSApCiAgICAgICAgICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1ZpZXd9ICkKICAgICAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTb3J0Qnl9ICkKICAgICAgICAgICAgICAgIC4gJztPcmRlckJ5PScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e09yZGVyQnl9ICkKICAgICAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkU2VsZi0+e1Byb2ZpbGV9IC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgICAgICAuICc7Q2xhc3NJRD0nIC4gJENsYXNzSUQKICAgICAgICAgICAgICAgIC4gJzsnOwogICAgICAgICAgICBteSAkTGlua1NvcnQgPSAnRmlsdGVyPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e0ZpbHRlcn0gKQogICAgICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntQcm9maWxlfSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAgICAgLiAnO0NsYXNzSUQ9JyAuICRDbGFzc0lECiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtGaWx0ZXIgPSAnVGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoO1Byb2ZpbGU9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57UHJvZmlsZX0gKQogICAgICAgICAgICAgICAgLiAnO0NsYXNzSUQ9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRDbGFzc0lEICkKICAgICAgICAgICAgICAgIC4gJzsnOwogICAgICAgICAgICBteSAkTGlua0JhY2sgPSAnU3ViYWN0aW9uPUxvYWRQcm9maWxlO1Byb2ZpbGU9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57UHJvZmlsZX0gKQogICAgICAgICAgICAgICAgLiAnO0NsYXNzSUQ9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRDbGFzc0lEICkKICAgICAgICAgICAgICAgIC4gJztUYWtlTGFzdFNlYXJjaD0xOyc7CgogICAgICAgICAgICBteSAkQ2xhc3NOYW1lID0gJENsYXNzTGlzdC0+eyRDbGFzc0lEfTsKICAgICAgICAgICAgbXkgJFRpdGxlICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnKQogICAgICAgICAgICAgICAgLiAnICcKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDbGFzcycpCiAgICAgICAgICAgICAgICAuICcgJwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENsYXNzTmFtZSk7CgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+IFxAU2VhcmNoUmVzdWx0TGlzdCwKICAgICAgICAgICAgICAgIFRvdGFsICAgICAgICAgPT4gc2NhbGFyIEBTZWFyY2hSZXN1bHRMaXN0LAogICAgICAgICAgICAgICAgVmlldyAgICAgICAgICA9PiAkU2VsZi0+e1ZpZXd9LAogICAgICAgICAgICAgICAgRmlsdGVyICAgICAgICA9PiAkQ2xhc3NOYW1lLAogICAgICAgICAgICAgICAgRW52ICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgICAgIExpbmtQYWdlICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICAgICAgTGlua1NvcnQgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgICAgICAgICBMaW5rRmlsdGVyICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgICAgICAgICAgTGlua0JhY2sgICAgICA9PiAkTGlua0JhY2ssCiAgICAgICAgICAgICAgICBQcm9maWxlICAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBUaXRsZU5hbWUgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgPT4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1NvcnRCeX0gKSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgPT4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e09yZGVyQnl9ICksCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgUmVxdWVzdFVSTCAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICAgICAgICAgICAgICBCdWxrICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjYWxsIHNlYXJjaCBkaWFsb2cgZnJvbSBzZWFyY2ggZW1wdHkgc2NyZWVuCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgIyBzaG93IGRlZmF1bHQgc2VhcmNoIHNjcmVlbgogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nJywKICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgUHJvZmlsZSA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEFjdGlvbiAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHRlbXBsYXRlCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemTreeView.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IG5lZWRlZCBwYXJhbWV0ZXJzLAogICAgIyBvbmx5IHRoZSBWZXJzaW9uSUQgaXMgbmVlZGVkIGFzIHRoZSBWZXJzaW9uSUQgZGV0ZXJtaW5lcyB0aGUgQ29uZmlnSXRlbUlECiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbklEKSkgewogICAgICAgICRHZXRQYXJhbXskTmVlZGVkfSAvLz0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5lZWRlZCApOwogICAgICAgIGlmICggISRHZXRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzJywgJE5lZWRlZCApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmVyc2lvbklEICAgID0gJEdldFBhcmFte1ZlcnNpb25JRH07CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25Db25maWdJdGVtSURHZXQoIFZlcnNpb25JRCA9PiAkVmVyc2lvbklEICk7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEZyb250ZW5kQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwogICAgbXkgJEFjY2VzcyAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgID0+ICRGcm9udGVuZENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGVycm9yIHNjcmVlbgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICBNZXNzYWdlICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1lvdSBuZWVkICVzIHBlcm1pc3Npb25zIScsICRGcm9udGVuZENvbmZpZy0+e1Blcm1pc3Npb259ICksCiAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICkgdW5sZXNzICRBY2Nlc3M7CgogICAgbXkgJERlcHRoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0RlcHRoJyApCiAgICAgICAgfHwKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkNNREJUcmVlVmlldzo6RGVmYXVsdERlcHRoIikKICAgICAgICB8fAogICAgICAgIDE7CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRUcmVlVmlldycgKSB7CgogICAgICAgICMgdGhlIEhUTUwgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIGZvciBkcmF3aW5nIHRoZSBncmFwaAogICAgICAgIG15ICRDYW52YXNIVE1MID0gJExheW91dE9iamVjdC0+R2VuZXJhdGVIaWVyYXJjaHlHcmFwaCgKICAgICAgICAgICAgRGVwdGggICAgICAgID0+ICREZXB0aCwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICBTZXNzaW9uSUQgICAgPT4gJFNlbGYtPntTZXNzaW9uSUR9CiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ2FudmFzSFRNTCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuYW1lIGFuZCBudW1iZXIgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgQ2FjaGUgICAgICAgID0+IDEsCiAgICApOwoKICAgICMgVGhlIGFjdHVhbCB0cmVlIHdpbGwgYmUgd3JpdHRlbiBsYXRlciBpbnRvIHRoZSBkaXYgd2l0aCB0aGUgSUQgJ0NhbnZhcycuCiAgICAjIFRoZSBpbmZvcm1hdGlvbiBmb3IgZHJhd2luZyB0aGUgZ3JhcGggd2lsbCBiZSBmZXRjaGVkIHdpdGggJ0xvYWRUcmVlVmlldycuCiAgICAjIFNlZSB2YXIvaHR0cGQvaHRkb2NzL2pzL0NvcmUuQWdlbnQuVHJlZVZpZXcuanMgZm9yIHRoZSBmdW5jdGlvbiBVcGRhdGVUcmVlKCkuCiAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbU5hbWUgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICBEZXB0aCAgICAgICAgICAgID0+ICREZXB0aCwKICAgICAgICAgICAgICAgIFNlc3Npb25JRCAgICAgICAgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICAgICAgU2hvd0xpbmtMYWJlbHMgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkNNREJUcmVlVmlldzo6U2hvd0xpbmtMYWJlbHMiKSB8fCAnWWVzJywKICAgICAgICAgICAgfSwKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAkQ29uZmlnSXRlbUlEICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJEdldFBhcmFtVmVyc2lvbklEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdAogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbnRlbnQKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJEdldFBhcmFtVmVyc2lvbklELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ0l0ZW0gbm90IGZvdW5kIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSgkVmVyc2lvbkxpc3QpICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdObyB2ZXJzaW9ucyBmb3VuZCEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBUT0RPOiBDb21wYXJlIHdpdGggbGVnYWN5IGNvZGUgdG8gY2hlY2sgd2hldGhlciB0aGlzIGlzIGEgZ29vZCBwbGFjZS4gTGluZSAyNTYgdGhyb3dzIGFuIGVycm9yIGlmIG5vdCBzZXQsIGVsc2UKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH07CgogICAgIyBydW4gY29uZmlnIGl0ZW0gbWVudSBtb2R1bGVzCiAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZScpIGVxICdIQVNIJyApIHsKICAgICAgICBteSAlTWVudXMgICA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlJykgfTsKICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgZm9yIG15ICRNZW51ICggc29ydCBrZXlzICVNZW51cyApIHsKCiAgICAgICAgICAgICMgbG9hZCBtb2R1bGUKICAgICAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkTWVudXN7JE1lbnV9LT57TW9kdWxlfSApICkgewoKICAgICAgICAgICAgICAgIG15ICRPYmplY3QgPSAkTWVudXN7JE1lbnV9LT57TW9kdWxlfS0+bmV3KAogICAgICAgICAgICAgICAgICAgICV7JFNlbGZ9LAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2VsZi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IGNsYXNzZXMKICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ1BvcFVwJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51fS0+e01lbnVDbGFzc30gPSAnQXNQb3B1cCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0JhY2snICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57TWVudUNsYXNzfSA9ICdIaXN0b3J5QmFjayc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJ1biBtb2R1bGUKICAgICAgICAgICAgICAgICRDb3VudGVyID0gJE9iamVjdC0+UnVuKAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICAgICAgICAgIENvdW50ZXIgICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkTWVudXN7JE1lbnV9LAogICAgICAgICAgICAgICAgICAgIE1lbnVJRCAgICAgPT4gJE1lbnUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBpbmNpZGVudCBzaWduYWwKICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICBUcmFuc2xhdGFibGUoJ29wZXJhdGlvbmFsJykgPT4gJ2dyZWVubGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCdpbmNpZGVudCcpICAgID0+ICdyZWRsZWQnLAogICAgKTsKCiAgICAjIHRvIHN0b3JlIHRoZSBjb2xvciBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAlRGVwbFNpZ25hbHM7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGlzdCBvZiBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBzZXQgZGVwbG95bWVudCBzdHlsZSBjb2xvcnMKICAgIG15ICRTdHlsZUNsYXNzZXMgPSAnJzsKCiAgICBJVEVNSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyREZXBsb3ltZW50U3RhdGVzTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgcHJlZmVyZW5jZXMKICAgICAgICBteSAlUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBjb2xvciBpcyBkZWZpbmVkIGluIHByZWZlcmVuY2VzCiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRQcmVmZXJlbmNlc3tDb2xvcn07CiAgICAgICAgbXkgKCRDb2xvcikgPSAkUHJlZmVyZW5jZXN7Q29sb3J9LT5AKjsKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJENvbG9yOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvdmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvdmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gbGMoJENvbG9yKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIGJ1aWxkIHZlcnNpb24gc2VsZWN0aW9uCiAgICBteSAkQmFzZUxpbmsgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGUgPT4gJ1slIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTsnCiAgICAgICAgICAgIC4gIkNvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07IgogICAgKTsKCiAgICBteSBAVmVyc2lvblNlbGVjdGlvbkRhdGEgPSBtYXAgewogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gKCAkQmFzZUxpbmsgLiAiVmVyc2lvbklEPSRfLT57VmVyc2lvbklEfSIgKSwKICAgICAgICAgICAgVmFsdWUgPT4gKAogICAgICAgICAgICAgICAgIlZlcnNpb24gIiAuICggJF8tPntWZXJzaW9uU3RyaW5nfSB8fCAkXy0+e1ZlcnNpb25JRH0gKQogICAgICAgICAgICApLAogICAgICAgIH0KICAgIH0gJFZlcnNpb25MaXN0LT5AKjsKCiAgICBteSAkVmVyc2lvblNlbGVjdGlvbiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcQFZlcnNpb25TZWxlY3Rpb25EYXRhLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnVmVyc2lvblNlbGVjdGlvbicsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmVyc2lvbklEID8gJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kVmVyc2lvbklEIiA6IHVuZGVmLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWxlY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uU2VsZWN0aW9uID0+ICRWZXJzaW9uU2VsZWN0aW9uLAogICAgICAgIH0sCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlciggVmFsdWUgPT4gIkNJIyRDb25maWdJdGVtLT57TnVtYmVyfSIgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgaWYgYSB2ZXJzaW9uIGFscmVhZHkgZXhpc3RzIChUT0RPOiBXaGVuIGRvZXMgaXQgbm90PykKICAgIGlmICggJENvbmZpZ0l0ZW0tPntOYW1lfSApIHsKCiAgICAgICAgIyB0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbAogICAgICAgIG15ICRDb25maWdJdGVtTmFtZSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgbmFtZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEYXRhJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ05hbWUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICAgICAgSWRlbnRhdGlvbiAgPT4gMTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgZGVwbG95bWVudCBzdGF0ZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEYXRhJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57RGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBJZGVudGF0aW9uID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGluY2lkZW50IHN0YXRlCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RhdGEnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nKSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgSWRlbnRhdGlvbiA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntEZWZpbml0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIG15ICVHcm91cExvb2t1cDsKICAgICAgICBteSBAUGFnZXM7CiAgICAgICAgbXkgJFBhZ2VTaG93bjsKICAgICAgICBteSAkUGFnZVJlcXVlc3RlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQYWdlJyApOwogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewoKICAgICAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ0FnZW50JyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGlmICggISVHcm91cExvb2t1cCApIHsKICAgICAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdyYW50IGFjY2VzcyB0byB0aGUgcGFnZSBvbmx5IHdoZW4gdGhlIHVzZXIgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzCiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBQYWdlcywgJFBhZ2U7CgogICAgICAgICAgICBpZiAoICRQYWdlUmVxdWVzdGVkICYmICRQYWdlLT57TmFtZX0gZXEgJFBhZ2VSZXF1ZXN0ZWQgKSB7CiAgICAgICAgICAgICAgICAkUGFnZVNob3duID0gJFBhZ2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAkUGFnZVNob3duIC8vPSBAUGFnZXMgPyAkUGFnZXNbMF0gOiB1bmRlZjsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VzID09IDEgKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2VOYW1lJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFBhZ2VOYW1lID0+ICRQYWdlc1swXXtOYW1lfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgbXkgJFBhZ2UgKEBQYWdlcykgewoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2VMaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgUGFnZU5hbWUgICAgID0+ICRQYWdlLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkR2V0UGFyYW1WZXJzaW9uSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkICAgICA9PiAkUGFnZS0+e05hbWV9IGVxICRQYWdlU2hvd24tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKEBQYWdlcykgewogICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0R5bmFtaWNGaWVsZEhUTUx9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpEeW5hbWljRmllbGQnKS0+UGFnZVJlbmRlcigKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgICAgICAgICAgUGFnZVJlZiAgICA9PiAkUGFnZVNob3duIC8vICRQYWdlc1swXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgfQoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBnZXQgY3JlYXRlICYgY2hhbmdlIHVzZXIgZGF0YQogICAgZm9yIG15ICRLZXkgKHF3KENyZWF0ZSBDaGFuZ2UpKSB7CiAgICAgICAgJENvbmZpZ0l0ZW0tPnsgJEtleSAuICdCeVVzZXJGdWxsTmFtZScgfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgVXNlcklEID0+ICRDb25maWdJdGVtLT57ICRLZXkgLiAnQnknIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBtZXRhIGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgIEN1ckluY2lTaWduYWwgPT4gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH0sCiAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBsaW5rZWQgb2JqZWN0cwogICAgbXkgJExpbmtMaXN0V2l0aERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGxpbmsgdGFibGUgdmlldyBtb2RlCiAgICBteSAkTGlua1RhYmxlVmlld01vZGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0xpbmtPYmplY3Q6OlZpZXdNb2RlJyk7CgogICAgIyBjcmVhdGUgdGhlIGxpbmsgdGFibGUKICAgIG15ICRMaW5rVGFibGVTdHJnID0gJExheW91dE9iamVjdC0+TGlua09iamVjdFRhYmxlQ3JlYXRlKAogICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgVmlld01vZGUgICAgICAgICA9PiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgT2JqZWN0ICAgICAgICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBvdXRwdXQgdGhlIGxpbmsgdGFibGUKICAgIGlmICgkTGlua1RhYmxlU3RyZykgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMaW5rVGFibGUnIC4gJExpbmtUYWJsZVZpZXdNb2RlLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExpbmtUYWJsZVN0cmcgPT4gJExpbmtUYWJsZVN0cmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBteSBATm9uSW5saW5lQXR0YWNobWVudHM7CgogICAgQVRUQUNITUVOVDoKICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICMgZ2V0IHRoZSBtZXRhZGF0YSBvZiB0aGUgY3VycmVudCBhdHRhY2htZW50CiAgICAgICAgbXkgJEF0dGFjaG1lbnREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRBdHRhY2htZW50LAogICAgICAgICk7CiAgICAgICAgcHVzaCBATm9uSW5saW5lQXR0YWNobWVudHMsICRBdHRhY2htZW50RGF0YTsKICAgIH0KCiAgICBpZiAoQE5vbklubGluZUF0dGFjaG1lbnRzKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50cycsCiAgICAgICAgKTsKCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnREYXRhIChATm9uSW5saW5lQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBEb3dubG9hZEF0dGFjaG1lbnQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICAgICAgbXkgJEZpbGVuYW1lICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgICAgIGlmICggISRBdHRhY2htZW50RGF0YSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAleyRBdHRhY2htZW50RGF0YX0sCiAgICAgICAgICAgIFR5cGUgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHQnLAogICAgICAgIFZhbHVlID0+ICRTZWxmLT57U2Vzc2lvbn17VXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHR9LAogICAgKTsKCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJE91dHB1dCwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSwKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyAgPT4gJFN0eWxlQ2xhc3NlcywKICAgICAgICAgICAgfSwKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKfQoKMTsK</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemAttachment.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgSURzCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgY2hlY2sgcGFyYW0KICAgIGlmICggISRDb25maWdJdGVtSUQgfHwgISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnSXRlbUlEIGFuZCBWZXJzaW9uSUQgYXJlIG5lZWRlZCEnLAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAhPSAkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1ZlcnNpb25JRCBkb2VzIG5vdCBiZWxvbmcgdG8gQ29uZmlnSXRlbUlEIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXN0b21lclBlcm1pc3Npb24oCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBIVE1MVmlldyBTdWItYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0hUTUxWaWV3JyApIHsKCiAgICAgICAgIyBHZXQgdGhlIEZpZWxkIGNvbnRlbnQuCiAgICAgICAgbXkgJEZpZWxkQ29udGVudCA9ICRDb25maWdJdGVtLT57RGVzY3JpcHRpb259OwoKICAgICAgICAjICMgQnVpbGQgYmFzZSBVUkwgZm9yIGluLWxpbmUgaW1hZ2VzLgogICAgICAgICMgbXkgJFNlc3Npb25JRCA9ICcnOwogICAgICAgICMgaWYgKCAkU2VsZi0+e1Nlc3Npb25JRH0gJiYgISRTZWxmLT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAjICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgIyAgICAgJEZpZWxkQ29udGVudCA9fiBzewogICAgICAgICMgICAgICAgICAoQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50O1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7Q29uZmlnSXRlbUlEPVxkKztGaWxlbmFtZT1cdyspCiAgICAgICAgIyAgICAgfXskMSRTZXNzaW9uSUR9Z21zeDsKICAgICAgICAjIH0KCiAgICAgICAgIyBmZXRjaCBjb25maWcgaXRlbSBhdHRhY2htZW50IGxpc3QgZm9yIGhhbmRsaW5nIGlubGluZSBhdHRhY2htZW50cwogICAgICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCBhdHRhY2htZW50IGRhdGEgYW5kIHN0b3JlIGluIGhhc2ggZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgICAgIG15ICVBdHRhY2htZW50czsKICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudExpc3QpIHsKICAgICAgICAgICAgJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX0gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX17Q29udGVudElEfSA9ICRBdHRhY2htZW50c3skRmlsZW5hbWV9e1ByZWZlcmVuY2VzfXtDb250ZW50SUR9OwogICAgICAgIH0KCiAgICAgICAgIyBuZWVkZWQgdG8gcHJvdmlkZSBuZWNlc3NhcnkgcGFyYW1zIGZvciBSaWNoVGV4dERvY3VtZW50U2VydmUKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbDsgY2hhcnNldD0idXRmLTgiJywKICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2lubGluZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBiYXNlIHVybAogICAgICAgIG15ICRVUkwgPSAnQWN0aW9uPScgLiAoICRMYXlvdXRPYmplY3QtPntVc2VyVHlwZX0gZXEgJ1VzZXInID8gJ0FnZW50JyA6ICdDdXN0b21lcicgKSAuICdJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudCcKICAgICAgICAgICAgLiAiO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07VmVyc2lvbklEPSRDb25maWdJdGVtLT57VmVyc2lvbklEfTtGaWxlbmFtZT0iOwoKICAgICAgICAjIHJlZm9ybWF0IHJpY2ggdGV4dCBkb2N1bWVudCB0byBoYXZlIGNvcnJlY3QgY2hhcnNldCBhbmQgbGlua3MgdG8KICAgICAgICAjIGlubGluZSBkb2N1bWVudHMKICAgICAgICAlRGF0YSA9ICRMYXlvdXRPYmplY3QtPlJpY2hUZXh0RG9jdW1lbnRTZXJ2ZSgKICAgICAgICAgICAgRGF0YSAgICAgICAgICAgICAgID0+IFwlRGF0YSwKICAgICAgICAgICAgVVJMICAgICAgICAgICAgICAgID0+ICRVUkwsCiAgICAgICAgICAgIEF0dGFjaG1lbnRzICAgICAgICA9PiBcJUF0dGFjaG1lbnRzLAogICAgICAgICAgICBMb2FkRXh0ZXJuYWxJbWFnZXMgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkRmllbGRDb250ZW50ID0gJERhdGF7Q29udGVudH07CgogICAgICAgICMgcmVtb3ZlIGFjdGl2ZSBodG1sIGNvbnRlbnQgKHNjcmlwdHMsIGFwcGxldHMsIGV0Yy4uLikKICAgICAgICBteSAlU2FmZUNvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5TYWZldHkoCiAgICAgICAgICAgIFN0cmluZyAgICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBOb0FwcGxldCAgICAgPT4gMSwKICAgICAgICAgICAgTm9PYmplY3QgICAgID0+IDEsCiAgICAgICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgICAgICBOb0ludFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9FeHRTcmNMb2FkID0+IDAsCiAgICAgICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdGFrZSB0aGUgc2FmZSBjb250ZW50IGlmIG5lY2Nlc3NhcnkKICAgICAgICBpZiAoICRTYWZlQ29udGVudHtSZXBsYWNlfSApIHsKICAgICAgICAgICAgJEZpZWxkQ29udGVudCA9ICRTYWZlQ29udGVudHtTdHJpbmd9OwogICAgICAgIH0KCiAgICAgICAgIyBkZXRlY3QgYWxsIHBsYWluIHRleHQgbGlua3MgYW5kIHB1dCB0aGVtIGludG8gYW4gSFRNTCA8YT4gdGFnCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgdGFyZ2V0PSJfYmxhbmsiIGF0dHJpYnV0ZSB0byBhbGwgSFRNTCA8YT4gdGFncwogICAgICAgICMgdGhlIExpbmtRdW90ZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgYWdhaW4KICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+TGlua1F1b3RlKAogICAgICAgICAgICBTdHJpbmcgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgVGFyZ2V0QWRkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIGVzY2FwZSBzaW5nbGUgcXVvdGVzCiAgICAgICAgJEZpZWxkQ29udGVudCA9fiBzLycvJiMzOTsvZzsKCiAgICAgICAgIyBSZXR1cm4gY29tcGxldGUgSFRNTCBhcyBhbiBhdHRhY2htZW50LgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICBteSAkRmlsZW5hbWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZW5hbWUnICk7CgogICAgICAgICMgY2hlY2sgcGFyYW0KICAgICAgICBpZiAoICEkRmlsZW5hbWUgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdGaWxlbmFtZSBpcyBuZWVkZWQhJywKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGFuIGF0dGFjaG1lbnQKICAgICAgICBteSAkRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkRGF0YSkgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkuIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJERhdGEpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCggJERhdGEtPiUqICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkhIE1heSBiZSBhbiBhdHRhY2shISEiLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgTm8gKGtub3duKSBzdWJhY3Rpb24KICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnSW52YWxpZCBTdWJhY3Rpb24uJyksCiAgICApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgZGVidWcKICAgICRTZWxmLT57RGVidWd9ID0gMDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgbXkgJFNvcnRCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CgogICAgaWYgKCAkU29ydEJ5IGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgIH0KCiAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBvcmRlcmluZyB0byBiZSB1c2VkLgogICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ1VwJzsKCiAgICAjIFNldCB0aGUgc29ydCBvcmRlciBmcm9tIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMsIG9yIHRha2UgdGhlIGRlZmF1bHQuCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICMgZ2V0IHNlc3Npb24gb2JqZWN0CiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgc3RvcmUgbGFzdCBxdWV1ZSBzY3JlZW4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICAjIGdldCBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdAogICAgbXkgJEZpbHRlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CgogICAgIyBnZXQgZmlsdGVycyBzdG9yZWQgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkRmlsdGVyOwogICAgbXkgJEpTT05PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwogICAgbXkgJFN0b3JlZEZpbHRlcnMgICAgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICk7CgogICAgIyBkZWxldGUgc3RvcmVkIGZpbHRlcnMgaWYgbmVlZGVkCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWxldGVGaWx0ZXJzJyApICkgewogICAgICAgICRTdG9yZWRGaWx0ZXJzID0ge307CiAgICB9CgogICAgIyBnZXQgdGhlIGNvbHVtbiBmaWx0ZXJzIGZyb20gdGhlIHdlYiByZXF1ZXN0IG9yIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiAgICAgICAgcXcoRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlIENsYXNzKQogICAgICAgICkKICAgIHsKICAgICAgICAjIGdldCBjb2x1bW4gZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgfHwgJyc7CgogICAgICAgICMgaWYgZmlsdGVyIGlzIG5vdCBwcmVzZW50IGluIHRoZSB3ZWIgcmVxdWVzdCwgdHJ5IHdpdGggdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJENvbHVtbk5hbWUgLiAnSURzJyB9LT5bMF0gfHwgJyc7CiAgICAgICAgfQogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgfQoKICAgICMgZ2V0IGFsbCBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBnZXQgZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICApOwoKICAgICAgICAjIGlmIG5vIGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0LCB0cnkgZnJvbSB1c2VyIHByZWZlcmVuY2VzCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkRmlsdGVyVmFsdWUgfHwgJEZpbHRlclZhbHVlIGVxICcnICkgewogICAgICAgICAgICAkRmlsdGVyVmFsdWUgPSAkU3RvcmVkRmlsdGVycy0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfS0+e0VxdWFsc307CiAgICAgICAgfQoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhZGVmaW5lZCAkRmlsdGVyVmFsdWU7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJEZpbHRlclZhbHVlIGVxICcnOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgJENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSB7CiAgICAgICAgICAgIEVxdWFscyA9PiAkRmlsdGVyVmFsdWUsCiAgICAgICAgfTsKICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRGaWx0ZXJWYWx1ZTsKICAgIH0KCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIgJiB0byBnZXQgdGhlIG91dHB1dCBmYXN0ZXIhCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQ7CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBuZSAnQUpBWEZpbHRlclVwZGF0ZScgKSB7CiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICBSZWZyZXNoID0+ICRSZWZyZXNoLAogICAgICAgICk7CiAgICB9CgogICAgIyBzb3J0IG9uIGRlZmF1bHQgYnkgdXNpbmcgYm90aCAoUHJpb3JpdHksIEFnZSkgZWxzZSB1c2Ugb25seSBvbmUgc29ydCBhcmd1bWVudAogICAgbXkgJVNvcnQ7CgogICAgIyBnZXQgaWYgc2VhcmNoIHJlc3VsdCBzaG91bGQgYmUgcHJlLXNvcnRlZCBieSBwcmlvcml0eQogICAgbXkgJFByZVNvcnRCeVByaW9yaXR5ID0gJENvbmZpZy0+eydQcmVTb3J0OjpCeVByaW9yaXR5J307CiAgICBpZiAoICEkUHJlU29ydEJ5UHJpb3JpdHkgKSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gWyAnUHJpb3JpdHknLCAkU29ydEJ5IF0sCiAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRG93bicsICAgICAkT3JkZXJCeSBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBteSBjb25maWcgaXRlbSBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBkZWZpbmUgcG9zaXRpb24gb2YgdGhlIGZpbHRlciBpbiB0aGUgZnJvbnRlbmQKICAgIG15ICRQcmlvQ291bnRlciA9IDEwMDA7CgogICAgIyB0byBzdG9yZSB0aGUgTmF2QmFyIGZpbHRlcnMKICAgIG15ICVGaWx0ZXJzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgIG15IEBWaWV3YWJsZURlcGxTdGF0ZUlEczsKICAgIG15IEBWaWV3YWJsZUNsYXNzSURzOwoKICAgICMgZmV0Y2ggZmlsdGVycyBmcm9tIGNvbmZpZwogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZykgKSB7CiAgICAgICAgUEVSTUNPTkY6CiAgICAgICAgZm9yIG15ICRDb25maWdJZGVudGlmaWVyICggc29ydCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+JSogKSB7CiAgICAgICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT57JENvbmZpZ0lkZW50aWZpZXJ9OwogICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyk7CgogICAgICAgICAgICAjIGNoZWNrIGZvciBncm91cCBwZXJtaXNzaW9uCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30gKSApIHsKCiAgICAgICAgICAgICAgICAjIHByZXBhcmUgZ3JvdXAgbG9va3VwIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgICAgICVHcm91cExvb2t1cCA9IHJldmVyc2UgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9IDA7CiAgICAgICAgICAgICAgICBHUk9VUDoKICAgICAgICAgICAgICAgIGZvciBteSAkR3JvdXBOYW1lICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntHcm91cHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEdST1VQIGlmICEkR3JvdXBMb29rdXB7JEdyb3VwTmFtZX07CgogICAgICAgICAgICAgICAgICAgICRBY2Nlc3NPayA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbmV4dCBQRVJNQ09ORiB1bmxlc3MgJEFjY2Vzc09rOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBhcyBzZWxlY3RlZCBmaWx0ZXIgaWYgbm90IHByZXNlbnQKICAgICAgICAgICAgJEZpbHRlciB8fD0gJENvbmZpZ0lkZW50aWZpZXI7CgogICAgICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgICAgIG15ICVERlNlYXJjaFBhcmFtczsKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRERlNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9IGVxICcnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZTZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJVBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXM7CiAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgJFBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0ifSA9IHsKICAgICAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFNlbGYtPntDdXN0b21lcklEfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAkUGVybWlzc2lvbkNvbmRpdGlvblNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSJ9ID0gewogICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAlRmlsdGVyU2VhcmNoID0gKAogICAgICAgICAgICAgICAgQ2xhc3NlcyAgICA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LAogICAgICAgICAgICAgICAgJURGU2VhcmNoUGFyYW1zLAogICAgICAgICAgICAgICAgJVBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXMsCiAgICAgICAgICAgICAgICAlU29ydCwKICAgICAgICAgICAgICAgIExpbWl0ID0+ICRTZWxmLT57U2VhcmNoTGltaXR9IC8vICcxMDAwJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYXBwbHkgZmlsdGVyIHJlc3RyaWN0aW9ucyB0byBzZWFyY2ggZm9yCiAgICAgICAgICAgIGlmICggJEdldENvbHVtbkZpbHRlcntDbGFzc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJENsYXNzTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSB9IGVxICRfIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZUNsYXNzSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSApOwogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0NsYXNzZXN9ID0gWyAkQ2xhc3NMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9IH0gXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBAVmlld2FibGVDbGFzc0lEcyA9ICggJEdldENvbHVtbkZpbHRlcntDbGFzc30gKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0NsYXNzZXN9ID0gWyAkQ2xhc3NMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9IH0gXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBWaWV3YWJsZUNsYXNzSURzID0gc29ydCBrZXlzICRDbGFzc0xpc3QtPiUqOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICREZXBsU3RhdGVMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSB9IGVxICRfIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9ICggJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJTZWFyY2h7RGVwbFN0YXRlc30gPSBbICREZXBsU3RhdGVMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSB9IF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgQFZpZXdhYmxlRGVwbFN0YXRlSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0RlcGxTdGF0ZXN9ID0gWyAkRGVwbFN0YXRlTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gfSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQFZpZXdhYmxlRGVwbFN0YXRlSURzID0gc29ydCBrZXlzICREZXBsU3RhdGVMaXN0LT4lKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICAgICAgaWYgKCBAVmlld2FibGVDbGFzc0lEcyAmJiBAVmlld2FibGVEZXBsU3RhdGVJRHMgKSB7CiAgICAgICAgICAgICAgICAkQ291bnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICAgICAlRmlsdGVyU2VhcmNoLAogICAgICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdDT1VOVCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRmlsdGVyc3skQ29uZmlnSWRlbnRpZmllcn0gPSB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIFByaW8gICA9PiAkUHJpb0NvdW50ZXIsCiAgICAgICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICAgICAgU2VhcmNoID0+IFwlRmlsdGVyU2VhcmNoLAogICAgICAgICAgICB9OwogICAgICAgICAgICAkUHJpb0NvdW50ZXIrKzsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBvbmx5IG9uZSBmaWx0ZXIgZXhpc3RzCiAgICBpZiAoIHNjYWxhciBrZXlzICVGaWx0ZXJzID09IDEgKSB7CgogICAgICAgICMgZ2V0IHRoZSBuYW1lIG9mIHRoZSBvbmx5IGZpbHRlcgogICAgICAgIG15ICgkRmlsdGVyTmFtZSkgPSBrZXlzICVGaWx0ZXJzOwoKICAgICAgICAjIGFjdGl2YXRlIHRoaXMgZmlsdGVyCiAgICAgICAgJEZpbHRlciA9ICRGaWx0ZXJOYW1lOwogICAgfQoKICAgICMgY2hlY2sgaWYgZmlsdGVyIGlzIHZhbGlkCiAgICBpZiAoICRGaWx0ZXIgJiYgIWV4aXN0cyAkRmlsdGVyc3skRmlsdGVyfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0ludmFsaWQgRmlsdGVyOiAlcyEnLCAkRmlsdGVyICksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgaGVhZGVyIGZpbHRlcgogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUZpbHRlcnMgKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWx0ZXJIZWFkZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRLZXl9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJEtleSwKICAgICAgICAgICAgICAgIENsYXNzQSA9PiAkS2V5IGVxICRGaWx0ZXIgPyAnU2VsZWN0ZWQnIDogJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgZmlsdGVyIGRlbGV0ZSBpZiBuZWVkZWQKICAgIGlmICglR2V0Q29sdW1uRmlsdGVyKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlckRlbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRGaWx0ZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVmlldyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFZpZXcgJiYgJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFZpZXcgPSAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICRWaWV3IHx8PSAnU21hbGwnOwoKICAgICMgQ2hlY2sgaWYgc2VsZWN0ZWQgdmlldyBpcyBhdmFpbGFibGUuCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGN1c3RvbWVyIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd24gPSAkQmFja2VuZHMtPnskVmlld30gPyAkQmFja2VuZHMtPnskVmlld30tPntQYWdlU2hvd259IDogMTA7CiAgICBteSAlUGFnZU5hdjsKCiAgICAjIGRvIHNob3duIGNvbmZpZyBpdGVtIGxvb2t1cAogICAgbXkgJExpbWl0ID0gMV8wMDA7CgogICAgbXkgJEVsZW1lbnRDaGFuZ2VkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnRDaGFuZ2VkJyApIHx8ICcnOwogICAgbXkgJEhlYWRlckNvbHVtbiAgID0gJEVsZW1lbnRDaGFuZ2VkOwogICAgJEhlYWRlckNvbHVtbiA9fiBze1xBIENvbHVtbkZpbHRlciB9e31tc3hnOwoKICAgICMgZ2V0IGRhdGEgKHZpZXdhYmxlIGNvbmZpZyBpdGVtcy4uLikKICAgICMgc2VhcmNoIGFsbCBjb25maWcgaXRlbXMKICAgIG15IEBWaWV3YWJsZUNvbmZpZ0l0ZW1zOwogICAgbXkgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtczsKCiAgICAjIGJ1aWxkIGxpbmtzCiAgICBteSAkQ29sdW1uRmlsdGVyTGluayA9ICcnOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQga2V5cyAlR2V0Q29sdW1uRmlsdGVyICkgewogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICFkZWZpbmVkICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9OwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSBlcSAnJzsKICAgICAgICAkQ29sdW1uRmlsdGVyTGluawogICAgICAgICAgICAuPSAnOycgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICdDb2x1bW5GaWx0ZXInIC4gJENvbHVtbk5hbWUgKQogICAgICAgICAgICAuICc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ICk7CiAgICB9CgogICAgbXkgJExpbmtQYWdlID0gJ0ZpbHRlcj0nCiAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtTb3J0ID0gJ1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztGaWx0ZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtGaWx0ZXIgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExhc3RDb2x1bW5GaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFzdENvbHVtbkZpbHRlcicgKSB8fCAnJzsKCiAgICBpZiAoICEkTGFzdENvbHVtbkZpbHRlciAmJiAkQ29sdW1uRmlsdGVyTGluayApIHsKCiAgICAgICAgIyBpcyBwbGFubmVkIHRvIGhhdmUgYSBsaW5rIHRvIGdvIGJhY2sgaGVyZQogICAgICAgICRMYXN0Q29sdW1uRmlsdGVyID0gMTsKICAgIH0KCiAgICBpZiAoIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyAmJiBAVmlld2FibGVDbGFzc0lEcyApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gdmFsdWVzCiAgICAgICAgaWYgKAogICAgICAgICAgICAhSXNTdHJpbmdXaXRoRGF0YSgkSGVhZGVyQ29sdW1uKQogICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCRIZWFkZXJDb2x1bW4pCiAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdPbmx5VmFsdWVzT25Db25maWdJdGVtJykKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyfS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBMaW1pdCAgPT4gJExpbWl0LAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkU3RhcnRIaXQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMTsKCiAgICAgICAgICAgICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICAgICAgICAgIExpbWl0ICAgICA9PiAxMDAwMCwKICAgICAgICAgICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgICAgIEFsbEhpdHMgICA9PiBzY2FsYXIgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgTGluayAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgICAgIElEUHJlZml4ICA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBAVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlcn0tPntTZWFyY2h9IH0sCiAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgTGltaXQgID0+ICRTdGFydEhpdCArICRQYWdlU2hvd24gLSAxLAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgIH0KCiAgICAjIFRPRE8gTWF5YmUgdGhlcmUgaXMgYSBtb3JlIGVsZWdhbnQgd2F5IHRvIGRvIHRoaXM/CiAgICAkU2VsZi0+e0ZpbHRlcn0gID0gJEZpbHRlcjsKICAgICRTZWxmLT57RmlsdGVyc30gPSBcJUZpbHRlcnM7CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhGaWx0ZXJVcGRhdGUnICkgewoKICAgICAgICBteSAkRmlsdGVyQ29udGVudCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgICAgIEZpbHRlckNvbnRlbnRPbmx5ICAgICA9PiAxLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gICAgICAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgRWxlbWVudENoYW5nZWQgICAgICAgID0+ICRFbGVtZW50Q2hhbmdlZCwKICAgICAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBFbnYgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgIFZpZXcgICAgICAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICAgICAgRW5hYmxlQ29sdW1uRmlsdGVycyAgID0+IDEsCiAgICAgICAgICAgIEZyb250ZW5kICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBGaWx0ZXIgICAgICAgICAgICAgICAgPT4gJEZpbHRlciwKICAgICAgICAgICAgRmlsdGVycyAgICAgICAgICAgICAgID0+IFwlRmlsdGVycywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmlsdGVyQ29udGVudCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBmaWx0ZXIgY29udGVudCBkYXRhIG9mICVzIScsICRIZWFkZXJDb2x1bW4gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWx0ZXJDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgc3RvcmUgY29sdW1uIGZpbHRlcnMKICAgICAgICBteSAkU3RvcmVkRmlsdGVycyA9IFwlQ29sdW1uRmlsdGVyOwoKICAgICAgICBteSAkU3RvcmVkRmlsdGVyc0tleSA9ICdVc2VyU3RvcmVkRmlsdGVyQ29sdW1ucy0nIC4gJFNlbGYtPntBY3Rpb259IC4gJy0nIC4gJFNlbGYtPntGaWx0ZXJ9OwoKICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAkU3RvcmVkRmlsdGVyc0tleSwKICAgICAgICAgICAgVmFsdWUgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gJFN0b3JlZEZpbHRlcnMgKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb3VudFRvdGFsID0gMDsKICAgIG15ICVOYXZCYXJGaWx0ZXI7CiAgICBmb3IgbXkgJEZpbHRlckNvbHVtbiAoIHNvcnQga2V5cyAlRmlsdGVycyApIHsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGlmIChAVmlld2FibGVEZXBsU3RhdGVJRHMpIHsKICAgICAgICAgICAgJENvdW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyQ29sdW1ufS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKSB8fCAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRmlsdGVyQ29sdW1uIGVxICRGaWx0ZXIgKSB7CiAgICAgICAgICAgICRDb3VudFRvdGFsID0gJENvdW50OwogICAgICAgIH0KCiAgICAgICAgJE5hdkJhckZpbHRlcnsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0tPntQcmlvfSB9ID0gewogICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlckNvbHVtbiwKICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0gfSwKICAgICAgICB9OwogICAgfQoKICAgICMgc2hvdyBjb25maWcgaXRlbXMKICAgIG15ICRDb25maWdJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgIEZpbHRlcnMgICAgICAgICAgICAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgPT4gXEBWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBHZXRDb2x1bW5GaWx0ZXIgICAgICAgPT4gXCVHZXRDb2x1bW5GaWx0ZXIsCiAgICAgICAgTGFzdENvbHVtbkZpbHRlciAgICAgID0+ICRMYXN0Q29sdW1uRmlsdGVyLAogICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVG90YWwgICAgICAgICAgICAgICAgID0+ICRDb3VudFRvdGFsLAogICAgICAgIFJlcXVlc3RlZFVSTCAgICAgICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICAgICAgVmlldyAgICAgICAgICAgICAgICAgID0+ICRWaWV3LAogICAgICAgIFRpdGxlTmFtZSAgICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nKSwKICAgICAgICBUaXRsZVZhbHVlICAgICAgICAgICAgPT4gJFNlbGYtPntGaWx0ZXJzfXskRmlsdGVyfS0+e05hbWV9LAogICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgICAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgTGlua0ZpbHRlciAgICAgICAgICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXJzICAgPT4gMSwKICAgICAgICBDb2x1bW5GaWx0ZXJGb3JtICAgICAgPT4gewogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlciB8fCAnJywKICAgICAgICB9LAogICAgICAgIEZyb250ZW5kID0+ICdDdXN0b21lcicsCgogICAgICAgICMgZG8gbm90IHByaW50IHRoZSByZXN1bHQgZWFybGllciwgYnV0IHJldHVybiBjb21wbGV0ZSBjb250ZW50CiAgICAgICAgT3V0cHV0ID0+IDEsCiAgICApOwoKICAgIGlmICggZGVmaW5lZCAkQ29uZmlnT2JqZWN0LT5HZXQoIkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSIpLT57IkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gifSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQm94JywKICAgICAgICApOwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCA9PiAkQ29uZmlnSXRlbUxpc3RIVE1MLAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBnZXQgcGFnZSBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRTZXNzaW9uT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZ3VyZWQgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9LAogICAgKTsKCiAgICBteSBAU2V0SW5uZXJGaWVsZHM7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0luY2x1ZGV9ICk7CgogICAgICAgICMgZmV0Y2ggdGhlIGxpc3Qgb2YgaW5jbHVkZWQgZHluYW1pYyBmaWVsZCBuYW1lcyB0byBnZXQgdGhlIGNvbmZpZ3MKICAgICAgICBteSAkU2V0SW5uZXJGaWVsZE5hbWVzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdE1hc2soCiAgICAgICAgICAgIENvbnRlbnQgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFNldElubmVyRmllbGROYW1lcykgKSB7CiAgICAgICAgICAgIG15ICRJbm5lckZpZWxkQ29uZmlncyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRmllbGRGaWx0ZXIgPT4geyBtYXAgeyAoICRfID0+IDEgKSB9ICRTZXRJbm5lckZpZWxkTmFtZXMtPkAqIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkSW5uZXJGaWVsZENvbmZpZ3MpICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRJbm5lckZpZWxkQ29uZmlnUmVmICggJElubmVyRmllbGRDb25maWdzLT5AKiApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBuZWNlc3NhcnkgdG8gbm90IG92ZXJ3cml0ZSBjYWNoZWQgZGF0YSBvZiBmaWVsZCBjb25maWcgYnkgYWx0ZXJpbmcgdGhlIHJlZmVyZW5jZQogICAgICAgICAgICAgICAgICAgIG15ICVJbm5lckZpZWxkQ29uZmlnID0gJElubmVyRmllbGRDb25maWdSZWYtPiUqOwoKICAgICAgICAgICAgICAgICAgICAkSW5uZXJGaWVsZENvbmZpZ3tMYWJlbH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKSAuICc6OicKICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRJbm5lckZpZWxkQ29uZmlne0xhYmVsfSApOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNldElubmVyRmllbGRzLCBcJUlubmVyRmllbGRDb25maWc7CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1c2ggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0sIEBTZXRJbm5lckZpZWxkczsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIgJiB0byBnZXQgdGhlIG91dHB1dCBmYXN0ZXIhCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKICAgIH0KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICk7CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICBteSAkRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Blcm1pc3Npb25Db25kaXRpb24nICkgfHwgJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKCiAgICAjIGZldGNoIGZpbHRlcnMgZnJvbSBjb25maWcKICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncyA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MpICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncy0+eyBzcHJpbnRmKCAiJTAyZCIsICRGaWx0ZXIgKSB9OwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcpICkgewoKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0ZpbHRlciBpbnZhbGlkIScpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIGdyb3VwIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30gKSApIHsKICAgICAgICBteSAkQWNjZXNzT2sgPSAwOwoKICAgICAgICAjIGZldGNoIGdyb3VwcyBvZiBjdXN0b21lciB1c2VyCiAgICAgICAgbXkgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgIEdST1VQOgogICAgICAgIGZvciBteSAkUGVybWlzc2lvbkdyb3VwICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntHcm91cHN9LT5AKiApIHsKICAgICAgICAgICAgaWYgKCAkR3JvdXBMb29rdXB7JFBlcm1pc3Npb25Hcm91cH0gKSB7CiAgICAgICAgICAgICAgICAkQWNjZXNzT2sgPSAxOwogICAgICAgICAgICAgICAgbGFzdCBHUk9VUDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJEFjY2Vzc09rICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBwZXJtaXNzaW9uJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGFnZU5hdjsKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2hBY3Rpb24nICkgewoKICAgICAgICBteSAkU29ydEJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgICAgIHx8ICdBZ2UnOwoKICAgICAgICBpZiAoICRTb3J0QnkgZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgICAgICB9CgogICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IG9yZGVyaW5nIHRvIGJlIHVzZWQuCiAgICAgICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgICAgIHx8ICdVcCc7CgogICAgICAgICMgU2V0IHRoZSBzb3J0IG9yZGVyIGZyb20gdGhlIHJlcXVlc3QgcGFyYW1ldGVycywgb3IgdGFrZSB0aGUgZGVmYXVsdC4KICAgICAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgICAgIHx8ICREZWZhdWx0T3JkZXJCeTsKCiAgICAgICAgIyBzb3J0IG9uIGRlZmF1bHQgYnkgdXNpbmcgYm90aCAoUHJpb3JpdHksIEFnZSkgZWxzZSB1c2Ugb25seSBvbmUgc29ydCBhcmd1bWVudAogICAgICAgIG15ICVTb3J0OwoKICAgICAgICAjIGdldCBpZiBzZWFyY2ggcmVzdWx0IHNob3VsZCBiZSBwcmUtc29ydGVkIGJ5IHByaW9yaXR5CiAgICAgICAgbXkgJFByZVNvcnRCeVByaW9yaXR5ID0gJENvbmZpZy0+eydQcmVTb3J0OjpCeVByaW9yaXR5J307CiAgICAgICAgaWYgKCAhJFByZVNvcnRCeVByaW9yaXR5ICkgewogICAgICAgICAgICAlU29ydCA9ICgKICAgICAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlU29ydCA9ICgKICAgICAgICAgICAgICAgIFNvcnRCeSAgPT4gWyAnUHJpb3JpdHknLCAkU29ydEJ5IF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0Rvd24nLCAgICAgJE9yZGVyQnkgXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRWaWV3ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgfHwgJyc7CgogICAgICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgICAgIGlmICggISRWaWV3ICYmICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9ICkgewogICAgICAgICAgICAkVmlldyA9ICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgdXNlIFByZXZpZXcgYXMgZGVmYXVsdCBhcyBpbiBMYXlvdXRDb25maWdJdGVtCiAgICAgICAgJFZpZXcgfHw9ICdTbWFsbCc7CgogICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgICAgIC4gJztTdWJhY3Rpb249JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTdWJhY3Rpb259ICkKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApOwoKICAgICAgICBteSAkTGlua1NvcnQgPSAnRmlsdGVyPScKICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57U3ViYWN0aW9ufSApCiAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICk7CgogICAgICAgICMgZ2V0IHNlYXJjaCBwYXJhbXMgZnJvbSB3ZWIgcmVxdWVzdAogICAgICAgIG15ICVHZXRQYXJhbTsKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtIChxdyhOdW1iZXIgTmFtZSkpIHsKCiAgICAgICAgICAgICMgZmV0Y2ggc2luZ2xlIHZhbHVlIHBhcmFtcwogICAgICAgICAgICAkR2V0UGFyYW17JFNlYXJjaFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRTZWFyY2hQYXJhbSApOwogICAgICAgICAgICAkTGlua1BhZ2UgLj0gIjskU2VhcmNoUGFyYW09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gKTsKICAgICAgICAgICAgJExpbmtTb3J0IC49ICI7JFNlYXJjaFBhcmFtPSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRHZXRQYXJhbXskU2VhcmNoUGFyYW19ICk7CiAgICAgICAgfQoKICAgICAgICBteSBAQXJyYXlTZWFyY2hQYXJhbXMgPSBxdyhDbGFzc0lEcyk7CgogICAgICAgIGlmICggJENvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZX0gKSB7CiAgICAgICAgICAgIHB1c2ggQEFycmF5U2VhcmNoUGFyYW1zLCAnRGVwbFN0YXRlSURzJzsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luY2lkZW50U3RhdGV9ICkgewogICAgICAgICAgICBwdXNoIEBBcnJheVNlYXJjaFBhcmFtcywgJ0luY2lTdGF0ZUlEcyc7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtQXJyYXkgKEBBcnJheVNlYXJjaFBhcmFtcykgewoKICAgICAgICAgICAgIyBmZXRjaCBtdWx0aSB2YWx1ZSBwYXJhbXMKICAgICAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJFNlYXJjaFBhcmFtQXJyYXkgKTsKICAgICAgICAgICAgaWYgKCBhbnkgeyRffSBAQXJyYXkgKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFNlYXJjaFBhcmFtQXJyYXl9ID0gXEBBcnJheTsKICAgICAgICAgICAgICAgICRMaW5rUGFnZSAuPSBqb2luKCAnJywgbWFwIHsgIjskU2VhcmNoUGFyYW1BcnJheT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkXyApIH0gQEFycmF5ICk7CiAgICAgICAgICAgICAgICAkTGlua1NvcnQgLj0gam9pbiggJycsIG1hcCB7ICI7JFNlYXJjaFBhcmFtQXJyYXk9IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9IEBBcnJheSApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlU2VhcmNoQ29uZmlnOwogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPkAqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZXQgdGhlIGNvbXBsZXRlIHZhbHVlIHN0cnVjdHVyZSBpbiBHZXRQYXJhbSB0byBzdG9yZSBpdCBsYXRlciBpbiB0aGUgc2VhcmNoCiAgICAgICAgICAgICAgICAjIHByb2ZpbGUKICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKSApIHsKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0gPSAoICVHZXRQYXJhbSwgJXskRHluYW1pY0ZpZWxkVmFsdWV9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHByb2ZpbGUKICAgICAgICAgICAgICAgIG15ICRTZWFyY2hQYXJhbWV0ZXIgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQYXJhbWV0ZXJCdWlsZCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQcm9maWxlICAgICAgICAgICAgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZXQgc2VhcmNoIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRTZWFyY2hQYXJhbWV0ZXIgKSB7CgogICAgICAgICAgICAgICAgICAgICMgYXBwZW5kIHNlYXJjaCBwYXJhbXMgdG8gbGlua3MKICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rUGFnZSAuPSBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAgeyAiO1NlYXJjaF9EeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRfICkgfSAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9LT5AKgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1NvcnQgLj0gam9pbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwIHsgIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkXyApIH0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfS0+QCoKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rUGFnZSAuPSAiO1NlYXJjaF9EeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30gKTsKICAgICAgICAgICAgICAgICAgICAgICAgJExpbmtTb3J0IC49ICI7U2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfSApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkTGlua1BhZ2UgLj0gJzsnOwogICAgICAgICRMaW5rU29ydCAuPSAnOyc7CgogICAgICAgICVTZWFyY2hDb25maWcgPSAoCiAgICAgICAgICAgICVTZWFyY2hDb25maWcsCiAgICAgICAgICAgICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzLAogICAgICAgICAgICAlU29ydCwKICAgICAgICApOwoKICAgICAgICAjIG1lcmdlIGZpbHRlcmVkIGNsYXNzZXMgd2l0aCBwZXJtaXNzaW9uIGNvbmRpdGlvbiBjbGFzc2VzCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtDbGFzc0lEc30gKSApIHsKICAgICAgICAgICAgbXkgQFNlYXJjaENsYXNzZXM7CiAgICAgICAgICAgIGZvciBteSAkQ2xhc3NJRCAoICRHZXRQYXJhbXtDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoQ2xhc3NlcywgJENsYXNzTGlzdC0+eyRDbGFzc0lEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkU2VhcmNoQ29uZmlne0NsYXNzZXN9ID0gXEBTZWFyY2hDbGFzc2VzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tDbGFzc2VzfSA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc307CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkU2VhcmNoQ29uZmlne0NsYXNzZXN9LT5AKiApIHsKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgbWVyZ2UgZmlsdGVyZWQgZGVwbG95bWVudCBzdGF0ZXMgd2l0aCBwZXJtaXNzaW9uIGNvbmRpdGlvbiBkZXBsb3ltZW50IHN0YXRlcwogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17RGVwbFN0YXRlSURzfSApICkgewogICAgICAgICAgICBteSBAU2VhcmNoRGVwbFN0YXRlczsKICAgICAgICAgICAgZm9yIG15ICREZXBsU3RhdGVJRCAoICRHZXRQYXJhbXtEZXBsU3RhdGVJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkRGVwbFN0YXRlTGlzdC0+eyREZXBsU3RhdGVJRH0gfSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoRGVwbFN0YXRlcywgJERlcGxTdGF0ZUxpc3QtPnskRGVwbFN0YXRlSUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaERlcGxTdGF0ZXMsICREZXBsU3RhdGVMaXN0LT57JERlcGxTdGF0ZUlEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhQFNlYXJjaERlcGxTdGF0ZXMgKSB7CiAgICAgICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tEZXBsU3RhdGVzfSA9IFxAU2VhcmNoRGVwbFN0YXRlczsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30gKSApIHsKICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tEZXBsU3RhdGVzfSA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc307CiAgICAgICAgfQoKICAgICAgICAjIG1hcCBmaWx0ZXJlZCBpbmNpZGVudCBzdGF0ZSBpZHMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdldFBhcmFte0luY2lTdGF0ZUlEc30gKSApIHsKICAgICAgICAgICAgbXkgQFNlYXJjaEluY2lTdGF0ZXMgPSBtYXAgeyAkSW5jaVN0YXRlTGlzdC0+eyRffSB9ICRHZXRQYXJhbXtJbmNpU3RhdGVJRHN9LT5AKjsKICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tJbmNpU3RhdGVzfSA9IFxAU2VhcmNoSW5jaVN0YXRlczsKICAgICAgICB9CgogICAgICAgICRTZWFyY2hDb25maWd7TnVtYmVyfSA9ICRHZXRQYXJhbXtOdW1iZXJ9ID8gJEdldFBhcmFte051bWJlcn0gOiB1bmRlZjsKICAgICAgICAkU2VhcmNoQ29uZmlne05hbWV9ICAgPSAkR2V0UGFyYW17TmFtZX0gICA/ICRHZXRQYXJhbXtOYW1lfSAgIDogdW5kZWY7CgogICAgICAgICMgY29sbGVjdCBkeW5hbWljIGZpZWxkIHNlYXJjaCBwYXJhbXMKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc30gKSApIHsKCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfXskRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0gZXEgJycgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHkgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHJlc3RyaWN0IHNlYXJjaCBieSBwZXJtaXNzaW9uIGNvbmRpdGlvbiBjdXN0b21lciBjb21wYW55IGFuZCBjdXN0b21lciB1c2VyCiAgICAgICAgIyBOT1RFIHRoaXMgb3ZlcndyaXRlcyBwcmV2aW91c2x5IHNldCBzZWFyY2ggcGFyYW1zIGZvciB0aGUgY29uZmlndXJlZCBkeW5hbWljIGZpZWxkcwogICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAkU2VhcmNoQ29uZmlneyJEeW5hbWljRmllbGRfJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9In0gPSB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFNlbGYtPntDdXN0b21lcklEfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7IkR5bmFtaWNGaWVsZF8kUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0ifSA9IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSAlRmlsdGVycyA9ICgKICAgICAgICAgICAgJEZpbHRlciA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIFByaW8gICA9PiAxMDAwLAogICAgICAgICAgICAgICAgU2VhcmNoID0+IFwlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVTZWFyY2hDb25maWcgKSB7CiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIHNlbGVjdGVkIHZpZXcgaXMgYXZhaWxhYmxlLgogICAgICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lck92ZXJ2aWV3Jyk7CiAgICAgICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAgICAgIyBUcnkgdG8gZmluZCBmYWxsYmFjaywgdGFrZSBmaXJzdCBjb25maWd1cmVkIHZpZXcgbW9kZS4KICAgICAgICAgICAgS0VZOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICAgICAkVmlldyA9ICRLZXk7CiAgICAgICAgICAgICAgICBsYXN0IEtFWTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY3VzdG9tZXIgcGFnZSBzaG93biBjb3VudAogICAgICAgIG15ICRQYWdlU2hvd24gPSAkQmFja2VuZHMtPnskVmlld30gPyAkQmFja2VuZHMtPnskVmlld30tPntQYWdlU2hvd259IDogMTA7CgogICAgICAgICMgZG8gc2hvd24gY29uZmlnIGl0ZW0gbG9va3VwCiAgICAgICAgbXkgJExpbWl0ID0gMV8wMDA7CgogICAgICAgICMgZ2V0IGRhdGEgKHZpZXdhYmxlIGNvbmZpZyBpdGVtcy4uLikKICAgICAgICAjIHNlYXJjaCBhbGwgY29uZmlnIGl0ZW1zCiAgICAgICAgbXkgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICBMaW1pdCAgPT4gJExpbWl0LAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICApOwoKICAgICAgICBteSAkVG90YWwgPSBzY2FsYXIgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtczsKCiAgICAgICAgbXkgJFN0YXJ0SGl0ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDE7CgogICAgICAgIG15IEBWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICVTZWFyY2hDb25maWcsCiAgICAgICAgICAgIExpbWl0ICA9PiAkU3RhcnRIaXQgKyAkUGFnZVNob3duIC0gMSwKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgKTsKCiAgICAgICAgJVBhZ2VOYXYgPSAkTGF5b3V0T2JqZWN0LT5QYWdlTmF2QmFyKAogICAgICAgICAgICBMaW1pdCAgICAgPT4gMTAwMDAsCiAgICAgICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgICAgICBBbGxIaXRzICAgPT4gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBMaW5rICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICBJRFByZWZpeCAgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICk7CgogICAgICAgICMgVE9ETyBNYXliZSB0aGVyZSBpcyBhIG1vcmUgZWxlZ2FudCB3YXkgdG8gZG8gdGhpcz8KICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gID0gJEZpbHRlcjsKICAgICAgICAkU2VsZi0+e0ZpbHRlcnN9ID0gXCVGaWx0ZXJzOwoKICAgICAgICAjIHNob3cgY29uZmlnIGl0ZW1zCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1MaXN0SFRNTCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgPT4gXEBWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gXEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIExpbmtQYWdlICAgICAgICAgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgICAgIEVuYWJsZUNvbHVtbkZpbHRlciAgICA9PiAwLAogICAgICAgICAgICBWaWV3ICAgICAgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgICAgIFRvdGFsICAgICAgICAgICAgICAgICA9PiAkVG90YWwsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICAgICAgID0+ICRTb3J0QnksCiAgICAgICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgRnJvbnRlbmQgICAgICAgICAgICAgID0+ICdDdXN0b21lcicsCgogICAgICAgICAgICAjIGRvIG5vdCBwcmludCB0aGUgcmVzdWx0IGVhcmxpZXIsIGJ1dCByZXR1cm4gY29tcGxldGUgY29udGVudAogICAgICAgICAgICBPdXRwdXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoUmVzdWx0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUxpc3RIVE1MID0+ICRDb25maWdJdGVtTGlzdEhUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBkZWZpbmVkICRDb25maWdPYmplY3QtPkdldCgiQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIiktPnsiQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCJ9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEJveCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewoKICAgICAgICAjIHN0b3JlIGRyb3Bkb3duIHJlc3RyaWN0aW9ucyBmcm9tIHBlcm1pc3Npb24gY29uZGl0aW9uCiAgICAgICAgbXkgJVNlYXJjaGFibGVQYXJhbXMgPSAoCiAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICApOwoKICAgICAgICAjIHNldCBzZWFyY2hhYmxlIHBhcmFtcwogICAgICAgIG15ICVDbGFzc0xvb2t1cCA9IHJldmVyc2UgJENsYXNzTGlzdC0+JSo7CiAgICAgICAgJFNlYXJjaGFibGVQYXJhbXN7Q2xhc3N9ID0gewogICAgICAgICAgICBtYXAgewogICAgICAgICAgICAgICAgJENsYXNzTG9va3VweyRffQogICAgICAgICAgICAgICAgICAgID8gKCAkQ2xhc3NMb29rdXB7JF99ID0+ICRfICkKICAgICAgICAgICAgICAgICAgICA6ICgpCiAgICAgICAgICAgIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfS0+QCoKICAgICAgICB9OwoKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfSApICkgewogICAgICAgICAgICBteSAlRGVwbFN0YXRlTG9va3VwID0gcmV2ZXJzZSAkRGVwbFN0YXRlTGlzdC0+JSo7CiAgICAgICAgICAgICRTZWFyY2hhYmxlUGFyYW1ze0RlcGxTdGF0ZX0gPSB7CiAgICAgICAgICAgICAgICBtYXAgewogICAgICAgICAgICAgICAgICAgICREZXBsU3RhdGVMb29rdXB7JF99CiAgICAgICAgICAgICAgICAgICAgICAgID8gKCAkRGVwbFN0YXRlTG9va3VweyRffSA9PiAkXyApCiAgICAgICAgICAgICAgICAgICAgICAgIDogKCkKICAgICAgICAgICAgICAgIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCoKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWFyY2hhYmxlUGFyYW1ze0RlcGxTdGF0ZX0gPSAkRGVwbFN0YXRlTGlzdDsKICAgICAgICB9CgogICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncyA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CgogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncykgKSB7CiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEZvcm0nLAogICAgICAgICk7CgogICAgICAgIG15ICVEZWZhdWx0czsKICAgICAgICBpZiAoICRDb25maWctPntEZWZhdWx0c30gKSB7CiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJENvbmZpZy0+e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgISRDb25maWctPntEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eQ29uZmlnSXRlbShDcmVhdGV8Q2hhbmdlKS8gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQEl0ZW1zID0gc3BsaXQgLzsvLCAkQ29uZmlnLT57RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtIChASXRlbXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkS2V5LCAkVmFsdWUgKSA9IHNwbGl0IC89LywgJEl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICREZWZhdWx0c3skS2V5fSA9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkRGVmYXVsdHN7JEtleX0gPSAkQ29uZmlnLT57RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgcGVybWlzc2lvbiBjb25kaXRpb24KICAgICAgICBteSAlUGVybWlzc2lvbkNvbmRpdGlvbkRhdGEgPSBtYXAgeyBpbnQoJF8pID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncy0+eyRffS0+e05hbWV9IH0ga2V5cyAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MtPiUqOwogICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICA9PiBcJVBlcm1pc3Npb25Db25kaXRpb25EYXRhLAogICAgICAgICAgICBOYW1lICAgICAgICA9PiAnUGVybWlzc2lvbkNvbmRpdGlvbicsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRGaWx0ZXIgfHwgJycsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQZXJtaXNzaW9uQ29uZGl0aW9uJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBQZXJtaXNzaW9uQ29uZGl0aW9uU3RyZyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvblN0cmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPkAqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkUG9zc2libGVWYWx1ZXNGaWx0ZXI7CgogICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJc0FDTFJlZHVjaWJsZSkgewoKICAgICAgICAgICAgICAgICMgZ2V0IFBvc3NpYmxlVmFsdWVzCiAgICAgICAgICAgICAgICBteSAkUG9zc2libGVWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+UG9zc2libGVWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgZmllbGQgaGFzIFBvc3NpYmxlVmFsdWVzIHByb3BlcnR5IGluIGl0cyBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQb3NzaWJsZVZhbHVlcykgKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IGhpc3RvcmljYWwgdmFsdWVzIGZyb20gZGF0YWJhc2UKICAgICAgICAgICAgICAgICAgICBteSAkSGlzdG9yaWNhbFZhbHVlcyA9ICRCYWNrZW5kT2JqZWN0LT5IaXN0b3JpY2FsVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBteSAkRGF0YSA9ICRQb3NzaWJsZVZhbHVlczsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgaGlzdG9yaWMgdmFsdWVzIHRvIGN1cnJlbnQgdmFsdWVzIChpZiB0aGV5IGRvbid0IGV4aXN0IGFueW1vcmUpCiAgICAgICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkSGlzdG9yaWNhbFZhbHVlcykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7JEhpc3RvcmljYWxWYWx1ZXN9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJERhdGEtPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YS0+eyRLZXl9ID0gJEhpc3RvcmljYWxWYWx1ZXMtPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICAgICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JERhdGF9OwogICAgICAgICAgICAgICAgICAgIEBBY2xEYXRheyBrZXlzICVBY2xEYXRhIH0gPSBrZXlzICVBY2xEYXRhOwoKICAgICAgICAgICAgICAgICAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgICAgICAgICAgICAgICAgIG15ICRBQ0wgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbCgKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5UeXBlICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5TdWJUeXBlICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgID0+IFwlQWNsRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IEZpbGVyIGtleSA9PiBrZXkgYmFjayB0byBrZXkgPT4gdmFsdWUgdXNpbmcgbWFwCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFBvc3NpYmxlVmFsdWVzRmlsdGVyfSA9IG1hcCB7ICRfID0+ICREYXRhLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgSFRNTAogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgICAgPT4ge30sCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZy0+e0RlZmF1bHRzfXtEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntGaWVsZH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTnVtYmVyJywKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTmFtZScsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENsYXNzU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlYXJjaGFibGVQYXJhbXN7Q2xhc3N9LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NsYXNzSURzJywKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJERlZmF1bHRze0NsYXNzSURzfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDbGFzcycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NTdHJnID0+ICRDbGFzc1N0cmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkQ29uZmlnLT57RGVwbG95bWVudFN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgd2FudGVkIGRlcGxveW1lbnQgc3RhdGVzCiAgICAgICAgICAgIG15ICRDdXJEZXBsU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlYXJjaGFibGVQYXJhbXN7RGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnRGVwbFN0YXRlSURzJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRGVmYXVsdHN7RGVwbG95bWVudFN0YXRlSURzfSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcgPT4gJEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnLT57SW5jaWRlbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHdhbnRlZCBpbmNpZGVudCBzdGF0ZXMKICAgICAgICAgICAgbXkgJEN1ckluY2lTdGF0ZU9wdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkU2VhcmNoYWJsZVBhcmFtc3tJbmNpU3RhdGV9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdJbmNpU3RhdGVJRHMnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICREZWZhdWx0c3tJbmNpZGVudFN0YXRlSURzfSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZU9wdGlvblN0cmcgPT4gJEN1ckluY2lTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbiEnKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBnZXQgcGFnZSBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb207Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbScpIC8vIHt9OwoKICAgIGlmICggISRDb25maWctPntWZXJzaW9uc0VuYWJsZWR9ICkgewogICAgICAgICRWZXJzaW9uSUQgPSB1bmRlZjsKICAgIH0KCiAgICAjIGdldCBjb250ZW50CiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKCiAgICAgICAgIyBhZGRpdGlvbmFsIHNhbmV0eSBjaGVjayAtIEN1c3RvbWVyUGVybWlzc2lvbiBzaG91bGQgaGFuZGxlIHRoaXMgY2FzZSB1c3VhbGx5CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb25maWdJdGVtIG5vdCBmb3VuZCEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IGluY2lkZW50IHNpZ25hbAogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIGNvbG9yIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICVEZXBsU2lnbmFsczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBsaXN0IG9mIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAkRGVwbG95bWVudFN0YXRlc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIHNldCBkZXBsb3ltZW50IHN0eWxlIGNvbG9ycwogICAgbXkgJFN0eWxlQ2xhc3NlcyA9ICcnOwoKICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEICggc29ydCBrZXlzICV7JERlcGxveW1lbnRTdGF0ZXNMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJFByZWZlcmVuY2Vze0NvbG9yfTsKICAgICAgICBteSAoJENvbG9yKSA9ICRQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY292ZXJ0ZWQgZGVwbG95bWVudCBzdGF0ZSBhcyB2YWx1ZQogICAgICAgICREZXBsU2lnbmFsc3sgJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH0gfSA9ICdDb2xvcicgLiAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvdmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gbGMoJENvbG9yKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkNvbG9yJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjJERlcGxTdGF0ZUNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgIjsKICAgIH0KCiAgICAjIHdyYXAgaW50byBzdHlsZSB0YWdzCiAgICBpZiAoJFN0eWxlQ2xhc3NlcykgewogICAgICAgICRTdHlsZUNsYXNzZXMgPSAiPHN0eWxlPiRTdHlsZUNsYXNzZXM8L3N0eWxlPiI7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoIFZhbHVlID0+ICRDb25maWdJdGVtLT57TnVtYmVyfSApOwoKICAgIGlmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfSApIHsKICAgICAgICBpZiAoICRDb25maWctPntHZW5lcmFsSW5mb317TnVtYmVyfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGdWxsU3ViJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgID0+ICRDb25maWctPntHZW5lcmFsSW5mb317Q2xhc3N9ID8gJENvbmZpZ0l0ZW0tPntDbGFzc30gOiAnQ29uZmlnSXRlbScKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfXtDbGFzc30gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3NTdWInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc30sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVDb2xvckNsYXNzfSA9ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH07CiAgICAgICAgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVDb2xvckNsYXNzfSA9ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfSB9OwoKICAgICAgICBJTkZPOgogICAgICAgIGZvciBteSAkSW5mbyAocXcvRGVwbG95bWVudFN0YXRlIEluY2lkZW50U3RhdGUgQ3JlYXRlZFRpbWUgTGFzdENoYW5nZWRUaW1lLykgewogICAgICAgICAgICBuZXh0IElORk8gaWYgISRDb25maWctPntHZW5lcmFsSW5mb317JEluZm99OwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICRJbmZvLAogICAgICAgICAgICAgICAgRGF0YSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBhIHZlcnNpb24gYWxyZWFkeSBleGlzdHMgKFRPRE86IFdoZW4gZG9lcyBpdCBub3Q/KQogICAgaWYgKCAkQ29uZmlnSXRlbS0+e05hbWV9ICkgewogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUdyb3VwTG9va3VwOwogICAgICAgIG15IEBQYWdlczsKICAgICAgICBteSAkUGFnZVNob3duOwogICAgICAgIG15ICRQYWdlUmVxdWVzdGVkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1BhZ2UnICk7CiAgICAgICAgUEFHRToKICAgICAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CiAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgJFBhZ2UtPntJbnRlcmZhY2VzfTsKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnQ3VzdG9tZXInIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CgogICAgICAgICAgICAjIHJlc3RyaWN0aW9uIGJ5IEdyb3VwcyBpcyBvcHRpb25hbAogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKCiAgICAgICAgICAgICAgICAjIGZldGNoIHRoZSBncm91cHMgd2hlcmUgdGhlIHVzZXIgaGFzIHJlYWQgYWNjZXNzCiAgICAgICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgdG8gdGhlIHBhZ2Ugb25seSB3aGVuIHRoZSB1c2VyIGlzIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwcwogICAgICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkR3JvdXBMb29rdXB7JF99IH0gJFBhZ2UtPntHcm91cHN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAUGFnZXMsICRQYWdlOwoKICAgICAgICAgICAgaWYgKCAkUGFnZVJlcXVlc3RlZCAmJiAkUGFnZS0+e05hbWV9IGVxICRQYWdlUmVxdWVzdGVkICkgewogICAgICAgICAgICAgICAgJFBhZ2VTaG93biA9ICRQYWdlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkUGFnZVNob3duIC8vPSBAUGFnZXMgPyAkUGFnZXNbMF0gOiB1bmRlZjsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VzID09IDEgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUGFnZU5hbWUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgUGFnZU5hbWUgPT4gJFBhZ2VzWzBde05hbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvciBteSAkUGFnZSAoQFBhZ2VzKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdlTGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBhZ2VOYW1lICAgICA9PiAkUGFnZS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWQgICAgID0+ICRQYWdlLT57TmFtZX0gZXEgJFBhZ2VTaG93bi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoQFBhZ2VzKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtLT57RHluYW1pY0ZpZWxkSFRNTH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkR5bmFtaWNGaWVsZCcpLT5QYWdlUmVuZGVyKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgICAgICBQYWdlUmVmICAgID0+ICRQYWdlU2hvd24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgdmVyc2lvbiBsaXN0CiAgICAgICAgaWYgKCAkQ29uZmlnLT57VmVyc2lvbnNFbmFibGVkfSAmJiAkQ29uZmlnLT57VmVyc2lvbnNTZWxlY3RhYmxlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHZlcnNpb24gbGlzdAogICAgICAgICAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkQmFzZUxpbmsgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tOycKICAgICAgICAgICAgICAgICAgICAuICJDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9O1BhZ2U9WyUgRGF0YS5OYW1lIHwgdXJpICVdOyIsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRQYWdlU2hvd24gPyAkUGFnZVNob3duLT57TmFtZX0gOiAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAVmVyc2lvblNlbGVjdGlvbkRhdGEgPSBtYXAgewogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICggJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kXy0+e1ZlcnNpb25JRH0iICksCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gKAogICAgICAgICAgICAgICAgICAgICAgICAiJF8tPntOYW1lfSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICggJF8tPntWZXJzaW9uU3RyaW5nfSB8fCAkXy0+e1ZlcnNpb25JRH0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiICgkXy0+e0NyZWF0ZVRpbWV9KSIKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICRWZXJzaW9uTGlzdC0+QCo7CgogICAgICAgICAgICBteSAkVmVyc2lvblNlbGVjdGlvbiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxAVmVyc2lvblNlbGVjdGlvbkRhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1ZlcnNpb25TZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgQWxpZ25Ecm9wZG93blJpZ2h0JywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmVyc2lvbklEID8gJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kVmVyc2lvbklEIiA6IHVuZGVmLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1ZlcnNpb25zJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlcnNpb25TZWxlY3Rpb24gPT4gJFZlcnNpb25TZWxlY3Rpb24sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxpbmtlZCBvYmplY3RzCiAgICBteSAkTGlua0xpc3RXaXRoRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgbGluayB0YWJsZSB2aWV3IG1vZGUKICAgIG15ICRMaW5rVGFibGVWaWV3TW9kZSA9ICRDb25maWdPYmplY3QtPkdldCgnTGlua09iamVjdDo6Vmlld01vZGUnKTsKCiAgICAjIGNyZWF0ZSB0aGUgbGluayB0YWJsZQogICAgbXkgJExpbmtUYWJsZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgTGlua0xpc3RXaXRoRGF0YSA9PiAkTGlua0xpc3RXaXRoRGF0YSwKICAgICAgICBWaWV3TW9kZSAgICAgICAgID0+ICRMaW5rVGFibGVWaWV3TW9kZSwKICAgICAgICBPYmplY3QgICAgICAgICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIG91dHB1dCB0aGUgbGluayB0YWJsZQogICAgaWYgKCRMaW5rVGFibGVTdHJnKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmtUYWJsZScgLiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTGlua1RhYmxlU3RyZyA9PiAkTGlua1RhYmxlU3RyZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRzJywKICAgICAgICApOwoKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbWV0YWRhdGEgb2YgdGhlIGN1cnJlbnQgYXR0YWNobWVudAogICAgICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBEb3dubG9hZEF0dGFjaG1lbnQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICAgICAgbXkgJEZpbGVuYW1lICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgICAgIGlmICggISRBdHRhY2htZW50RGF0YSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAleyRBdHRhY2htZW50RGF0YX0sCiAgICAgICAgICAgIFR5cGUgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICRPdXRwdXQsCiAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT4lKiwKICAgICAgICAgICAgICAgIEN1ckluY2lTaWduYWwgPT4gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU2lnbmFsID0+ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH0sCiAgICAgICAgICAgICAgICBTdHlsZUNsYXNzZXMgID0+ICRTdHlsZUNsYXNzZXMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5hdmlnYXRpb25CYXIsCiAgICAgICAgJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXI7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/PublicITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwoKICAgICMgY2xlYXIgYW55IGFjdGl2ZSBsb2dpbiB0byBlbmZvcmNlIHNlY3VyaXR5CiAgICBkZWxldGUgJFNlbGYtPntVc2VySUR9OwoKICAgICRTZWxmLT57Q2FjaGVUeXBlfSA9ICdJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntDYWNoZVRUTH0gID0gNjAgKiA2MCAqIDI0ICogMjA7CgogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IGRlYnVnCiAgICAkU2VsZi0+e0RlYnVnfSA9IDA7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIG15ICRTb3J0QnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdBZ2UnOwoKICAgIGlmICggJFNvcnRCeSBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICRTb3J0QnkgPSAnQ2hhbmdlZCc7CiAgICB9CgogICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgb3JkZXJpbmcgdG8gYmUgdXNlZC4KICAgIG15ICREZWZhdWx0T3JkZXJCeSA9ICRDb25maWctPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdVcCc7CgogICAgIyBTZXQgdGhlIHNvcnQgb3JkZXIgZnJvbSB0aGUgcmVxdWVzdCBwYXJhbWV0ZXJzLCBvciB0YWtlIHRoZSBkZWZhdWx0LgogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKQogICAgICAgIHx8ICREZWZhdWx0T3JkZXJCeTsKCiAgICAjIGdldCBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdAogICAgbXkgJEZpbHRlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CgogICAgIyBnZXQgdGhlIGNvbHVtbiBmaWx0ZXJzIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICBteSAlQ29sdW1uRmlsdGVyOwogICAgbXkgJUdldENvbHVtbkZpbHRlcjsKICAgIENPTFVNTk5BTUU6CiAgICBmb3IgbXkgJENvbHVtbk5hbWUgKAogICAgICAgIHF3KERlcGxTdGF0ZSBDdXJEZXBsU3RhdGUgSW5jaVN0YXRlIEN1ckluY2lTdGF0ZSBDbGFzcykKICAgICAgICApCiAgICB7CiAgICAgICAgIyBnZXQgY29sdW1uIGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbHVtbkZpbHRlcicgLiAkQ29sdW1uTmFtZSApCiAgICAgICAgICAgIHx8ICcnOwoKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgJEZpbHRlclZhbHVlIGVxICcnOwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJ0RlbGV0ZUZpbHRlcic7CgogICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcnsgJENvbHVtbk5hbWUgLiAnSURzJyB9IH0sICRGaWx0ZXJWYWx1ZTsKICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSA9ICRGaWx0ZXJWYWx1ZTsKICAgIH0KCiAgICAjIGdldCBhbGwgZHluYW1pYyBmaWVsZHMKICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICApOwoKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgUGFyYW0gPT4gJ0NvbHVtbkZpbHRlckR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIWRlZmluZWQgJEZpbHRlclZhbHVlOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnJzsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmlsdGVyVmFsdWUgZXEgJ0RlbGV0ZUZpbHRlcic7CgogICAgICAgICRDb2x1bW5GaWx0ZXJ7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gewogICAgICAgICAgICBFcXVhbHMgPT4gJEZpbHRlclZhbHVlLAogICAgICAgIH07CiAgICAgICAgJEdldENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRmlsdGVyVmFsdWU7CiAgICB9CgogICAgIyBidWlsZCBOYXZpZ2F0aW9uQmFyICYgdG8gZ2V0IHRoZSBvdXRwdXQgZmFzdGVyIQogICAgbXkgJFJlZnJlc2ggPSAnJzsKICAgIGlmICggJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9ICkgewogICAgICAgICRSZWZyZXNoID0gNjAgKiAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX07CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkT3V0cHV0OwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gbmUgJ0FKQVhGaWx0ZXJVcGRhdGUnICkgewogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICAgICApOwogICAgfQoKICAgICMgc29ydCBvbiBkZWZhdWx0IGJ5IHVzaW5nIGJvdGggKFByaW9yaXR5LCBBZ2UpIGVsc2UgdXNlIG9ubHkgb25lIHNvcnQgYXJndW1lbnQKICAgIG15ICVTb3J0OwoKICAgICMgZ2V0IGlmIHNlYXJjaCByZXN1bHQgc2hvdWxkIGJlIHByZS1zb3J0ZWQgYnkgcHJpb3JpdHkKICAgIG15ICRQcmVTb3J0QnlQcmlvcml0eSA9ICRDb25maWctPnsnUHJlU29ydDo6QnlQcmlvcml0eSd9OwogICAgaWYgKCAhJFByZVNvcnRCeVByaW9yaXR5ICkgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+ICRTb3J0QnksCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+IFsgJ1ByaW9yaXR5JywgJFNvcnRCeSBdLAogICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0Rvd24nLCAgICAgJE9yZGVyQnkgXSwKICAgICAgICApOwogICAgfQoKICAgICMgbXkgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZGVmaW5lIHBvc2l0aW9uIG9mIHRoZSBmaWx0ZXIgaW4gdGhlIGZyb250ZW5kCiAgICBteSAkUHJpb0NvdW50ZXIgPSAxMDAwOwoKICAgICMgdG8gc3RvcmUgdGhlIE5hdkJhciBmaWx0ZXJzCiAgICBteSAlRmlsdGVyczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICBteSBAVmlld2FibGVEZXBsU3RhdGVJRHM7CiAgICBteSBAVmlld2FibGVDbGFzc0lEczsKCiAgICAjIGZldGNoIGZpbHRlcnMgZnJvbSBjb25maWcKICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpOwoKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnKSApIHsKICAgICAgICBQRVJNQ09ORjoKICAgICAgICBmb3IgbXkgJENvbmZpZ0lkZW50aWZpZXIgKCBzb3J0IGtleXMgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT4lKiApIHsKICAgICAgICAgICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcgPSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb25maWctPnskQ29uZmlnSWRlbnRpZmllcn07CiAgICAgICAgICAgIG5leHQgUEVSTUNPTkYgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnKTsKCiAgICAgICAgICAgICMgc2V0IGFzIHNlbGVjdGVkIGZpbHRlciBpZiBub3QgcHJlc2VudAogICAgICAgICAgICAkRmlsdGVyIHx8PSAkQ29uZmlnSWRlbnRpZmllcjsKCiAgICAgICAgICAgICMgY29sbGVjdCBkeW5hbWljIGZpZWxkIHNlYXJjaCBwYXJhbXMKICAgICAgICAgICAgbXkgJURGU2VhcmNoUGFyYW1zOwogICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc30gKSApIHsKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkTmFtZSAoIGtleXMgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9LT4lKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICRERlNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfXskRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAlRmlsdGVyU2VhcmNoID0gKAogICAgICAgICAgICAgICAgQ2xhc3NlcyAgICA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LAogICAgICAgICAgICAgICAgJURGU2VhcmNoUGFyYW1zLAogICAgICAgICAgICAgICAgJVNvcnQsCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSAvLyAnMTAwMCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFwcGx5IGZpbHRlciByZXN0cmljdGlvbnMgdG8gc2VhcmNoIGZvcgogICAgICAgICAgICBpZiAoICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICRDbGFzc0xpc3QtPnsgJEdldENvbHVtbkZpbHRlcntDbGFzc30gfSBlcSAkXyB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBAVmlld2FibGVDbGFzc0lEcyA9ICggJEdldENvbHVtbkZpbHRlcntDbGFzc30gKTsKICAgICAgICAgICAgICAgICAgICAgICAgJEZpbHRlclNlYXJjaHtDbGFzc2VzfSA9IFsgJENsYXNzTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSB9IF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgQFZpZXdhYmxlQ2xhc3NJRHMgPSAoICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9ICk7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclNlYXJjaHtDbGFzc2VzfSA9IFsgJENsYXNzTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSB9IF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBAVmlld2FibGVDbGFzc0lEcyA9IHNvcnQga2V5cyAkQ2xhc3NMaXN0LT4lKjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSApIHsKICAgICAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkRGVwbFN0YXRlTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gfSBlcSAkXyB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBAVmlld2FibGVEZXBsU3RhdGVJRHMgPSAoICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSApOwogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0RlcGxTdGF0ZXN9ID0gWyAkRGVwbFN0YXRlTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gfSBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9ICggJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9ICk7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclNlYXJjaHtEZXBsU3RhdGVzfSA9IFsgJERlcGxTdGF0ZUxpc3QtPnsgJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9IH0gXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9IHNvcnQga2V5cyAkRGVwbFN0YXRlTGlzdC0+JSo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgICAgIGlmICggQFZpZXdhYmxlQ2xhc3NJRHMgJiYgQFZpZXdhYmxlRGVwbFN0YXRlSURzICkgewogICAgICAgICAgICAgICAgJENvdW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAgICAgJUZpbHRlclNlYXJjaCwKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRGaWx0ZXJzeyRDb25maWdJZGVudGlmaWVyfSA9IHsKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgUHJpbyAgID0+ICRQcmlvQ291bnRlciwKICAgICAgICAgICAgICAgIENvdW50ICA9PiAkQ291bnQsCiAgICAgICAgICAgICAgICBTZWFyY2ggPT4gXCVGaWx0ZXJTZWFyY2gsCiAgICAgICAgICAgIH07CiAgICAgICAgICAgICRQcmlvQ291bnRlcisrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIG9ubHkgb25lIGZpbHRlciBleGlzdHMKICAgIGlmICggc2NhbGFyIGtleXMgJUZpbHRlcnMgPT0gMSApIHsKCiAgICAgICAgIyBnZXQgdGhlIG5hbWUgb2YgdGhlIG9ubHkgZmlsdGVyCiAgICAgICAgbXkgKCRGaWx0ZXJOYW1lKSA9IGtleXMgJUZpbHRlcnM7CgogICAgICAgICMgYWN0aXZhdGUgdGhpcyBmaWx0ZXIKICAgICAgICAkRmlsdGVyID0gJEZpbHRlck5hbWU7CiAgICB9CgogICAgIyBjaGVjayBpZiBmaWx0ZXIgaXMgdmFsaWQKICAgIGlmICggJEZpbHRlciAmJiAhZXhpc3RzICRGaWx0ZXJzeyRGaWx0ZXJ9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnSW52YWxpZCBGaWx0ZXI6ICVzIScsICRGaWx0ZXIgKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBoZWFkZXIgZmlsdGVyCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlRmlsdGVycyApIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlckhlYWRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEtleX0gfSwKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkS2V5LAogICAgICAgICAgICAgICAgQ2xhc3NBID0+ICRLZXkgZXEgJEZpbHRlciA/ICdTZWxlY3RlZCcgOiAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBmaWx0ZXIgZGVsZXRlIGlmIG5lZWRlZAogICAgaWYgKCVHZXRDb2x1bW5GaWx0ZXIpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmlsdGVyRGVsZXRlJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRWaWV3ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgfHwgJyc7CgogICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICBpZiAoICEkVmlldyAmJiAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfSApIHsKICAgICAgICAkVmlldyA9ICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgb3RoZXJ3aXNlIHVzZSBQcmV2aWV3IGFzIGRlZmF1bHQgYXMgaW4gTGF5b3V0Q29uZmlnSXRlbQogICAgJFZpZXcgfHw9ICdTbWFsbCc7CgogICAgIyBDaGVjayBpZiBzZWxlY3RlZCB2aWV3IGlzIGF2YWlsYWJsZS4KICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd24gPSAkQ29uZmlnLT57UGFnZVNob3dufTsKICAgIG15ICVQYWdlTmF2OwoKICAgICMgZG8gc2hvd24gY29uZmlnIGl0ZW0gbG9va3VwCiAgICBteSAkTGltaXQgPSAxMDAwOwoKICAgIG15ICRFbGVtZW50Q2hhbmdlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbGVtZW50Q2hhbmdlZCcgKSB8fCAnJzsKICAgIG15ICRIZWFkZXJDb2x1bW4gICA9ICRFbGVtZW50Q2hhbmdlZDsKICAgICRIZWFkZXJDb2x1bW4gPX4gc3tcQSBDb2x1bW5GaWx0ZXIgfXt9bXN4ZzsKCiAgICAjIGdldCBkYXRhICh2aWV3YWJsZSBjb25maWcgaXRlbXMuLi4pCiAgICAjIHNlYXJjaCBhbGwgY29uZmlnIGl0ZW1zCiAgICBteSBAVmlld2FibGVDb25maWdJdGVtczsKICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgIyBidWlsZCBsaW5rcwogICAgbXkgJENvbHVtbkZpbHRlckxpbmsgPSAnJzsKICAgIENPTFVNTk5BTUU6CiAgICBmb3IgbXkgJENvbHVtbk5hbWUgKCBzb3J0IGtleXMgJUdldENvbHVtbkZpbHRlciApIHsKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRDb2x1bW5OYW1lOwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhZGVmaW5lZCAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfTsKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gZXEgJyc7CiAgICAgICAgJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAgICAgLj0gJzsnIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgLiAnPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSApOwogICAgfQoKICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnO1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU29ydEJ5ICkKICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApCiAgICAgICAgLiAkQ29sdW1uRmlsdGVyTGluawogICAgICAgIC4gJzsnOwoKICAgIG15ICRMaW5rU29ydCA9ICdWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7RmlsdGVyPScKICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAkQ29sdW1uRmlsdGVyTGluawogICAgICAgIC4gJzsnOwoKICAgIG15ICRMaW5rRmlsdGVyID0gJ1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU29ydEJ5ICkKICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJzsnOwoKICAgIG15ICRMYXN0Q29sdW1uRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xhc3RDb2x1bW5GaWx0ZXInICkgfHwgJyc7CgogICAgaWYgKCAhJExhc3RDb2x1bW5GaWx0ZXIgJiYgJENvbHVtbkZpbHRlckxpbmsgKSB7CgogICAgICAgICMgaXMgcGxhbm5lZCB0byBoYXZlIGEgbGluayB0byBnbyBiYWNrIGhlcmUKICAgICAgICAkTGFzdENvbHVtbkZpbHRlciA9IDE7CiAgICB9CgogICAgaWYgKCBAVmlld2FibGVEZXBsU3RhdGVJRHMgJiYgQFZpZXdhYmxlQ2xhc3NJRHMgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIHZhbHVlcwogICAgICAgIGlmICgKICAgICAgICAgICAgIUlzU3RyaW5nV2l0aERhdGEoJEhlYWRlckNvbHVtbikKICAgICAgICAgICAgfHwgKAogICAgICAgICAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSgkSGVhZGVyQ29sdW1uKQogICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnT25seVZhbHVlc09uQ29uZmlnSXRlbScpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJ9LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgTGltaXQgID0+ICRMaW1pdCwKICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJFN0YXJ0SGl0ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDE7CgogICAgICAgICAgICAlUGFnZU5hdiA9ICRMYXlvdXRPYmplY3QtPlBhZ2VOYXZCYXIoCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgPT4gMTAwMDAsCiAgICAgICAgICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgICAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgICAgICAgICBBbGxIaXRzICAgPT4gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj1QdWJsaWNJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBMaW5rICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICAgICAgSURQcmVmaXggID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBAVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlcn0tPntTZWFyY2h9IH0sCiAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgTGltaXQgID0+ICRTdGFydEhpdCArICRQYWdlU2hvd24gLSAxLAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgIH0KCiAgICAjIFRPRE8gTWF5YmUgdGhlcmUgaXMgYSBtb3JlIGVsZWdhbnQgd2F5IHRvIGRvIHRoaXM/CiAgICAkU2VsZi0+e0ZpbHRlcn0gID0gJEZpbHRlcjsKICAgICRTZWxmLT57RmlsdGVyc30gPSBcJUZpbHRlcnM7CgogICAgbXkgJENvdW50VG90YWwgPSAwOwogICAgbXkgJU5hdkJhckZpbHRlcjsKICAgIGZvciBteSAkRmlsdGVyQ29sdW1uICggc29ydCBrZXlzICVGaWx0ZXJzICkgewogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgaWYgKEBWaWV3YWJsZURlcGxTdGF0ZUlEcykgewogICAgICAgICAgICAkQ291bnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJDb2x1bW59LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQ09VTlQnLAogICAgICAgICAgICApIHx8IDA7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRGaWx0ZXJDb2x1bW4gZXEgJEZpbHRlciApIHsKICAgICAgICAgICAgJENvdW50VG90YWwgPSAkQ291bnQ7CiAgICAgICAgfQoKICAgICAgICAkTmF2QmFyRmlsdGVyeyAkRmlsdGVyc3skRmlsdGVyQ29sdW1ufS0+e1ByaW99IH0gPSB7CiAgICAgICAgICAgIENvdW50ICA9PiAkQ291bnQsCiAgICAgICAgICAgIEZpbHRlciA9PiAkRmlsdGVyQ29sdW1uLAogICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyQ29sdW1ufSB9LAogICAgICAgIH07CiAgICB9CgogICAgIyBzaG93IGNvbmZpZyBpdGVtcwogICAgbXkgJENvbmZpZ0l0ZW1MaXN0SFRNTCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgRmlsdGVyICAgICAgICAgICAgICAgID0+ICRGaWx0ZXIsCiAgICAgICAgRmlsdGVycyAgICAgICAgICAgICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIENvbmZpZ0l0ZW1JRHMgICAgICAgICA9PiBcQFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIEdldENvbHVtbkZpbHRlciAgICAgICA9PiBcJUdldENvbHVtbkZpbHRlciwKICAgICAgICBMYXN0Q29sdW1uRmlsdGVyICAgICAgPT4gJExhc3RDb2x1bW5GaWx0ZXIsCiAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVG90YWwgICAgICAgICAgICAgICAgID0+ICRDb3VudFRvdGFsLAogICAgICAgIFJlcXVlc3RlZFVSTCAgICAgICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICAgICAgVmlldyAgICAgICAgICAgICAgICAgID0+ICRWaWV3LAogICAgICAgIFRpdGxlTmFtZSAgICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nKSwKICAgICAgICBUaXRsZVZhbHVlICAgICAgICAgICAgPT4gJFNlbGYtPntGaWx0ZXJzfXskRmlsdGVyfS0+e05hbWV9LAogICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgICAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgTGlua0ZpbHRlciAgICAgICAgICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXJzICAgPT4gMSwKICAgICAgICBDb2x1bW5GaWx0ZXJGb3JtICAgICAgPT4gewogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlciB8fCAnJywKICAgICAgICB9LAogICAgICAgIEZyb250ZW5kID0+ICdQdWJsaWMnLAoKICAgICAgICAjIGRvIG5vdCBwcmludCB0aGUgcmVzdWx0IGVhcmxpZXIsIGJ1dCByZXR1cm4gY29tcGxldGUgY29udGVudAogICAgICAgIE91dHB1dCA9PiAxLAogICAgKTsKCiAgICBteSAlUHVibGljQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljRnJvbnRlbmQ6Ok1vZHVsZScpIC8vIHt9IH07CiAgICBpZiAoICRQdWJsaWNBY3Rpb25ze1B1YmxpY0lUU01Db25maWdJdGVtU2VhcmNofSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQm94JywKICAgICAgICApOwogICAgfQoKICAgIG15ICRIZWFkZXJUaXRsZSA9ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbSIpLT57VGl0bGV9IHx8ICJDb25maWdJdGVtcyI7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0lUU01Db25maWdJdGVtJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgID0+ICRIZWFkZXJUaXRsZSwKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCA9PiAkQ29uZmlnSXRlbUxpc3RIVE1MLAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIyBnZXQgcGFnZSBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKICAgICMKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=</File>
        <File Location="Kernel/Modules/PublicITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKCiAgICAjIGNsZWFyIGFueSBhY3RpdmUgbG9naW4gdG8gZW5mb3JjZSBzZWN1cml0eQogICAgZGVsZXRlICRTZWxmLT57VXNlcklEfTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJEJhY2tlbmRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBjb25maWd1cmVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9LAogICAgKTsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIgJiB0byBnZXQgdGhlIG91dHB1dCBmYXN0ZXIhCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKICAgIH0KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICk7CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggZmlsdGVycyBmcm9tIGNvbmZpZwogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzID0gJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MpICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5QdWJsaWNFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24nKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyBnZXQgZmlsdGVyIGZyb20gd2ViIHJlcXVlc3Qgb3IgdXNlIGZpcnN0IHZhbGlkIHBlcm1pc3Npb24gY29uZGl0aW9uCiAgICBteSAkRmlsdGVyID0KICAgICAgICAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUGVybWlzc2lvbkNvbmRpdGlvbicgKSB8fAogICAgICAgICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgICAgICAgICAgICAgIHx8CiAgICAgICAgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MtPiUqIClbMF07CgogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcgPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MtPnsgc3ByaW50ZiggIiUwMmQiLCAkRmlsdGVyICkgfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnKSApIHsKCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlB1YmxpY0Vycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnRmlsdGVyIGludmFsaWQhJyksCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgIG15ICVQYWdlTmF2OwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NlYXJjaEFjdGlvbicgKSB7CgogICAgICAgIG15ICRTb3J0QnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgICAgIHx8ICRDb25maWctPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICAgICAgfHwgJ0FnZSc7CgogICAgICAgIGlmICggJFNvcnRCeSBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAkU29ydEJ5ID0gJ0NoYW5nZWQnOwogICAgICAgIH0KCiAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgb3JkZXJpbmcgdG8gYmUgdXNlZC4KICAgICAgICBteSAkRGVmYXVsdE9yZGVyQnkgPSAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICAgICAgfHwgJ1VwJzsKCiAgICAgICAgIyBTZXQgdGhlIHNvcnQgb3JkZXIgZnJvbSB0aGUgcmVxdWVzdCBwYXJhbWV0ZXJzLCBvciB0YWtlIHRoZSBkZWZhdWx0LgogICAgICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICAgICAjIHNvcnQgb24gZGVmYXVsdCBieSB1c2luZyBib3RoIChQcmlvcml0eSwgQWdlKSBlbHNlIHVzZSBvbmx5IG9uZSBzb3J0IGFyZ3VtZW50CiAgICAgICAgbXkgJVNvcnQ7CgogICAgICAgICMgZ2V0IGlmIHNlYXJjaCByZXN1bHQgc2hvdWxkIGJlIHByZS1zb3J0ZWQgYnkgcHJpb3JpdHkKICAgICAgICBteSAkUHJlU29ydEJ5UHJpb3JpdHkgPSAkQ29uZmlnLT57J1ByZVNvcnQ6OkJ5UHJpb3JpdHknfTsKICAgICAgICBpZiAoICEkUHJlU29ydEJ5UHJpb3JpdHkgKSB7CiAgICAgICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICAgICAgU29ydEJ5ICA9PiAkU29ydEJ5LAogICAgICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICAgICAgU29ydEJ5ICA9PiBbICdQcmlvcml0eScsICRTb3J0QnkgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRG93bicsICAgICAkT3JkZXJCeSBdLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFZpZXcgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmlldycgKSB8fCAnJzsKCiAgICAgICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICAgICAgaWYgKCAhJFZpZXcgJiYgJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH07CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICAgICAkVmlldyB8fD0gJ1NtYWxsJzsKCiAgICAgICAgbXkgJExpbmtQYWdlID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1N1YmFjdGlvbn0gKQogICAgICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICk7CgogICAgICAgIG15ICRMaW5rU29ydCA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgICAgIC4gJztTdWJhY3Rpb249JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTdWJhY3Rpb259ICkKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKTsKCiAgICAgICAgIyBnZXQgc2VhcmNoIHBhcmFtcyBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJUdldFBhcmFtOwogICAgICAgIFBBUkFNOgogICAgICAgIGZvciBteSAkU2VhcmNoUGFyYW0gKHF3KE51bWJlciBOYW1lKSkgewogICAgICAgICAgICBuZXh0IFBBUkFNIGlmICEkQ29uZmlnLT57JFNlYXJjaFBhcmFtfTsKCiAgICAgICAgICAgICMgZmV0Y2ggc2luZ2xlIHZhbHVlIHBhcmFtcwogICAgICAgICAgICAkR2V0UGFyYW17JFNlYXJjaFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRTZWFyY2hQYXJhbSApOwoKICAgICAgICAgICAgIyBzdXBwcmVzcyBmdXp6eSBsb2dpYyBvcGVyYXRvcnMKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57U3VwcHJlc3NGdXp6eUxvZ2ljfSApIHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskU2VhcmNoUGFyYW19ID1+IHMvW1wqJV9dLy9nOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRMaW5rUGFnZSAuPSAiOyRTZWFyY2hQYXJhbT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkR2V0UGFyYW17JFNlYXJjaFBhcmFtfSApOwogICAgICAgICAgICAkTGlua1NvcnQgLj0gIjskU2VhcmNoUGFyYW09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gKTsKICAgICAgICB9CgogICAgICAgIG15IEBBcnJheVNlYXJjaFBhcmFtczsKCiAgICAgICAgaWYgKCAkQ29uZmlnLT57Q2xhc3N9ICkgewogICAgICAgICAgICBwdXNoIEBBcnJheVNlYXJjaFBhcmFtcywgJ0NsYXNzSURzJzsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZX0gKSB7CiAgICAgICAgICAgIHB1c2ggQEFycmF5U2VhcmNoUGFyYW1zLCAnRGVwbFN0YXRlSURzJzsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luY2lkZW50U3RhdGV9ICkgewogICAgICAgICAgICBwdXNoIEBBcnJheVNlYXJjaFBhcmFtcywgJ0luY2lTdGF0ZUlEcyc7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtQXJyYXkgKEBBcnJheVNlYXJjaFBhcmFtcykgewoKICAgICAgICAgICAgIyBmZXRjaCBtdWx0aSB2YWx1ZSBwYXJhbXMKICAgICAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJFNlYXJjaFBhcmFtQXJyYXkgKTsKCiAgICAgICAgICAgIGlmICggYW55IHskX30gQEFycmF5ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbUFycmF5fSA9IFxAQXJyYXk7CiAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gam9pbiggJycsIG1hcCB7ICI7JFNlYXJjaFBhcmFtQXJyYXk9IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9IEBBcnJheSApOwogICAgICAgICAgICAgICAgJExpbmtTb3J0IC49IGpvaW4oICcnLCBtYXAgeyAiOyRTZWFyY2hQYXJhbUFycmF5PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRfICkgfSBAQXJyYXkgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJVNlYXJjaENvbmZpZzsKICAgICAgICBteSAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyczsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gR2V0UGFyYW0gdG8gc3RvcmUgaXQgbGF0ZXIgaW4gdGhlIHNlYXJjaAogICAgICAgICAgICAgICAgIyBwcm9maWxlCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewoKICAgICAgICAgICAgICAgICAgICAjIGFwcGVuZCBzZWFyY2ggcGFyYW1zIHRvIGxpbmtzCiAgICAgICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExpbmtQYWdlIC49IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCB7ICI7U2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30tPkAqCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rU29ydCAuPSBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAgeyAiO1NlYXJjaF9EeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRfICkgfSAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9LT5AKgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExpbmtQYWdlIC49ICI7U2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfSApOwogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1NvcnQgLj0gIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9ICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRMaW5rUGFnZSAuPSAnOyc7CiAgICAgICAgJExpbmtTb3J0IC49ICc7JzsKCiAgICAgICAgJVNlYXJjaENvbmZpZyA9ICgKICAgICAgICAgICAgJVNlYXJjaENvbmZpZywKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMsCiAgICAgICAgICAgICVTb3J0LAogICAgICAgICk7CgogICAgICAgICMgbWVyZ2UgZmlsdGVyZWQgY2xhc3NlcyB3aXRoIHBlcm1pc3Npb24gY29uZGl0aW9uIGNsYXNzZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdldFBhcmFte0NsYXNzSURzfSApICkgewogICAgICAgICAgICBteSBAU2VhcmNoQ2xhc3NlczsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc0lEICggJEdldFBhcmFte0NsYXNzSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICRfIGVxICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0gfSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hDbGFzc2VzLCAkQ2xhc3NMaXN0LT57JENsYXNzSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7Q2xhc3Nlc30gPSBcQFNlYXJjaENsYXNzZXM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoQ29uZmlne0NsYXNzZXN9ID0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfTsKICAgICAgICB9CgogICAgICAgIGlmICggISRTZWFyY2hDb25maWd7Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgbWVyZ2UgZmlsdGVyZWQgZGVwbG95bWVudCBzdGF0ZXMgd2l0aCBwZXJtaXNzaW9uIGNvbmRpdGlvbiBkZXBsb3ltZW50IHN0YXRlcwogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17RGVwbFN0YXRlSURzfSApICkgewogICAgICAgICAgICBteSBAU2VhcmNoRGVwbFN0YXRlczsKICAgICAgICAgICAgZm9yIG15ICREZXBsU3RhdGVJRCAoICRHZXRQYXJhbXtEZXBsU3RhdGVJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkRGVwbFN0YXRlTGlzdC0+eyREZXBsU3RhdGVJRH0gfSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoRGVwbFN0YXRlcywgJERlcGxTdGF0ZUxpc3QtPnskRGVwbFN0YXRlSUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaERlcGxTdGF0ZXMsICREZXBsU3RhdGVMaXN0LT57JERlcGxTdGF0ZUlEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhQFNlYXJjaERlcGxTdGF0ZXMgKSB7CiAgICAgICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24nKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSBcQFNlYXJjaERlcGxTdGF0ZXM7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9OwogICAgICAgIH0KCiAgICAgICAgIyBtYXAgZmlsdGVyZWQgaW5jaWRlbnQgc3RhdGUgaWRzCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtJbmNpU3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTZWFyY2hJbmNpU3RhdGVzID0gbWFwIHsgJEluY2lTdGF0ZUxpc3QtPnskX30gfSAkR2V0UGFyYW17SW5jaVN0YXRlSURzfS0+QCo7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7SW5jaVN0YXRlc30gPSBcQFNlYXJjaEluY2lTdGF0ZXM7CiAgICAgICAgfQoKICAgICAgICAkU2VhcmNoQ29uZmlne051bWJlcn0gPSAkR2V0UGFyYW17TnVtYmVyfSA/ICRHZXRQYXJhbXtOdW1iZXJ9IDogdW5kZWY7CiAgICAgICAgJFNlYXJjaENvbmZpZ3tOYW1lfSAgID0gJEdldFBhcmFte05hbWV9ICAgPyAkR2V0UGFyYW17TmFtZX0gICA6IHVuZGVmOwoKICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICRTZWFyY2hDb25maWd7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfXskRmllbGROYW1lfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVGaWx0ZXJzID0gKAogICAgICAgICAgICAkRmlsdGVyID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgUHJpbyAgID0+IDEwMDAsCiAgICAgICAgICAgICAgICBTZWFyY2ggPT4gXCVTZWFyY2hDb25maWcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJVNlYXJjaENvbmZpZyApIHsKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlB1YmxpY0Vycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIHNlbGVjdGVkIHZpZXcgaXMgYXZhaWxhYmxlLgoKICAgICAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljT3ZlcnZpZXcnKTsKICAgICAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CgogICAgICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgICAgICBLRVk6CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7JEJhY2tlbmRzfSApIHsKICAgICAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgICAgIGxhc3QgS0VZOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgICAgIG15ICRQYWdlU2hvd24gICAgICAgICAgICAgICA9ICRTZWxmLT57JFBhZ2VTaG93blByZWZlcmVuY2VzS2V5fSB8fCAxMDsKCiAgICAgICAgIyBkbyBzaG93biBjb25maWcgaXRlbSBsb29rdXAKICAgICAgICBteSAkTGltaXQgPSAxXzAwMDsKCiAgICAgICAgIyBnZXQgZGF0YSAodmlld2FibGUgY29uZmlnIGl0ZW1zLi4uKQogICAgICAgICMgc2VhcmNoIGFsbCBjb25maWcgaXRlbXMKICAgICAgICBteSBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICVTZWFyY2hDb25maWcsCiAgICAgICAgICAgIExpbWl0ICA9PiAkTGltaXQsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICk7CgogICAgICAgIGlmICggc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMgPT0gMSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1QdWJsaWNJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXNbMF0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFRvdGFsID0gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgICAgIG15ICRTdGFydEhpdCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICAgICBteSBAVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICBMaW1pdCAgPT4gJFN0YXJ0SGl0ICsgJFBhZ2VTaG93biAtIDEsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICk7CgogICAgICAgICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICAgICAgTGltaXQgICAgID0+IDEwMDAwLAogICAgICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgQWxsSGl0cyAgID0+IHNjYWxhciBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj1QdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIExpbmsgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgICAgIElEUHJlZml4ICA9PiAnUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICk7CgogICAgICAgICMgVE9ETyBNYXliZSB0aGVyZSBpcyBhIG1vcmUgZWxlZ2FudCB3YXkgdG8gZG8gdGhpcz8KICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gID0gJEZpbHRlcjsKICAgICAgICAkU2VsZi0+e0ZpbHRlcnN9ID0gXCVGaWx0ZXJzOwoKICAgICAgICAjIHNob3cgY29uZmlnIGl0ZW1zCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1MaXN0SFRNTCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgPT4gXEBWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gXEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIExpbmtQYWdlICAgICAgICAgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgICAgIEVuYWJsZUNvbHVtbkZpbHRlciAgICA9PiAwLAogICAgICAgICAgICBWaWV3ICAgICAgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgICAgIFRvdGFsICAgICAgICAgICAgICAgICA9PiAkVG90YWwsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICAgICAgID0+ICRTb3J0QnksCiAgICAgICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgRnJvbnRlbmQgICAgICAgICAgICAgID0+ICdQdWJsaWMnLAoKICAgICAgICAgICAgIyBkbyBub3QgcHJpbnQgdGhlIHJlc3VsdCBlYXJsaWVyLCBidXQgcmV0dXJuIGNvbXBsZXRlIGNvbnRlbnQKICAgICAgICAgICAgT3V0cHV0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEJveCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVB1YmxpY0FjdGlvbnMgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpY0Zyb250ZW5kOjpNb2R1bGUnKSAvLyB7fSB9OwogICAgICAgIGlmICggJFB1YmxpY0FjdGlvbnN7UHVibGljSVRTTUNvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TGluaycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoUmVzdWx0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUxpc3RIVE1MID0+ICRDb25maWdJdGVtTGlzdEhUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBzdG9yZSBkcm9wZG93biByZXN0cmljdGlvbnMgZnJvbSBwZXJtaXNzaW9uIGNvbmRpdGlvbgogICAgICAgIG15ICVTZWFyY2hhYmxlUGFyYW1zID0gKAogICAgICAgICAgICBJbmNpU3RhdGUgPT4gJEluY2lTdGF0ZUxpc3QsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgc2VhcmNoYWJsZSBwYXJhbXMKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgICRTZWFyY2hhYmxlUGFyYW1ze0NsYXNzfSA9IHsKICAgICAgICAgICAgbWFwIHsKICAgICAgICAgICAgICAgICRDbGFzc0xvb2t1cHskX30KICAgICAgICAgICAgICAgICAgICA/ICggJENsYXNzTG9va3VweyRffSA9PiAkXyApCiAgICAgICAgICAgICAgICAgICAgOiAoKQogICAgICAgICAgICB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqCiAgICAgICAgfTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30gKSApIHsKICAgICAgICAgICAgbXkgJURlcGxTdGF0ZUxvb2t1cCA9IHJldmVyc2UgJERlcGxTdGF0ZUxpc3QtPiUqOwogICAgICAgICAgICAkU2VhcmNoYWJsZVBhcmFtc3tEZXBsU3RhdGV9ID0gewogICAgICAgICAgICAgICAgbWFwIHsKICAgICAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTG9va3VweyRffQogICAgICAgICAgICAgICAgICAgICAgICA/ICggJERlcGxTdGF0ZUxvb2t1cHskX30gPT4gJF8gKQogICAgICAgICAgICAgICAgICAgICAgICA6ICgpCiAgICAgICAgICAgICAgICB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30tPkAqCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoYWJsZVBhcmFtc3tEZXBsU3RhdGV9ID0gJERlcGxTdGF0ZUxpc3Q7CiAgICAgICAgfQoKICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMnKTsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzKSApIHsKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlB1YmxpY0Vycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgbXkgJVB1YmxpY0FjdGlvbnMgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpY0Zyb250ZW5kOjpNb2R1bGUnKSAvLyB7fSB9OwogICAgICAgIGlmICggJFB1YmxpY0FjdGlvbnN7UHVibGljSVRTTUNvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TGluaycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoRm9ybScsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJURlZmF1bHRzOwogICAgICAgIGlmICggJENvbmZpZy0+e0RlZmF1bHRzfSApIHsKICAgICAgICAgICAgS0VZOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkQ29uZmlnLT57RGVmYXVsdHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJENvbmZpZy0+e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICAgICBpZiAoICRLZXkgPX4gL15Db25maWdJdGVtKENyZWF0ZXxDaGFuZ2UpLyApIHsKICAgICAgICAgICAgICAgICAgICBteSBASXRlbXMgPSBzcGxpdCAvOy8sICRDb25maWctPntEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKEBJdGVtcykgewogICAgICAgICAgICAgICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gc3BsaXQgLz0vLCAkSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgJERlZmF1bHRzeyRLZXl9ID0gJFZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREZWZhdWx0c3skS2V5fSA9ICRDb25maWctPntEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSBwZXJtaXNzaW9uIGNvbmRpdGlvbgogICAgICAgIG15ICVQZXJtaXNzaW9uQ29uZGl0aW9uRGF0YSA9IG1hcCB7IGludCgkXykgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzLT57JF99LT57TmFtZX0gfSBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncy0+JSo7CiAgICAgICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgID0+IFwlUGVybWlzc2lvbkNvbmRpdGlvbkRhdGEsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdQZXJtaXNzaW9uQ29uZGl0aW9uJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEZpbHRlciB8fCAnJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Blcm1pc3Npb25Db25kaXRpb24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFBlcm1pc3Npb25Db25kaXRpb25TdHJnID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uU3RyZywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoICRTZWxmLT57RHluYW1pY0ZpZWxkfS0+QCogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0FDTFJlZHVjaWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBoYXMgUG9zc2libGVWYWx1ZXMgcHJvcGVydHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBvc3NpYmxlVmFsdWVzKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgaGlzdG9yaWNhbCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQogICAgICAgICAgICAgICAgICAgIG15ICRIaXN0b3JpY2FsVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPkhpc3RvcmljYWxWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREYXRhID0gJFBvc3NpYmxlVmFsdWVzOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBoaXN0b3JpYyB2YWx1ZXMgdG8gY3VycmVudCB2YWx1ZXMgKGlmIHRoZXkgZG9uJ3QgZXhpc3QgYW55bW9yZSkKICAgICAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRIaXN0b3JpY2FsVmFsdWVzKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskSGlzdG9yaWNhbFZhbHVlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkRGF0YS0+eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRhLT57JEtleX0gPSAkSGlzdG9yaWNhbFZhbHVlcy0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgICAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJXskRGF0YX07CiAgICAgICAgICAgICAgICAgICAgQEFjbERhdGF7IGtleXMgJUFjbERhdGEgfSA9IGtleXMgJUFjbERhdGE7CgogICAgICAgICAgICAgICAgICAgICMgc2V0IHBvc3NpYmxlIHZhbHVlcyBmaWx0ZXIgZnJvbSBBQ0xzCiAgICAgICAgICAgICAgICAgICAgbXkgJEFDTCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlRmlsdGVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgRmlsZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJERhdGEtPnskX30gfSBrZXlzICVGaWx0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBIVE1MCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+ICRQb3NzaWJsZVZhbHVlc0ZpbHRlciwKICAgICAgICAgICAgICAgICAgICBQcm9maWxlICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAgICAgICAgICAgICBEZWZhdWx0VmFsdWUgICAgICAgICA9PgogICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlnLT57RGVmYXVsdHN9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9LAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBGaWVsZCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e051bWJlcn0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e05hbWV9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnLT57Q2xhc3N9ICkgewogICAgICAgICAgICBteSAkQ2xhc3NTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlYXJjaGFibGVQYXJhbXN7Q2xhc3N9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDbGFzc0lEcycsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJERlZmF1bHRze0NsYXNzSURzfSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENsYXNzU3RyZyA9PiAkQ2xhc3NTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHdhbnRlZCBkZXBsb3ltZW50IHN0YXRlcwogICAgICAgICAgICBteSAkQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZWFyY2hhYmxlUGFyYW1ze0RlcGxTdGF0ZX0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJERlZmF1bHRze0RlcGxveW1lbnRTdGF0ZUlEc30sCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVPcHRpb25TdHJnID0+ICRDdXJEZXBsU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luY2lkZW50U3RhdGV9ICkgewoKICAgICAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSB3YW50ZWQgaW5jaWRlbnQgc3RhdGVzCiAgICAgICAgICAgIG15ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlYXJjaGFibGVQYXJhbXN7SW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnSW5jaVN0YXRlSURzJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRGVmYXVsdHN7SW5jaWRlbnRTdGF0ZUlEc30sCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0+ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBwZXJtaXNzaW9uIScpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICBteSAkSGVhZGVyVGl0bGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2giKS0+e1RpdGxlfSB8fCAiQ29uZmlnSXRlbSBTZWFyY2giOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgPT4gJEhlYWRlclRpdGxlLAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBwYWdlIGZvb3RlcgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=</File>
        <File Location="Kernel/Modules/PublicITSMConfigItemAttachment.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdjUuMjQ7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzSGFzaFJlZldpdGhEYXRhKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CgogICAgIyBjbGVhciBhbnkgYWN0aXZlIGxvZ2luIHRvIGVuZm9yY2Ugc2VjdXJpdHkKICAgIGRlbGV0ZSAkU2VsZi0+e1VzZXJJRH07CgogICAgJFNlbGYtPntDYWNoZVR5cGV9ID0gJ0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCc7CiAgICAkU2VsZi0+e0NhY2hlVFRMfSAgPSA2MCAqIDYwICogMjQgKiAyMDsKCiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRMb2dPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgIyBnZXQgSURzCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgY2hlY2sgcGFyYW0KICAgIGlmICggISRDb25maWdJdGVtSUQgfHwgISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnSXRlbUlEIGFuZCBWZXJzaW9uSUQgYXJlIG5lZWRlZCEnLAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAhPSAkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1ZlcnNpb25JRCBkb2VzIG5vdCBiZWxvbmcgdG8gQ29uZmlnSXRlbUlEIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QdWJsaWNQZXJtaXNzaW9uKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICApOwogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICBteSAkSFRNTFV0aWxzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIEdldCB0aGUgRmllbGQgY29udGVudC4KICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn07CgogICAgICAgICMgIyBCdWlsZCBiYXNlIFVSTCBmb3IgaW4tbGluZSBpbWFnZXMuCiAgICAgICAgIyBteSAkU2Vzc2lvbklEID0gJyc7CiAgICAgICAgIyBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICMgICAgICRTZXNzaW9uSUQgPSAnOycgLiAkU2VsZi0+e1Nlc3Npb25OYW1lfSAuICc9JyAuICRTZWxmLT57U2Vzc2lvbklEfTsKICAgICAgICAjICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgIyAgICAgICAgIChBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtDb25maWdJdGVtSUQ9XGQrO0ZpbGVuYW1lPVx3KykKICAgICAgICAjICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgICMgfQoKICAgICAgICAjIGZldGNoIGNvbmZpZyBpdGVtIGF0dGFjaG1lbnQgbGlzdCBmb3IgaGFuZGxpbmcgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIGF0dGFjaG1lbnQgZGF0YSBhbmQgc3RvcmUgaW4gaGFzaCBmb3IgUmljaFRleHREb2N1bWVudFNlcnZlCiAgICAgICAgbXkgJUF0dGFjaG1lbnRzOwogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfXtDb250ZW50SUR9ID0gJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX17UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH07CiAgICAgICAgfQoKICAgICAgICAjIG5lZWRlZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBwYXJhbXMgZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCInLAogICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAnaW5saW5lJywKICAgICAgICApOwoKICAgICAgICBteSAkVVJMCiAgICAgICAgICAgID0gIkFjdGlvbj1QdWJsaWNJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9O1ZlcnNpb25JRD0kQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH07RmlsZW5hbWU9IjsKCiAgICAgICAgIyByZWZvcm1hdCByaWNoIHRleHQgZG9jdW1lbnQgdG8gaGF2ZSBjb3JyZWN0IGNoYXJzZXQgYW5kIGxpbmtzIHRvCiAgICAgICAgIyBpbmxpbmUgZG9jdW1lbnRzCiAgICAgICAgJURhdGEgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50U2VydmUoCiAgICAgICAgICAgIERhdGEgICAgICAgICAgICAgICA9PiBcJURhdGEsCiAgICAgICAgICAgIFVSTCAgICAgICAgICAgICAgICA9PiAkVVJMLAogICAgICAgICAgICBBdHRhY2htZW50cyAgICAgICAgPT4gXCVBdHRhY2htZW50cywKICAgICAgICAgICAgTG9hZEV4dGVybmFsSW1hZ2VzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICREYXRhe0NvbnRlbnR9OwoKICAgICAgICAjIHJlbW92ZSBhY3RpdmUgaHRtbCBjb250ZW50IChzY3JpcHRzLCBhcHBsZXRzLCBldGMuLi4pCiAgICAgICAgbXkgJVNhZmVDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+U2FmZXR5KAogICAgICAgICAgICBTdHJpbmcgICAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgTm9BcHBsZXQgICAgID0+IDEsCiAgICAgICAgICAgIE5vT2JqZWN0ICAgICA9PiAxLAogICAgICAgICAgICBOb0VtYmVkICAgICAgPT4gMSwKICAgICAgICAgICAgTm9JbnRTcmNMb2FkID0+IDAsCiAgICAgICAgICAgIE5vRXh0U3JjTG9hZCA9PiAwLAogICAgICAgICAgICBOb0phdmFTY3JpcHQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHRha2UgdGhlIHNhZmUgY29udGVudCBpZiBuZWNjZXNzYXJ5CiAgICAgICAgaWYgKCAkU2FmZUNvbnRlbnR7UmVwbGFjZX0gKSB7CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2FmZUNvbnRlbnR7U3RyaW5nfTsKICAgICAgICB9CgogICAgICAgICMgZGV0ZWN0IGFsbCBwbGFpbiB0ZXh0IGxpbmtzIGFuZCBwdXQgdGhlbSBpbnRvIGFuIEhUTUwgPGE+IHRhZwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkRmllbGRDb250ZW50LAogICAgICAgICk7CgogICAgICAgICMgc2V0IHRhcmdldD0iX2JsYW5rIiBhdHRyaWJ1dGUgdG8gYWxsIEhUTUwgPGE+IHRhZ3MKICAgICAgICAjIHRoZSBMaW5rUXVvdGUgZnVuY3Rpb24gbmVlZHMgdG8gYmUgY2FsbGVkIGFnYWluCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIFRhcmdldEFkZCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBlc2NhcGUgc2luZ2xlIHF1b3RlcwogICAgICAgICRGaWVsZENvbnRlbnQgPX4gcy8nLyYjMzk7L2c7CgogICAgICAgICMgUmV0dXJuIGNvbXBsZXRlIEhUTUwgYXMgYW4gYXR0YWNobWVudC4KICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgRG93bmxvYWRBdHRhY2htZW50IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgbXkgJEZpbGVuYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwoKICAgICAgICAjIGNoZWNrIHBhcmFtCiAgICAgICAgaWYgKCAhJEZpbGVuYW1lICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnRmlsZW5hbWUgaXMgbmVlZGVkIScsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbiBhdHRhY2htZW50CiAgICAgICAgbXkgJERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbklELAogICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJERhdGEpICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpLiIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREYXRhKSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoICREYXRhLT4lKiApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIE5vIChrbm93bikgc3ViYWN0aW9uCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0ludmFsaWQgU3ViYWN0aW9uLicpLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/PublicITSMConfigItemZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKCiAgICAjIGNsZWFyIGFueSBhY3RpdmUgbG9naW4gdG8gZW5mb3JjZSBzZWN1cml0eQogICAgZGVsZXRlICRTZWxmLT57VXNlcklEfTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJFZlcnNpb25JRCAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UHVibGljRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UHVibGljUGVybWlzc2lvbigKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtWm9vbScpIC8vIHt9OwoKICAgIGlmICggISRDb25maWctPntWZXJzaW9uc0VuYWJsZWR9ICkgewogICAgICAgICRWZXJzaW9uSUQgPSB1bmRlZjsKICAgIH0KCiAgICAjIGdldCBjb250ZW50CiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKCiAgICAgICAgIyBhZGRpdGlvbmFsIHNhbml0eSBjaGVjayAtIFB1YmxpY1Blcm1pc3Npb24gc2hvdWxkIGhhbmRsZSB0aGlzIGNhc2UgdXN1YWxseQogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5QdWJsaWNFcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ0l0ZW0gbm90IGZvdW5kIScpLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgaW5jaWRlbnQgc2lnbmFsCiAgICBteSAlSW5jaVNpZ25hbHMgPSAoCiAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCd3YXJuaW5nJykgICAgID0+ICd5ZWxsb3dsZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnaW5jaWRlbnQnKSAgICA9PiAncmVkbGVkJywKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgY29sb3IgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJURlcGxTaWduYWxzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGxpc3Qgb2YgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgc2V0IGRlcGxveW1lbnQgc3R5bGUgY29sb3JzCiAgICBteSAkU3R5bGVDbGFzc2VzID0gJyc7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICgkQ29sb3IpID0gJFByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRDb2xvcjsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZQogICAgICAgIG15ICREZXBsU3RhdGUgPSAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgIyByZW1vdmUgYW55IG5vbiBhc2NpaSB3b3JkIGNoYXJhY3RlcnMKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBzdG9yZSB0aGUgb3JpZ2luYWwgZGVwbG95bWVudCBzdGF0ZSBhcyBrZXkKICAgICAgICAjIGFuZCB0aGUgc3Mgc2FmZSBjb3ZlcnRlZCBkZXBsb3ltZW50IHN0YXRlIGFzIHZhbHVlCiAgICAgICAgJERlcGxTaWduYWxzeyAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfSB9ID0gJ0NvbG9yJyAuICREZXBsU3RhdGU7CgogICAgICAgICMgY292ZXJ0IHRvIGxvd2VyIGNhc2UKICAgICAgICBteSAkRGVwbFN0YXRlQ29sb3IgPSBsYygkQ29sb3IpID1+IHMvW14wLTlhLWZdLy9tc2dyOwoKICAgICAgICAjIGFkZCB0byBzdHlsZSBjbGFzc2VzIHN0cmluZwogICAgICAgICRTdHlsZUNsYXNzZXMgLj0gIgogICAgICAgICAgICAuQ29sb3IkRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlciggVmFsdWUgPT4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9ICk7CgogICAgaWYgKCAkQ29uZmlnLT57R2VuZXJhbEluZm99ICkgewogICAgICAgIGlmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfXtOdW1iZXJ9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0Z1bGxTdWInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyID0+ICRDb25maWdJdGVtLT57TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgPT4gJENvbmZpZy0+e0dlbmVyYWxJbmZvfXtDbGFzc30gPyAkQ29uZmlnSXRlbS0+e0NsYXNzfSA6ICdDb25maWdJdGVtJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkQ29uZmlnLT57R2VuZXJhbEluZm99e0NsYXNzfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDbGFzc1N1YicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZUNvbG9yQ2xhc3N9ID0gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfTsKICAgICAgICAkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZUNvbG9yQ2xhc3N9ID0gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgIElORk86CiAgICAgICAgZm9yIG15ICRJbmZvIChxdy9EZXBsb3ltZW50U3RhdGUgSW5jaWRlbnRTdGF0ZSBDcmVhdGVkVGltZSBMYXN0Q2hhbmdlZFRpbWUvKSB7CiAgICAgICAgICAgIG5leHQgSU5GTyBpZiAhJENvbmZpZy0+e0dlbmVyYWxJbmZvfXskSW5mb307CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEluZm8sCiAgICAgICAgICAgICAgICBEYXRhID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUHVibGljQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljRnJvbnRlbmQ6Ok1vZHVsZScpIC8vIHt9IH07CiAgICBpZiAoICRQdWJsaWNBY3Rpb25ze1B1YmxpY0lUU01Db25maWdJdGVtfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdMaW5rJywKICAgICAgICApOwogICAgfQoKICAgICMgaWYgYSB2ZXJzaW9uIGFscmVhZHkgZXhpc3RzIChUT0RPOiBXaGVuIGRvZXMgaXQgbm90PykKICAgIGlmICggJENvbmZpZ0l0ZW0tPntOYW1lfSApIHsKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntEZWZpbml0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIG15IEBQYWdlczsKICAgICAgICBteSAkUGFnZVNob3duOwogICAgICAgIG15ICRQYWdlUmVxdWVzdGVkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1BhZ2UnICk7CiAgICAgICAgUEFHRToKICAgICAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CiAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgJFBhZ2UtPntJbnRlcmZhY2VzfTsKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnUHVibGljJyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwoKICAgICAgICAgICAgcHVzaCBAUGFnZXMsICRQYWdlOwoKICAgICAgICAgICAgaWYgKCAkUGFnZVJlcXVlc3RlZCAmJiAkUGFnZS0+e05hbWV9IGVxICRQYWdlUmVxdWVzdGVkICkgewogICAgICAgICAgICAgICAgJFBhZ2VTaG93biA9ICRQYWdlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkUGFnZVNob3duIC8vPSBAUGFnZXMgPyAkUGFnZXNbMF0gOiB1bmRlZjsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VzID09IDEgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUGFnZU5hbWUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgUGFnZU5hbWUgPT4gJFBhZ2VzWzBde05hbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvciBteSAkUGFnZSAoQFBhZ2VzKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdlTGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBhZ2VOYW1lICAgICA9PiAkUGFnZS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWQgICAgID0+ICRQYWdlLT57TmFtZX0gZXEgJFBhZ2VTaG93bi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoQFBhZ2VzKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtLT57RHluYW1pY0ZpZWxkSFRNTH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkR5bmFtaWNGaWVsZCcpLT5QYWdlUmVuZGVyKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgICAgICBQYWdlUmVmICAgID0+ICRQYWdlU2hvd24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgdmVyc2lvbiBsaXN0CiAgICAgICAgaWYgKCAkQ29uZmlnLT57VmVyc2lvbnNFbmFibGVkfSAmJiAkQ29uZmlnLT57VmVyc2lvbnNTZWxlY3RhYmxlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHZlcnNpb24gbGlzdAogICAgICAgICAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkQmFzZUxpbmsgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtWm9vbTsnCiAgICAgICAgICAgICAgICAgICAgLiAiQ29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTtQYWdlPVslIERhdGEuTmFtZSB8IHVyaSAlXTsiLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkUGFnZVNob3duID8gJFBhZ2VTaG93bi0+e05hbWV9IDogJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQFZlcnNpb25TZWxlY3Rpb25EYXRhID0gbWFwIHsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAoICRCYXNlTGluayAuICJWZXJzaW9uSUQ9JF8tPntWZXJzaW9uSUR9IiApLAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICgKICAgICAgICAgICAgICAgICAgICAgICAgIiRfLT57TmFtZX0gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoICRfLT57VmVyc2lvblN0cmluZ30gfHwgJF8tPntWZXJzaW9uSUR9ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIiAoJF8tPntDcmVhdGVUaW1lfSkiCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAkVmVyc2lvbkxpc3QtPkAqOwoKICAgICAgICAgICAgbXkgJFZlcnNpb25TZWxlY3Rpb24gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcQFZlcnNpb25TZWxlY3Rpb25EYXRhLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdWZXJzaW9uU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplIEFsaWduRHJvcGRvd25SaWdodCcsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFZlcnNpb25JRCA/ICRCYXNlTGluayAuICJWZXJzaW9uSUQ9JFZlcnNpb25JRCIgOiB1bmRlZiwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdWZXJzaW9ucycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZXJzaW9uU2VsZWN0aW9uID0+ICRWZXJzaW9uU2VsZWN0aW9uLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBpZiAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50cycsCiAgICAgICAgKTsKCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyBnZXQgdGhlIG1ldGFkYXRhIG9mIHRoZSBjdXJyZW50IGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRBdHRhY2htZW50RGF0YS0+e0ZpbGVuYW1lfSwKICAgICAgICAgICAgICAgICAgICBGaWxlc2l6ZSAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZXNpemV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgRG93bmxvYWRBdHRhY2htZW50CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgIyBnZXQgZGF0YSBmb3IgYXR0YWNobWVudAogICAgICAgIG15ICRGaWxlbmFtZSAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWxlbmFtZScgKTsKICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICk7CgogICAgICAgICMgcmV0dXJuIGVycm9yIGlmIGZpbGUgZG9lcyBub3QgZXhpc3QKICAgICAgICBpZiAoICEkQXR0YWNobWVudERhdGEgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEZpbGVuYW1lKSEiLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgJXskQXR0YWNobWVudERhdGF9LAogICAgICAgICAgICBUeXBlID0+ICdhdHRhY2htZW50JywKICAgICAgICApOwogICAgfQoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAkT3V0cHV0LAogICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbVpvb20nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSwKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyAgPT4gJFN0eWxlQ2xhc3NlcywKICAgICAgICAgICAgfSwKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/Dashboard/ITSMConfigItemGeneric.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OklUU01Db25maWdJdGVtR2VuZXJpYzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IFwlUGFyYW07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIHBhcmFtZXRlcnMKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWcgTmFtZSBVc2VySUQpKSB7CiAgICAgICAgZGllICJHb3Qgbm8gJE5lZWRlZCEiIGlmICggISRTZWxmLT57JE5lZWRlZH0gKTsKICAgIH0KCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBteSAkUmVtb3ZlRmlsdGVycyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdSZW1vdmVGaWx0ZXJzJyApIHx8ICRQYXJhbXtSZW1vdmVGaWx0ZXJzfSB8fCAwOwoKICAgICMgZ2V0IHNvcnRpbmcgcGFyYW1zCiAgICBmb3IgbXkgJEl0ZW0gKHF3KFNvcnRCeSBPcmRlckJ5KSkgewogICAgICAgICRTZWxmLT57JEl0ZW19ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEl0ZW0gKSB8fCAkUGFyYW17JEl0ZW19OwogICAgfQoKICAgICMgR2V0IGFkZCBmaWx0ZXJzIHBhcmFtLgogICAgJFNlbGYtPntBZGRGaWx0ZXJzfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdBZGRGaWx0ZXJzJyApIHx8ICRQYXJhbXtBZGRGaWx0ZXJzfSB8fCAwOwogICAgJFNlbGYtPntUYWJBY3Rpb259ICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWJBY3Rpb24nICkgIHx8ICRQYXJhbXtUYWJBY3Rpb259ICB8fCAwOwoKICAgICMgR2V0IHByZXZpb3VzIHNvcnRpbmcgY29sdW1uLgogICAgJFNlbGYtPntTb3J0aW5nQ29sdW1ufSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0aW5nQ29sdW1uJyApIHx8ICRQYXJhbXtTb3J0aW5nQ29sdW1ufTsKCiAgICAjIHNldCBmaWx0ZXIgc2V0dGluZ3MKICAgIGZvciBteSAkSXRlbSAocXcoQ29sdW1uRmlsdGVyIEdldENvbHVtbkZpbHRlciBHZXRDb2x1bW5GaWx0ZXJTZWxlY3QpKSB7CiAgICAgICAgJFNlbGYtPnskSXRlbX0gPSAkUGFyYW17JEl0ZW19OwogICAgfQoKICAgICMgc2F2ZSBjb2x1bW4gZmlsdGVycwogICAgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30gICAgICAgICA9ICdVc2VyRGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRmlsdGVycycgLiAkU2VsZi0+e05hbWV9OwogICAgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSA9ICdVc2VyRGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRmlsdGVyc1JlYWxLZXlzJyAuICRTZWxmLT57TmFtZX07CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRKU09OT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkVXNlck9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICBpZiAoJFJlbW92ZUZpbHRlcnMpIHsKICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSwKICAgICAgICAgICAgVmFsdWUgID0+ICcnLAogICAgICAgICk7CiAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSwKICAgICAgICAgICAgVmFsdWUgID0+ICcnLAogICAgICAgICk7CiAgICB9CgogICAgIyBqdXN0IGluIGNhc2UgbmV3IGZpbHRlciB2YWx1ZXMgYXJyaXZlCiAgICBlbHNpZiAoCiAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfSApCiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSApCiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29sdW1uRmlsdGVyfSApCiAgICAgICAgKQogICAgewoKICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlbW9TeXN0ZW0nKSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgaGFzIGZpbHRlciBwcmVmZXJlbmNlcyBmb3IgdGhpcyB3aWRnZXQKICAgICAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJFVzZXJPYmplY3QtPkdldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJENvbHVtblByZWZWYWx1ZXM7CiAgICAgICAgICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSB9ICkgewogICAgICAgICAgICAgICAgJENvbHVtblByZWZWYWx1ZXMgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgUFJFRlZBTFVFUzoKICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IGtleXMgJXsgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyRDb2x1bW59IGVxICdEZWxldGVGaWx0ZXInICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQ29sdW1uUHJlZlZhbHVlcy0+eyRDb2x1bW59OwogICAgICAgICAgICAgICAgICAgIG5leHQgUFJFRlZBTFVFUzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRDb2x1bW5QcmVmVmFsdWVzLT57JENvbHVtbn0gPSAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0tPnskQ29sdW1ufTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+ICRDb2x1bW5QcmVmVmFsdWVzICksCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNhdmUgcmVhbCBrZXkncyBuYW1lCiAgICAgICAgICAgIG15ICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXM7CiAgICAgICAgICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9IH0gKSB7CiAgICAgICAgICAgICAgICAkQ29sdW1uUHJlZlJlYWxLZXlzVmFsdWVzID0gJEpTT05PYmplY3QtPkRlY29kZSgKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBSRUFMS0VZVkFMVUVTOgogICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbHVtbkZpbHRlcn0gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUkVBTEtFWVZBTFVFUyBpZiAhJENvbHVtbjsKCiAgICAgICAgICAgICAgICBteSAkRGVsZXRlRmlsdGVyID0gMDsKICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSApICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJ0RlbGV0ZUZpbHRlcicgfSBAeyAkU2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkRGVsZXRlRmlsdGVyID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSApICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgIGFueSB7ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59LT57JF99IGVxICdEZWxldGVGaWx0ZXInIH0KICAgICAgICAgICAgICAgICAgICAgICAga2V5cyAleyAkU2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB9CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICREZWxldGVGaWx0ZXIgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJERlbGV0ZUZpbHRlcikgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQ29sdW1uUHJlZlJlYWxLZXlzVmFsdWVzLT57JENvbHVtbn07CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59OwogICAgICAgICAgICAgICAgICAgIG5leHQgUkVBTEtFWVZBTFVFUzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMtPnskQ29sdW1ufSA9ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+ICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgaGFzIGZpbHRlciBwcmVmZXJlbmNlcyBmb3IgdGhpcyB3aWRnZXQKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBjb2x1bW4gbmFtZXMgZnJvbSBQcmVmZXJlbmNlcwogICAgbXkgJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyczsKICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSB9ICkgewogICAgICAgICRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnMgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30gfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzKSB7CiAgICAgICAgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9ID0gJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyczsKICAgICAgICBteSBAQ29sdW1uRmlsdGVycyA9IGtleXMgJXskUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzfTsKICAgICAgICBmb3IgbXkgJEZpZWxkIChAQ29sdW1uRmlsdGVycykgewogICAgICAgICAgICAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0tPnsgJEZpZWxkIC4gJFNlbGYtPntOYW1lfSB9ID0gJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVycy0+eyRGaWVsZH07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNvbHVtbiByZWFsIG5hbWVzIGZyb20gUHJlZmVyZW5jZXMKICAgIG15ICRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnNSZWFsS2V5czsKICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9IH0gKSB7CiAgICAgICAgJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1JlYWxLZXlzID0gJEpTT05PYmplY3QtPkRlY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnNSZWFsS2V5c30gfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzUmVhbEtleXMpIHsKICAgICAgICBteSBAQ29sdW1uRmlsdGVyc1JlYWwgPSBrZXlzICV7JFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1JlYWxLZXlzfTsKICAgICAgICBmb3IgbXkgJEZpZWxkIChAQ29sdW1uRmlsdGVyc1JlYWwpIHsKICAgICAgICAgICAgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9LT57JEZpZWxkfSA9ICRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnNSZWFsS2V5cy0+eyRGaWVsZH07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGN1cnJlbnQgZmlsdGVyCiAgICBteSAkTmFtZSAgICAgICAgICAgICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICkgfHwgJyc7CiAgICBteSAkUHJlZmVyZW5jZXNLZXkgICAgICAgICAgID0gJ1VzZXJEYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWNGaWx0ZXInIC4gJFNlbGYtPntOYW1lfTsKICAgIG15ICRBZGRpdGlvbmFsUHJlZmVyZW5jZXNLZXkgPSAnVXNlckRhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpY0FkZGl0aW9uYWxGaWx0ZXInIC4gJFNlbGYtPntOYW1lfTsKICAgIGlmICggJFNlbGYtPntOYW1lfSBlcSAkTmFtZSApIHsKICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSAgICAgICAgICAgfHwgJyc7CiAgICAgICAgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdBZGRpdGlvbmFsRmlsdGVyJyApIHx8ICcnOwogICAgfQoKICAgICMgUmVtZW1iZXIgdGhlIHNlbGVjdGVkIGZpbHRlciBpbiB0aGUgc2Vzc2lvbi4KICAgIGlmICggJFNlbGYtPntGaWx0ZXJ9ICkgewoKICAgICAgICAjIHVwZGF0ZSBzZXNzaW9uCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICRQcmVmZXJlbmNlc0tleSwKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRQcmVmZXJlbmNlc0tleSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ID0gJFNlbGYtPnskUHJlZmVyZW5jZXNLZXl9IHx8ICRTZWxmLT57Q29uZmlnfS0+e0ZpbHRlcn0gfHwgJ0Fzc2lnbmVkVG9FbnRpdHknOwogICAgfQoKICAgICMgUmVtZW1iZXIgdGhlIHNlbGVjdGVkIGZpbHRlciBpbiB0aGUgc2Vzc2lvbi4KICAgIGlmICggJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSApIHsKCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkQWRkaXRpb25hbFByZWZlcmVuY2VzS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRBZGRpdGlvbmFsUHJlZmVyZW5jZXNLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ID0gJFNlbGYtPnskQWRkaXRpb25hbFByZWZlcmVuY2VzS2V5fSB8fCAkU2VsZi0+e0NvbmZpZ30tPntBZGRpdGlvbmFsRmlsdGVyfSB8fCAnQXNzaWduZWRUb0VudGl0eSc7CiAgICB9CgogICAgJFNlbGYtPntQcmVmS2V5U2hvd259ICAgPSAnVXNlckRhc2hib2FyZFByZWYnIC4gJFNlbGYtPntOYW1lfSAuICctU2hvd24nOwogICAgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gPSAnVXNlckRhc2hib2FyZFByZWYnIC4gJFNlbGYtPntOYW1lfSAuICctQ29sdW1ucyc7CiAgICAkU2VsZi0+e1BhZ2VTaG93bn0gICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+eyAkU2VsZi0+e1ByZWZLZXlTaG93bn0gfQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+e0xpbWl0fTsKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwoKICAgICMgaGFzaCB3aXRoIGFsbCB2YWxpZCBzb3J0YWJsZSBjb2x1bW5zICh0YWtlbiBmcm9tIElUU01Db25maWdJdGVtU2VhcmNoKQogICAgIyBTb3J0QnkgID0+ICdBZ2UnLCAgICMgQ3JlYXRlZHxOdW1iZXJ8Q2hhbmdlZHxOYW1lfERlcGxTdGF0ZXxDdXJEZXBsU3RhdGUKICAgICMgfEluY2lTdGF0ZXxDdXJJbmNpU3RhdGUKICAgICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9ID0gewogICAgICAgICdBZ2UnICAgICAgICAgID0+IDEsCiAgICAgICAgJ051bWJlcicgICAgICAgPT4gMSwKICAgICAgICAnTmFtZScgICAgICAgICA9PiAxLAogICAgICAgICdDcmVhdGVkJyAgICAgID0+IDEsCiAgICAgICAgJ0xhc3RDaGFuZ2VkJyAgPT4gMSwKICAgICAgICAnRGVwbFN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJEZXBsU3RhdGUnID0+IDEsCiAgICAgICAgJ0luY2lTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VySW5jaVN0YXRlJyA9PiAxLAogICAgfTsKCiAgICAjIGRlZmluZSBmaWx0ZXJhYmxlIGNvbHVtbnMKICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfSA9IHsKICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgIGlmICggJFNlbGYtPntDb25maWd9e0NvbmZpZ0l0ZW1LZXl9ICkgewogICAgICAgICRTZWxmLT57Q29uZmlnSXRlbUtleX0gPSAkU2VsZi0+e0NvbmZpZ317Q29uZmlnSXRlbUtleX07CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUHJlZmVyZW5jZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNvbmZpZ3VyZSBjb2x1bW5zCiAgICBteSBAQ29sdW1uc0VuYWJsZWQ7CiAgICBteSBAQ29sdW1uc0F2YWlsYWJsZTsKICAgIG15IEBDb2x1bW5zQXZhaWxhYmxlTm90RW5hYmxlZDsKCiAgICAjIGNoZWNrIGZvciBkZWZhdWx0IHNldHRpbmdzCiAgICBpZiAoCiAgICAgICAgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSApCiAgICAgICAgKQogICAgewogICAgICAgIEBDb2x1bW5zQXZhaWxhYmxlID0gZ3JlcCB7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfS0+eyRffSB9CiAgICAgICAgICAgIGtleXMgJXsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH07CiAgICAgICAgQENvbHVtbnNFbmFibGVkID0gZ3JlcCB7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfS0+eyRffSBlcSAnMicgfQogICAgICAgICAgICBzb3J0IHsgJFNlbGYtPl9EZWZhdWx0Q29sdW1uU29ydCgpIH0ga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZSB1c2VyIGhhcyBmaWx0ZXIgcHJlZmVyZW5jZXMgZm9yIHRoaXMgd2lkZ2V0CiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBKU09OIG9iamVjdAogICAgbXkgJEpTT05PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwoKICAgICMgaWYgcHJlZmVyZW5jZSBzZXR0aW5ncyBhcmUgYXZhaWxhYmxlLCB0YWtlIHRoZW0KICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9ICkgewoKICAgICAgICBteSAkQ29sdW1uc0VuYWJsZWQgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+eyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9LAogICAgICAgICk7CgogICAgICAgIEBDb2x1bW5zRW5hYmxlZCA9IGdyZXAgeyAkQ29sdW1uc0VuYWJsZWQtPntDb2x1bW5zfS0+eyRffSA9PSAxIH0KICAgICAgICAgICAga2V5cyAleyAkQ29sdW1uc0VuYWJsZWQtPntDb2x1bW5zfSB9OwoKICAgICAgICBpZiAoICRDb2x1bW5zRW5hYmxlZC0+e09yZGVyfSAmJiBAeyAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gfSApIHsKICAgICAgICAgICAgQENvbHVtbnNFbmFibGVkID0gQHsgJENvbHVtbnNFbmFibGVkLT57T3JkZXJ9IH07CiAgICAgICAgfQoKICAgICAgICAjIHJlbW92ZSBkdXBsaWNhdGUgY29sdW1ucwogICAgICAgIG15ICVVbmlxdWVDb2x1bW5zOwogICAgICAgIG15IEBDb2x1bW5zRW5hYmxlZEF1eDsKCiAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBDb2x1bW5zRW5hYmxlZCkgewogICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQENvbHVtbnNFbmFibGVkQXV4LCAkQ29sdW1uOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGZpbHRlcmVkIGNvbHVtbiBsaXN0CiAgICAgICAgQENvbHVtbnNFbmFibGVkID0gQENvbHVtbnNFbmFibGVkQXV4OwogICAgfQoKICAgIG15ICVDb2x1bW5zOwogICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCB7ICRhIGNtcCAkYiB9IEBDb2x1bW5zQXZhaWxhYmxlICkgewogICAgICAgICRDb2x1bW5ze0NvbHVtbnN9LT57JENvbHVtbk5hbWV9ID0gKCBncmVwIHsgJENvbHVtbk5hbWUgZXEgJF8gfSBAQ29sdW1uc0VuYWJsZWQgKSA/IDEgOiAwOwogICAgICAgIGlmICggbm9uZSB7ICRfIGVxICRDb2x1bW5OYW1lIH0gQENvbHVtbnNFbmFibGVkICkgewogICAgICAgICAgICBwdXNoIEBDb2x1bW5zQXZhaWxhYmxlTm90RW5hYmxlZCwgJENvbHVtbk5hbWU7CiAgICAgICAgfQogICAgfQoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBEZXNjICA9PiBUcmFuc2xhdGFibGUoJ1Nob3duIGNvbmZpZyBpdGVtcycpLAogICAgICAgICAgICBOYW1lICA9PiAkU2VsZi0+e1ByZWZLZXlTaG93bn0sCiAgICAgICAgICAgIEJsb2NrID0+ICdPcHRpb24nLAogICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICA1ICA9PiAnIDUnLAogICAgICAgICAgICAgICAgMTAgPT4gJzEwJywKICAgICAgICAgICAgICAgIDE1ID0+ICcxNScsCiAgICAgICAgICAgICAgICAyMCA9PiAnMjAnLAogICAgICAgICAgICAgICAgMjUgPT4gJzI1JywKICAgICAgICAgICAgICAgIDUwID0+ICc1MCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRTZWxmLT57UGFnZVNob3dufSwKICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRGVzYyAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1Nob3duIENvbHVtbnMnKSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSwKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnQWxsb2NhdGlvbkxpc3QnLAogICAgICAgICAgICBDb2x1bW5zICAgICAgICAgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXCVDb2x1bW5zICksCiAgICAgICAgICAgIENvbHVtbnNFbmFibGVkICAgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcQENvbHVtbnNFbmFibGVkICksCiAgICAgICAgICAgIENvbHVtbnNBdmFpbGFibGUgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcQENvbHVtbnNBdmFpbGFibGVOb3RFbmFibGVkICksCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgICAgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gQFBhcmFtczsKfQoKc3ViIENvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgaWYgZnJvbnRlbmQgbW9kdWxlIG9mIGxpbmsgaXMgdXNlZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ30tPntMaW5rfSAmJiAkU2VsZi0+e0NvbmZpZ30tPntMaW5rfSA9fiAvQWN0aW9uPSguKz8pKFsmO10uKz98KSQvICkgewogICAgICAgIG15ICRBY3Rpb24gPSAkMTsKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259ICkgewogICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntMaW5rfSA9ICcnOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gKAogICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAoKICAgICAgICAjIERvbid0IGNhY2hlIHRoaXMgZ2xvYmFsbHkgYXMgaXQgY29udGFpbnMgSlMgdGhhdCBpcyBub3QgaW5zaWRlIG9mIHRoZSBIVE1MLgogICAgICAgIENhY2hlVFRMID0+IHVuZGVmLAogICAgICAgIENhY2hlS2V5ID0+IHVuZGVmLAogICAgKTsKfQoKc3ViIEZpbHRlckNvbnRlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtGaWx0ZXJDb2x1bW59OwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17RmlsdGVyQ29sdW1ufTsKICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgaWYgKAogICAgICAgICMgVE9ETyBjaGVjawogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnT25seVZhbHVlc09uQ29uZmlnSXRlbScpCiAgICAgICAgKQogICAgewogICAgICAgIG15ICVTZWFyY2hQYXJhbXMgICAgICAgICAgICA9ICRTZWxmLT5fU2VhcmNoUGFyYW1zR2V0KCVQYXJhbSk7CiAgICAgICAgbXkgJUNvbmZpZ0l0ZW1TZWFyY2ggICAgICAgID0gJXsgJFNlYXJjaFBhcmFtc3tDb25maWdJdGVtU2VhcmNofSB9OwogICAgICAgIG15ICVDb25maWdJdGVtU2VhcmNoU3VtbWFyeSA9ICV7ICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbVNlYXJjaFN1bW1hcnl9IH07CgogICAgICAgICMgQWRkIHRoZSBhZGRpdGlvbmFsIGZpbHRlciB0byB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHBhcmFtLgogICAgICAgIGlmICggJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSApIHsKICAgICAgICAgICAgJUNvbmZpZ0l0ZW1TZWFyY2ggPSAoCiAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaCwKICAgICAgICAgICAgICAgICV7ICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiA9fiBtL15EeW5hbWljRmllbGRfLyAmJiAhZGVmaW5lZCAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gKSB7CgogICAgICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBjb2x1bW4gdmFsdWVzIGZvciB0byBidWlsZCB0aGUgZmlsdGVycyBsYXRlcgogICAgbXkgJENvbHVtblZhbHVlcyA9ICRTZWxmLT5fR2V0Q29sdW1uVmFsdWVzKAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBIZWFkZXJDb2x1bW4gICAgICAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICk7CgogICAgIyBtYWtlIHN1cmUgdGhhdCBldmVuIGEgdmFsdWUgb2YgMCBpcyBwYXNzZWQgYXMgYSBTZWxlY3RlZCB2YWx1ZSwgZS5nLiBVbmNoZWNrZWQgdmFsdWUgb2YgYQogICAgIyBjaGVjay1ib3ggZHluYW1pYyBmaWVsZC4KICAgIG15ICRTZWxlY3RlZFZhbHVlID0gZGVmaW5lZCAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0tPnsgJEhlYWRlckNvbHVtbiAuICRTZWxmLT57TmFtZX0gfQogICAgICAgID8gJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJ9LT57ICRIZWFkZXJDb2x1bW4gLiAkU2VsZi0+e05hbWV9IH0KICAgICAgICA6ICcnOwoKICAgIG15ICRMYWJlbENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRMYWJlbENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgJExhYmVsQ29sdW1uID1+IHN7XEEgRHluYW1pY0ZpZWxkXyB9e314bXM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkTGFiZWxDb2x1bW47CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAgICAgJExhYmVsQ29sdW1uID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICB9CiAgICB9CgogICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgIG15ICRDb2x1bW5GaWx0ZXJKU09OID0gJFNlbGYtPl9Db2x1bW5GaWx0ZXJKU09OKAogICAgICAgIENvbHVtbk5hbWUgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbENvbHVtbiwKICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufSwKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZFZhbHVlLAogICAgICAgIERhc2hib2FyZE5hbWUgPT4gJFNlbGYtPntOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDb2x1bW5GaWx0ZXJKU09OOwoKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVTZWFyY2hQYXJhbXMgICAgICAgICAgICA9ICRTZWxmLT5fU2VhcmNoUGFyYW1zR2V0KCVQYXJhbSk7CiAgICBteSBAQ29sdW1ucyAgICAgICAgICAgICAgICAgPSBAeyAkU2VhcmNoUGFyYW1ze0NvbHVtbnN9IH07CiAgICBteSAlQ29uZmlnSXRlbVNlYXJjaCAgICAgICAgPSAleyAkU2VhcmNoUGFyYW1ze0NvbmZpZ0l0ZW1TZWFyY2h9IH07CiAgICBteSAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgPSAleyAkU2VhcmNoUGFyYW1ze0NvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5fSB9OwoKICAgICMgZGVmaW5lIGluY2lkZW50IHNpZ25hbHMKICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICBUcmFuc2xhdGFibGUoJ29wZXJhdGlvbmFsJykgPT4gJ2dyZWVubGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCdpbmNpZGVudCcpICAgID0+ICdyZWRsZWQnLAogICAgKTsKCiAgICAjIHN0b3JlIGRlcGxveW1lbnQgc2lnbmFscwogICAgbXkgJURlcGxTaWduYWxzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGxpc3Qgb2YgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgc2V0IGRlcGxveW1lbnQgc3R5bGUgY29sb3JzCiAgICBteSAkU3R5bGVDbGFzc2VzID0gJyc7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJUdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBjb2xvciBpcyBkZWZpbmVkIGluIHByZWZlcmVuY2VzCiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfTsKCiAgICAgICAgbXkgKCRDb2xvcikgPSAkR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwoKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJENvbG9yOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvbnZlcnRlZCBkZXBsb3ltZW50IHN0YXRlIGFzIHZhbHVlCiAgICAgICAgJERlcGxTaWduYWxzeyAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfSB9ID0gJERlcGxTdGF0ZTsKCiAgICAgICAgIyBjb252ZXJ0IHRvIGxvd2VyIGNhc2UKICAgICAgICBteSAkRGVwbFN0YXRlQ29sb3IgPSBsYyAkQ29sb3IgPX4gcy9bXjAtOWEtZl0vL21zZ3I7CgogICAgICAgICMgYWRkIHRvIHN0eWxlIGNsYXNzZXMgc3RyaW5nCiAgICAgICAgJFN0eWxlQ2xhc3NlcyAuPSAiCiAgICAgICAgICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjJERlcGxTdGF0ZUNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgIjsKICAgIH0KCiAgICAjIHdyYXAgaW50byBzdHlsZSB0YWdzCiAgICBpZiAoJFN0eWxlQ2xhc3NlcykgewogICAgICAgICRTdHlsZUNsYXNzZXMgPSAiPHN0eWxlPiRTdHlsZUNsYXNzZXM8L3N0eWxlPiI7CiAgICB9CgogICAgbXkgJENhY2hlS2V5ICAgICA9IGpvaW4gJy0nLCAkU2VsZi0+e05hbWV9LCAkU2VsZi0+e0FjdGlvbn0sICRTZWxmLT57UGFnZVNob3dufSwgJFNlbGYtPntTdGFydEhpdH0sICRTZWxmLT57VXNlcklEfTsKICAgIG15ICRDYWNoZUNvbHVtbnMgPSBqb2luKAogICAgICAgICcsJywKICAgICAgICBtYXAgeyAkXyAuICc9PicgLiAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0tPnskX30gfSBzb3J0IGtleXMgJXsgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9IH0KICAgICk7CiAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJENhY2hlQ29sdW1ucyBpZiAkQ2FjaGVDb2x1bW5zOwoKICAgICMgSWYgU29ydEJ5IHBhcmFtZXRlciBpcyBub3QgZGVmaW5lZCwgc2V0IHRvIHZhbHVlIGZyb20gJUNvbmZpZ0l0ZW1TZWFyY2gsIG90aGVyd2lzZSBzZXQgdG8gZGVmYXVsdCB2YWx1ZSAnQWdlJy4KICAgIGlmICggIWRlZmluZWQgJFNlbGYtPntTb3J0Qnl9ICkgewogICAgICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9ICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gfSApIHsKICAgICAgICAgICAgJFNlbGYtPntTb3J0Qnl9ID0gJENvbmZpZ0l0ZW1TZWFyY2h7U29ydEJ5fTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57U29ydEJ5fSA9ICdBZ2UnOwogICAgICAgIH0KICAgIH0KCiAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJFNlbGYtPntTb3J0Qnl9IGlmIGRlZmluZWQgJFNlbGYtPntTb3J0Qnl9OwoKICAgICMgU2V0IE9yZGVyQnkgcGFyYW1ldGVyIHRvIHRoZSBzZWFyY2guCiAgICBteSAkSXNDYWNoZUZvclVzZSA9IDA7CiAgICBpZiAoICRTZWxmLT57T3JkZXJCeX0gKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAkU2VsZi0+e0FkZEZpbHRlcnN9CiAgICAgICAgICAgIHx8ICRTZWxmLT57VGFiQWN0aW9ufQogICAgICAgICAgICB8fCAhZGVmaW5lZCAkU2VsZi0+e1NvcnRpbmdDb2x1bW59CiAgICAgICAgICAgIHx8ICRTZWxmLT57U29ydGluZ0NvbHVtbn0gbmUgJFNlbGYtPntTb3J0Qnl9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9ID0gJFNlbGYtPntPcmRlckJ5fTsKICAgICAgICAgICAgJElzQ2FjaGVGb3JVc2UgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gPSAkU2VsZi0+e09yZGVyQnl9IGVxICdVcCcgPyAnRG93bicgOiAnVXAnOwogICAgICAgIH0KICAgIH0KCiAgICAjIFNldCBvcmRlciBmb3IgYmxvY2tzLgogICAgJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gPSAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSB8fCAnRG93bic7CgogICAgIyBTZXQgcHJldmlvdXMgc29ydGluZyBjb2x1bW4gcGFyYW1ldGVyIGZvciBhbGwgY29sdW1ucy4KICAgICRQYXJhbXtTb3J0aW5nQ29sdW1ufSA9ICRTZWxmLT57U29ydEJ5fTsKCiAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gaWYgZGVmaW5lZCAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fTsKCiAgICAjIEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXIgc2hvd3MgZGF0YSBwZXIgQ3VzdG9tZXJJRAogICAgaWYgKCAkUGFyYW17Q3VzdG9tZXJJRH0gKSB7CiAgICAgICAgJENhY2hlS2V5IC49ICctJyAuICRQYXJhbXtDdXN0b21lcklEfTsKICAgIH0KCiAgICAjIEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyIHNob3dzIGRhdGEgcGVyIEN1c3RvbWVyVXNlcklECiAgICBpZiAoICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgJENhY2hlS2V5IC49ICctJyAuICRQYXJhbXtDdXN0b21lclVzZXJJRH07CiAgICB9CgogICAgIyBBZGQgdGhlIGFkZGl0aW9uYWwgZmlsdGVyIGFsd2F5cyB0byB0aGUgY2FjaGUga2V5LCBpZiBhIGFkZGl0aW9uYWwgZmlsdGVyIGV4aXN0cy4KICAgIGlmICggJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfTsKICAgIH0KCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDb25maWdJdGVtSURzID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRGFzaGJvYXJkJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSAuICctJyAuICRTZWxmLT57RmlsdGVyfSAuICctTGlzdCcsCiAgICApOwoKICAgICMgZmluZCBhbmQgc2hvdyBjb25maWcgaXRlbSBsaXN0CiAgICBteSAkQ2FjaGVVc2VkID0gMTsKCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIGlmICggISRDb25maWdJdGVtSURzICkgewoKICAgICAgICAjIGFkZCBzb3J0IGJ5IHBhcmFtZXRlciB0byB0aGUgc2VhcmNoCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9IHx8ICEkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9IH0gKSB7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntTb3J0Qnl9ICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICRTZWxmLT57U29ydEJ5fSB9ICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2h7U29ydEJ5fSA9ICRTZWxmLT57U29ydEJ5fTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gPSAnQWdlJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENhY2hlVXNlZCA9ICRJc0NhY2hlRm9yVXNlID8gMSA6IDA7CgogICAgICAgIG15IEBDb25maWdJdGVtSURzQXJyYXk7CgogICAgICAgICMgVE9ETyB1bmRlcnN0YW5kCiAgICAgICAgaWYgKCAhJFNlbGYtPntDb25maWd9LT57SXNQcm9jZXNzV2lkZ2V0fSB8fCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57UHJvY2Vzc0xpc3R9ICkgKSB7CgogICAgICAgICAgICAjIENvcHkgb3JpZ2luYWwgY29sdW1uIGZpbHRlci4KICAgICAgICAgICAgbXkgJUNvbHVtbkZpbHRlciA9ICV7ICRTZWxmLT57Q29sdW1uRmlsdGVyfSB8fCB7fSB9OwoKICAgICAgICAgICAgIyBFeGVjdXRlIHNlYXJjaC4KICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICYmIElzSGFzaFJlZldpdGhEYXRhKCAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfSApICkgewoKICAgICAgICAgICAgICAgICMgaWYgY2xhc3NlcyBhcmUgZmlsdGVyZWQsIGFkanVzdCBzZWFyY2ggY29uZmlnIGFjY29yZGluZ2x5CiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW5GaWx0ZXJ7Q2xhc3NJRHN9ICkgewogICAgICAgICAgICAgICAgICAgIG15IEBGaWx0ZXJlZENsYXNzSURzOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ2xhc3NJRCAoICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9LT57Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyA9PSAkQ2xhc3NJRCB9ICRDb2x1bW5GaWx0ZXJ7Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEZpbHRlcmVkQ2xhc3NJRHMsICRDbGFzc0lEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9LT57Q2xhc3NJRHN9ID0gXEBGaWx0ZXJlZENsYXNzSURzOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICVDb21iaW5lZFNlYXJjaFBhcmFtcyA9ICgKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaCwKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfS0+JSosCiAgICAgICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgICAgICBMaW1pdCA9PiAkU2VsZi0+e1BhZ2VTaG93bn0gKyAkU2VsZi0+e1N0YXJ0SGl0fSAtIDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAkQ29tYmluZWRTZWFyY2hQYXJhbXN7U29ydEJ5fSBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRDb21iaW5lZFNlYXJjaFBhcmFtc3tTb3J0Qnl9ID0gJ0NoYW5nZWQnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgQENvbmZpZ0l0ZW1JRHNBcnJheSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgICAgICVDb21iaW5lZFNlYXJjaFBhcmFtcywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJENvbmZpZ0l0ZW1JRHMgPSBcQENvbmZpZ0l0ZW1JRHNBcnJheTsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkU3VtbWFyeSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXkgLiAnLVN1bW1hcnknLAogICAgKSAvLyB7fTsKCiAgICAjIElmIG5vIGNhY2hlIG9yIG5ldyBsaXN0IHJlc3VsdCwgZG8gY291bnQgbG9va3VwLgogICAgaWYgKCAhJFN1bW1hcnktPiUqIHx8ICEkQ2FjaGVVc2VkICkgewoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgKSB7CgogICAgICAgICAgICBuZXh0IFRZUEUgaWYgISRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXskVHlwZX07CgogICAgICAgICAgICAjIENvcHkgb3JpZ2luYWwgY29sdW1uIGZpbHRlci4KICAgICAgICAgICAgbXkgJUNvbHVtbkZpbHRlciA9ICV7ICRTZWxmLT57Q29sdW1uRmlsdGVyfSB8fCB7fSB9OwoKICAgICAgICAgICAgIyBMb29wIHRocm91Z2ggYWxsIGNvbHVtbiBmaWx0ZXIgZWxlbWVudHMuCiAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAlQ29sdW1uRmlsdGVyICkgewoKICAgICAgICAgICAgICAgICMgVmVyaWZ5IGlmIGN1cnJlbnQgY29sdW1uIGZpbHRlciBlbGVtZW50IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoCiAgICAgICAgICAgICAgICAjICAgc3VtbWFyeSwgdG8gZGVsZXRlIGl0IGZyb20gdGhlIGNvbHVtbiBmaWx0ZXIgaGFzaC4KICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSAmJiAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfXskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5GaWx0ZXJ7JEVsZW1lbnR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkU3VtbWFyeS0+eyRUeXBlfSA9IDA7CgogICAgICAgICAgICBpZiAoICEkU2VsZi0+e0NvbmZpZ30tPntJc1Byb2Nlc3NXaWRnZXR9IHx8IElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntQcm9jZXNzTGlzdH0gKSApIHsKCiAgICAgICAgICAgICAgICAjIEV4ZWN1dGUgc2VhcmNoLgogICAgICAgICAgICAgICAgbXkgJUNvbWJpbmVkU2VhcmNoUGFyYW1zID0gKAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQ09VTlQnLAogICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtU2VhcmNoLAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9LT4lKiwKICAgICAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggJENvbWJpbmVkU2VhcmNoUGFyYW1ze1NvcnRCeX0gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkQ29tYmluZWRTZWFyY2hQYXJhbXN7U29ydEJ5fSA9ICdDaGFuZ2VkJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRTdW1tYXJ5LT57JFR5cGV9ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAgICAgJUNvbWJpbmVkU2VhcmNoUGFyYW1zLAogICAgICAgICAgICAgICAgKSB8fCAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGNhY2hlCiAgICBpZiAoICEkQ2FjaGVVc2VkICYmICRTZWxmLT57Q29uZmlnfS0+e0NhY2hlVFRMTG9jYWx9ICkgewogICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAnRGFzaGJvYXJkJywKICAgICAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5IC4gJy1TdW1tYXJ5JywKICAgICAgICAgICAgVmFsdWUgPT4gJFN1bW1hcnksCiAgICAgICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q29uZmlnfS0+e0NhY2hlVFRMTG9jYWx9ICogNjAsCiAgICAgICAgKTsKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSAuICctJyAuICRTZWxmLT57RmlsdGVyfSAuICctTGlzdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntDYWNoZVRUTExvY2FsfSAqIDYwLAogICAgICAgICk7CiAgICB9CgogICAgIyBTZXQgdGhlIGNzcyBjbGFzcyBmb3IgdGhlIHNlbGVjdGVkIGZpbHRlciBhbmQgYWRkaXRpb25hbCBmaWx0ZXIuCiAgICAkU3VtbWFyeS0+eyAkU2VsZi0+e0ZpbHRlcn0gLiAnOjpTZWxlY3RlZCcgfSA9ICdTZWxlY3RlZCc7CiAgICBpZiAoICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gKSB7CiAgICAgICAgJFN1bW1hcnktPnsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSAuICc6OlNlbGVjdGVkJyB9ID0gJ1NlbGVjdGVkJzsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgYWRkIHBhZ2UgbmF2IGJhciAtIG9ubHkgcGFnaW5hdGlvbiBpcyBuZWVkZWQKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRmlsdGVyJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkU2VsZi0+e0NvbmZpZ30gfSwKICAgICAgICAgICAgTmFtZSA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAleyRTdW1tYXJ5fSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkVG90YWwgICAgICAgICAgICA9ICRTdW1tYXJ5LT57ICRTZWxmLT57RmlsdGVyfSB9IHx8IDA7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyICA9ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfSA/ICV7ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfSB9IDogKCk7CiAgICBteSAkQ29sdW1uRmlsdGVyTGluayA9ICcnOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQga2V5cyAlR2V0Q29sdW1uRmlsdGVyICkgewogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfTsKICAgICAgICAkQ29sdW1uRmlsdGVyTGluawogICAgICAgICAgICAuPSAnOycgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICdDb2x1bW5GaWx0ZXInIC4gJENvbHVtbk5hbWUgKQogICAgICAgICAgICAuICc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ICk7CiAgICB9CgogICAgbXkgJExpbmtQYWdlID0KICAgICAgICAnU3ViYWN0aW9uPUVsZW1lbnQ7TmFtZT0nIC4gJFNlbGYtPntOYW1lfQogICAgICAgIC4gJztGaWx0ZXI9JyAuICRTZWxmLT57RmlsdGVyfQogICAgICAgIC4gJztBZGRpdGlvbmFsRmlsdGVyPScgLiAoICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gIHx8ICcnICkKICAgICAgICAuICc7U29ydEJ5PScgLiAgICAgICAgICAgKCAkU2VsZi0+e1NvcnRCeX0gICAgICAgICAgICB8fCAnJyApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICAgICAgICAgICggJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gfHwgJycgKQogICAgICAgIC4gJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAuICc7JzsKCiAgICBpZiAoICRQYXJhbXtDdXN0b21lcklEfSApIHsKICAgICAgICAkTGlua1BhZ2UgLj0gIkN1c3RvbWVySUQ9JFBhcmFte0N1c3RvbWVySUR9OyI7CiAgICB9CiAgICBpZiAoICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgJExpbmtQYWdlIC49ICJDdXN0b21lclVzZXJJRD0kUGFyYW17Q3VzdG9tZXJVc2VySUR9OyI7CiAgICB9CgogICAgbXkgJVBhZ2VOYXYgPSAkTGF5b3V0T2JqZWN0LT5QYWdlTmF2QmFyKAogICAgICAgIFN0YXJ0SGl0ICAgID0+ICRTZWxmLT57U3RhcnRIaXR9LAogICAgICAgIFBhZ2VTaG93biAgID0+ICRTZWxmLT57UGFnZVNob3dufSwKICAgICAgICBBbGxIaXRzICAgICA9PiAkVG90YWwgfHwgMSwKICAgICAgICBBY3Rpb24gICAgICA9PiAnQWN0aW9uPScgLiAkTGF5b3V0T2JqZWN0LT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgQUpBWFJlcGxhY2UgPT4gJ0Rhc2hib2FyZCcgLiAkU2VsZi0+e05hbWV9LAogICAgICAgIElEUHJlZml4ICAgID0+ICdEYXNoYm9hcmQnIC4gJFNlbGYtPntOYW1lfSwKICAgICAgICBBSkFYICAgICAgICA9PiAkUGFyYW17QUpBWH0sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNGaWx0ZXJOYXZCYXInLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAleyAkU2VsZi0+e0NvbmZpZ30gfSwKICAgICAgICAgICAgTmFtZSA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgdGFibGUgaGVhZGVyCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlcicsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgIyByZW1vdmUgKC0pIGZyb20gbmFtZSBmb3IgSlMgY29uZmlnCiAgICBteSAkV2lkZ2V0TmFtZSA9ICRTZWxmLT57TmFtZX07CiAgICAkV2lkZ2V0TmFtZSA9fiBzey19e31nOwoKICAgICMgc2hvdyBub24tbGFiZWxlZCB0YWJsZSBoZWFkZXJzCiAgICBteSAkQ1NTID0gJyc7CgogICAgIyBTZW5kIGRhdGEgdG8gSlMgZm9yIGluaXQgY29udGFpbmVyLgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdJbml0Q29udGFpbmVyRGFzaGJvYXJkJyAuICRTZWxmLT57TmFtZX0sCiAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICBTb3J0QnkgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgT3JkZXJCeSA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdIZWFkZXJDb2x1bW4nIC4gJFdpZGdldE5hbWUsCiAgICAgICAgVmFsdWUgPT4gXEBDb2x1bW5zCiAgICApOwoKICAgICMgc2hvdyBhbGwgbmVlZGVkIGhlYWRlcnMKICAgIEhFQURFUkNPTFVNTjoKICAgIGZvciBteSAkSGVhZGVyQ29sdW1uIChAQ29sdW1ucykgewoKICAgICAgICBpZiAoICRIZWFkZXJDb2x1bW4gIX4gbXtcQSBEeW5hbWljRmllbGRffXhtcyApIHsKCiAgICAgICAgICAgICRDU1MgPSAnJzsKICAgICAgICAgICAgbXkgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRIZWFkZXJDb2x1bW4pOwoKICAgICAgICAgICAgIyBTZXQgdGl0bGUgZGVzY3JpcHRpb24uCiAgICAgICAgICAgIGlmICggJFNlbGYtPntTb3J0Qnl9ICYmICRTZWxmLT57U29ydEJ5fSBlcSAkSGVhZGVyQ29sdW1uICkgewogICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYyA9ICcnOwogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGNvbHVtbiBuYW1lIHRvIHdyaXRlIGl0IGluIHRoZSBjdXJyZW50IGxhbmd1YWdlCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdEZXBsU3RhdGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXJEZXBsU3RhdGUnIHx8ICRIZWFkZXJDb2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0luY2lTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnIHx8ICRIZWFkZXJDb2x1bW4gZXEgJ0N1ckluY2lTaWduYWwnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXJJbmNpU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0xhc3QgY2hhbmdlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRIZWFkZXJDb2x1bW4pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBzdXJyb3VuZGluZyBjb250YWluZXIKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gJiYgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9LT57JEhlYWRlckNvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICRIZWFkZXJDb2x1bW4gICB8fCAnJywKICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JEhlYWRlckNvbHVtbn0KICAgICAgICAgICAgICAgICYmICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBteSAkQ3NzOwoKICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgQ3NzICAgICAgICA9PiAkQ3NzLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5GaWx0ZXJTb3J0JyAuICRIZWFkZXJDb2x1bW4gLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgICA9PiAkUGFyYW17U29ydGluZ0NvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMganVzdCBmaWx0ZXJhYmxlCiAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JEhlYWRlckNvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgbXkgJENzczsKCiAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgIENzcyAgICAgICAgPT4gJENzcywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRIZWFkZXJDb2x1bW4gLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGp1c3Qgc29ydGFibGUKICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtblNvcnRhYmxlJyAuICRIZWFkZXJDb2x1bW4gLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0aW5nQ29sdW1uICAgID0+ICRQYXJhbXtTb3J0aW5nQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRHluYW1pYyBmaWVsZHMKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgbXkgJERGQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRERkNvbHVtbjsKCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbmV4dCBIRUFERVJDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgbXkgJENTUyAgICAgICAgICAgICA9ICcnOwogICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJExhYmVsOwogICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICBpZiAoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSAmJiBkZWZpbmVkICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKICAgICAgICAgICAgICAgICRDU1MgLj0gJ0ZpbHRlckFjdGl2ZSAnOwogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICMgZ2V0IGZpZWxkIHNvcnRhYmxlIGNvbmRpdGlvbgogICAgICAgICAgICBteSAkSXNTb3J0YWJsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCB0aXRsZQogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGFiZWw7CgogICAgICAgICAgICAjIGFkZCBzdXJyb3VuZGluZyBjb250YWluZXIKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJc1NvcnRhYmxlKSB7CiAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTb3J0Qnl9CiAgICAgICAgICAgICAgICAgICAgJiYgKCAkU2VsZi0+e1NvcnRCeX0gZXEgKCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gKSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgID0+ICRDU1MgICAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIGR5bmFtaWMgZmllbGQgaXMgc29ydGFibGUgYW5kIGZpbHRlcmFibGUgKHNvcnRhYmxlIGNoZWNrIHdhcyBtYWRlIGJlZm9yZSkKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbkZpbHRlclNvcnQnIC4gJER5bmFtaWNGaWVsZE5hbWUgLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICdBZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRpbmdDb2x1bW4gICAgPT4gJFBhcmFte1NvcnRpbmdDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgb3V0cHV0IHNvcnRhYmxlIGFuZCBmaWx0ZXJhYmxlIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZExhYmVsIHx8ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSB0aGUgZHluYW1pYyBmaWVsZCBpcyBvbmx5IHNvcnRhYmxlIChzb3J0YWJsZSBjaGVjayB3YXMgbWFkZSBiZWZvcmUpCiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5Tb3J0YWJsZScgLiAkRHluYW1pY0ZpZWxkTmFtZSAuICRXaWRnZXROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgICA9PiAkUGFyYW17U29ydGluZ0NvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgc29ydGFibGUgZHluYW1pYyBmaWVsZAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkTGFiZWwgfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpZiB0aGUgZHluYW1pYyBmaWVsZCB3YXMgbm90IHNvcnRhYmxlIChjaGVjayB3YXMgbWFkZSBhbmQgZmFpbCBiZWZvcmUpCiAgICAgICAgICAgICMgaXQgbWlnaHQgYmUgZmlsdGVyYWJsZQogICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJER5bmFtaWNGaWVsZE5hbWUgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgPT4gJENTUyAgICAgICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJER5bmFtaWNGaWVsZE5hbWUgLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgZmlsdGVyYWJsZSAobm90IHNvcnRhYmxlKSBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkTGFiZWwgfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgdGhlIGZpZWxkIGlzIG5vdCBmaWx0ZXJhYmxlIGFuZCBub3Qgc29ydGFibGUKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgID0+ICRDU1MgICAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgb3V0cHV0IHBsYWluIGR5bmFtaWMgZmllbGQgaGVhZGVyIChub3QgZmlsdGVyYWJsZSwgbm90IHNvcnRhYmxlKQogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRMYWJlbCB8fCAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgdGlja2V0cwogICAgbXkgJENvdW50ID0gMDsKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgJENvdW50Kys7CgogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRDb3VudCA8ICRTZWxmLT57U3RhcnRIaXR9OwoKICAgICAgICBteSAkQ29uZmlnSXRlbVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICApOwogICAgICAgIG15ICVDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1SZWYtPiUqOwoKICAgICAgICAjIHNldCBkZXBsb3ltZW50IGFuZCBpbmNpZGVudCBzaWduYWxzCiAgICAgICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFNpZ25hbH0gPSAkRGVwbFNpZ25hbHN7ICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZX0gfTsKICAgICAgICAkQ29uZmlnSXRlbXtDdXJJbmNpU2lnbmFsfSA9ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW17Q3VySW5jaVN0YXRlVHlwZX0gfTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISVDb25maWdJdGVtOwoKICAgICAgICAjIHNldCBhIGRlZmF1bHQgdGl0bGUgaWYgY29uZmlnIGl0ZW0gaGFzIG5vIHRpdGxlCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW17VGl0bGV9ICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbXtUaXRsZX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAnVGhpcyB0aWNrZXQgaGFzIG5vIHRpdGxlIG9yIHN1YmplY3QnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgY29uZmlnIGl0ZW0KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNSb3cnLAogICAgICAgICAgICBEYXRhID0+IFwlQ29uZmlnSXRlbSwKICAgICAgICApOwoKICAgICAgICAjIHNhdmUgY29sdW1uIGNvbnRlbnQKICAgICAgICBteSAkRGF0YVZhbHVlOwoKICAgICAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIHNob3cgYWxsIG5lZWRlZCBjb2x1bW5zCiAgICAgICAgQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNvbHVtbiAoQENvbHVtbnMpIHsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1Db2x1bW4gIX4gbXtcQSBEeW5hbWljRmllbGRffXhtcyApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdSb3cnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29uZmlnSXRlbUNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJEJsb2NrVHlwZSA9ICcnOwogICAgICAgICAgICAgICAgbXkgJENTU0NsYXNzICA9ICcnOwoKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ051bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29uZmlnSXRlbU51bWJlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkQ29uZmlnSXRlbXtOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uIGVxICdBZ2UnICkgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckFnZSgKICAgICAgICAgICAgICAgICAgICAgICAgQWdlICAgPT4gJENvbmZpZ0l0ZW17QWdlfSwKICAgICAgICAgICAgICAgICAgICAgICAgU3BhY2UgPT4gJyAnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnQ3VyRGVwbCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckluY2lTaWduYWwnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnQ3VySW5jaSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb25maWdJdGVtQ29sdW1uIGVxICdDcmVhdGVkJyApIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RpbWUnOwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXtDcmVhdGVUaW1lfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RpbWUnOwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXtDaGFuZ2VUaW1lfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnVGl0bGUnICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJDb250ZW50TGFyZ2VDb25maWdJdGVtVGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgPT4gIiREYXRhVmFsdWUgIiB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdob2xlVGl0bGUgPT4gIkR1bWIgdGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAkQ1NTQ2xhc3MgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiQ29udGVudExhcmdlQ29uZmlnSXRlbVNpZ25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgID0+ICRDb25maWdJdGVteyAkQmxvY2tUeXBlIC4gJ1N0YXRlJyB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmFsID0+ICRDb25maWdJdGVteyAkQmxvY2tUeXBlIC4gJ1NpZ25hbCcgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzICA9PiAkQ1NTQ2xhc3MgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljVmFsdWUgPT4gJERhdGFWYWx1ZSB8fCAnLScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRHluYW1pY0ZpZWxkTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH0KCiAgICAjIHNob3cgIm5vbmUiIGlmIG5vIGNvbmZpZyBpdGVtIGlzIGF2YWlsYWJsZQogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRHMgfHwgIUB7JENvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY05vbmUnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgcmVmcmVzaCB0aW1lCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKCiAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdXaWRnZXRSZWZyZXNoJyAuICRXaWRnZXROYW1lLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgTmFtZUhUTUwgICAgICAgPT4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICBSZWZyZXNoVGltZSAgICA9PiAkUmVmcmVzaCwKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRQYXJhbXtDdXN0b21lcklEfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBhY3RpdmUgZmlsdGVycyBhbmQgYWRkIGEgJ3JlbW92ZSBmaWx0ZXJzJyBidXR0b24gdG8gdGhlIHdpZGdldCBoZWFkZXIKICAgIG15ICRGaWx0ZXJBY3RpdmUgPSAwOwogICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSApICkgewogICAgICAgICRGaWx0ZXJBY3RpdmUgPSAxOwogICAgfQoKICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ1dpZGdldENvbnRhaW5lcicgLiAkV2lkZ2V0TmFtZSwKICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRQYXJhbXtDdXN0b21lcklEfSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFBhcmFte0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgRmlsdGVyQWN0aXZlICAgPT4gJEZpbHRlckFjdGl2ZSwKICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICdBZ2UnLAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgPT4gJFBhcmFte1NvcnRpbmdDb2x1bW59LAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAogICAgICAgICAgICBOYW1lID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICV7JFN1bW1hcnl9LAogICAgICAgICAgICBGaWx0ZXJWYWx1ZSAgICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICAgICAgQWRkaXRpb25hbEZpbHRlciA9PiAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9LAogICAgICAgICAgICBDdXN0b21lcklEICAgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEICAgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0sCiAgICAgICAgfSwKICAgICAgICBBSkFYID0+ICRQYXJhbXtBSkFYfSwKICAgICk7CgogICAgcmV0dXJuICRDb250ZW50Owp9CgpzdWIgX0luaXRpYWxDb2x1bW5GaWx0ZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtDb2x1bW5OYW1lfTsKICAgIHJldHVybiBpZiAhJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSB9OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfSB8fCAkUGFyYW17Q29sdW1uTmFtZX07CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJycsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgIG15ICRDbGFzcyA9ICdDb2x1bW5GaWx0ZXInOwogICAgaWYgKCAkUGFyYW17Q3NzfSApIHsKICAgICAgICAkQ2xhc3MgLj0gJyAnIC4gJFBhcmFte0Nzc307CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRQYXJhbXtDb2x1bW5OYW1lfSAuICRTZWxmLT57TmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwoKICAgICAgICAkQ29sdW1uRmlsdGVyVmFsdWVzeyRIZWFkZXJDb2x1bW59ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInKS0+JEZ1bmN0aW9uTmFtZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiAkQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgSGVhZGVyQ29sdW1uICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJEZpZWxkTmFtZSBuZSAkSGVhZGVyQ29sdW1uOwoKICAgICAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgICAgICAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgIG15ICRJc0ZpbHRyYWJsZSA9ICRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJElzRmlsdHJhYmxlOwoKICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JEhlYWRlckNvbHVtbn0gPSAkSXNGaWx0cmFibGU7CiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRDb25maWdJdGVtSURzKSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgaGlzdG9yaWNhbCB2YWx1ZXMgZm9yIHRoZSBmaWVsZAogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICRCYWNrZW5kT2JqZWN0LT5Db2x1bW5GaWx0ZXJWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzICAgICAgPT4gJENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgZ2V0IFBvc3NpYmxlVmFsdWVzCiAgICAgICAgICAgICAgICAkQ29sdW1uRmlsdGVyVmFsdWVzeyRIZWFkZXJDb2x1bW59ID0gJEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlQ29sdW1uRmlsdGVyVmFsdWVzOwp9CgojID1oZWFkMiBfQ29sdW1uRmlsdGVySlNPTigpCgojICAgICBjcmVhdGVzIGEgSlNPTiBzZWxlY3QgZmlsdGVyIGZvciBjb2x1bW4gaGVhZGVyCgojICAgICBteSAkQ29sdW1uRmlsdGVySlNPTiA9ICRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxPYmplY3QtPl9Db2x1bW5GaWx0ZXJKU09OKAojICAgICAgICAgQ29sdW1uTmFtZSA9PiAnUXVldWUnLAojICAgICAgICAgTGFiZWwgICAgICA9PiAnUXVldWUnLAojICAgICAgICAgQ29sdW1uVmFsdWVzID0+IHsKIyAgICAgICAgICAgICAxID0+ICdQb3N0TWFzdGVyJywKIyAgICAgICAgICAgICAyID0+ICdKdW5rJywKIyAgICAgICAgIH0sCiMgICAgICAgICBTZWxlY3RlZFZhbHVlICcxJywKIyAgICAgKTsKCiMgPWN1dAoKc3ViIF9Db2x1bW5GaWx0ZXJKU09OIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH07CiAgICAkTGFiZWwgPX4gc3sgXEEgRHluYW1pY0ZpZWxkXyB9e31neG1zOwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdEZWxldGVGaWx0ZXInLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlmICggJFBhcmFte0NvbHVtblZhbHVlc30gJiYgcmVmICRQYXJhbXtDb2x1bW5WYWx1ZXN9IGVxICdIQVNIJyApIHsKCiAgICAgICAgbXkgJVZhbHVlcyA9ICV7ICRQYXJhbXtDb2x1bW5WYWx1ZXN9IH07CgogICAgICAgICMgU2V0IHBvc3NpYmxlIHZhbHVlcy4KICAgICAgICBmb3IgbXkgJFZhbHVlS2V5ICggc29ydCB7IGxjICRWYWx1ZXN7JGF9IGNtcCBsYyAkVmFsdWVzeyRifSB9IGtleXMgJVZhbHVlcyApIHsKICAgICAgICAgICAgcHVzaCBAeyREYXRhfSwgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFZhbHVlS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlc3skVmFsdWVLZXl9LAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb25KU09OKAogICAgICAgIFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJFBhcmFte0NvbHVtbk5hbWV9IC4gJFBhcmFte0Rhc2hib2FyZE5hbWV9LAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICREYXRhLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNLZXknLAogICAgICAgICAgICAgICAgVHJlZVZpZXcgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1NlbGVjdGVkVmFsdWV9LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZSA9PiAnb2ZmJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gJEpTT047Cn0KCnN1YiBfU2VhcmNoUGFyYW1zR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgYWxsIHNlYXJjaCBiYXNlIGF0dHJpYnV0ZXMKICAgIG15ICVDb25maWdJdGVtU2VhcmNoOwogICAgbXkgJUR5bmFtaWNGaWVsZHNQYXJhbWV0ZXJzOwogICAgbXkgQFBhcmFtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9LT57QXR0cmlidXRlc307CgogICAgIyByZWFkIHVzZXIgcHJlZmVyZW5jZXMgYW5kIGNvbmZpZyB0byBnZXQgY29sdW1ucyB0aGF0CiAgICAjIHNob3VsZCBiZSBzaG93biBpbiB0aGUgZGFzaGJvYXJkIHdpZGdldCAodGhlIHByZWZlcmVuY2VzCiAgICAjIGhhdmUgcHJlY2VkZW5jZSkKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbHVtbiBuYW1lcyBmcm9tIFByZWZlcmVuY2VzCiAgICBteSAkUHJlZmVyZW5jZXNDb2x1bW4gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbnN9IH0sCiAgICApOwoKICAgICMgY2hlY2sgZm9yIGRlZmF1bHQgc2V0dGluZ3MKICAgIG15IEBDb2x1bW5zOwogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSApICkgewogICAgICAgIEBDb2x1bW5zID0gZ3JlcCB7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfS0+eyRffSBlcSAnMicgfQogICAgICAgICAgICBzb3J0IHsgJFNlbGYtPl9EZWZhdWx0Q29sdW1uU29ydCgpIH0ga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfTsKICAgIH0KICAgIGlmICgkUHJlZmVyZW5jZXNDb2x1bW4pIHsKICAgICAgICBpZiAoICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9ICYmICV7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9IH0gKSB7CiAgICAgICAgICAgIEBDb2x1bW5zID0gZ3JlcCB7CiAgICAgICAgICAgICAgICBkZWZpbmVkICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9LT57JF99CiAgICAgICAgICAgICAgICAgICAgJiYgJFByZWZlcmVuY2VzQ29sdW1uLT57Q29sdW1uc30tPnskX30gZXEgJzEnCiAgICAgICAgICAgIH0gc29ydCB7ICRTZWxmLT5fRGVmYXVsdENvbHVtblNvcnQoKSB9IGtleXMgJXsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH07CiAgICAgICAgfQogICAgICAgIGlmICggJFByZWZlcmVuY2VzQ29sdW1uLT57T3JkZXJ9ICYmIEB7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e09yZGVyfSB9ICkgewogICAgICAgICAgICBAQ29sdW1ucyA9IEB7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e09yZGVyfSB9OwogICAgICAgIH0KCiAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlIGNvbHVtbnMKICAgICAgICBteSAlVW5pcXVlQ29sdW1uczsKICAgICAgICBteSBAQ29sdW1uc0VuYWJsZWRBdXg7CgogICAgICAgIGZvciBteSAkQ29sdW1uIChAQ29sdW1ucykgewogICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQENvbHVtbnNFbmFibGVkQXV4LCAkQ29sdW1uOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGZpbHRlcmVkIGNvbHVtbiBsaXN0CiAgICAgICAgQENvbHVtbnMgPSBAQ29sdW1uc0VuYWJsZWRBdXg7CiAgICB9CgogICAgewoKICAgICAgICAjIGxvb3AgdGhyb3VnaCBhbGwgdGhlIGR5bmFtaWMgZmllbGRzIHRvIGdldCB0aGUgb25lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgIERZTkFNSUNGSUVMRE5BTUU6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lIChAQ29sdW1ucykgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEROQU1FIGlmICREeW5hbWljRmllbGROYW1lICF+IG17IER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgICMgcmVtb3ZlIGR5bmFtaWMgZmllbGQgcHJlZml4CiAgICAgICAgICAgIG15ICRGaWVsZE5hbWUgPSAkRHluYW1pY0ZpZWxkTmFtZTsKICAgICAgICAgICAgJEZpZWxkTmFtZSA9fiBzL0R5bmFtaWNGaWVsZF8vL2dpOwogICAgICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZEZpbHRlcn0tPnskRmllbGROYW1lfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICAgICBGaWVsZEZpbHRlciA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZEZpbHRlcn0gfHwge30sCiAgICApOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZ2V0IGZpbHRlcmFibGUgRHluYW1pYyBmaWVsZHMKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJElzRmlsdHJhYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBpZiB0aGUgZHluYW1pYyBmaWVsZCBpcyBmaWx0ZXJhYmxlIGFkZCBpdCB0byB0aGUgVmFsaWRGaWx0cmFibGVDb2x1bW5zIGhhc2gKICAgICAgICBpZiAoJElzRmlsdHJhYmxlKSB7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHNvcnRhYmxlIER5bmFtaWMgZmllbGRzCiAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRJc1NvcnRhYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1NvcnRhYmxlJywKICAgICAgICApOwoKICAgICAgICAjIGlmIHRoZSBkeW5hbWljIGZpZWxkIGlzIHNvcnRhYmxlIGFkZCBpdCB0byB0aGUgVmFsaWRTb3J0YWJsZUNvbHVtbnMgaGFzaAogICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIFNUUklORzoKICAgIGZvciBteSAkU3RyaW5nIChAUGFyYW1zKSB7CiAgICAgICAgbmV4dCBTVFJJTkcgaWYgISRTdHJpbmc7CiAgICAgICAgbXkgKCAkS2V5LCAkVmFsdWUgKSA9IHNwbGl0IC89LywgJFN0cmluZzsKCiAgICAgICAgIyBwdXNoIEFSUkFZUkVGIGF0dHJpYnV0ZXMgZGlyZWN0bHkgaW4gYW4gQVJSQVlSRUYKICAgICAgICBpZiAoCiAgICAgICAgICAgICRLZXkKICAgICAgICAgICAgPX4gL14oU3RhdGVUeXBlfFN0YXRlVHlwZUlEc3xTdGF0ZXN8U3RhdGVJRHN8QXJjaGl2ZUZsYWdzfENyZWF0ZWRVc2VySURzfENyZWF0ZWRTdGF0ZXN8Q3JlYXRlZFN0YXRlSURzKSQvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIGlmICggJFZhbHVlID1+IG17LH1zbXggKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9IH0sIHNwbGl0KCAvLC8sICRWYWx1ZSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSB9LCAkVmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgcGFyYW1ldGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgY2FwdHVyZSBkeW5hbWljIGZpZWxkIG5hbWUgKHdpdGggRHluYW1pY0ZpZWxkXykKICAgICAgICAjIGluICQxIGFuZCB0aGUgT3BlcmF0b3IgaW4gJDIKICAgICAgICAjIHBvc3NpYmxlIER5bmFtaWMgRmllbGRzIG9wdGlvbnMgaW5jbHVkZToKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX0VxdWFscz0xMjM7CiAgICAgICAgIyAgIER5bmFtaWNGaWVsZF9OYW1lWF9MaWtlPXZhbHVlKjsKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX0dyZWF0ZXJUaGFuPTIwMDEtMDEtMDEgMDE6MDE6MDE7CiAgICAgICAgIyAgIER5bmFtaWNGaWVsZF9OYW1lWF9HcmVhdGVyVGhhbkVxdWFscz0yMDAxLTAxLTAxIDAxOjAxOjAxOwogICAgICAgICMgICBEeW5hbWljRmllbGRfTmFtZVhfU21hbGxlclRoYW49MjAwMi0wMi0wMiAwMjowMjowMjsKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX1NtYWxsZXJUaGFuRXF1YWxzPTIwMDItMDItMDIgMDI6MDI6MDI7CiAgICAgICAgZWxzaWYgKCAkS2V5ID1+IG17XEEgKER5bmFtaWNGaWVsZF8uKz8pIF8gKC4rPykgXHp9c3htICkgewogICAgICAgICAgICBwdXNoIEB7ICREeW5hbWljRmllbGRzUGFyYW1ldGVyc3skMX0tPnskMn0gfSwgJFZhbHVlOwogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAhZGVmaW5lZCAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSApIHsKCiAgICAgICAgICAgICMgY2hhbmdlIHNvcnQgYnksIGlmIG5lZWRlZAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkS2V5IGVxICdTb3J0QnknCiAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1NvcnRCeX0KICAgICAgICAgICAgICAgICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICRTZWxmLT57U29ydEJ5fSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICRTZWxmLT57U29ydEJ5fTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRLZXkgZXEgJ1NvcnRCeScgJiYgISRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JFZhbHVlfSApIHsKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICdBZ2UnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoeyRLZXl9ID0gJFZhbHVlOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICFyZWYgJENvbmZpZ0l0ZW1TZWFyY2h7JEtleX0gKSB7CiAgICAgICAgICAgIG15ICRWYWx1ZVRtcCA9ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9OwogICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSA9IFskVmFsdWVUbXBdOwogICAgICAgICAgICBwdXNoIEB7ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9IH0sICRWYWx1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQHsgJENvbmZpZ0l0ZW1TZWFyY2h7JEtleX0gfSwgJFZhbHVlOwogICAgICAgIH0KICAgIH0KICAgICVDb25maWdJdGVtU2VhcmNoID0gKAogICAgICAgICVDb25maWdJdGVtU2VhcmNoLAogICAgICAgICVEeW5hbWljRmllbGRzUGFyYW1ldGVycywKCiAgICAgICAgIyBUT0RPIGNoZWNrIGlmIHBlcm1pc3Npb24gaXMgbmVlZGVkCiAgICAgICAgUGVybWlzc2lvbiA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSB8fCAncm8nLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnk7CiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcicgKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ0l0ZW1LZXl9ICkgewogICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgPSAoCiAgICAgICAgICAgICAgICBBc3NpZ25lZFRvRW50aXR5ID0+IHsKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyRTZWxmLT57Q29uZmlnSXRlbUtleX0iID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0gLy8gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcicgKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ0l0ZW1LZXl9ICkgewogICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgPSAoCiAgICAgICAgICAgICAgICBBc3NpZ25lZFRvRW50aXR5ID0+IHsKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyRTZWxmLT57Q29uZmlnSXRlbUtleX0iID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQYXJhbXtDdXN0b21lcklEfSAvLyB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfXtTaG93bkNsYXNzZXN9ICkgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CiAgICAgICAgbXkgJVJldmVydGVkQ2xhc3NMaXN0ID0gcmV2ZXJzZSAkQ2xhc3NMaXN0LT4lKjsKCiAgICAgICAgbXkgQENsYXNzSURzOwogICAgICAgIGZvciBteSAkQ2xhc3NOYW1lICggJFNlbGYtPntDb25maWd9e1Nob3duQ2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICBpZiAoICRSZXZlcnRlZENsYXNzTGlzdHskQ2xhc3NOYW1lfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQENsYXNzSURzLCAkUmV2ZXJ0ZWRDbGFzc0xpc3R7JENsYXNzTmFtZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXtBc3NpZ25lZFRvRW50aXR5fXtDbGFzc0lEc30gPSBcQENsYXNzSURzOwogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgQ29sdW1ucyAgICAgICAgICAgICAgICAgPT4gXEBDb2x1bW5zLAogICAgICAgIENvbmZpZ0l0ZW1TZWFyY2ggICAgICAgID0+IFwlQ29uZmlnSXRlbVNlYXJjaCwKICAgICAgICBDb25maWdJdGVtU2VhcmNoU3VtbWFyeSA9PiBcJUNvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5LAogICAgKTsKfQoKc3ViIF9EZWZhdWx0Q29sdW1uU29ydCB7CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIEN1ckRlcGxTaWduYWwgPT4gMTEwLAogICAgICAgIEN1ckluY2lTaWduYWwgPT4gMTExLAogICAgICAgIENsYXNzICAgICAgICAgPT4gMTEyLAogICAgICAgIE51bWJlciAgICAgICAgPT4gMTEzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gMTE0LAogICAgICAgIEN1ckRlcGxTdGF0ZSAgPT4gMTE1LAogICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gMTE2LAogICAgICAgIExhc3RDaGFuZ2VkICAgPT4gMTE3LAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGNhbiBub3QgYmUgb24gdGhlIERlZmF1bHRDb2x1bW5zIHNvcnRpbmcgaGFzaAogICAgIyB3aGVuIGNvbXBhcmluZyAyIGR5bmFtaWMgZmllbGRzIHNvcnRpbmcgbXVzdCBiZSBhbHBoYWJldGljYWwKICAgIGlmICggISREZWZhdWx0Q29sdW1uc3skYX0gJiYgISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuICRhIGNtcCAkYjsKICAgIH0KCiAgICAjIHdoZW4gYSBkeW5hbWljIGZpZWxkIGlzIGNvbXBhcmVkIHRvIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGl0IG11c3QgYmUgaGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgd2hlbiBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmllbGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwgY29tcGFyaXNvbiB3aXRoIHRoZSBjb25maWcgaXRlbSBhdHRyaWJ1dGVzCiAgICByZXR1cm4gJERlZmF1bHRDb2x1bW5zeyRhfSA8PT4gJERlZmF1bHRDb2x1bW5zeyRifTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/Elasticsearch/ElasticsearchConfigItemGeneric.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpFbGFzdGljc2VhcmNoOjpFbGFzdGljc2VhcmNoQ29uZmlnSXRlbUdlbmVyaWM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RWxhc3RpY3NlYXJjaDo6RWxhc3RpY3NlYXJjaEdlbmVyaWMpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJFNlYXJjaE9iamVjdHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0VsYXN0aWNzZWFyY2g6OlF1aWNrU2VhcmNoU2hvdycpOwogICAgbXkgJExheW91dE9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJEVTU2VhcmNoUXVlcnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRnVsbHRleHRFUycgKSB8fCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQWRkaXRpb25hbEZpbHRlcicgKTsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPl9FbGFzdGljU2VhcmNoQ29uZmlnSXRlbXMoCiAgICAgICAgUXVlcnkgPT4gJEVTU2VhcmNoUXVlcnksCiAgICApOwoKICAgIGlmICggJFJlc3VsdC0+e1RvdGFsQ29uZmlnSXRlbUNvdW50fSA9PSAwICkgewogICAgICAgIHJldHVybiAnJzsKICAgIH0KCiAgICBteSBAQ29sdW1ucyA9ICRTZWFyY2hPYmplY3RzLT57Q29uZmlnSXRlbX0tPntBdHRyaWJ1dGVzfS0+QCo7CgogICAgJFNlbGYtPlNob3dQYWdpbmF0aW9uKAogICAgICAgIEVTU2VhcmNoUXVlcnkgPT4gJEVTU2VhcmNoUXVlcnksCiAgICAgICAgSXRlbXNQZXJQYWdlICA9PiAkU2VsZi0+e1BhZ2VTaG93bn0gfHwgJFNlYXJjaE9iamVjdHMtPntDb25maWdJdGVtfXtDb3VudH0sCiAgICAgICAgVG90YWxSZXN1bHRzICA9PiAkUmVzdWx0LT57VG90YWxDb25maWdJdGVtQ291bnR9LAogICAgICAgIEFKQVggICAgICAgICAgPT4gJFBhcmFte0FKQVh9LAogICAgKTsKCiAgICAkU2VsZi0+U2hvd0hlYWRlcnMoCiAgICAgICAgQ29sdW1ucyAgICAgICAgID0+IFxAQ29sdW1ucywKICAgICAgICBBdHRyaWJ1dGVIZWFkZXIgPT4gJFNlYXJjaE9iamVjdHMtPntDb25maWdJdGVtfS0+e0F0dHJpYnV0ZUhlYWRlcn0sCiAgICAgICAgU29ydENvbHVtbiAgICAgID0+ICcnLAogICAgKTsKCiAgICAjIHNob3cgY29uZmlnIGl0ZW1zCiAgICBteSAkQ291bnQgPSAwOwoKICAgIENPTkZJR0lURU06CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW0gKCAkUmVzdWx0LT57Q29uZmlnSXRlbXN9LT5AKiApIHsKCiAgICAgICAgJENvdW50Kys7CgogICAgICAgIG15ICggJENvbmZpZ0l0ZW1JRCwgJENvbmZpZ0l0ZW1QYXJhbSApID0gKCAleyRDb25maWdJdGVtfSApOwoKICAgICAgICAjIHNob3cgY29uZmlnIGl0ZW0KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRWxhc3RpY1NlYXJjaFJlc3VsdEdlbmVyaWNSb3cnLAogICAgICAgICAgICBEYXRhID0+ICRDb25maWdJdGVtUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIGNvbHVtbiBjb250ZW50CiAgICAgICAgbXkgJERhdGFWYWx1ZTsKCiAgICAgICAgIyBzaG93IGFsbCBuZWVkZWQgY29sdW1ucwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbHVtbnMpIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdFbGFzdGljU2VhcmNoUmVzdWx0R2VuZXJpY1RpY2tldENvbHVtbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJEJsb2NrVHlwZSA9ICJFbGFzdGljU2VhcmNoUmVzdWx0R2VuZXJpY0NvbmZpZ0l0ZW0iOwoKICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVtUGFyYW0tPnskQ29sdW1ufTsKCiAgICAgICAgICAgICRCbG9ja1R5cGUgPSAiRWxhc3RpY1NlYXJjaFJlc3VsdEdlbmVyaWNDb25maWdJdGVtIjsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkQmxvY2tUeXBlLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJy0nLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnRWxhc3RpY3NlYXJjaFJlc3VsdEdlbmVyaWMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgQWRkaXRpb25hbEZpbHRlclZhbHVlID0+ICRFU1NlYXJjaFF1ZXJ5LAogICAgICAgIH0sCiAgICAgICAgQUpBWCA9PiAkUGFyYW17QUpBWH0sCiAgICApOwoKICAgIHJldHVybiAkQ29udGVudDsKfQoKc3ViIF9FbGFzdGljU2VhcmNoQ29uZmlnSXRlbXMgewoKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFF1ZXJ5ID0gJFBhcmFte1F1ZXJ5fTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkRVNPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbGFzdGljc2VhcmNoJyk7CiAgICBteSAkU2VhcmNoT2JqZWN0cyA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6UXVpY2tTZWFyY2hTaG93Jyk7CgogICAgIyBnZXQgb2JqZWN0cwogICAgbXkgJVJlc3VsdCA9ICgKICAgICAgICBDb25maWdJdGVtcyAgICAgICAgICA9PiBbXSwKICAgICAgICBUb3RhbENvbmZpZ0l0ZW1Db3VudCA9PiAwLAogICAgKTsKCiAgICBpZiAoICEkUXVlcnkgKSB7CiAgICAgICAgcmV0dXJuIFwlUmVzdWx0OwogICAgfQoKICAgIGlmICggJFNlYXJjaE9iamVjdHMtPntDb25maWdJdGVtfSAmJiAkU2VhcmNoT2JqZWN0cy0+e0NvbmZpZ0l0ZW19e0NvdW50fSApIHsKCiAgICAgICAgbXkgJFNlYXJjaFJlc3VsdCA9ICRFU09iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgRnVsbHRleHQgPT4gJFF1ZXJ5LAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIExpbWl0ICAgID0+ICRTZWxmLT57UGFnZVNob3dufSB8fCAkU2VhcmNoT2JqZWN0cy0+e0NvbmZpZ0l0ZW19e0NvdW50fSwKICAgICAgICAgICAgRnJvbSAgICAgPT4gJFNlbGYtPntTdGFydEhpdH0gLSAxLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnRlVMTCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1zID0gJFNlYXJjaFJlc3VsdC0+e0RhdGF9LT5AKjsKICAgICAgICAkUmVzdWx0e0NvbmZpZ0l0ZW1zfSAgICAgICAgICA9IFxAQ29uZmlnSXRlbXM7CiAgICAgICAgJFJlc3VsdHtUb3RhbENvbmZpZ0l0ZW1Db3VudH0gPSAkU2VhcmNoUmVzdWx0LT57VG90YWx9IC8vIDA7CiAgICB9CgogICAgcmV0dXJuIFwlUmVzdWx0Owp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/DynamicField.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIFRPRE86IE1heWJlIHJlbmFtZSB0byBBZ2VudFpvb20gb3Igc2ltaWxhcgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6RHluYW1pY0ZpZWxkOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoYW55IGZpcnN0KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzSGFzaFJlZldpdGhEYXRhIElzQXJyYXlSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkR5bmFtaWNGaWVsZCAtIGNvbmZpZ2l0ZW0gc3BlY2lmaWMgZHluYW1pYyBmaWVsZCBvdXRwdXQKCj1oZWFkMSBERVNDUklQVElPTgoKRnVuY3Rpb25zIHRvIGdlbmVyYXRlIER5bmFtaWNGaWVsZCBIVE1MIGZvciBDb25maWdJdGVtcwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGEgRHluYW1pY0ZpZWxkT3V0cHV0IG9iamVjdC4gRG8gbm90IHVzZSBpdCBkaXJlY3RseSwgaW5zdGVhZCB1c2U6CgogICAgbXkgJER5bmFtaWNGaWVsZE91dHB1dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6RHluYW1pY0ZpZWxkJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGJsZXNzIHt9LCAkVHlwZTsKfQoKPWhlYWQyIFBhZ2VSZW5kZXIoKQoKUmV0dXJucyB0aGUgSFRNTCBmb3IgYSBwYWdlIG9mIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCgogICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkRHluYW1pY0ZpZWxkT3V0cHV0T2JqZWN0KAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbiwKICAgICAgICBQYWdlUmVmICAgID0+ICRQYWdlLCAgICAgICAgIyBlaXRoZXIgUGFnZVJlZiBvciBQYWdlIGlzIHJlcXVpcmVkCiAgICAgICAgUGFnZSAgICAgICA9PiAnTmFtZScsCiAgICApOwoKPWN1dAoKc3ViIFBhZ2VSZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIENoZWNrIG5lZWRlZCBzdHVmZi4KICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtIERlZmluaXRpb24pKSB7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJFBhcmFte0RlZmluaXRpb259e0RlZmluaXRpb25SZWZ9OwogICAgbXkgJFBhZ2UgICAgICAgICAgPSAkUGFyYW17UGFnZVJlZn0gLy8gZmlyc3QgeyAkXy0+e05hbWV9IGVxICRQYXJhbXtQYWdlfSB9ICREZWZpbml0aW9uUmVmLT57UGFnZXN9LT5AKjsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRQYWdlKSB8fCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFnZS0+e0NvbnRlbnR9ICkgKSB7CiAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9IGRlZmluZWQgJFBhcmFte1BhZ2VSZWZ9CiAgICAgICAgICAgID8gJ1BhZ2VSZWYgbm90IHZhbGlkLicKICAgICAgICAgICAgOiAkUGFyYW17UGFnZX0gPyAiUGFnZSAkUGFyYW17UGFnZX0gbm90IHZhbGlkIGZvciBEZWZpbml0aW9uSUQgJFBhcmFte0RlZmluaXRpb259e0RlZmluaXRpb25JRH0gb2YgY2xhc3MgJFBhcmFte0RlZmluaXRpb259e0NsYXNzfS4iCiAgICAgICAgICAgIDogICAgICAgICAgICAgICAgJ05lZWQgUGFnZSBvciBQYWdlUmVmISc7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkRXJyb3JNZXNzYWdlLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlTGF5b3V0OwogICAgaWYgKCAkUGFnZS0+e0xheW91dH0gKSB7CiAgICAgICAgJExheW91dHtDb2x1bW5zfSA9ICRQYWdlLT57TGF5b3V0fXtDb2x1bW5zfSA/IGludCggJFBhZ2UtPntMYXlvdXR9e0NvbHVtbnN9ICkgOiAxOwoKICAgICAgICAjIGJhc2ljIGNvcnJlY3Rpb25zIGZvciBncmlkLXRlbXBsYXRlLXJvd3MKICAgICAgICBteSBAV2lkdGhzID0gJFBhZ2UtPntMYXlvdXR9e0NvbHVtbldpZHRofSA/ICggJFBhZ2UtPntMYXlvdXR9e0NvbHVtbldpZHRofSA9fiAvKFtcZFwuXSpcdyspL2cgKSA6ICgpOwoKICAgICAgICBpZiAoIEBXaWR0aHMgPCAkTGF5b3V0e0NvbHVtbnN9ICkgewogICAgICAgICAgICBwdXNoIEBXaWR0aHMsICgnMWZyJykgeCAoICRMYXlvdXR7Q29sdW1uc30gLSBAV2lkdGhzICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0e1dpZHRoc30gPSBqb2luKCAnICcsIEBXaWR0aHNbIDAgLi4gJExheW91dHtDb2x1bW5zfSAtIDEgXSApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJUxheW91dCA9ICgKICAgICAgICAgICAgQ29sdW1ucyA9PiAxLAogICAgICAgICAgICBXaWR0aHMgID0+ICcxZnInLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICB7CiAgICAgICAgbXkgJFNlY3Rpb25zID0gJERlZmluaXRpb25SZWYtPntTZWN0aW9uc30gLy8ge307CiAgICAgICAgbXkgJUtleVRvQ3NzID0gcXcvUm93IHJvdyBDb2x1bW4gY29sdW1uLzsKCiAgICAgICAgQ09OVEVOVEJMT0NLOgogICAgICAgIGZvciBteSAkQ29udGVudEJsb2NrICggJFBhZ2UtPntDb250ZW50fS0+QCogKSB7CgogICAgICAgICAgICAjIFRoZSByb2xlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIG5hbWUKICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkU2VjdGlvbnMtPnsgJENvbnRlbnRCbG9jay0+e1NlY3Rpb259IH07CgogICAgICAgICAgICBuZXh0IENPTlRFTlRCTE9DSyB1bmxlc3MgJFNlY3Rpb247CgogICAgICAgICAgICBteSAkR3JpZEFyZWE7CiAgICAgICAgICAgIGZvciBteSAkS2V5IChxdy9Sb3cgQ29sdW1uLykgewogICAgICAgICAgICAgICAgaWYgKCAkQ29udGVudEJsb2NrLT57ICRLZXkgLiAnU3RhcnQnIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEdyaWRBcmVhIC49ICdncmlkLScgLiAkS2V5VG9Dc3N7JEtleX0gLiAnLXN0YXJ0OicgLiBpbnQoICRDb250ZW50QmxvY2stPnsgJEtleSAuICdTdGFydCcgfSApIC4gJzsnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkQ29udGVudEJsb2NrLT57ICRLZXkgLiAnU3BhbicgfSApIHsKICAgICAgICAgICAgICAgICAgICAkR3JpZEFyZWEgLj0gJ2dyaWQtJyAuICRLZXlUb0Nzc3skS2V5fSAuICctZW5kOnNwYW4gJyAuIGludCggJENvbnRlbnRCbG9jay0+eyAkS2V5IC4gJ1NwYW4nIH0gKSAuICc7JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50Q2VsbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBHcmlkQXJlYSA9PiAkR3JpZEFyZWEsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgPT4gJFNlY3Rpb24tPntUeXBlfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5fU2VjdGlvblJlbmRlcigKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgU2VjdGlvbiAgICAgID0+ICRTZWN0aW9uLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnSVRTTUNvbmZpZ0l0ZW1EZXRhaWxzJywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVMYXlvdXQsCiAgICApOwp9CgpzdWIgX1NlY3Rpb25SZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICRQYXJhbXtTZWN0aW9ufXtUeXBlfSApIHsKICAgICAgICBpZiAoICRQYXJhbXtTZWN0aW9ufXtUeXBlfSBlcSAnQ29uZmlnSXRlbUxpbmtzJyApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fUmVuZGVyQ0lMaW5rcyglUGFyYW0pOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtTZWN0aW9ufXtUeXBlfSBlcSAnUmVmZXJlbmNlZFNlY3Rpb24nICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9SZW5kZXJSZWZlcmVuY2VkU2VjdGlvbiglUGFyYW0pOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtTZWN0aW9ufXtUeXBlfSBlcSAnRGVzY3JpcHRpb24nICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9SZW5kZXJEZXNjcmlwdGlvblNlY3Rpb24oJVBhcmFtKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUGFyYW17U2VjdGlvbn17VHlwZX0gbmUgJ0R5bmFtaWNGaWVsZHMnICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBzZWN0aW9uIHR5cGUgJyRQYXJhbXtTZWN0aW9ufXtUeXBlfSchIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBHZXQgSFRNTCBmcm9tIGFkZGl0aW9uYWwgbW9kdWxlcwogICAgZWxzaWYgKCAkUGFyYW17U2VjdGlvbn17TW9kdWxlfSApIHsKICAgICAgICBteSAkTW9kdWxlID0gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6U2VjdGlvbjo6JyAuICRQYXJhbXtTZWN0aW9ufXtNb2R1bGV9OwoKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRNb2R1bGUpICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCBzZWN0aW9uIG1vZHVsZSAnJE1vZHVsZSciLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgbXkgJE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJE1vZHVsZSk7CiAgICAgICAgbXkgJEhUTUwgICA9ICRPYmplY3QtPlJ1biglUGFyYW0pOwogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJpY0hUTUwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEhUTUwgPT4gJEhUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgbXkgJFJvd0hhc1ZhbHVlID0gc3ViIHsKICAgICAgICByZXR1cm4gMSBpZiBhbnkgeyBkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8tPntERn0gfSB9ICRfWzBdLT5AKjsKICAgICAgICByZXR1cm4gMDsKICAgIH07CiAgICBteSAkR3JpZEhhc1ZhbHVlID0gc3ViIHsKICAgICAgICBmb3IgbXkgJFJvdyAoICRfWzBdLT5AKiApIHsKICAgICAgICAgICAgcmV0dXJuIDEgaWYgJFJvd0hhc1ZhbHVlLT4oJFJvdyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwogICAgfTsKCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoICRQYXJhbXtTZWN0aW9ufXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgaWYgKCAkUm93LT57SGVhZGVyfSApIHsKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyUm93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEhlYWRlciA9PiAkUm93LT57SGVhZGVyfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRMaXN0ID0gMDsKICAgICAgICB9CgogICAgICAgIGVsc2lmICggJFJvdy0+e0RGfSApIHsKICAgICAgICAgICAgbmV4dCBST1cgaWYgIWRlZmluZWQgJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUm93LT57REZ9IH07CgogICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkTGlzdCApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZExpc3QgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJFBhcmFte0RlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn17ICRSb3ctPntERn0gfTsKCiAgICAgICAgICAgIG5leHQgUk9XIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgbXkgJERpc3BsYXlWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRSb3ctPntERn0gfSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlMaW5rICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsICAgID0+ICRSb3ctPntMYWJlbH0gfHwgJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICA9PiAnTGFiZWwnLAogICAgICAgICAgICAgICAgICAgIENTU0NsYXNzID0+ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnID8gJ0R5bmFtaWNGaWVsZFNldExhYmVsJyA6IHVuZGVmLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgfHwgJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1JpY2hUZXh0JyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0Z1bGxSb3cnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJERpc3BsYXlWYWx1ZS0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICREaXNwbGF5VmFsdWUtPntMaW5rfSApICkgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAwIC4uICQjeyAkRGlzcGxheVZhbHVlLT57TGlua30gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVmFsdWVJdGVtTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TmFtZX0gPT4gJERpc3BsYXlWYWx1ZS0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX1bJEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICA9PiAkRGlzcGxheVZhbHVlLT57VmFsdWV9WyRJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgPT4gJERpc3BsYXlWYWx1ZS0+e0xpbmt9WyRJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua1ByZXZpZXcgPT4gJERpc3BsYXlWYWx1ZS0+e0xpbmtQcmV2aWV3fVskSW5kZXhdLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluY2x1ZGUgdW5pcXVlIHBhcmFtZXRlciB3aXRoIGR5bmFtaWMgZmllbGQgbmFtZSBpbiBjYXNlIG9mIGNvbGxpc2lvbiB3aXRoIG90aGVycy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGxlYXNlIHNlZSBidWcjMTMzNjIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkLT57TmFtZX0iID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX1bJEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRJbmRleCAhPSAkI3sgJERpc3BsYXlWYWx1ZS0+e0xpbmt9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnTXVsdGl2YWx1ZVNlcGFyYXRvckxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVmFsdWVJdGVtTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e05hbWV9ID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGxlYXNlIHNlZSBidWcjMTMzNjIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGQtPntOYW1lfSIgPT4gJERpc3BsYXlWYWx1ZS0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ0F0dGFjaG1lbnQnICkgewogICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVSYXcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWUnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNpZiAoICRSb3ctPntHcmlkfSApIHsKICAgICAgICAgICAgbmV4dCBST1cgaWYgISRHcmlkSGFzVmFsdWUtPiggJFJvdy0+e0dyaWR9e1Jvd3N9ICk7CgogICAgICAgICAgICBteSAkQ29sdW1ucyA9IGludCggJFJvdy0+e0dyaWR9e0NvbHVtbnN9ICk7CgogICAgICAgICAgICAjIGJhc2ljIGNvcnJlY3Rpb25zIGZvciBncmlkLXRlbXBsYXRlLXJvd3MKICAgICAgICAgICAgbXkgQFdpZHRocyA9ICRSb3ctPntHcmlkfXtDb2x1bW5XaWR0aH0gPyAoICRSb3ctPntHcmlkfXtDb2x1bW5XaWR0aH0gPX4gLyhbXGRcLl0qXHcrKS9nICkgOiAoKTsKCiAgICAgICAgICAgIGlmICggQFdpZHRocyA8ICRDb2x1bW5zICkgewogICAgICAgICAgICAgICAgcHVzaCBAV2lkdGhzLCAoJzFmcicpIHggKCAkQ29sdW1ucyAtIEBXaWR0aHMgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFdpZHRocyA9PiBqb2luKCAnICcsIEBXaWR0aHNbIDAgLi4gJENvbHVtbnMgLSAxIF0gKSwKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICBHUklEUk9XOgogICAgICAgICAgICBmb3IgbXkgJEdyaWRSb3cgKCAkUm93LT57R3JpZH17Um93c30tPkAqICkgewogICAgICAgICAgICAgICAgbmV4dCBHUklEUk9XIGlmICEkUm93SGFzVmFsdWUtPigkR3JpZFJvdyk7CgogICAgICAgICAgICAgICAgbXkgJENvbHVtbkluZGV4ID0gMDsKICAgICAgICAgICAgICAgIG15IEBEaXNwbGF5VmFsdWVzOwogICAgICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkICggJEdyaWRSb3ctPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZC0+e0RGfTsKCiAgICAgICAgICAgICAgICAgICAgJENvbHVtbkluZGV4Kys7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkUGFyYW17RGVmaW5pdGlvbn17RHluYW1pY0ZpZWxkUmVmfXsgJEZpZWxkLT57REZ9IH07CgogICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWVzWyRDb2x1bW5JbmRleF0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkLT57REZ9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBncmlkIGNvbHVtbiBmcm9tIGRlZmluaXRpb24KICAgICAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEZpZWxkLT57TGFiZWx9IHx8ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmlkQ29sdW1uID0+ICJncmlkLWNvbHVtbi1zdGFydDogJENvbHVtbkluZGV4OyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgID0+ICdMYWJlbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICRDb2x1bW5JbmRleCApIHsKICAgICAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWVzWyRJbmRleF0tPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JpZENvbHVtbiA9PiAiZ3JpZC1jb2x1bW4tc3RhcnQ6ICRJbmRleDsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICA9PiAnVmFsdWUnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICREeW5hbWljRmllbGRMaXN0ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUmVuZGVyQ0lMaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJERpcmVjdGlvbiA9ICRQYXJhbXtTZWN0aW9ufXtMaW5rZWRBc30gfHwgJ1NvdXJjZSc7CiAgICBteSAkVHlwZXMgICAgID0gSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17U2VjdGlvbn17TGlua1R5cGVzfSApID8gJFBhcmFte1NlY3Rpb259e0xpbmtUeXBlc30gOiB1bmRlZjsKCiAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCgogICAgICAgICMgVE9ETzogV2hhdCBhYm91dCB2ZXJzaW9ucwogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEaXJlY3Rpb24gICAgPT4gJERpcmVjdGlvbiwKICAgICAgICBUeXBlcyAgICAgICAgPT4gJFR5cGVzLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRMaW5rZWRDb25maWdJdGVtczsKCiAgICBteSAlTGlua2VkQ2xhc3NlczsKCiAgICBmb3IgbXkgJExpbmsgKCAkTGlua2VkQ29uZmlnSXRlbXMtPkAqICkgewogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTGluay0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUT0RPOiBUaGluayBhYm91dCBzb3J0aW5nCiAgICAgICAgcHVzaCBAeyAkTGlua2VkQ2xhc3Nlc3sgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSB9LCB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExpbmstPntDb25maWdJdGVtSUR9LAogICAgICAgIH07CiAgICB9CgogICAgIyBUT0RPOiBBY2Nlc3MgcmlnaHRzOyBjbGFzc2VzIGZvciBhZ2VudHM7IGZvciBjdXN0b21lcnM/CiAgICAjIFRPRE86IENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRpbGU7IGNsYXNzIHJlc3RyaWN0aW9ucywgZGYgcmVzdHJpY3Rpb25zLCA/CgogICAgaWYgKCAkUGFyYW17U2VjdGlvbn17SGVhZGVyfSApIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlclJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSGVhZGVyID0+ICRQYXJhbXtTZWN0aW9ufXtIZWFkZXJ9LAogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQWN0aW9uOwogICAgaWYgKCAkUGFyYW17TGF5b3V0T2JqZWN0fXtVc2VyVHlwZX0gKSB7CiAgICAgICAgJEFjdGlvbiA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e1VzZXJUeXBlfSBlcSAnQ3VzdG9tZXInID8gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tJyA6ICdBZ2VudElUU01Db25maWdJdGVtWm9vbSc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkQWN0aW9uID0gJ1B1YmxpY0lUU01Db25maWdJdGVtWm9vbSc7CiAgICB9CgogICAgZm9yIG15ICRDbGFzcyAoIHNvcnQga2V5cyAlTGlua2VkQ2xhc3NlcyApIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgV2lkdGhzID0+ICcxZnIgMWZyJywKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTGFiZWwgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ0xhYmVsJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJENJICggc29ydCB7ICRhLT57TmFtZX0gY21wICRiLT57TmFtZX0gfSAkTGlua2VkQ2xhc3Nlc3skQ2xhc3N9LT5AKiApIHsKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgID0+ICRDSS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgPT4gJENJLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fXtCYXNlbGlua30gLiAiQWN0aW9uPSRBY3Rpb247Q29uZmlnSXRlbUlEPSRDSS0+e0NvbmZpZ0l0ZW1JRH0iLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgPT4gJ1ZhbHVlTGluaycsCiAgICAgICAgICAgICAgICAgICAgR3JpZENvbHVtbiA9PiAnZ3JpZC1jb2x1bW4tc3RhcnQ6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9SZW5kZXJEZXNjcmlwdGlvblNlY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnSGVhZGVyUm93JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgSGVhZGVyID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZW5kZXIgZGVzY3JpcHRpb24gcmljaHRleHQgZWRpdG9yCiAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgV2lkdGhzID0+ICcxZnInLAogICAgICAgIH0sCiAgICApOwogICAgbXkgJEZyb250ZW5kOwogICAgaWYgKCAkUGFyYW17TGF5b3V0T2JqZWN0fXtVc2VyVHlwZX0gKSB7CiAgICAgICAgJEZyb250ZW5kID0gJFBhcmFte0xheW91dE9iamVjdH17VXNlclR5cGV9IGVxICdVc2VyJyA/ICdBZ2VudCcgOiAnQ3VzdG9tZXInOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZyb250ZW5kID0gJ1B1YmxpYyc7CiAgICB9CiAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXtWZXJzaW9uSUR9LAogICAgICAgICAgICBGcm9udGVuZCAgICAgPT4gJEZyb250ZW5kLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0lmcmFtZScsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUmVuZGVyUmVmZXJlbmNlZFNlY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtMYXlvdXRPYmplY3R9OwoKICAgIG15ICRSZWZlcmVuY2VkQ29uZmlnSXRlbSA9ICRTZWxmLT5fUmVmZXJlbmNlZENvbmZpZ0l0ZW1HZXQoCiAgICAgICAgU2VjdGlvbiAgICA9PiAkUGFyYW17U2VjdGlvbn0sCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkUGFyYW17Q29uZmlnSXRlbX0sCiAgICApOwogICAgcmV0dXJuIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUmVmZXJlbmNlZENvbmZpZ0l0ZW0pOwoKICAgICMgZ2V0IGRlZmluaXRpb24gb2YgcmVmZXJlbmNlZCBjb25maWcgaXRlbSBhbmQgcGFzcyBpdCBvbiB0byBfU2VjdGlvblJlbmRlcgogICAgbXkgJFJlZmVyZW5jZWRDSURlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFJlZmVyZW5jZWRDb25maWdJdGVtLT57RGVmaW5pdGlvbklEfSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkUmVmZXJlbmNlZENJRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH07CgogICAgaWYgKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UHJlfSAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtTZWN0aW9ufXtGaWVsZExpc3RQcmV9ICkgKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRERkVudHJ5ICggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFByZX0tPkAqICkgewogICAgICAgICAgICAkU2VsZi0+X1JlbmRlckRGKAogICAgICAgICAgICAgICAgUm93ICAgICAgICAgICAgICAgICAgICAgICA9PiAkREZFbnRyeSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gICAgICAgICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgICAgICAgICAgICAgICA9PiAkUGFyYW17RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPl9TZWN0aW9uUmVuZGVyKAogICAgICAgIENvbmZpZ0l0ZW0gICA9PiAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0sCiAgICAgICAgRGVmaW5pdGlvbiAgID0+ICRSZWZlcmVuY2VkQ0lEZWZpbml0aW9uLAogICAgICAgIFNlY3Rpb24gICAgICA9PiAkUmVmZXJlbmNlZENJRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFBhcmFte1NlY3Rpb259e1NlY3Rpb25OYW1lfSB9LAogICAgICAgIExheW91dE9iamVjdCA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICk7CgogICAgaWYgKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UG9zdH0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UG9zdH0gKSApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFdpZHRocyA9PiAnMWZyIDFmcicsCiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJERGRW50cnkgKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UG9zdH0tPkAqICkgewogICAgICAgICAgICAkU2VsZi0+X1JlbmRlckRGKAogICAgICAgICAgICAgICAgUm93ICAgICAgICAgICAgICAgICAgICAgICA9PiAkREZFbnRyeSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gICAgICAgICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgICAgICAgICAgICAgICA9PiAkUGFyYW17RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUmVmZXJlbmNlZENvbmZpZ0l0ZW1HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBwYXJhbXMKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtfSApOwogICAgcmV0dXJuIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte1NlY3Rpb259ICk7CgogICAgIyBmZXRjaCBjb25maWcgb2YgcmVmZXJlbmNlZCBmaWVsZAogICAgbXkgJFJlZmVyZW5jZWRGaWVsZENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJFBhcmFte1NlY3Rpb259e1JlZmVyZW5jZUZpZWxkfSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUmVmZXJlbmNlZEZpZWxkQ29uZmlnKTsKCiAgICAjIGZldGNoIGNvbmZpZyBpdGVtIGRlcGVuZGluZyBvbiBmaWVsZCB0eXBlCiAgICBteSAlQ29uZmlnSXRlbUdldFBhcmFtcyA9ICgKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwogICAgaWYgKCAkUmVmZXJlbmNlZEZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbScgKSB7CiAgICAgICAgJENvbmZpZ0l0ZW1HZXRQYXJhbXN7Q29uZmlnSXRlbUlEfSA9ICRQYXJhbXtDb25maWdJdGVtfXsiRHluYW1pY0ZpZWxkXyRSZWZlcmVuY2VkRmllbGRDb25maWctPntOYW1lfSJ9WzBdOwogICAgfQogICAgZWxzaWYgKCAkUmVmZXJlbmNlZEZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbVZlcnNpb24nICkgewogICAgICAgICRDb25maWdJdGVtR2V0UGFyYW1ze1ZlcnNpb25JRH0gPSAkUGFyYW17Q29uZmlnSXRlbX17IkR5bmFtaWNGaWVsZF8kUmVmZXJlbmNlZEZpZWxkQ29uZmlnLT57TmFtZX0ifVswXTsKICAgIH0KCiAgICByZXR1cm4gdW5sZXNzICggJENvbmZpZ0l0ZW1HZXRQYXJhbXN7Q29uZmlnSXRlbUlEfSB8fCAkQ29uZmlnSXRlbUdldFBhcmFtc3tWZXJzaW9uSUR9ICk7CgogICAgIyByZXR1cm4gcmVmZXJlbmNlZCBjb25maWcgaXRlbQogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICVDb25maWdJdGVtR2V0UGFyYW1zLAogICAgKTsKfQoKc3ViIF9SZW5kZXJERiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte1Jvd317REZ9OwogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte1Jvd317REZ9IH07CgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRQYXJhbXtEZWZpbml0aW9ufXtEeW5hbWljRmllbGRSZWZ9eyAkUGFyYW17Um93fXtERn0gfTsKCiAgICByZXR1cm4gaWYgISREeW5hbWljRmllbGQ7CgogICAgbXkgJERpc3BsYXlWYWx1ZSA9ICRQYXJhbXtEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0fS0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtSb3d9e0RGfSB9LAogICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMSwKICAgICAgICBNdWx0aUxpbmsgICAgICAgICAgPT4gMSwKICAgICk7CgogICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBMYWJlbCA9PiAkUGFyYW17Um93fXtMYWJlbH0gfHwgJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgVHlwZSAgPT4gJ0xhYmVsJywKICAgICAgICB9LAogICAgKTsKCiAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnIHx8ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdSaWNoVGV4dCcgKSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0Z1bGxSb3cnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICREaXNwbGF5VmFsdWUtPntMaW5rfSApIHsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERpc3BsYXlWYWx1ZS0+e0xpbmt9ICkgKSB7CiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAwIC4uICQjeyAkRGlzcGxheVZhbHVlLT57TGlua30gfSApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdWYWx1ZUl0ZW1MaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e05hbWV9ID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX1bJEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJERpc3BsYXlWYWx1ZS0+e1ZhbHVlfVskSW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICA9PiAkRGlzcGxheVZhbHVlLT57TGlua31bJEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgTGlua1ByZXZpZXcgPT4gJERpc3BsYXlWYWx1ZS0+e0xpbmtQcmV2aWV3fVskSW5kZXhdLAoKICAgICAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICMgICBQbGVhc2Ugc2VlIGJ1ZyMxMzM2MiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkLT57TmFtZX0iID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkSW5kZXggIT0gJCN7ICREaXNwbGF5VmFsdWUtPntMaW5rfSB9ICkgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnTXVsdGl2YWx1ZVNlcGFyYXRvckxpbmsnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1ZhbHVlSXRlbUxpbmsnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e05hbWV9ID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW19LT4lKiwKICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKCiAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAgICAgIyAgIFBsZWFzZSBzZWUgYnVnIzEzMzYyIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZC0+e05hbWV9IiA9PiAkRGlzcGxheVZhbHVlLT57VGl0bGV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdBdHRhY2htZW50JyApIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVSYXcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWUnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCustomer.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEN1c3RvbWVyIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGN1c3RvbWVyIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDdXN0b21lci0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0gfHwgJycsCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBGb3JtRGF0YUdldCgpCgpnZXQgZm9ybSBkYXRhIGFzIGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJEZvcm1EYXRhUmVmID0gJEJhY2tlbmRPYmplY3QtPkZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBzZWxlY3RlZCBjdXN0b21lciB1c2VyCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIGNoZWNrIHNlYXJjaCBidXR0b24KICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25TZWFyY2gnICkgKSB7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlYXJjaCcgKTsKICAgIH0KCiAgICAjIGNoZWNrIHNlbGVjdCBidXR0b24KICAgIGVsc2lmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25TZWxlY3QnICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VsZWN0JyApOwogICAgfQoKICAgICMgY2hlY2sgY2xlYXIgYnV0dG9uCiAgICBlbHNpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uQ2xlYXInICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICcnOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgcmVzZXQgdmFsdWUgaWYgc2VhcmNoIGZpZWxkIGlzIGVtcHR5CiAgICAgICAgaWYgKAogICAgICAgICAgICAhJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpTZWFyY2gnICkKICAgICAgICAgICAgJiYgZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAnJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgb3B0aW9uCiAgICAgICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICAgICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmFsdWUgPSAnJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKICAgIH0KICAgIG15ICRDbGFzcyAgICA9ICdXNTBwYyBJVFNNQ3VzdG9tZXJTZWFyY2gnOwogICAgbXkgJFNlYXJjaCAgID0gJyc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9IHx8ICcnOwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9ICB8fCAnJzsKICAgIG15ICRJdGVtSWQgICA9ICRQYXJhbXtJdGVtSWR9ICAgfHwgJyc7CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBjcmVhdGUgY3VzdG9tZXIgc3RyaW5nCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGN1c3RvbWVyIGRhdGEKICAgICAgICBteSAlQ3VzdG9tZXJTZWFyY2hMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5DdXN0b21lclNlYXJjaCgKICAgICAgICAgICAgU2VhcmNoID0+ICRWYWx1ZSwKICAgICAgICApOwoKICAgICAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAgICAgJFNlYXJjaCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEN1c3RvbWVyU2VhcmNoTGlzdHskVmFsdWV9IHx8ICcnLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBjcmVhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicKICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgIC4gJFZhbHVlCiAgICAgICAgLiAnIiBpZD0iJwogICAgICAgIC4gJEl0ZW1JZCAuICdTZWxlY3RlZCcKICAgICAgICAuICciLz4nCiAgICAgICAgLiAnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IicKICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgLiAnOjpTZWFyY2giIGNsYXNzPSInCiAgICAgICAgLiAkQ2xhc3MKICAgICAgICAuICciIGlkPSInCiAgICAgICAgLiAkSXRlbUlkCiAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgIC4gJFNlYXJjaCAuICciLz4nOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWU7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICB9CiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBoYXNoIHdpdGggdmFsdWVzIGZvciB0aGUgaW5wdXQgZmllbGQKICAgIG15ICVGb3JtRGF0YTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CgogICAgIyBjcmVhdGUgaW5wdXQgZmllbGQKICAgIG15ICRJbnB1dFN0cmluZyA9ICRTZWxmLT5JbnB1dENyZWF0ZSgKICAgICAgICAlRm9ybURhdGEsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEl0ZW0gICA9PiAkUGFyYW17SXRlbX0sCiAgICAgICAgSXRlbUlkID0+ICRQYXJhbXtLZXl9LAogICAgKTsKCiAgICByZXR1cm4gJElucHV0U3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCustomerCompany.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXJDb21wYW55OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDdXN0b21lckNvbXBhbnkgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgY3VzdG9tZXIgY29tcGFueSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXJDb21wYW55LT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfSB8fCAnJywKICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkU2VsZWN0ZWRJRCA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSB8fCAnJzsKCiAgICBteSAkQ1NTQ2xhc3MgPSAnTW9kZXJuaXplJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENTU0NsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDU1NDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAlQ29tcGFueUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55JyktPkN1c3RvbWVyQ29tcGFueUxpc3QoCiAgICAgICAgTGltaXQgPT4gMCwgICAgIyBEaXNwbGF5IGFsbCBDdXN0b21lciBDb21wYW5pZXMKICAgICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUNvbXBhbnlMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJRCAgICAgICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFNlbGVjdGVkSUQsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDU1NDbGFzcywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZXMgPSAkU2VsZi0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICAjIGdldCBjb21wYW55IGRhdGEKICAgIG15ICVDb21wYW55TGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckNvbXBhbnknKS0+Q3VzdG9tZXJDb21wYW55TGlzdCgKICAgICAgICBMaW1pdCA9PiAwLAogICAgKTsKCiAgICAjIGdlbmVyYXRlIHN0cmluZwogICAgbXkgJFN0cmluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVDb21wYW55TGlzdCwKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBTZWxlY3RlZElEICA9PiAkVmFsdWVzLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREYXRlIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGRhdGUgb2JqZWN0cy4KCj1jdXQKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREYXRlLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAnMjAwNy0wMS0wMScsICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgICRQYXJhbXtWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5EYXRlIHwgTG9jYWxpemUoIkRhdGUiKSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBEYXRlID0+ICRQYXJhbXtWYWx1ZX0gLiAnIDAwOjAwOjAwJywKICAgICAgICB9LAogICAgKTsKICAgICRQYXJhbXtWYWx1ZX0gPX4gcy8wMDowMDowMC8vOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9IHx8ICcnOwp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkRGF5ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkRheScgKTsKICAgIG15ICRNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6TW9udGgnICk7CiAgICBteSAkWWVhciAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlllYXInICk7CgogICAgaWYgKCAkRGF5ICYmICRNb250aCAmJiAkWWVhciApIHsKICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQnLCAkWWVhciwgJE1vbnRoLCAkRGF5OwogICAgfQoKICAgICMgc2V0IGludmFsaWQgcGFyYW0KICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIFNhbml0eSBjaGVjayBvZiB0aGUgYXNzZW1ibGVkIHRpbWVzdGFtcAogICAgaWYgKCAkRm9ybURhdGF7VmFsdWV9ICkgewoKICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRm9ybURhdGF7VmFsdWV9IC4gJyAwMDowMDowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERhdGVUaW1lT2JqZWN0ICkgewogICAgICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+ICcyMDA3LTAzLTI2JywgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEludmFsaWQgPSAkUGFyYW17SW52YWxpZH07CgogICAgbXkgJVZhbHVlczsKICAgIG15ICRDbGFzczsKICAgIGlmICggJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKCiAgICAgICAgaWYgKCAkVmFsdWUgPX4gL14oXGRcZFxkXGQpLShcZFxkfFxkKS0oXGRcZHxcZCkkL2kgKSB7CiAgICAgICAgICAgICRWYWx1ZXN7ICRQYXJhbXtLZXl9IC4gJzo6WWVhcicgfSAgPSAkMTsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNb250aCcgfSA9ICQyOwogICAgICAgICAgICAkVmFsdWVzeyAkUGFyYW17S2V5fSAuICc6OkRheScgfSAgID0gJDM7CgogICAgICAgICAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAgICAgICAgICRDbGFzcyA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJFN0cmluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJFBhcmFte0tleX0gLiAnOjonLAogICAgICAgIEZvcm1hdCAgICAgICAgICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntZZWFyUGVyaW9kUGFzdH0gICB8fCAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1llYXJQZXJpb2RGdXR1cmV9IHx8IDEwLAogICAgICAgICVWYWx1ZXMsCiAgICAgICAgJFBhcmFte0tleX0gLiAnOjonIC4gJ0NsYXNzJyA9PiAkQ2xhc3MsCiAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIE92ZXJyaWRlVGltZVpvbmUgICAgICAgICAgICAgPT4gJFBhcmFte092ZXJyaWRlVGltZVpvbmV9LAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJFVzZWQ7CiAgICBteSAkU3RhcnREYXk7CiAgICBteSAkU3RhcnRNb250aDsKICAgIG15ICRTdGFydFllYXI7CiAgICBteSAkU3RvcERheTsKICAgIG15ICRTdG9wTW9udGg7CiAgICBteSAkU3RvcFllYXI7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgaWYgKCAkUGFyYW17VmFsdWV9ICYmIHJlZiAkUGFyYW17VmFsdWV9IGVxICdIQVNIJyApIHsKICAgICAgICAkVXNlZCAgICAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gfTsKICAgICAgICAkU3RhcnREYXkgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkRheScgfTsKICAgICAgICAkU3RhcnRNb250aCA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyB9OwogICAgICAgICRTdGFydFllYXIgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6WWVhcicgfTsKICAgICAgICAkU3RvcERheSAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6RGF5JyB9OwogICAgICAgICRTdG9wTW9udGggID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpNb250aCcgfTsKICAgICAgICAkU3RvcFllYXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6WWVhcicgfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRVc2VkICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgICAgICAkU3RhcnREYXkgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpEYXknICk7CiAgICAgICAgJFN0YXJ0TW9udGggPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TW9udGgnICk7CiAgICAgICAgJFN0YXJ0WWVhciAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6WWVhcicgKTsKICAgICAgICAkU3RvcERheSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkRheScgKTsKICAgICAgICAkU3RvcE1vbnRoICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6Ok1vbnRoJyApOwogICAgICAgICRTdG9wWWVhciAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6WWVhcicgKTsKICAgIH0KICAgIGlmICgKICAgICAgICAkVXNlZAogICAgICAgICYmICRTdGFydERheSAmJiAkU3RhcnRNb250aCAmJiAkU3RhcnRZZWFyCiAgICAgICAgJiYgJFN0b3BEYXkgICYmICRTdG9wTW9udGggICYmICRTdG9wWWVhcgogICAgICAgICkKICAgIHsKICAgICAgICBteSAkU3RhcnREYXRlID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQnLCAkU3RhcnRZZWFyLCAkU3RhcnRNb250aCwgJFN0YXJ0RGF5OwogICAgICAgIG15ICRTdG9wRGF0ZSAgPSBzcHJpbnRmICclMDJkLSUwMmQtJTAyZCcsICRTdG9wWWVhciwgICRTdG9wTW9udGgsICAkU3RvcERheTsKCiAgICAgICAgcmV0dXJuIHsgJy1iZXR3ZWVuJyA9PiBbICRTdGFydERhdGUsICRTdG9wRGF0ZSBdIH07CiAgICB9CgogICAgcmV0dXJuIFtdOyAgICAjIG5vIGNvbmRpdGlvbnMgYnkgZGVmYXVsdAp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgT3B0aW9uYWwgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJEtleSAgICAgICAgID0gJFBhcmFte0tleX07CiAgICBteSAkUHJlZml4U3RhcnQgPSAkS2V5IC4gJzo6VGltZVN0YXJ0OjonOwogICAgbXkgJFByZWZpeFN0b3AgID0gJEtleSAuICc6OlRpbWVTdG9wOjonOwoKICAgICMgZ2V0IHRpbWUgcmVsYXRlZCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJXsgJFBhcmFte1ZhbHVlfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCAkUHJlZml4U3RhcnQsICRQcmVmaXhTdG9wICkgewogICAgICAgICAgICBmb3IgbXkgJFBhcnQgKHF3KCBZZWFyIE1vbnRoIERheSApKSB7CiAgICAgICAgICAgICAgICBteSAkUGFyYW1LZXkgPSAkVGltZVR5cGUgLiAkUGFydDsKICAgICAgICAgICAgICAgIG15ICRQYXJhbVZhbCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbUtleSApOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICAgICBpZiAoJFBhcmFtVmFsKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBpbiAlR2V0UGFyYW0KICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1LZXl9ID0gJFBhcmFtVmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBCdWlsZCBzZWxlY3Rpb24gZm9yIHRoZSBzdGFydCBhbmQgc3RvcCB0aW1lLgogICAgIyBOb3RlIHRoYXQgc2VhcmNoaW5nIGlzIGJ5IGRhdGUsIHdoaWxlIGlucHV0IGlzIGJ5IHRpbWUgYXMgd2VsbAogICAgbXkgJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdGFydCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIFllYXJQZXJpb2RQYXN0ICAgPT4gMTAsCiAgICAgICAgWWVhclBlcmlvZEZ1dHVyZSA9PiAxMCwKICAgICAgICAlR2V0UGFyYW0sCiAgICApOwogICAgbXkgJFRpbWVTdG9wU2VsZWN0aW9uU3RyaW5nID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgIE9wdGlvbmFsICAgICAgICAgPT4gMCwKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdG9wLAogICAgICAgIEZvcm1hdCAgICAgICAgICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+IDEwLAogICAgICAgICVHZXRQYXJhbSwKICAgICk7CgogICAgbXkgJENoZWNrYm94ID0gcXF7PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJEtleSIgdmFsdWU9IjEiLz59OwogICAgaWYgKCAkUGFyYW17T3B0aW9uYWx9ICkgewogICAgICAgICRDaGVja2JveCA9IHFxezxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iJEtleSIgdmFsdWU9IjEiLz59OwogICAgfQoKICAgIG15ICRCZXR3ZWVuID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdCZXR3ZWVuJyk7CiAgICBteSAkQW5kICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnYW5kJyk7CgogICAgcmV0dXJuICI8ZGl2PiAkQ2hlY2tib3ggJEJldHdlZW4gJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA8L2Rpdj4iCiAgICAgICAgLiAiPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMjdweDtcIj4kQW5kPC9zcGFuPiAkVGltZVN0b3BTZWxlY3Rpb25TdHJpbmciOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDateTime.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZVRpbWU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dERhdGVUaW1lIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGRhdGV0aW1lIG9iamVjdHMuCgo9Y3V0Cgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZVRpbWUtPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+ICcyMDA3LTAxLTAxIDEyOjAwJywgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgJFBhcmFte1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkRhdGUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBEYXRlID0+ICRQYXJhbXtWYWx1ZX0gLiAnOjAwJywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSB8fCAnJzsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJERheSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6RGF5JyApOwogICAgbXkgJE1vbnRoICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6TW9udGgnICk7CiAgICBteSAkWWVhciAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpZZWFyJyApOwogICAgbXkgJEhvdXIgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6SG91cicgKSAgIHx8IDA7CiAgICBteSAkTWludXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpNaW51dGUnICkgfHwgMDsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgWWVhciAgICAgPT4gJFllYXIsCiAgICAgICAgICAgIE1vbnRoICAgID0+ICRNb250aCwKICAgICAgICAgICAgRGF5ICAgICAgPT4gJERheSwKICAgICAgICAgICAgSG91ciAgICAgPT4gJEhvdXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1pZG5pZ2h0CiAgICAgICAgICAgIE1pbnV0ZSAgID0+ICRNaW51dGUsCiAgICAgICAgICAgIFRpbWVab25lID0+ICRQcmVmZXJlbmNlc3tVc2VyVGltZVpvbmV9IHx8ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Vc2VyRGVmYXVsdFRpbWVab25lR2V0KCksCiAgICAgICAgfSwKICAgICk7CgogICAgIyBDb252ZXJ0IHN0YXJ0IHRpbWUgdG8gbG9jYWwgc3lzdGVtIHRpbWUgem9uZS4KICAgICREYXRlVGltZU9iamVjdC0+VG9PVE9CT1RpbWVab25lKCk7CiAgICBteSAkRGF0ZVRpbWVTZXR0aW5ncyA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRGF0ZVRpbWVTZXR0aW5ncykgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9IHNwcmludGYgJyUwMmQtJTAyZC0lMDJkICUwMmQ6JTAyZCcsICREYXRlVGltZVNldHRpbmdzLT57WWVhcn0sICREYXRlVGltZVNldHRpbmdzLT57TW9udGh9LCAkRGF0ZVRpbWVTZXR0aW5ncy0+e0RheX0sCiAgICAgICAgICAgICREYXRlVGltZVNldHRpbmdzLT57SG91cn0sICREYXRlVGltZVNldHRpbmdzLT57TWludXRlfTsKICAgIH0KCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgIyBTYW5pdHkgY2hlY2sgb2YgdGhlIGFzc2VtYmxlZCB0aW1lc3RhbXAKICAgIGlmICggJEZvcm1EYXRhe1ZhbHVlfSApIHsKCiAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZvcm1EYXRhe1ZhbHVlfSAuICc6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggISREYXRlVGltZU9iamVjdCApIHsKICAgICAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAnMjAwNy0wMy0yNiAxMjowMCcsICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEludmFsaWQgPSAkUGFyYW17SW52YWxpZH07CgogICAgbXkgJVZhbHVlczsKICAgIG15ICRDbGFzczsKICAgIGlmICggJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKCiAgICAgICAgaWYgKCAkVmFsdWUgPX4gL14oXGRcZFxkXGQpLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKSQvaSApIHsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpZZWFyJyB9ICAgPSAkMTsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNb250aCcgfSAgPSAkMjsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpEYXknIH0gICAgPSAkMzsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpIb3VyJyB9ICAgPSAkNDsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNaW51dGUnIH0gPSAkNTsKCiAgICAgICAgICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICAgICAgICAgJENsYXNzID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUGFyYW17S2V5fSAuICc6OicsCiAgICAgICAgRm9ybWF0ICAgICAgICAgICA9PiAnRGF0ZUlucHV0Rm9ybWF0TG9uZycsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntZZWFyUGVyaW9kUGFzdH0gICB8fCAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1llYXJQZXJpb2RGdXR1cmV9IHx8IDEwLAogICAgICAgICVWYWx1ZXMsCiAgICAgICAgJFBhcmFte0tleX0gLiAnOjonIC4gJ0NsYXNzJyA9PiAkQ2xhc3MsCiAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRVc2VkOwogICAgbXkgJFN0YXJ0TWludXRlOwogICAgbXkgJFN0YXJ0SG91cjsKICAgIG15ICRTdGFydERheTsKICAgIG15ICRTdGFydE1vbnRoOwogICAgbXkgJFN0YXJ0WWVhcjsKICAgIG15ICRTdG9wTWludXRlOwogICAgbXkgJFN0b3BIb3VyOwogICAgbXkgJFN0b3BEYXk7CiAgICBteSAkU3RvcE1vbnRoOwogICAgbXkgJFN0b3BZZWFyOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgaWYgKCAkUGFyYW17VmFsdWV9ICYmIHJlZiAkUGFyYW17VmFsdWV9IGVxICdIQVNIJyApIHsKICAgICAgICAkVXNlZCAgICAgICAgPSAkUGFyYW17VmFsdWV9LT57ICRQYXJhbXtLZXl9IH07CiAgICAgICAgJFN0YXJ0TWludXRlID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TWludXRlJyB9OwogICAgICAgICRTdGFydEhvdXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkhvdXInIH07CiAgICAgICAgJFN0YXJ0RGF5ICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6RGF5JyB9OwogICAgICAgICRTdGFydE1vbnRoICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyB9OwogICAgICAgICRTdGFydFllYXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OlllYXInIH07CiAgICAgICAgJFN0b3BNaW51dGUgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpNaW51dGUnIH07CiAgICAgICAgJFN0b3BIb3VyICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpIb3VyJyB9OwogICAgICAgICRTdG9wRGF5ICAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6RGF5JyB9OwogICAgICAgICRTdG9wTW9udGggICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TW9udGgnIH07CiAgICAgICAgJFN0b3BZZWFyICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpZZWFyJyB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFVzZWQgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgICAgICAkU3RhcnRNaW51dGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TWludXRlJyApIHx8IDAwOwogICAgICAgICRTdGFydEhvdXIgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpIb3VyJyApCiAgICAgICAgICAgIHx8IDAwOwogICAgICAgICRTdGFydERheSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkRheScgKTsKICAgICAgICAkU3RhcnRNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpNb250aCcgKTsKICAgICAgICAkU3RhcnRZZWFyICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpZZWFyJyApOwogICAgICAgICRTdG9wTWludXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TWludXRlJyApCiAgICAgICAgICAgIHx8IDU5OwogICAgICAgICRTdG9wSG91ciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkhvdXInICkKICAgICAgICAgICAgfHwgMjM7CiAgICAgICAgJFN0b3BEYXkgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkRheScgKTsKICAgICAgICAkU3RvcE1vbnRoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TW9udGgnICk7CiAgICAgICAgJFN0b3BZZWFyICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OlllYXInICk7CiAgICB9CgogICAgaWYgKAogICAgICAgICRVc2VkCiAgICAgICAgJiYgJFN0YXJ0TWludXRlICYmICRTdGFydEhvdXIgJiYgJFN0YXJ0RGF5ICYmICRTdGFydE1vbnRoICYmICRTdGFydFllYXIKICAgICAgICAmJiAkU3RvcE1pbnV0ZSAgJiYgJFN0b3BIb3VyICAmJiAkU3RvcERheSAgJiYgJFN0b3BNb250aCAgJiYgJFN0b3BZZWFyCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGFkZCBob3VyLCBtaW51dGVzIGFuZCBzZWNvbmRzLAogICAgICAgICMgc28gdGhhdCB0aGF0IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgZGF5IGlzIHNlbGVjdGVkIGFzIHdlbGwKICAgICAgICBteSAkU3RhcnREYXRlID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQgJTAyZDolMDJkOjAwJwogICAgICAgICAgICAsICRTdGFydFllYXIsICRTdGFydE1vbnRoLCAkU3RhcnREYXksICRTdGFydEhvdXIsICRTdGFydE1pbnV0ZTsKICAgICAgICBteSAkU3RvcERhdGUgPSBzcHJpbnRmICclMDJkLSUwMmQtJTAyZCAlMDJkOiUwMmQ6NTknCiAgICAgICAgICAgICwgJFN0b3BZZWFyLCAkU3RvcE1vbnRoLCAkU3RvcERheSwgJFN0b3BIb3VyLCAkU3RvcE1pbnV0ZTsKCiAgICAgICAgcmV0dXJuIHsgJy1iZXR3ZWVuJyA9PiBbICRTdGFydERhdGUsICRTdG9wRGF0ZSBdIH07CiAgICB9CgogICAgcmV0dXJuIFtdOyAgICAjIG5vIGNvbmRpdGlvbnMgYnkgZGVmYXVsdAp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgT3B0aW9uYWwgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJEtleSAgICAgICAgID0gJFBhcmFte0tleX07CiAgICBteSAkUHJlZml4U3RhcnQgPSAkS2V5IC4gJzo6VGltZVN0YXJ0OjonOwogICAgbXkgJFByZWZpeFN0b3AgID0gJEtleSAuICc6OlRpbWVTdG9wOjonOwoKICAgICMgZ2V0IHRpbWUgcmVsYXRlZCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJXsgJFBhcmFte1ZhbHVlfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCAkUHJlZml4U3RhcnQsICRQcmVmaXhTdG9wICkgewogICAgICAgICAgICBmb3IgbXkgJFBhcnQgKHF3KCBZZWFyIE1vbnRoIERheSApKSB7CiAgICAgICAgICAgICAgICBteSAkUGFyYW1LZXkgPSAkVGltZVR5cGUgLiAkUGFydDsKICAgICAgICAgICAgICAgIG15ICRQYXJhbVZhbCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbUtleSApOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICAgICBpZiAoJFBhcmFtVmFsKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBpbiAlR2V0UGFyYW0KICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1LZXl9ID0gJFBhcmFtVmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBCdWlsZCBzZWxlY3Rpb24gZm9yIHRoZSBzdGFydCBhbmQgc3RvcCB0aW1lLgogICAgbXkgJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdGFydCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDEwLAogICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gMTAsCiAgICAgICAgJUdldFBhcmFtLAogICAgKTsKICAgIG15ICRUaW1lU3RvcFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBPcHRpb25hbCAgICAgICAgID0+IDAsCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUHJlZml4U3RvcCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDEwLAogICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gMTAsCiAgICAgICAgJUdldFBhcmFtLAogICAgKTsKCiAgICBteSAkQ2hlY2tib3ggPSBxcXs8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIkS2V5IiB2YWx1ZT0iMSIvPn07CiAgICBpZiAoICRQYXJhbXtPcHRpb25hbH0gKSB7CiAgICAgICAgJENoZWNrYm94ID0gcXF7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSIkS2V5IiB2YWx1ZT0iMSIvPn07CiAgICB9CgogICAgbXkgJEJldHdlZW4gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0JldHdlZW4nKTsKICAgIG15ICRBbmQgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdhbmQnKTsKCiAgICByZXR1cm4gIjxkaXY+ICRDaGVja2JveCAkQmV0d2VlbiAkVGltZVN0YXJ0U2VsZWN0aW9uU3RyaW5nIDwvZGl2PiIKICAgICAgICAuICI8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAyN3B4O1wiPiAkQW5kIDwvc3Bhbj4gJFRpbWVTdG9wU2VsZWN0aW9uU3RyaW5nIjsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDummy.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RHVtbXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OkNvbmZpZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREdW1teSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBkdW1teSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RHVtbXktPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKCk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJyc7CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHRyYW5zbGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZhbHVlfSApOwogICAgfQoKICAgIG15ICRMaW5rRmVhdHVyZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxpbmtzIGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlua0ZlYXR1cmUgPSAwOwogICAgfQoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgpOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICcnOwogICAgbXkgJFNpemUgICAgID0gJ1c1MHBjJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KICAgICRDbGFzcyAuPSAnICcgLiAkU2l6ZTsKICAgIG15ICRTdHJpbmcgPSAiPHNwYW4gc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGhlaWdodDogMS4zZW07XCI+IjsKICAgICRTdHJpbmcKICAgICAgICAuPSAiPGlucHV0IHN0eWxlPVwiZGlzcGxheTpub25lO1wiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIiRQYXJhbXtLZXl9XCIgY2xhc3M9XCIkQ2xhc3NcIiAiOwoKICAgIGlmICgkSXRlbUlkKSB7CiAgICAgICAgJFN0cmluZyAuPSAiaWQ9XCIkSXRlbUlkXCIgIjsKICAgIH0KCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgICAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICAgICAjIHRyYW5zbGF0ZQogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFZhbHVlKTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAkU3RyaW5nIC49ICJ2YWx1ZT1cIiRWYWx1ZVwiICI7CgogICAgIyBhZGQgbWF4aW11bSBsZW5ndGgKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TWF4TGVuZ3RofSApIHsKICAgICAgICAkU3RyaW5nIC49ICJtYXhsZW5ndGg9XCIkUGFyYW17SXRlbX0tPntJbnB1dH0tPntNYXhMZW5ndGh9XCIgIjsKICAgIH0KCiAgICAkU3RyaW5nIC49ICcvPiA8L3NwYW4+JzsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KCk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgcmV0dXJuIFtdOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgpOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIHJldHVybiAnJm5ic3A7JzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutGeneralCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0R2VuZXJhbENhdGFsb2c7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRHZW5lcmFsQ2F0YWxvZyAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEdlbmVyYWxDYXRhbG9nLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICRQYXJhbXtWYWx1ZX0gLy89ICcnOwoKICAgICMgdHJhbnNsYXRlCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ1NTQ2xhc3MgPSAnTW9kZXJuaXplJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENTU0NsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDU1NDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIHRyYW5zbGF0aW9uIG9uIG9yIG9mZgogICAgbXkgJFRyYW5zbGF0aW9uID0gMDsKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRUcmFuc2xhdGlvbiA9IDE7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDbGFzc30gfHwgJycsCiAgICApOwoKICAgICMgcmV2ZXJzZSB0aGUgY2xhc3MgbGlzdAogICAgbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICV7JENsYXNzTGlzdH07CgogICAgbXkgJFNlbGVjdGVkSUQ7CgogICAgIyBnZXQgdGhlIGN1cnJlbnQgdmFsdWUKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRTZWxlY3RlZElEID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KCiAgICAjIGdldCB0aGUgZGVmYXVsdCBpZCBieSBkZWZhdWx0IHZhbHVlCiAgICBlbHNlIHsKICAgICAgICAkU2VsZWN0ZWRJRCA9ICRSZXZlcnNlQ2xhc3NMaXN0eyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnIH0gfHwgJyc7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJRCAgICAgICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkU2VsZWN0ZWRJRCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlcyA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwoKICAgICMgdHJhbnNsYXRpb24gb24gb3Igb2ZmCiAgICBteSAkVHJhbnNsYXRpb24gPSAwOwogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFRyYW5zbGF0aW9uID0gMTsKICAgIH0KCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NsYXNzfSB8fCAnJywKICAgICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAkVmFsdWVzLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutInteger.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0SW50ZWdlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRJbnRlZ2VyIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGludGVnZXIgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEludGVnZXItPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAnJzsKICAgIH0KCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBtaW4sIG1heCBhbmQgZGVmYXVsdAogICAgbXkgJFZhbHVlTWluID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVNaW59IC8vIDE7CiAgICBteSAkVmFsdWVNYXggPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZU1heH0gLy8gMTsKICAgIGlmICggJFZhbHVlTWluID4gJFZhbHVlTWF4ICkgewogICAgICAgICRWYWx1ZU1pbiA9ICRWYWx1ZU1heDsKICAgIH0KICAgIGlmICgKICAgICAgICAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9CiAgICAgICAgJiYgKAogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IDwgJFZhbHVlTWluCiAgICAgICAgICAgIHx8ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gPiAkVmFsdWVNYXgKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gPSAnJzsKICAgIH0KCiAgICAjIGNyZWF0ZSBkYXRhIGFycmF5CiAgICBteSAkSW50ZWdlckxpc3QgPSBbXTsKICAgIGZvciBteSAkQ291bnRlciAoICRWYWx1ZU1pbiAuLiAkVmFsdWVNYXggKSB7CiAgICAgICAgcHVzaCBAeyRJbnRlZ2VyTGlzdH0sICRDb3VudGVyOwogICAgfQoKICAgICMgZ2VuZXJhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gJEludGVnZXJMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgbWluLCBtYXgKICAgIG15ICRWYWx1ZU1pbiA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlTWlufSAvLyAxOwogICAgbXkgJFZhbHVlTWF4ID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVNYXh9IC8vIDE7CiAgICBpZiAoICRWYWx1ZU1pbiA+ICRWYWx1ZU1heCApIHsKICAgICAgICAkVmFsdWVNaW4gPSAkVmFsdWVNYXg7CiAgICB9CgogICAgIyBzZXQgcHJlc2VsZWN0ZWQgdmFsdWUsIGVpdGhlciBmcm9tIHByZXZpb3VzIHNlbGVjdGlvbiBvciB0aGUgZGVmYXVsdAogICAgbXkgJFZhbHVlcyA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwoKICAgICMgY2hlY2sgd2hldGhlciB0aGUgcHJlc2VsZWN0ZWQgdmFsdWUgaXMgd2l0aGluIHRoZSB2YWxpZCByYW5nZQogICAgbXkgQEZpbHRlcmVkVmFsdWVzOwogICAgVkFMVUU6CiAgICBmb3IgbXkgJFZhbHVlICggQHskVmFsdWVzfSApIHsKICAgICAgICBuZXh0IFZBTFVFIGlmICFkZWZpbmVkICRWYWx1ZTsKICAgICAgICBuZXh0IFZBTFVFIGlmICEkVmFsdWU7CiAgICAgICAgbmV4dCBWQUxVRSBpZiAkVmFsdWUgPCAkVmFsdWVNaW47CiAgICAgICAgbmV4dCBWQUxVRSBpZiAkVmFsdWUgPiAkVmFsdWVNYXg7CgogICAgICAgIHB1c2ggQEZpbHRlcmVkVmFsdWVzLCAkVmFsdWU7CiAgICB9CgogICAgIyBjcmVhdGUgZGF0YSBhcnJheQogICAgbXkgQEludGVnZXJMaXN0ID0gKCAkVmFsdWVNaW4gLi4gJFZhbHVlTWF4ICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFxASW50ZWdlckxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgID0+IFxARmlsdGVyZWRWYWx1ZXMsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutText.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dCAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiB0ZXh0IG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRUZXh0LT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJyc7CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHRyYW5zbGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZhbHVlfSApOwogICAgfQoKICAgIG15ICRMaW5rRmVhdHVyZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxpbmtzIGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlua0ZlYXR1cmUgPSAwOwogICAgfQoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIHZhbHVlIHdhcyBlbnRlcmVkIGluIHRoZSBmb3JtLCBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnZXgKICAgIGlmICgKICAgICAgICAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgJiYgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVnRXh9CiAgICAgICAgJiYgJEZvcm1EYXRhe1ZhbHVlfSAhfiBteyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWdFeH0gfXhtcwogICAgICAgICkKICAgIHsKCiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1JlZ0V4RXJyb3JNZXNzYWdlfSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZ0V4RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICcnOwogICAgbXkgJFNpemUgICAgID0gJ1c1MHBjJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KICAgICRDbGFzcyAuPSAnICcgLiAkU2l6ZTsKICAgIG15ICRTdHJpbmcgPSAiPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIiRQYXJhbXtLZXl9XCIgY2xhc3M9XCIkQ2xhc3NcIiAiOwoKICAgIGlmICgkSXRlbUlkKSB7CiAgICAgICAgJFN0cmluZyAuPSAiaWQ9XCIkSXRlbUlkXCIgIjsKICAgIH0KCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgICAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICAgICAjIHRyYW5zbGF0ZQogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFZhbHVlKTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAkU3RyaW5nIC49ICJ2YWx1ZT1cIiRWYWx1ZVwiICI7CgogICAgIyBhZGQgbWF4aW11bSBsZW5ndGgKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TWF4TGVuZ3RofSApIHsKICAgICAgICAkU3RyaW5nIC49ICJtYXhsZW5ndGg9XCIkUGFyYW17SXRlbX0tPntJbnB1dH0tPntNYXhMZW5ndGh9XCIgIjsKICAgIH0KCiAgICAkU3RyaW5nIC49ICcvPiAnOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWU7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICB9CiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmFsdWUgPSAkU2VsZi0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKICAgIGlmICggIWRlZmluZWQgJFZhbHVlICkgewogICAgICAgICRWYWx1ZSA9ICcnOwogICAgfQoKICAgIG15ICRTdHJpbmcgPSBxcXs8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iJFBhcmFte0tleX0iIHZhbHVlPSIkVmFsdWUiIGNsYXNzPSJXNTBwYyIgPn07CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutTextArea.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dEFyZWE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFRleHRBcmVhIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIHRleHRhcmVhIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRUZXh0QXJlYS0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICcnOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyB0cmFuc2xhdGUKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KCiAgICBteSAkTGlua0ZlYXR1cmUgICAgPSAxOwogICAgbXkgJEhUTUxSZXN1bHRNb2RlID0gMTsKCiAgICAjIGRvIG5vdCB0cmFuc2Zvcm0gbGlua3MgaW4gcHJpbnQgdmlldwogICAgaWYgKCAkUGFyYW17UHJpbnR9ICkgewogICAgICAgICRMaW5rRmVhdHVyZSAgICA9IDA7CiAgICAgICAgJEhUTUxSZXN1bHRNb2RlID0gMDsKICAgIH0KCiAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgIEhUTUxSZXN1bHRNb2RlID0+ICRIVE1MUmVzdWx0TW9kZSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIHZhbHVlIHdhcyBlbnRlcmVkIGluIHRoZSBmb3JtLCBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnZXgKICAgIGlmICgKICAgICAgICAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgJiYgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVnRXh9CiAgICAgICAgJiYgJEZvcm1EYXRhe1ZhbHVlfSAhfiBteyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWdFeH0gfXhtcwogICAgICAgICkKICAgIHsKCiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1JlZ0V4RXJyb3JNZXNzYWdlfSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZ0V4RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbHMgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDb2xzfSB8fCA1ODsKICAgIG15ICRSb3dzID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Um93c30gfHwgMTA7CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICdXNTBwYyc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9OwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9OwogICAgbXkgJEl0ZW1JZCAgID0gJFBhcmFte0l0ZW1JZH07CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyB0cmFuc2xhdGUKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRWYWx1ZSk7CiAgICB9CiAgICBteSAkU3RyaW5nID0gIjx0ZXh0YXJlYSBuYW1lPVwiJFBhcmFte0tleX1cIiBpZD1cIiRJdGVtSWRcIiBjb2xzPVwiJENvbHNcIiByb3dzPVwiJFJvd3NcIiBjbGFzcz1cIiRDbGFzc1wiPiRWYWx1ZTwvdGV4dGFyZWE+IjsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRWYWx1ZTsKICAgIGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgIH0KICAgIHJldHVybiAkVmFsdWU7Cn0KCj1oZWFkMiBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZSA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwogICAgaWYgKCAhZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAgICAgJFZhbHVlID0gJyc7CiAgICB9CgogICAgbXkgJFN0cmluZyA9IHFxezxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSIkUGFyYW17S2V5fSIgdmFsdWU9IiRWYWx1ZSIgY2xhc3M9Ilc1MHBjIj59OwoKICAgIHJldHVybiAkU3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/MenuGeneric.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpCYXNlJyk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKKTsKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ3JhbnQgYWNjZXNzIGJ5IGRlZmF1bHQKICAgIG15ICRBY2Nlc3MgPSAxOwoKICAgICMgZ2V0IGFjdGlvbgogICAgbXkgJEFjdGlvbiA9ICRQYXJhbXtDb25maWd9LT57QWN0aW9ufTsKICAgIGlmICggJEFjdGlvbiBlcSAnQWdlbnRMaW5rT2JqZWN0JyApIHsKCiAgICAgICAgIyBUaGUgTGluay1saW5rIGlzIGEgc3BlY2lhbCBjYXNlLCBhcyBpdCBpcyBub3Qgc3BlY2lmaWMgdG8gSVRTTUNvbmZpZ0l0ZW0uCiAgICAgICAgIyBBcyBhIHdvcmthcm91bmQgd2UgaGFyZGNvZGUgdGhhdCBBZ2VudExpbmtPYmplY3QgaXMgdHJlYXRlZCBsaWtlIEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAgICAgJEFjdGlvbiA9ICdBZ2VudElUU01Db25maWdJdGVtRWRpdCc7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZ3JvdXBzCiAgICBteSAkR3JvdXBzUm8gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXBSb30gfHwgW107CiAgICBteSAkR3JvdXBzUncgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXB9ICAgfHwgW107CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgUk9HUk9VUDoKICAgICAgICBmb3IgbXkgJFJvR3JvdXAgKCBAeyRHcm91cHNSb30gKSB7CgogICAgICAgICAgICBuZXh0IFJPR1JPVVAgaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRSb0dyb3VwLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdybycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgIGxhc3QgUk9HUk9VUDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVhZCB3cml0ZSBncm91cHMKICAgICAgICBSV0dST1VQOgogICAgICAgIGZvciBteSAkUndHcm91cCAoIEB7JEdyb3Vwc1J3fSApIHsKCiAgICAgICAgICAgIG5leHQgUldHUk9VUCBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJFJ3R3JvdXAsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBSV0dST1VQOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9IGlmICEkQWNjZXNzOwoKICAgICMgb3V0cHV0IG1lbnUgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdNZW51JyApOwoKICAgICMgb3V0cHV0IG1lbnUgaXRlbQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWVudUl0ZW0nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7ICRQYXJhbXtDb25maWdJdGVtfSB9LAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgYSBkaWFsb2cgaGFzIHRvIGJlIHNob3duCiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57RGlhbG9nVGl0bGV9ICkgewogICAgICAgIG15ICRDb25maWdPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAgICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICAgICAjIFJlcGxhY2UgdGhlIHRlbXBsYXRlIHRvb2xraXQgZXhwcmVzc2lvbnMgd2l0aCB0aGUgZmluYWwgdmFsdWUuCiAgICAgICAgbXkgJUpTRGF0YSA9ICgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnSXRlbX0gfSwKICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICApOwoKICAgICAgICBkZWxldGUgJEpTRGF0YXtDb25maWd9OwogICAgICAgIGRlbGV0ZSAkSlNEYXRhe0NvbmZpZ0l0ZW19OwoKICAgICAgICAkSlNEYXRhe0VsZW1lbnRTZWxlY3Rvcn0gICAgICAgICAgICA9fiBzL1xbJVxzKkRhdGFcLk1lbnVJRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe01lbnVJRH0vaTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZ30gICA9fiBzL1xbJVxzKkRhdGFcLkNvbmZpZ0l0ZW1JRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe0NvbmZpZ0l0ZW1JRH0vaTsKICAgICAgICAkSlNEYXRhe0NvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nfSA9fiBzL1xbJVxzKkRhdGFcLkNvbmZpZ0l0ZW1JRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe0NvbmZpZ0l0ZW1JRH0vaTsKCiAgICAgICAgJEpTRGF0YXtEaWFsb2dUaXRsZX0gPX4gcy9cWyVccypUcmFuc2xhdGVcKCIoLiopIlwpXHMqXHxccypodG1sXHMqJVxdLyRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCQxKS9laTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ1RpdGxlfSA9fiBzL1xbJVxzKkNvbmZpZ1woIiguKikiXClccyolXF0vJENvbmZpZ09iamVjdC0+R2V0KCQxKS9laTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ1RpdGxlfSA9fiBzL1xbJVxzKkRhdGEuTnVtYmVyXHMqXHxccypodG1sXHMqJVxdLyRKU0RhdGF7TnVtYmVyfS9laTsKCiAgICAgICAgJEpTRGF0YXtNZW51SUR9ID0gJ01lbnUnIC4gJEpTRGF0YXtNZW51SUR9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNU2hvd0NvbmZpcm1EaWFsb2cuJyAuICRQYXJhbXtNZW51SUR9LAogICAgICAgICAgICBWYWx1ZSA9PiBcJUpTRGF0YSwKICAgICAgICApOwogICAgfQoKICAgICRQYXJhbXtDb3VudGVyfSsrOwoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn07Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/CustomerOverviewSmall.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6Q3VzdG9tZXJPdmVydmlld1NtYWxsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SlNPTicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBcJVBhcmFtOwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUNvbHVtbnN9ID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CgogICAgIyBsb2FkIGJhY2tlbmQgY29uZmlnCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSA9ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OicgLiAkU2VsZi0+e0FjdGlvbn07CiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJEJhY2tlbmRDb25maWdLZXkpOwoKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+R2V0UHJlZmVyZW5jZXMoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzZXQgc3RvcmVkIGZpbHRlcnMgaWYgcHJlc2VudAogICAgbXkgJFN0b3JlZEZpbHRlcnNLZXkgPSAnVXNlclN0b3JlZEZpbHRlckNvbHVtbnMtJyAuICRTZWxmLT57QWN0aW9ufSAuICctJyAuICRTZWxmLT57RmlsdGVyfTsKICAgIGlmICggJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSApIHsKICAgICAgICBteSAkU3RvcmVkRmlsdGVycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyktPkRlY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7JFN0b3JlZEZpbHRlcnNLZXl9LAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSA9ICRTdG9yZWRGaWx0ZXJzOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGZpbHRlcgogICAgbXkgJEZpbHRlck5hbWUgPSBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfSApID8gJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfS0+e05hbWV9IDogJ0FsbCc7CgogICAgIyBnZXQgcGVybWlzc2lvbiBjb25kaXRpb24gZm9yIGZpbHRlcgogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnICA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zID0gJENvbmZpZ09iamVjdC0+R2V0KCdDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZykgKSB7CiAgICAgICAgUEVSTUNPTkY6CiAgICAgICAgZm9yIG15ICRDb25maWdJZGVudGlmaWVyICggc29ydCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+JSogKSB7CiAgICAgICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT57JENvbmZpZ0lkZW50aWZpZXJ9OwogICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyk7CgogICAgICAgICAgICAjIGNoZWNrIGZvciBncm91cCBwZXJtaXNzaW9uCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57R3JvdXBzfSApICkgewoKICAgICAgICAgICAgICAgICMgcHJlcGFyZSBncm91cCBsb29rdXAgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEFjY2Vzc09rID0gMDsKICAgICAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICAgICAgZm9yIG15ICRHcm91cE5hbWUgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgR1JPVVAgaWYgISRHcm91cExvb2t1cHskR3JvdXBOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgJEFjY2Vzc09rID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyAkQWNjZXNzT2s7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJEZpbHRlck5hbWUgZXEgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSAmJiBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zKSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0gPSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zLT57JENvbmZpZ0lkZW50aWZpZXJ9IC8vIFtdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiAmJiBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zKSApIHsKICAgICAgICAgICAgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfSA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zJyktPntEZWZhdWx0fSAvLyBbXTsKICAgICAgICB9CiAgICAgICAgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gPSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9OwogICAgfQoKICAgICMgaWYgcHJlZmVyZW5jZSBzZXR0aW5ncyBhcmUgYXZhaWxhYmxlLCBvdmVyd3JpdGUgZW5hYmxlZCBjb2x1bW5zIHdpdGggcHJlZmVyZW5jZXMKICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9ICkgewoKICAgICAgICBteSAkQ29sdW1uc0VuYWJsZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ID0gSXNBcnJheVJlZldpdGhEYXRhKCRDb2x1bW5zRW5hYmxlZCkgPyAkQ29sdW1uc0VuYWJsZWQgOiBbXTsKICAgIH0KCiAgICAjIGFsd2F5cyBzZXQgY29uZmlnIGl0ZW0gbnVtYmVyCiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ051bWJlcicgfSAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCogKSB7CiAgICAgICAgdW5zaGlmdCAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCosICdOdW1iZXInOwogICAgfQogICAgaWYgKCAhZ3JlcCB7ICRfIGVxICdOdW1iZXInIH0gJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CiAgICAgICAgdW5zaGlmdCAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiwgJ051bWJlcic7CiAgICB9CgogICAgIyBnZXQgbmVjZXNzYXJ5IGR5bmFtaWMgZmllbGQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZHMgYW5kIHNldCBhdmFpbGFibGUgYW5kIHZhbGlkIGZpbHRlciBhbmQgc29ydGFibGUgY29sdW1ucwogICAgRFlOQU1JQ0ZJRUxETkFNRToKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqICkgewoKICAgICAgICBteSAkRmllbGROYW1lOwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZE5hbWUgPX4gbXsgRHluYW1pY0ZpZWxkXyg/PEZpZWxkTmFtZT5bQS1aYS16MC05XC1dKykgfXhtcyApIHsKICAgICAgICAgICAgJEZpZWxkTmFtZSA9ICQre0ZpZWxkTmFtZX07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRE5BTUU7CiAgICAgICAgfQoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIHN0b3JlIGZpZWxkIGNvbmZpZwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiwgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZmlsdHJhYmxlIGFuZCBzb3J0YWJsZSBiZWhhdmlvcnMKICAgICAgICBmb3IgbXkgJEJlaGF2aW9yIChxdyhGaWx0cmFibGUgU29ydGFibGUpKSB7CgogICAgICAgICAgICBteSAkSGFzQmVoYXZpb3IgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAiSXMkQmVoYXZpb3IiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRIYXNCZWhhdmlvcikgewogICAgICAgICAgICAgICAgJFNlbGYtPnsiQXZhaWxhYmxlJHtCZWhhdmlvcn1Db2x1bW5zIn17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGhhc2ggd2l0aCBhbGwgdmFsaWQgc29ydGFibGUgY29sdW1ucyAodGFrZW4gZnJvbSBJVFNNQ29uZmlnSXRlbVNlYXJjaCkKICAgICMgU29ydEJ5ICA9PiAnQWdlJywgICAjIENyZWF0ZWR8TnVtYmVyfENoYW5nZWR8TmFtZXxEZXBsU3RhdGV8Q3VyRGVwbFN0YXRlCiAgICAjIHxJbmNpU3RhdGV8Q3VySW5jaVN0YXRlCiAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfSA9IHsKICAgICAgICAnQWdlJyAgICAgICAgICA9PiAxLAogICAgICAgICdOdW1iZXInICAgICAgID0+IDEsCiAgICAgICAgJ05hbWUnICAgICAgICAgPT4gMSwKICAgICAgICAnQ3JlYXRlZCcgICAgICA9PiAxLAogICAgICAgICdMYXN0Q2hhbmdlZCcgID0+IDEsCiAgICAgICAgJ0RlcGxTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VyRGVwbFN0YXRlJyA9PiAxLAogICAgICAgICdJbmNpU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckluY2lTdGF0ZScgPT4gMSwKICAgIH07CgogICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHsKICAgICAgICBkZWZpbmVkICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30KICAgICAgICA/ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPiUqCiAgICAgICAgOiAoKSwKICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEFjdGlvblJvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudEFjdGlvblJvd0J1bGsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhIGNvbHVtbiBmaWx0ZXIgYW5kIG5vIHJlc3VsdHMsIGFuZCBwcmludCBhIGxpbmsgdG8gYmFjawogICAgaWYgKCBzY2FsYXIgQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gPT0gMCAmJiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIHJlZ3VsYXIgY29sdW1ucwogICAgbXkgJENvbHVtbnMgPSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9OwogICAgaWYgKCAkQ29sdW1ucyAmJiBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnMpICkgewoKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCAkQ29sdW1ucy0+QCogKSB7CgogICAgICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgdHJhbnNsYXRlZCBpbiB0aGUgbmV4dCBibG9jawogICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAkQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRDb2x1bW47CiAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdMYXN0IGNoYW5nZWQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbicgLiAkQ29sdW1uLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoJFRyYW5zbGF0ZWRXb3JkKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgdHJhbnNsYXRpb25zIGZvciB0aGUgYWxsb2NhdGlvbiBsaXN0cyBmb3IgZHluYW1pYyBmaWVsZCBjb2x1bW5zCiAgICBteSAkQ29sdW1uc0R5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICApOwoKICAgIGlmICggJENvbHVtbnNEeW5hbWljRmllbGQgJiYgSXNBcnJheVJlZldpdGhEYXRhKCRDb2x1bW5zRHluYW1pY0ZpZWxkKSApIHsKCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBzb3J0IEB7JENvbHVtbnNEeW5hbWljRmllbGR9ICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGQ7CgogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbkR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGQtPntMYWJlbH0gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBTb3J0T3JkZXJCYXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJyc7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIElmICRQYXJhbXtFbmFibGVDb2x1bW5GaWx0ZXJzfSBpcyBub3Qgc2VudCwgd2Ugd2FudCB0byBkaXNhYmxlIGFsbCBmaWx0ZXJzCiAgICAjICAgZm9yIHRoZSBjdXJyZW50IHNjcmVlbi4gV2UgbG9jYWxpemUgdGhlIHNldHRpbmcgZm9yIHRoaXMgc3ViIGFuZCBjaGFuZ2UgaXQKICAgICMgICBhZnRlciB0aGF0LCBpZiBuZWVkZWQuIFRoZSBvcmlnaW5hbCB2YWx1ZSB3aWxsIGJlIHJlc3RvcmVkIGFmdGVyIHRoaXMgZnVuY3Rpb24uCiAgICBsb2NhbCAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9ID0gJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfTsKICAgIGlmICggISRQYXJhbXtFbmFibGVDb2x1bW5GaWx0ZXJzfSApIHsKICAgICAgICAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9ID0ge307ICAgICMgZGlzYWJsZSBhbGwgY29sdW1uIGZpbHRlcnMKICAgIH0KCiAgICBmb3IgbXkgJEl0ZW0gKHF3KENvbmZpZ0l0ZW1JRHMgUGFnZVNob3duIFN0YXJ0SGl0KSkgewogICAgICAgIGlmICggISRQYXJhbXskSXRlbX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRJdGVtISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWZpbmUgaW5jaWRlbnQgc2lnbmFscwogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgc3RvcmUgZGVwbG95bWVudCBzaWduYWxzCiAgICBteSAlRGVwbFNpZ25hbHM7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGlzdCBvZiBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBzZXQgZGVwbG95bWVudCBzdHlsZSBjb2xvcnMKICAgIG15ICRTdHlsZUNsYXNzZXMgPSAnJzsKCiAgICBJVEVNSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyREZXBsb3ltZW50U3RhdGVzTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgcHJlZmVyZW5jZXMKICAgICAgICBteSAlR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJEdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICgkQ29sb3IpID0gJEdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXN7Q29sb3J9LT5AKjsKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJENvbG9yOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvbnZlcnRlZCBkZXBsb3ltZW50IHN0YXRlIGFzIHZhbHVlCiAgICAgICAgJERlcGxTaWduYWxzeyAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfSB9ID0gJERlcGxTdGF0ZTsKCiAgICAgICAgIyBjb252ZXJ0IHRvIGxvd2VyIGNhc2UKICAgICAgICBteSAkRGVwbFN0YXRlQ29sb3IgPSAoIGxjICRDb2xvciApID1+IHMvW14wLTlhLWZdLy9tc2dyOwoKICAgICAgICAjIGFkZCB0byBzdHlsZSBjbGFzc2VzIHN0cmluZwogICAgICAgICRTdHlsZUNsYXNzZXMgLj0gIgogICAgICAgICAgICAuRmxhZyBzcGFuLiREZXBsU3RhdGUgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIyREZXBsU3RhdGVDb2xvcjsKICAgICAgICAgICAgfQogICAgICAgICI7CiAgICB9CgogICAgIyB3cmFwIGludG8gc3R5bGUgdGFncwogICAgaWYgKCRTdHlsZUNsYXNzZXMpIHsKICAgICAgICAkU3R5bGVDbGFzc2VzID0gIjxzdHlsZT4kU3R5bGVDbGFzc2VzPC9zdHlsZT4iOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAwOwogICAgbXkgQENvbmZpZ0l0ZW1Cb3g7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIEB7ICRQYXJhbXtDb25maWdJdGVtSURzfSB9ICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9ICYmICRDb3VudGVyIDwgKCAkUGFyYW17UGFnZVNob3dufSArICRQYXJhbXtTdGFydEhpdH0gKSApIHsKCiAgICAgICAgICAgICMgR2V0IGNvbmZpZyBpdGVtIGRhdGEuCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICVDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1SZWYtPiUqOwoKICAgICAgICAgICAgIyBzZXQgZGVwbG95bWVudCBhbmQgaW5jaWRlbnQgc2lnbmFscwogICAgICAgICAgICAkQ29uZmlnSXRlbXtDdXJEZXBsU2lnbmFsfSA9ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW17Q3VyRGVwbFN0YXRlfSB9OwogICAgICAgICAgICAkQ29uZmlnSXRlbXtDdXJJbmNpU2lnbmFsfSA9ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW17Q3VySW5jaVN0YXRlVHlwZX0gfTsKCiAgICAgICAgICAgICMgZmlsbCBjb2x1bW4gbmFtZSBhdHRyaWJ1dGUgd2l0aCBjb3JyZXNwb25kaW5nIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICRDb25maWdJdGVte0NyZWF0ZWR9ICAgICA9ICRDb25maWdJdGVte0NyZWF0ZVRpbWV9OwogICAgICAgICAgICAkQ29uZmlnSXRlbXtMYXN0Q2hhbmdlZH0gPSAkQ29uZmlnSXRlbXtDaGFuZ2VUaW1lfTsKCiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1Cb3gsIFwlQ29uZmlnSXRlbTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBjb2x1bW5zZW5hYmxlZCBpcyBhIGZpbGxlZCBhcnJheSByZWZlcmVuY2UKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSApICkgewoKICAgICAgICAjIGNoZWNrIGlmIGNvbHVtbiBpcyByZWFsbHkgZmlsdGVyYWJsZQogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICRDb2x1bW5OYW1lICggQHsgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbk5hbWV9OwogICAgICAgICAgICAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1uTmFtZX0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ29sdW1uVmFsdWVzID0gJFNlbGYtPl9HZXRDb2x1bW5WYWx1ZXMoCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9LAogICAgKTsKCiAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdMaW5rUGFnZScsCiAgICAgICAgVmFsdWUgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb250ZW50JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYXJyYXkgdG8gc2F2ZSB0aGUgY29sdW1uIG5hbWVzIHRvIGRvIHRoZSBxdWVyeQogICAgbXkgQENvbCA9IEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH07CgogICAgIyBkZWZpbmUgc3BlY2lhbCBjb25maWcgaXRlbSBjb2x1bW5zCiAgICBteSAlU3BlY2lhbENvbHVtbnMgPSAoCiAgICAgICAgTnVtYmVyICAgICAgICA9PiAxLAogICAgICAgIEN1ckRlcGxTaWduYWwgPT4gMSwKICAgICAgICBDdXJJbmNpU2lnbmFsID0+IDEsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICRQYXJhbXtPcmRlckJ5fSA9ICRQYXJhbXtPcmRlckJ5fSB8fCAnVXAnOwogICAgJFBhcmFte1NvcnRCeX0gID0gJFBhcmFte1NvcnRCeX0gIHx8ICdOdW1iZXInOwoKICAgIG15ICRDb25maWdJdGVtRGF0YSA9IHNjYWxhciBAQ29uZmlnSXRlbUJveDsKICAgIGlmICgkQ29uZmlnSXRlbURhdGEpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VGFibGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyA9PiAkU3R5bGVDbGFzc2VzLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RhYmxlSGVhZGVyJyApOwoKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdCdWxrTmF2QmFyJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRDU1MgPSAnJzsKCiAgICAgICAgIyBzaG93IHNwZWNpYWwgY29uZmlnIGl0ZW0gY29sdW1ucywgaWYgbmVlZGVkCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbCkgewogICAgICAgICAgICBteSAkU3RhdGljQ29sdW1uID0gISRDb3VudGVyOwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENTUyA9ICRDb2x1bW4gLiAoICRTdGF0aWNDb2x1bW4gPyAnIFN0YXRpY0NvbHVtbicgOiAnJyApOwogICAgICAgICAgICBteSAkVGl0bGUgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW17T3JkZXJCeX07CgogICAgICAgICAgICAjIFRyYW5zZm9ybSBmaWx0ZXIgbmFtZSB0byBjb2x1bW4gbmFtZQogICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9IGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gJ0xhc3RDaGFuZ2VkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcmFsbCBibG9jayBzbyBOdW1iZXIgYXMgd2VsbCBhcyBvdGhlciBjb2x1bW5zIGNhbiBiZSBvcmRlcmVkCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSAmJgogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRDb2x1bW59IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnsgJENvbHVtbiAuICdJRHMnIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0ZXJBY3RpdmUnOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiT3ZlcnZpZXdOYXZCYXJQYWdlJENvbHVtbiIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4gICAgICAgICB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUyAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIGh0bWwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgZmlsdGVyYWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgc29ydGFibGUKICAgICAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiAhfiBte1xBIER5bmFtaWNGaWVsZF99eG1zICkgewoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAkQ29sdW1uICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2Ugb3JkZXIgZm9yIHNvcnRpbmcgY29sdW1uLgogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJE9yZGVyQnkgZXEgJ1VwJyA/ICdEb3duJyA6ICdVcCc7CgogICAgICAgICAgICAgICAgICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGNvbHVtbiBuYW1lIHRvIHdyaXRlIGl0IGluIHRoZSBjdXJyZW50IGxhbmd1YWdlCiAgICAgICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0luY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgY2hhbmdlZCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDb2x1bW4pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSAgICAgPSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnsgJENvbHVtbiAuICdJRHMnIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGp1c3QgZmlsdGVyYWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBzb3J0YWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNob3cgdGhlIERGcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICAgICAgICAgbXkgJERGQ29sdW1uID0gJENvbHVtbjsKICAgICAgICAgICAgICAgICRERkNvbHVtbiA9fiBzL0R5bmFtaWNGaWVsZF8vL2c7CiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJERGQ29sdW1uOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgICAgICAgICAkVGl0bGUgPSAkTGFiZWw7CiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgPSAkTGFiZWw7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgc29ydGFibGUgY29uZGl0aW9uCiAgICAgICAgICAgICAgICBteSAkSXNTb3J0YWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJElzU29ydGFibGUpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ1NTID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAoICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSApICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hhbmdlIG9yZGVyIGZvciBzb3J0aW5nIGNvbHVtbi4KICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSAmJiAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0ZXJBY3RpdmUnOwogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZVNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19GaWx0cmFibGVTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19Tb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE5hbWU7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19GaWx0cmFibGVOb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnVGFibGVCb2R5JyApOwoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdOb0NvbmZpZ0l0ZW1Gb3VuZCcgKTsKICAgIH0KCiAgICAjIGJhY2sgbGluawogICAgaWYgKCAkUGFyYW17TGlua0JhY2t9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmaWx0ZXIgc2VsZWN0aW9uCiAgICBpZiAoICRQYXJhbXtGaWx0ZXJzfSApIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlcnMnLAogICAgICAgICk7CgogICAgICAgIG15IEBOYXZCYXJGaWx0ZXJzOwogICAgICAgIGZvciBteSAkUHJpbyAoIHNvcnQga2V5cyAleyAkUGFyYW17RmlsdGVyc30gfSApIHsKICAgICAgICAgICAgcHVzaCBATmF2QmFyRmlsdGVycywgJFBhcmFte0ZpbHRlcnN9LT57JFByaW99OwogICAgICAgIH0KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlcicsCiAgICAgICAgKTsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkRmlsdGVyIChATmF2QmFyRmlsdGVycykgewogICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICAgICAgaWYgKCAkQ291bnQgPT0gc2NhbGFyIEBOYXZCYXJGaWx0ZXJzICkgewogICAgICAgICAgICAgICAgJEZpbHRlci0+e0NTU30gPSAnTGFzdCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggJEZpbHRlci0+e0ZpbHRlcn0gZXEgJFBhcmFte0ZpbHRlcn0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVySXRlbVNlbGVjdGVkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1SZWYgKEBDb25maWdJdGVtQm94KSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICV7JENvbmZpZ0l0ZW1SZWZ9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0YWJsZSgnQnVsaycpLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICAgICAjIHNhdmUgY29sdW1uIGNvbnRlbnQKICAgICAgICBteSAkRGF0YVZhbHVlOwoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgc2hvdyBhbGwgbmVlZGVkIGNvbHVtbnMKICAgICAgICBDT05GSUdJVEVNQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNvbHVtbiAoQENvbCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld1JvdycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRTdGF0aWNDb2x1bW4gPSAhJENvdW50ZXI7CiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbmZpZ0l0ZW1Db2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbmZpZ0l0ZW1Db2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZEJ5JyApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbmZpZ0l0ZW1DcmVhdGVkQnlJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJENvbmZpZ0l0ZW17Q3JlYXRlQnl9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbUNyZWF0ZWRCeUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQmxvY2tUeXBlID0gJyc7CiAgICAgICAgICAgICAgICBteSAkQ1NTQ2xhc3MgID0gJFN0YXRpY0NvbHVtbiA/ICdTdGF0aWNDb2x1bW4nIDogJyc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0RlcGxTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ2xhc3MnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVHJhbnNsYXRhYmxlJzsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZCcgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CgogICAgICAgICAgICAgICAgICAgICMgSWYgdmFsdWUgaXMgaW4gZGF0ZSBmb3JtYXQsIGNoYW5nZSBibG9jayB0eXBlIHRvICdUaW1lJyBzbyBpdCBjYW4gYmUgbG9jYWxpemVkLiBTZWUgYnVnIzE0NTQyLgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkRGF0YVZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICREYXRhVmFsdWUgPX4gL15cZFxkXGRcZC0oXGR8XGRcZCktKFxkfFxkXGQpXHMoXGR8XGRcZCk6KFxkfFxkXGQpOihcZHxcZFxkKSQvCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJy0nLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgYWN0aW9uIGl0ZW1zIGFzIGpzCiAgICAgICAgaWYgKCAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKSB7CgogICAgICAgICAgICAjIHJlcGxhY2UgVFQgZGlyZWN0aXZlcyBmcm9tIHN0cmluZyB3aXRoIHZhbHVlcwogICAgICAgICAgICBmb3IgbXkgJEFjdGlvbkl0ZW0gKCBAeyAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gfSApIHsKICAgICAgICAgICAgICAgICRBY3Rpb25JdGVtLT57TGlua30gPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJEFjdGlvbkl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjICRBY3Rpb25Sb3dDb25maWdJdGVtc3sgJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSB9ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtQWN0aW9uUm93LicgLiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjb2x1bW4gZmlsdGVyIGZvcm0sIHRvIGNvcnJlY3RseSBmaWxsIHRoZSBjb2x1bW4gZmlsdGVycyBpcyBuZWNlc3NhcnkgdG8gcGFzcyBlYWNoCiAgICAjICAgIG92ZXJ2aWV3IHNvbWUgaW5mb3JtYXRpb24gaW4gdGhlIEFKQVggY2FsbCwgZm9yIGV4YW1wbGUgdGhlIGZpeGVkIEZpbHRlcnMgb3IgTmF2QmFyRmlsdGVycwogICAgIyAgICBhbmQgYWxzbyBvdGhlciB2YWx1ZXMgbGlrZSB0aGUgUXVldWUgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVF1ZXVlLCBvdGhlcndpc2UgdGhlIGZpbHRlcnMgd2lsbCBiZQogICAgIyAgICBmaWxsZWQgd2l0aCBkZWZhdWx0IHJlc3RyaWN0aW9ucywgcmVzdWx0aW5nIGluIG1vcmUgb3B0aW9ucyB0aGFuIHRoZSBvbmVzIHRoYXQgdGhlCiAgICAjICAgIGF2YWlsYWJsZSBjb25maWcgaXRlbXMgc2hvdWxkIHByb3ZpZGUsIHNlZSBCdWcjOTkwMgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbHVtbkZpbHRlckZvcm19ICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSB9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybUVsZW1lbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRWxlbWVudE5hbWUgID0+ICRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRWYWx1ZSA9PiAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0tPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwogICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlcicpLT4kRnVuY3Rpb25OYW1lKAogICAgICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmllbGROYW1lIG5lICRIZWFkZXJDb2x1bW47CgogICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgICAgICAgICBteSAkSXNGaWx0cmFibGUgICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNGaWx0cmFibGU7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ID0gJElzRmlsdHJhYmxlOwogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbUlEcykgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIGhpc3RvcmljYWwgdmFsdWVzIGZvciB0aGUgZmllbGQKICAgICAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+Q29sdW1uRmlsdGVyVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUNvbHVtbkZpbHRlclZhbHVlczsKfQoKc3ViIF9Jbml0aWFsQ29sdW1uRmlsdGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH0gfHwgJFBhcmFte0NvbHVtbk5hbWV9OwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICcnLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgIF07CgogICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJsZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0gMDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDbGFzcycKICAgICAgICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9uT3B0aW9uID0gMTsKICAgIH0KCiAgICBteSAkQ2xhc3MgPSAnQ29sdW1uRmlsdGVyJzsKICAgIGlmICggJFBhcmFte0Nzc30gKSB7CiAgICAgICAgJENsYXNzIC49ICcgJyAuICRQYXJhbXtDc3N9OwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBGaWx0ZXJDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17SGVhZGVyQ29sdW1ufTsKCiAgICBteSAkSGVhZGVyQ29sdW1uID0gJFBhcmFte0hlYWRlckNvbHVtbn07CgogICAgIyBnZXQgY29sdW1uIHZhbHVlcyBmb3IgdG8gYnVpbGQgdGhlIGZpbHRlcnMgbGF0ZXIKICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30sCiAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICApOwoKICAgICMgYXBwbHkgcmVzdHJpY3Rpb25zIGZvciBjdXN0b21lciBwZXJtaXNzaW9uIGNvbmRpdGlvbnMKICAgIGlmICggJEhlYWRlckNvbHVtbiBlcSAnQ2xhc3MnICYmICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17Q2xhc3Nlc30tPkAqICkgewogICAgICAgIGZvciBteSAkRmlsdGVyVmFsdWUgKCBrZXlzICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufS0+JSogKSB7CiAgICAgICAgICAgIGlmICggIWdyZXAgeyAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn17JEZpbHRlclZhbHVlfSBlcSAkXyB9ICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdEZXBsU3RhdGUnICYmICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17RGVwbFN0YXRlc30tPkAqICkgewogICAgICAgIGZvciBteSAkRmlsdGVyVmFsdWUgKCBrZXlzICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufS0+JSogKSB7CiAgICAgICAgICAgIGlmICggIWdyZXAgeyAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn17JEZpbHRlclZhbHVlfSBlcSAkXyB9ICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17RGVwbFN0YXRlc30tPkAqICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTZWxlY3RlZFZhbHVlICA9ICcnOwogICAgbXkgJFNlbGVjdGVkQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CiAgICAgICAgJFNlbGVjdGVkQ29sdW1uIC49ICdJRHMnOwogICAgfQoKICAgIG15ICRMYWJlbENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRMYWJlbENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgJExhYmVsQ29sdW1uID1+IHN7XEEgRHluYW1pY0ZpZWxkXyB9e314bXM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkTGFiZWxDb2x1bW47CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAgICAgJExhYmVsQ29sdW1uID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkU2VsZWN0ZWRDb2x1bW4gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSB7CgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApICkgewogICAgICAgICAgICAkU2VsZWN0ZWRWYWx1ZSA9ICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59LT5bMF07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICRTZWxlY3RlZFZhbHVlID0gJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0tPntFcXVhbHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkU2VsZi0+X0NvbHVtbkZpbHRlckpTT04oCiAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsQ29sdW1uLAogICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkVmFsdWUsCiAgICApOwoKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySlNPTjsKfQoKIyA9aGVhZDIgX0NvbHVtbkZpbHRlckpTT04oKQoKIyAgICAgY3JlYXRlcyBhIEpTT04gc2VsZWN0IGZpbHRlciBmb3IgY29sdW1uIGhlYWRlcgoKIyAgICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkSVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsT2JqZWN0LT5fQ29sdW1uRmlsdGVySlNPTigKIyAgICAgICAgIENvbHVtbk5hbWUgPT4gJ1F1ZXVlJywKIyAgICAgICAgIExhYmVsICAgICAgPT4gJ1F1ZXVlJywKIyAgICAgICAgIENvbHVtblZhbHVlcyA9PiB7CiMgICAgICAgICAgICAgMSA9PiAnUG9zdE1hc3RlcicsCiMgICAgICAgICAgICAgMiA9PiAnSnVuaycsCiMgICAgICAgICB9LAojICAgICAgICAgU2VsZWN0ZWRWYWx1ZSAnMScsCiMgICAgICk7CgojID1jdXQKCnN1YiBfQ29sdW1uRmlsdGVySlNPTiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICgKICAgICAgICAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfSAmJgogICAgICAgICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSAuICdJRHMnIH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfTsKICAgICRMYWJlbCA9fiBzeyBcQSBEeW5hbWljRmllbGRfIH17fWd4bXM7CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlbGV0ZUZpbHRlcicsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJy0nLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnLScsCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfSwKICAgIF07CgogICAgaWYgKCAkUGFyYW17Q29sdW1uVmFsdWVzfSAmJiByZWYgJFBhcmFte0NvbHVtblZhbHVlc30gZXEgJ0hBU0gnICkgewoKICAgICAgICBteSAlVmFsdWVzID0gJXsgJFBhcmFte0NvbHVtblZhbHVlc30gfTsKCiAgICAgICAgIyBTZXQgcG9zc2libGUgdmFsdWVzLgogICAgICAgIGZvciBteSAkVmFsdWVLZXkgKCBzb3J0IHsgbGMgJFZhbHVlc3skYX0gY21wIGxjICRWYWx1ZXN7JGJ9IH0ga2V5cyAlVmFsdWVzICkgewogICAgICAgICAgICBwdXNoIEB7JERhdGF9LCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkVmFsdWVLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVzeyRWYWx1ZUtleX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGlmIGNvbHVtbiBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xhdGFibGUKICAgIG15ICRUcmFuc2xhdGlvbk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnSW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ2xhc3MnCiAgICAgICAgKQogICAgewogICAgICAgICRUcmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJERhdGEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY0tleScsCiAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U2VsZWN0ZWRWYWx1ZX0sCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uT3B0aW9uLAogICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAkSlNPTjsKfQoKc3ViIF9EZWZhdWx0Q29sdW1uU29ydCB7CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIEN1ckRlcGxTaWduYWwgPT4gMTEwLAogICAgICAgIEN1ckluY2lTaWduYWwgPT4gMTExLAogICAgICAgIENsYXNzICAgICAgICAgPT4gMTEyLAogICAgICAgIE51bWJlciAgICAgICAgPT4gMTEzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gMTE0LAogICAgICAgIEN1ckRlcGxTdGF0ZSAgPT4gMTE1LAogICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gMTE2LAogICAgICAgIExhc3RDaGFuZ2VkICAgPT4gMTE3LAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGNhbiBub3QgYmUgb24gdGhlIERlZmF1bHRDb2x1bW5zIHNvcnRpbmcgaGFzaAogICAgIyB3aGVuIGNvbXBhcmluZyAyIGR5bmFtaWMgZmllbGRzIHNvcnRpbmcgbXVzdCBiZSBhbHBoYWJldGljYWwKICAgIGlmICggISREZWZhdWx0Q29sdW1uc3skYX0gJiYgISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuICRhIGNtcCAkYjsKICAgIH0KCiAgICAjIHdoZW4gYSBkeW5hbWljIGZpZWxkIGlzIGNvbXBhcmVkIHRvIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGl0IG11c3QgYmUgaGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgd2hlbiBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmllbGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwgY29tcGFyaXNvbiB3aXRoIHRoZSBjb25maWcgaXRlbSBhdHRyaWJ1dGVzCiAgICByZXR1cm4gJERlZmF1bHRDb2x1bW5zeyRhfSA8PT4gJERlZmF1bHRDb2x1bW5zeyRifTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/OverviewSmall.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6T3ZlcnZpZXdTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SlNPTicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBcJVBhcmFtOwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUNvbHVtbnN9ID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CgogICAgIyBsb2FkIGJhY2tlbmQgY29uZmlnCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSA9ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OicgLiAkU2VsZi0+e0FjdGlvbn07CiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJEJhY2tlbmRDb25maWdLZXkpOwoKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2V0IHN0b3JlZCBmaWx0ZXJzIGlmIHByZXNlbnQKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CiAgICBpZiAoICRQcmVmZXJlbmNlc3skU3RvcmVkRmlsdGVyc0tleX0gKSB7CiAgICAgICAgbXkgJFN0b3JlZEZpbHRlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICAgICApOwogICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30gPSAkU3RvcmVkRmlsdGVyczsKICAgIH0KCiAgICAjIGxvb2sgdXAgZmlsdGVyIGFzIGZpbHRlciBuYW1lcyBpbiAkU2VsZiBhcmUgcG90ZW50aWFsbHkgdHJhbnNsYXRlZAogICAgbXkgJEZpbHRlck5hbWU7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0ZpbHRlcnN9eyAkU2VsZi0+e0ZpbHRlcn0gfSApICkgewogICAgICAgIG15ICRJdGVtTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwoKICAgICAgICAkRmlsdGVyTmFtZSA9ICRJdGVtTGlzdC0+eyAkU2VsZi0+e0ZpbHRlcn0gfSAvLyAnJzsKICAgIH0KICAgICRGaWx0ZXJOYW1lIHx8PSAnQWxsJzsKCiAgICAjIGdhdGhlciBjb2x1bW4gY29uZmlnCiAgICAjICAgY29uZmlnIGZyb20gQWdlbnRJVFNNQ29uZmlnSXRlbSBvdmVydmlldyBpcyB1c2VkIGZvciBib3RoIG92ZXJ2aWV3IGFuZCBzZWFyY2ggcmVzdWx0IHZpZXcKICAgIG15ICRPdmVydmlld0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtJyk7CgogICAgJFNlbGYtPntDb25maWd9e0RlZmF1bHRDb2x1bW5zfSAgICAgICAgPSAkT3ZlcnZpZXdDb25maWctPntEZWZhdWx0Q29sdW1uc307CiAgICAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfSA9ICRPdmVydmlld0NvbmZpZy0+e0NsYXNzQ29sdW1uc0F2YWlsYWJsZX07CiAgICAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH0gICA9ICRPdmVydmlld0NvbmZpZy0+e0NsYXNzQ29sdW1uc0RlZmF1bHR9OwogICAgJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0Rpc2FibGVkfSAgPSAkT3ZlcnZpZXdDb25maWctPntDbGFzc0NvbHVtbnNEaXNhYmxlZH07CiAgICBteSAlQ29sdW1uQ29uZmlnID0gJFNlbGYtPntDb25maWd9e0RlZmF1bHRDb2x1bW5zfS0+JSo7CgogICAgIyBpZiBjbGFzcyBmaWx0ZXIgaXMgc2V0LCBkaXNwbGF5IGNsYXNzIHNwZWNpZmljIGZpZWxkcwogICAgaWYgKCAkRmlsdGVyTmFtZSAmJiAkRmlsdGVyTmFtZSBuZSAnQWxsJyApIHsKCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfSAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNBdmFpbGFibGV9eyRGaWx0ZXJOYW1lfSApICkgewogICAgICAgICAgICBmb3IgbXkgJEF2YWlsYWJsZUNvbHVtbiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNBdmFpbGFibGV9eyRGaWx0ZXJOYW1lfS0+QCogKSB7CiAgICAgICAgICAgICAgICAkQ29sdW1uQ29uZmlneyRBdmFpbGFibGVDb2x1bW59ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH17JEZpbHRlck5hbWV9ICkgKSB7CiAgICAgICAgICAgIGZvciBteSAkRGVmYXVsdENvbHVtbiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEZWZhdWx0fXskRmlsdGVyTmFtZX0tPkAqICkgewogICAgICAgICAgICAgICAgJENvbHVtbkNvbmZpZ3skRGVmYXVsdENvbHVtbn0gPSAyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEaXNhYmxlZH0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGlzYWJsZWR9eyRGaWx0ZXJOYW1lfSApICkgewogICAgICAgICAgICBmb3IgbXkgJERpc2FibGVkQ29sdW1uICggJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0Rpc2FibGVkfXskRmlsdGVyTmFtZX0tPkAqICkgewogICAgICAgICAgICAgICAgJENvbHVtbkNvbmZpZ3skRGlzYWJsZWRDb2x1bW59ID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG1lcmdlIHNldHRpbmdzIGZyb20gY2xhc3MgY29uZmlnIGFuZCBkZWZhdWx0IGNvbmZpZwogICAgQ09MVU1OOgogICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IF9EZWZhdWx0Q29sdW1uU29ydCBrZXlzICVDb2x1bW5Db25maWcgKSB7CgogICAgICAgICMgc2tpcCBkaXNhYmxlZCBjb2x1bW5zCiAgICAgICAgbmV4dCBDT0xVTU4gdW5sZXNzICRDb2x1bW5Db25maWd7JENvbHVtbn07CgogICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkQ29sdW1uIH0gJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCosICRDb2x1bW47CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb2x1bW5Db25maWd7JENvbHVtbn0gPT0gMiAmJiAhZ3JlcCB7ICRfIGVxICRDb2x1bW4gfSAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0tPkAqLCAkQ29sdW1uOwogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIHByZWZlcmVuY2Ugc2V0dGluZ3MgYXJlIGF2YWlsYWJsZSwgb3ZlcndyaXRlIGVuYWJsZWQgY29sdW1ucyB3aXRoIHByZWZlcmVuY2VzCiAgICBpZiAoICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gfSApIHsKCiAgICAgICAgbXkgJENvbHVtbnNFbmFibGVkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKS0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gfSwKICAgICAgICApOwoKICAgICAgICAjIGZpbHRlciBkaXNhYmxlZCBjb2x1bW5zCiAgICAgICAgbXkgQEZpbHRlcmVkQ29sdW1uc0VuYWJsZWQ7CiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnNFbmFibGVkKSApIHsKCiAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKCAkQ29sdW1uc0VuYWJsZWQtPkAqICkgewoKICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIHVubGVzcyAkQ29sdW1uQ29uZmlneyRDb2x1bW59OwoKICAgICAgICAgICAgICAgIHB1c2ggQEZpbHRlcmVkQ29sdW1uc0VuYWJsZWQsICRDb2x1bW47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ID0gXEBGaWx0ZXJlZENvbHVtbnNFbmFibGVkOwogICAgfQoKICAgICMgYWx3YXlzIHNldCBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggIWdyZXAgeyAkXyBlcSAnTnVtYmVyJyB9ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiApIHsKICAgICAgICB1bnNoaWZ0ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiwgJ051bWJlcic7CiAgICB9CiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ051bWJlcicgfSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiApIHsKICAgICAgICB1bnNoaWZ0ICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqLCAnTnVtYmVyJzsKICAgIH0KCiAgICAjIGdldCBuZWNlc3NhcnkgZHluYW1pYyBmaWVsZCBvYmplY3RzCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgY29sbGVjdCBkeW5hbWljIGZpZWxkcyBhbmQgc2V0IGF2YWlsYWJsZSBhbmQgdmFsaWQgZmlsdGVyIGFuZCBzb3J0YWJsZSBjb2x1bW5zCiAgICBEWU5BTUlDRklFTEROQU1FOgogICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lICggJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CgogICAgICAgIG15ICRGaWVsZE5hbWU7CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkTmFtZSA9fiBteyBEeW5hbWljRmllbGRfKD88RmllbGROYW1lPltBLVphLXowLTlcLV0rKSB9eG1zICkgewogICAgICAgICAgICAkRmllbGROYW1lID0gJCt7RmllbGROYW1lfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxETkFNRTsKICAgICAgICB9CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRE5BTUUgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIHN0b3JlIGZpZWxkIGNvbmZpZwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiwgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZmlsdHJhYmxlIGFuZCBzb3J0YWJsZSBiZWhhdmlvcnMKICAgICAgICBmb3IgbXkgJEJlaGF2aW9yIChxdyhGaWx0cmFibGUgU29ydGFibGUpKSB7CgogICAgICAgICAgICBteSAkSGFzQmVoYXZpb3IgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAiSXMkQmVoYXZpb3IiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRIYXNCZWhhdmlvcikgewogICAgICAgICAgICAgICAgJFNlbGYtPnsiQXZhaWxhYmxlJHtCZWhhdmlvcn1Db2x1bW5zIn17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGhhc2ggd2l0aCBhbGwgdmFsaWQgc29ydGFibGUgY29sdW1ucyAodGFrZW4gZnJvbSBJVFNNQ29uZmlnSXRlbVNlYXJjaCkKICAgICMgU29ydEJ5ICA9PiAnQWdlJywgICAjIENyZWF0ZWR8TnVtYmVyfENoYW5nZWR8TmFtZXxEZXBsU3RhdGV8Q3VyRGVwbFN0YXRlCiAgICAjIHxJbmNpU3RhdGV8Q3VySW5jaVN0YXRlCiAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfSA9IHsKICAgICAgICAnQWdlJyAgICAgICAgICA9PiAxLAogICAgICAgICdOdW1iZXInICAgICAgID0+IDEsCiAgICAgICAgJ05hbWUnICAgICAgICAgPT4gMSwKICAgICAgICAnQ3JlYXRlZCcgICAgICA9PiAxLAogICAgICAgICdMYXN0Q2hhbmdlZCcgID0+IDEsCiAgICAgICAgJ0RlcGxTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VyRGVwbFN0YXRlJyA9PiAxLAogICAgICAgICdJbmNpU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckluY2lTdGF0ZScgPT4gMSwKICAgIH07CgogICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHsKICAgICAgICBkZWZpbmVkICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30KICAgICAgICA/ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPiUqCiAgICAgICAgOiAoKSwKICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEFjdGlvblJvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IGZyb250ZW5kIHBlciBkZWZhdWx0IHRvIGFnZW50CiAgICAkUGFyYW17RnJvbnRlbmR9IC8vPSAnQWdlbnQnOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudEFjdGlvblJvd0J1bGsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhIGNvbHVtbiBmaWx0ZXIgYW5kIG5vIHJlc3VsdHMsIGFuZCBwcmludCBhIGxpbmsgdG8gYmFjawogICAgaWYgKCBzY2FsYXIgQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gPT0gMCAmJiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIHJlZ3VsYXIgY29sdW1ucwogICAgbXkgJENvbHVtbnMgPSAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfHwge307CiAgICBpZiAoICRDb2x1bW5zICYmIElzSGFzaFJlZldpdGhEYXRhKCRDb2x1bW5zKSApIHsKCiAgICAgICAgQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29sdW1uICggc29ydCBrZXlzICV7JENvbHVtbnN9ICkgewoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIHRyYW5zbGF0ZWQgaW4gdGhlIG5leHQgYmxvY2sKICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgJENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXM7CgogICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQgPSAkQ29sdW1uOwogICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW4nIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCRUcmFuc2xhdGVkV29yZCksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIGR5bmFtaWMgZmllbGQgY29sdW1ucwogICAgbXkgJENvbHVtbnNEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgKTsKCiAgICBpZiAoICRDb2x1bW5zRHluYW1pY0ZpZWxkICYmIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29sdW1uc0R5bmFtaWNGaWVsZCkgKSB7CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggc29ydCBAeyRDb2x1bW5zRHluYW1pY0ZpZWxkfSApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5EeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgU29ydE9yZGVyQmFyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBJZiAkUGFyYW17RW5hYmxlQ29sdW1uRmlsdGVyc30gaXMgbm90IHNlbnQsIHdlIHdhbnQgdG8gZGlzYWJsZSBhbGwgZmlsdGVycwogICAgIyAgIGZvciB0aGUgY3VycmVudCBzY3JlZW4uIFdlIGxvY2FsaXplIHRoZSBzZXR0aW5nIGZvciB0aGlzIHN1YiBhbmQgY2hhbmdlIGl0CiAgICAjICAgYWZ0ZXIgdGhhdCwgaWYgbmVlZGVkLiBUaGUgb3JpZ2luYWwgdmFsdWUgd2lsbCBiZSByZXN0b3JlZCBhZnRlciB0aGlzIGZ1bmN0aW9uLgogICAgbG9jYWwgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc307CiAgICBpZiAoICEkUGFyYW17RW5hYmxlQ29sdW1uRmlsdGVyc30gKSB7CiAgICAgICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHt9OyAgICAjIGRpc2FibGUgYWxsIGNvbHVtbiBmaWx0ZXJzCiAgICB9CgogICAgZm9yIG15ICRJdGVtIChxdyhDb25maWdJdGVtSURzIFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEl0ZW19ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkSXRlbSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGluY2lkZW50IHNpZ25hbHMKICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICBUcmFuc2xhdGFibGUoJ29wZXJhdGlvbmFsJykgPT4gJ2dyZWVubGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCdpbmNpZGVudCcpICAgID0+ICdyZWRsZWQnLAogICAgKTsKCiAgICAjIHN0b3JlIGRlcGxveW1lbnQgc2lnbmFscwogICAgbXkgJURlcGxTaWduYWxzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGxpc3Qgb2YgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgc2V0IGRlcGxveW1lbnQgc3R5bGUgY29sb3JzCiAgICBteSAkU3R5bGVDbGFzc2VzID0gJyc7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJUdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBjb2xvciBpcyBkZWZpbmVkIGluIHByZWZlcmVuY2VzCiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfTsKICAgICAgICBteSAoJENvbG9yKSA9ICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRDb2xvcjsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZQogICAgICAgIG15ICREZXBsU3RhdGUgPSAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgIyByZW1vdmUgYW55IG5vbiBhc2NpaSB3b3JkIGNoYXJhY3RlcnMKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBzdG9yZSB0aGUgb3JpZ2luYWwgZGVwbG95bWVudCBzdGF0ZSBhcyBrZXkKICAgICAgICAjIGFuZCB0aGUgc3Mgc2FmZSBjb252ZXJ0ZWQgZGVwbG95bWVudCBzdGF0ZSBhcyB2YWx1ZQogICAgICAgICREZXBsU2lnbmFsc3sgJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH0gfSA9ICREZXBsU3RhdGU7CgogICAgICAgICMgY29udmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gKCBsYyAkQ29sb3IgKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIG15ICRCdWxrRmVhdHVyZSA9IDA7CiAgICBpZiAoICRQYXJhbXtCdWxrfSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmUnKSApIHsKICAgICAgICBteSBAR3JvdXBzOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSApIHsKICAgICAgICAgICAgQEdyb3VwcyA9IEB7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhQEdyb3VwcyApIHsKICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwogICAgICAgICAgICBHUk9VUDoKICAgICAgICAgICAgZm9yIG15ICRHcm91cCAoQEdyb3VwcykgewogICAgICAgICAgICAgICAgbXkgJEhhc1Blcm1pc3Npb24gPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEdyb3VwTmFtZSA9PiAkR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCRIYXNQZXJtaXNzaW9uKSB7CiAgICAgICAgICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICAgICAgICAgICAgICBsYXN0IEdST1VQOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb3VudGVyID0gMDsKICAgIG15IEBDb25maWdJdGVtQm94OwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIGlmICggJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fSAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkgKSB7CgogICAgICAgICAgICAjIEdldCBjb25maWcgaXRlbSBkYXRhLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtUmVmLT4lKjsKCiAgICAgICAgICAgICMgc2V0IGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHNpZ25hbHMKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFNpZ25hbH0gPSAkRGVwbFNpZ25hbHN7ICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZX0gfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VySW5jaVNpZ25hbH0gPSAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVte0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgICAgICAjIGZpbGwgY29sdW1uIG5hbWUgYXR0cmlidXRlIHdpdGggY29ycmVzcG9uZGluZyBpdGVtIGF0dHJpYnV0ZQogICAgICAgICAgICAkQ29uZmlnSXRlbXtDcmVhdGVkfSAgICAgPSAkQ29uZmlnSXRlbXtDcmVhdGVUaW1lfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17TGFzdENoYW5nZWR9ID0gJENvbmZpZ0l0ZW17Q2hhbmdlVGltZX07CgogICAgICAgICAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICAgICAgICAgIG15ICVQb3NzaWJsZUFjdGlvbnM7CiAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgICAgICMgZ2V0IGFsbCByZWdpc3RlcmVkIEFjdGlvbnMKICAgICAgICAgICAgaWYgKCByZWYgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1vZHVsZScpIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICBteSAlQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNb2R1bGUnKSB9OwoKICAgICAgICAgICAgICAgICMgb25seSB1c2UgdGhvc2UgQWN0aW9ucyB0aGF0IHN0YXRzIHdpdGggQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgICAgJVBvc3NpYmxlQWN0aW9ucyA9IG1hcCB7ICsrJENvdW50ZXIgPT4gJF8gfQogICAgICAgICAgICAgICAgICAgIGdyZXAgeyBzdWJzdHIoICRfLCAwLCBsZW5ndGggJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nICkgZXEgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nIH0KICAgICAgICAgICAgICAgICAgICBzb3J0IGtleXMgJUFjdGlvbnM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRBQ0w7CiAgICAgICAgICAgIG15ICVBY2xBY3Rpb24gPSAlUG9zc2libGVBY3Rpb25zOwoKICAgICAgICAgICAgJEFDTCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVBvc3NpYmxlQWN0aW9ucywKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQWN0aW9uJywKICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJy0nLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAlQWNsQWN0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcnVuIGNvbmZpZyBpdGVtIHByZSBtZW51IG1vZHVsZXMKICAgICAgICAgICAgbXkgQEFjdGlvbkl0ZW1zOwogICAgICAgICAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHJlTWVudU1vZHVsZScpIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIG15ICVNZW51cyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQcmVNZW51TW9kdWxlJykgfTsKICAgICAgICAgICAgICAgIE1FTlU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE1lbnUgKCBzb3J0IGtleXMgJU1lbnVzICkgewoKICAgICAgICAgICAgICAgICAgICAjIGxvYWQgbW9kdWxlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1lbnVzeyRNZW51fS0+e01vZHVsZX0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRNZW51c3skTWVudX0tPntNb2R1bGV9LT5uZXcoCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFNlbGZ9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHJ1biBtb2R1bGUKICAgICAgICAgICAgICAgICAgICBteSAkSXRlbSA9ICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtID0+IFwlQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgQUNMICAgICAgICA9PiBcJUFjbEFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkTWVudXN7JE1lbnV9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBNRU5VIGlmICEkSXRlbTsKICAgICAgICAgICAgICAgICAgICBuZXh0IE1FTlUgaWYgcmVmICRJdGVtIG5lICdIQVNIJzsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgc2Vzc2lvbiBpZCBpZiBuZWVkZWQKICAgICAgICAgICAgICAgICAgICBpZiAoICEkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbklEQ29va2llfSAmJiAkSXRlbS0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkSXRlbS0+e0xpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuPSAnOycKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25OYW1lfSAuICc9JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbklEfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGlkCiAgICAgICAgICAgICAgICAgICAgJEl0ZW0tPntJRH0gPSAkSXRlbS0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgICRJdGVtLT57SUR9ID1+IHMvKFxzfCZ8OykvL2lnOwoKICAgICAgICAgICAgICAgICAgICBteSAkT3V0cHV0OwogICAgICAgICAgICAgICAgICAgIGlmICggJEl0ZW0tPntCbG9ja30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkSXRlbS0+e0Jsb2NrfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRPdXRwdXQgPSAnPGxpIGlkPSInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRJdGVtLT57SUR9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICciPjxhIGhyZWY9IiMiIHRpdGxlPSInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEl0ZW0tPntEZXNjcmlwdGlvbn0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIj4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEl0ZW0tPntOYW1lfSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICc8L2E+PC9saT4nOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJE91dHB1dCA9fiBzL1xuKy8vZzsKICAgICAgICAgICAgICAgICAgICAkT3V0cHV0ID1+IHMvXHMrLyAvZzsKICAgICAgICAgICAgICAgICAgICAkT3V0cHV0ID1+IHMvPFwhLS0uKz8tLT4vL2c7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQEFjdGlvbkl0ZW1zLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUwgICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgID0+ICRJdGVtLT57SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9IC4gJEl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0ICAgICAgPT4gJEl0ZW0tPntUYXJnZXR9LAogICAgICAgICAgICAgICAgICAgICAgICBQb3B1cFR5cGUgICA9PiAkSXRlbS0+e1BvcHVwVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRJdGVtLT57RGVzY3JpcHRpb259LAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9ID0gXEBBY3Rpb25JdGVtczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQm94LCBcJUNvbmZpZ0l0ZW07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgY29sdW1uc2VuYWJsZWQgaXMgYSBmaWxsZWQgYXJyYXkgcmVmZXJlbmNkCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBjb2x1bW4gaXMgcmVhbGx5IGZpbHRlcmFibGUKICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW5OYW1lfTsKICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbk5hbWV9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbHVtblZhbHVlcyA9ICRTZWxmLT5fR2V0Q29sdW1uVmFsdWVzKAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfSwKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnTGlua1BhZ2UnLAogICAgICAgIFZhbHVlID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdDYXRlZ29yeScsCiAgICAgICAgVmFsdWUgPT4gJFBhcmFte0NhdGVnb3J5RmlsdGVyfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb250ZW50JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYXJyYXkgdG8gc2F2ZSB0aGUgY29sdW1uIG5hbWVzIHRvIGRvIHRoZSBxdWVyeQogICAgbXkgQENvbCA9IEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH07CgogICAgIyBkZWZpbmUgc3BlY2lhbCBjb25maWcgaXRlbSBjb2x1bW5zCiAgICBteSAlU3BlY2lhbENvbHVtbnMgPSAoCiAgICAgICAgTnVtYmVyID0+IDEsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICRQYXJhbXtPcmRlckJ5fSA9ICRQYXJhbXtPcmRlckJ5fSB8fCAnVXAnOwogICAgJFBhcmFte1NvcnRCeX0gID0gJFBhcmFte1NvcnRCeX0gIHx8ICdOdW1iZXInOwoKICAgIG15ICRDb25maWdJdGVtRGF0YSA9IHNjYWxhciBAQ29uZmlnSXRlbUJveDsKICAgIGlmICgkQ29uZmlnSXRlbURhdGEpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VGFibGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyA9PiAkU3R5bGVDbGFzc2VzLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RhYmxlSGVhZGVyJyApOwoKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdCdWxrTmF2QmFyJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRDU1MgPSAnJzsKCiAgICAgICAgIyBzaG93IHNwZWNpYWwgY29uZmlnIGl0ZW0gY29sdW1ucywgaWYgbmVlZGVkCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbCkgewogICAgICAgICAgICBteSAkU3RhdGljQ29sdW1uID0gISRDb3VudGVyOwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENTUyA9ICRDb2x1bW4gLiAoICRTdGF0aWNDb2x1bW4gPyAnIFN0YXRpY0NvbHVtbicgOiAnJyApOwogICAgICAgICAgICBteSAkVGl0bGUgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW17T3JkZXJCeX07CgogICAgICAgICAgICAjIFRyYW5zZm9ybSBmaWx0ZXIgbmFtZSB0byBjb2x1bW4gbmFtZQogICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9IGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gJ0xhc3RDaGFuZ2VkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcmFsbCBibG9jayBzbyBOdW1iZXIgYXMgd2VsbCBhcyBvdGhlciBjb2x1bW5zIGNhbiBiZSBvcmRlcmVkCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKCiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmCiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JENvbHVtbn0gfHwKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyAkQ29sdW1uIC4gJ0lEcycgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJPdmVydmlld05hdkJhclBhZ2UkQ29sdW1uIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgaHRtbCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBzb3J0YWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57U3RvcmVkRmlsdGVyc30gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyAkQ29sdW1uIC4gJ0lEcycgfSApIHsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMganVzdCBmaWx0ZXJhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2hvdyB0aGUgREZzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgICAgICBteSAkREZDb2x1bW4gPSAkQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgICAgICRUaXRsZSA9ICRMYWJlbDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSA9ICRMYWJlbDsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICggJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICkgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2Ugb3JkZXIgZm9yIHNvcnRpbmcgY29sdW1uLgogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICRPcmRlckJ5IGVxICdVcCcgPyAnRG93bicgOiAnVXAnOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0ZpbHRyYWJsZVNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX1NvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE5hbWUgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgbXkgJENTUyAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkTmFtZTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZU5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0ZpbHRyYWJsZU5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19Ob3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdUYWJsZUJvZHknICk7CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ05vQ29uZmlnSXRlbUZvdW5kJyApOwogICAgfQoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZpbHRlciBzZWxlY3Rpb24KICAgIGlmICggJFBhcmFte0ZpbHRlcnN9ICkgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmlsdGVycycsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQE5hdkJhckZpbHRlcnM7CiAgICAgICAgZm9yIG15ICRQcmlvICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXsgJFBhcmFte0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtGaWx0ZXJzfS0+eyRQcmlvfTsKICAgICAgICB9CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXInLAogICAgICAgICk7CiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJEZpbHRlciAoQE5hdkJhckZpbHRlcnMpIHsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIGlmICggJENvdW50ID09IHNjYWxhciBATmF2QmFyRmlsdGVycyApIHsKICAgICAgICAgICAgICAgICRGaWx0ZXItPntDU1N9ID0gJ0xhc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRGaWx0ZXItPntGaWx0ZXJ9IGVxICRQYXJhbXtGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJVNwZWNpYWxDb2x1bW5zID0gKAogICAgICAgIE51bWJlciAgICAgICA9PiAxLAogICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAxLAogICAgICAgIEN1ckluY2lTdGF0ZSA9PiAxLAogICAgKTsKCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1SZWYgKEBDb25maWdJdGVtQm94KSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICV7JENvbmZpZ0l0ZW1SZWZ9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0YWJsZSgnQnVsaycpLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICAgICAjIHNhdmUgY29sdW1uIGNvbnRlbnQKICAgICAgICBteSAkRGF0YVZhbHVlOwoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgc2hvdyBhbGwgbmVlZGVkIGNvbHVtbnMKICAgICAgICBDT05GSUdJVEVNQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNvbHVtbiAoQENvbCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld1JvdycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRTdGF0aWNDb2x1bW4gPSAhJENvdW50ZXI7CiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbmZpZ0l0ZW1Db2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbmZpZ0l0ZW1Db2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZEJ5JyApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbmZpZ0l0ZW1DcmVhdGVkQnlJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJENvbmZpZ0l0ZW17Q3JlYXRlQnl9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbUNyZWF0ZWRCeUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQmxvY2tUeXBlID0gJyc7CiAgICAgICAgICAgICAgICBteSAkQ1NTQ2xhc3MgID0gJFN0YXRpY0NvbHVtbiA/ICdTdGF0aWNDb2x1bW4nIDogJyc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0RlcGxTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ2xhc3MnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVHJhbnNsYXRhYmxlJzsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZCcgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CgogICAgICAgICAgICAgICAgICAgICMgSWYgdmFsdWUgaXMgaW4gZGF0ZSBmb3JtYXQsIGNoYW5nZSBibG9jayB0eXBlIHRvICdUaW1lJyBzbyBpdCBjYW4gYmUgbG9jYWxpemVkLiBTZWUgYnVnIzE0NTQyLgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkRGF0YVZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICREYXRhVmFsdWUgPX4gL15cZFxkXGRcZC0oXGR8XGRcZCktKFxkfFxkXGQpXHMoXGR8XGRcZCk6KFxkfFxkXGQpOihcZHxcZFxkKSQvCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJy0nLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgYWN0aW9uIGl0ZW1zIGFzIGpzCiAgICAgICAgaWYgKCAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKSB7CgogICAgICAgICAgICAjIHJlcGxhY2UgVFQgZGlyZWN0aXZlcyBmcm9tIHN0cmluZyB3aXRoIHZhbHVlcwogICAgICAgICAgICBmb3IgbXkgJEFjdGlvbkl0ZW0gKCBAeyAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gfSApIHsKICAgICAgICAgICAgICAgICRBY3Rpb25JdGVtLT57TGlua30gPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJEFjdGlvbkl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjICRBY3Rpb25Sb3dDb25maWdJdGVtc3sgJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSB9ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtQWN0aW9uUm93LicgLiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjb2x1bW4gZmlsdGVyIGZvcm0sIHRvIGNvcnJlY3RseSBmaWxsIHRoZSBjb2x1bW4gZmlsdGVycyBpcyBuZWNlc3NhcnkgdG8gcGFzcyBlYWNoCiAgICAjICAgIG92ZXJ2aWV3IHNvbWUgaW5mb3JtYXRpb24gaW4gdGhlIEFKQVggY2FsbCwgZm9yIGV4YW1wbGUgdGhlIGZpeGVkIEZpbHRlcnMgb3IgTmF2QmFyRmlsdGVycwogICAgIyAgICBhbmQgYWxzbyBvdGhlciB2YWx1ZXMgbGlrZSB0aGUgUXVldWUgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVF1ZXVlLCBvdGhlcndpc2UgdGhlIGZpbHRlcnMgd2lsbCBiZQogICAgIyAgICBmaWxsZWQgd2l0aCBkZWZhdWx0IHJlc3RyaWN0aW9ucywgcmVzdWx0aW5nIGluIG1vcmUgb3B0aW9ucyB0aGFuIHRoZSBvbmVzIHRoYXQgdGhlCiAgICAjICAgIGF2YWlsYWJsZSBjb25maWcgaXRlbXMgc2hvdWxkIHByb3ZpZGUsIHNlZSBCdWcjOTkwMgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbHVtbkZpbHRlckZvcm19ICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSB9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybUVsZW1lbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRWxlbWVudE5hbWUgID0+ICRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRWYWx1ZSA9PiAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0tPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwogICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlcicpLT4kRnVuY3Rpb25OYW1lKAogICAgICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmllbGROYW1lIG5lICRIZWFkZXJDb2x1bW47CgogICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgICAgICAgICBteSAkSXNGaWx0cmFibGUgICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNGaWx0cmFibGU7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ID0gJElzRmlsdHJhYmxlOwogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbUlEcykgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIGhpc3RvcmljYWwgdmFsdWVzIGZvciB0aGUgZmllbGQKICAgICAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+Q29sdW1uRmlsdGVyVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUNvbHVtbkZpbHRlclZhbHVlczsKfQoKc3ViIF9Jbml0aWFsQ29sdW1uRmlsdGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH0gfHwgJFBhcmFte0NvbHVtbk5hbWV9OwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICcnLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgIF07CgogICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJsZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0gMDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDbGFzcycKICAgICAgICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9uT3B0aW9uID0gMTsKICAgIH0KCiAgICBteSAkQ2xhc3MgPSAnQ29sdW1uRmlsdGVyJzsKICAgIGlmICggJFBhcmFte0Nzc30gKSB7CiAgICAgICAgJENsYXNzIC49ICcgJyAuICRQYXJhbXtDc3N9OwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBGaWx0ZXJDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17SGVhZGVyQ29sdW1ufTsKCiAgICBteSAkSGVhZGVyQ29sdW1uID0gJFBhcmFte0hlYWRlckNvbHVtbn07CgogICAgIyBnZXQgY29sdW1uIHZhbHVlcyBmb3IgdG8gYnVpbGQgdGhlIGZpbHRlcnMgbGF0ZXIKICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30sCiAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICApOwoKICAgIG15ICRTZWxlY3RlZFZhbHVlICA9ICcnOwogICAgbXkgJFNlbGVjdGVkQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CiAgICAgICAgJFNlbGVjdGVkQ29sdW1uIC49ICdJRHMnOwogICAgfQoKICAgIG15ICRMYWJlbENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRMYWJlbENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgJExhYmVsQ29sdW1uID1+IHN7XEEgRHluYW1pY0ZpZWxkXyB9e314bXM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkTGFiZWxDb2x1bW47CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAgICAgJExhYmVsQ29sdW1uID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkU2VsZWN0ZWRDb2x1bW4gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSB7CgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApICkgewogICAgICAgICAgICAkU2VsZWN0ZWRWYWx1ZSA9ICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59LT5bMF07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICRTZWxlY3RlZFZhbHVlID0gJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0tPntFcXVhbHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkU2VsZi0+X0NvbHVtbkZpbHRlckpTT04oCiAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsQ29sdW1uLAogICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkVmFsdWUsCiAgICApOwoKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySlNPTjsKfQoKIyA9aGVhZDIgX0NvbHVtbkZpbHRlckpTT04oKQoKIyAgICAgY3JlYXRlcyBhIEpTT04gc2VsZWN0IGZpbHRlciBmb3IgY29sdW1uIGhlYWRlcgoKIyAgICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkSVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsT2JqZWN0LT5fQ29sdW1uRmlsdGVySlNPTigKIyAgICAgICAgIENvbHVtbk5hbWUgPT4gJ1F1ZXVlJywKIyAgICAgICAgIExhYmVsICAgICAgPT4gJ1F1ZXVlJywKIyAgICAgICAgIENvbHVtblZhbHVlcyA9PiB7CiMgICAgICAgICAgICAgMSA9PiAnUG9zdE1hc3RlcicsCiMgICAgICAgICAgICAgMiA9PiAnSnVuaycsCiMgICAgICAgICB9LAojICAgICAgICAgU2VsZWN0ZWRWYWx1ZSAnMScsCiMgICAgICk7CgojID1jdXQKCnN1YiBfQ29sdW1uRmlsdGVySlNPTiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICgKICAgICAgICAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfSAmJgogICAgICAgICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSAuICdJRHMnIH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfTsKICAgICRMYWJlbCA9fiBzeyBcQSBEeW5hbWljRmllbGRfIH17fWd4bXM7CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlbGV0ZUZpbHRlcicsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJy0nLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnLScsCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfSwKICAgIF07CgogICAgaWYgKCAkUGFyYW17Q29sdW1uVmFsdWVzfSAmJiByZWYgJFBhcmFte0NvbHVtblZhbHVlc30gZXEgJ0hBU0gnICkgewoKICAgICAgICBteSAlVmFsdWVzID0gJXsgJFBhcmFte0NvbHVtblZhbHVlc30gfTsKCiAgICAgICAgIyBTZXQgcG9zc2libGUgdmFsdWVzLgogICAgICAgIGZvciBteSAkVmFsdWVLZXkgKCBzb3J0IHsgbGMgJFZhbHVlc3skYX0gY21wIGxjICRWYWx1ZXN7JGJ9IH0ga2V5cyAlVmFsdWVzICkgewogICAgICAgICAgICBwdXNoIEB7JERhdGF9LCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkVmFsdWVLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVzeyRWYWx1ZUtleX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGlmIGNvbHVtbiBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xhdGFibGUKICAgIG15ICRUcmFuc2xhdGlvbk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnSW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ2xhc3MnCiAgICAgICAgKQogICAgewogICAgICAgICRUcmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJERhdGEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY0tleScsCiAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U2VsZWN0ZWRWYWx1ZX0sCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uT3B0aW9uLAogICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAkSlNPTjsKfQoKc3ViIF9EZWZhdWx0Q29sdW1uU29ydCB7CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAxMTAsCiAgICAgICAgQ3VySW5jaVN0YXRlID0+IDExMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gMTEyLAogICAgICAgIE51bWJlciAgICAgICA9PiAxMTMsCiAgICAgICAgTmFtZSAgICAgICAgID0+IDExNCwKICAgICAgICBMYXN0Q2hhbmdlZCAgPT4gMTE1LAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGNhbiBub3QgYmUgb24gdGhlIERlZmF1bHRDb2x1bW5zIHNvcnRpbmcgaGFzaAogICAgIyB3aGVuIGNvbXBhcmluZyAyIGR5bmFtaWMgZmllbGRzIHNvcnRpbmcgbXVzdCBiZSBhbHBoYWJldGljYWwKICAgIGlmICggISREZWZhdWx0Q29sdW1uc3skYX0gJiYgISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuICRhIGNtcCAkYjsKICAgIH0KCiAgICAjIHdoZW4gYSBkeW5hbWljIGZpZWxkIGlzIGNvbXBhcmVkIHRvIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGl0IG11c3QgYmUgaGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgd2hlbiBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmllbGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwgY29tcGFyaXNvbiB3aXRoIHRoZSBjb25maWcgaXRlbSBhdHRyaWJ1dGVzCiAgICByZXR1cm4gJERlZmF1bHRDb2x1bW5zeyRhfSA8PT4gJERlZmF1bHRDb2x1bW5zeyRifTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/PublicOverviewSmall.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6UHVibGljT3ZlcnZpZXdTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KG5vbmUpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkpTT04nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gXCVQYXJhbTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHNldCBwcmVmIGZvciBjb2x1bW5zIGtleQogICAgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gPSAnVXNlckZpbHRlckNvbHVtbnNFbmFibGVkJyAuICctJyAuICRTZWxmLT57QWN0aW9ufSAuICctJyAuICRTZWxmLT57RmlsdGVyfTsKCiAgICAjIGxvYWQgYmFja2VuZCBjb25maWcKICAgIG15ICRCYWNrZW5kQ29uZmlnS2V5ID0gJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JyAuICRTZWxmLT57QWN0aW9ufTsKICAgICRTZWxmLT57Q29uZmlnfSA9ICRDb25maWdPYmplY3QtPkdldCgkQmFja2VuZENvbmZpZ0tleSk7CgogICAgIyBjaGVjayBmb3IgZmlsdGVyCiAgICBteSAkRmlsdGVyTmFtZSA9IElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0ZpbHRlcnN9LT57ICRTZWxmLT57RmlsdGVyfSB9ICkgPyAkU2VsZi0+e0ZpbHRlcnN9LT57ICRTZWxmLT57RmlsdGVyfSB9LT57TmFtZX0gOiAnQWxsJzsKCiAgICAjIGdldCBwZXJtaXNzaW9uIGNvbmRpdGlvbiBmb3IgZmlsdGVyCiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb25maWcgID0gJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zID0gJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zJyk7CgogICAgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfSA9IFtdOwogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb25maWcpICkgewogICAgICAgIFBFUk1DT05GOgogICAgICAgIGZvciBteSAkQ29uZmlnQ291bnRlciAoIDEgLi4gNSApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0lkZW50aWZpZXIgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRDb25maWdDb3VudGVyICk7CiAgICAgICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT57JENvbmZpZ0lkZW50aWZpZXJ9OwogICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyk7CgogICAgICAgICAgICBpZiAoICRGaWx0ZXJOYW1lIGVxICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57TmFtZX0gJiYgSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25zQ29sdW1ucykgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9ID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29sdW1ucy0+eyRDb25maWdJZGVudGlmaWVyfSAvLyBbXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoICEkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiAmJiBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zKSApIHsKICAgICAgICAgICAgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfSA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucycpLT57RGVmYXVsdH0gLy8gW107CiAgICAgICAgfQogICAgICAgICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ID0gJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfTsKICAgIH0KCiAgICAjIGFsd2F5cyBzZXQgY29uZmlnIGl0ZW0gbnVtYmVyCiAgICBpZiAoIG5vbmUgeyAkXyBlcSAnTnVtYmVyJyB9ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiApIHsKICAgICAgICB1bnNoaWZ0ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiwgJ051bWJlcic7CiAgICB9CiAgICBpZiAoIG5vbmUgeyAkXyBlcSAnTnVtYmVyJyB9ICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqICkgewogICAgICAgIHVuc2hpZnQgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCosICdOdW1iZXInOwogICAgfQoKICAgICMgZ2V0IG5lY2Vzc2FyeSBkeW5hbWljIGZpZWxkIG9iamVjdHMKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBjb2xsZWN0IGR5bmFtaWMgZmllbGRzIGFuZCBzZXQgYXZhaWxhYmxlIGFuZCB2YWxpZCBmaWx0ZXIgYW5kIHNvcnRhYmxlIGNvbHVtbnMKICAgIERZTkFNSUNGSUVMRE5BTUU6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiApIHsKCiAgICAgICAgbXkgJEZpZWxkTmFtZTsKICAgICAgICBpZiAoICREeW5hbWljRmllbGROYW1lID1+IG17IER5bmFtaWNGaWVsZF8oPzxGaWVsZE5hbWU+W0EtWmEtejAtOVwtXSspIH14bXMgKSB7CiAgICAgICAgICAgICRGaWVsZE5hbWUgPSAkK3tGaWVsZE5hbWV9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEROQU1FOwogICAgICAgIH0KCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkRmllbGROYW1lLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBzdG9yZSBmaWVsZCBjb25maWcKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnSVRTTUNvbmZpZ0l0ZW0nICkgewogICAgICAgICAgICBwdXNoICRTZWxmLT57RHluYW1pY0ZpZWxkfS0+QCosICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZpbHRyYWJsZSBhbmQgc29ydGFibGUgYmVoYXZpb3JzCiAgICAgICAgZm9yIG15ICRCZWhhdmlvciAocXcoRmlsdHJhYmxlIFNvcnRhYmxlKSkgewoKICAgICAgICAgICAgbXkgJEhhc0JlaGF2aW9yID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gIklzJEJlaGF2aW9yIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSGFzQmVoYXZpb3IpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57IkF2YWlsYWJsZSR7QmVoYXZpb3J9Q29sdW1ucyJ9eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBoYXNoIHdpdGggYWxsIHZhbGlkIHNvcnRhYmxlIGNvbHVtbnMgKHRha2VuIGZyb20gSVRTTUNvbmZpZ0l0ZW1TZWFyY2gpCiAgICAjIFNvcnRCeSAgPT4gJ0FnZScsICAgIyBDcmVhdGVkfE51bWJlcnxDaGFuZ2VkfE5hbWV8RGVwbFN0YXRlfEN1ckRlcGxTdGF0ZQogICAgIyB8SW5jaVN0YXRlfEN1ckluY2lTdGF0ZQogICAgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30gPSB7CiAgICAgICAgJ0FnZScgICAgICAgICAgPT4gMSwKICAgICAgICAnTnVtYmVyJyAgICAgICA9PiAxLAogICAgICAgICdOYW1lJyAgICAgICAgID0+IDEsCiAgICAgICAgJ0NyZWF0ZWQnICAgICAgPT4gMSwKICAgICAgICAnTGFzdENoYW5nZWQnICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30gPSB7CiAgICAgICAgZGVmaW5lZCAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9CiAgICAgICAgPyAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT4lKgogICAgICAgIDogKCksCiAgICAgICAgJ0NsYXNzJyAgICAgICAgPT4gMSwKICAgICAgICAnRGVwbFN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJEZXBsU3RhdGUnID0+IDEsCiAgICAgICAgJ0luY2lTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VySW5jaVN0YXRlJyA9PiAxLAogICAgfTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBBY3Rpb25Sb3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIG15ICRCdWxrRmVhdHVyZSA9IDA7CiAgICBpZiAoICRQYXJhbXtCdWxrfSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmUnKSApIHsKICAgICAgICBteSBAR3JvdXBzOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSApIHsKICAgICAgICAgICAgQEdyb3VwcyA9IEB7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhQEdyb3VwcyApIHsKICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudEFjdGlvblJvd0J1bGsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhIGNvbHVtbiBmaWx0ZXIgYW5kIG5vIHJlc3VsdHMsIGFuZCBwcmludCBhIGxpbmsgdG8gYmFjawogICAgaWYgKCBzY2FsYXIgQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gPT0gMCAmJiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIHJlZ3VsYXIgY29sdW1ucwogICAgbXkgJENvbHVtbnMgPSAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfHwge307CiAgICBpZiAoICRDb2x1bW5zICYmIElzSGFzaFJlZldpdGhEYXRhKCRDb2x1bW5zKSApIHsKCiAgICAgICAgQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29sdW1uICggc29ydCBrZXlzICV7JENvbHVtbnN9ICkgewoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIHRyYW5zbGF0ZWQgaW4gdGhlIG5leHQgYmxvY2sKICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgJENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXM7CgogICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQgPSAkQ29sdW1uOwogICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW4nIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCRUcmFuc2xhdGVkV29yZCksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIGR5bmFtaWMgZmllbGQgY29sdW1ucwogICAgbXkgJENvbHVtbnNEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgKTsKCiAgICBpZiAoICRDb2x1bW5zRHluYW1pY0ZpZWxkICYmIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29sdW1uc0R5bmFtaWNGaWVsZCkgKSB7CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggc29ydCBAeyRDb2x1bW5zRHluYW1pY0ZpZWxkfSApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5EeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIFNvcnRPcmRlckJhciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAnJzsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgSWYgJFBhcmFte0VuYWJsZUNvbHVtbkZpbHRlcnN9IGlzIG5vdCBzZW50LCB3ZSB3YW50IHRvIGRpc2FibGUgYWxsIGZpbHRlcnMKICAgICMgICBmb3IgdGhlIGN1cnJlbnQgc2NyZWVuLiBXZSBsb2NhbGl6ZSB0aGUgc2V0dGluZyBmb3IgdGhpcyBzdWIgYW5kIGNoYW5nZSBpdAogICAgIyAgIGFmdGVyIHRoYXQsIGlmIG5lZWRlZC4gVGhlIG9yaWdpbmFsIHZhbHVlIHdpbGwgYmUgcmVzdG9yZWQgYWZ0ZXIgdGhpcyBmdW5jdGlvbi4KICAgIGxvY2FsICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30gPSAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9OwogICAgaWYgKCAhJFBhcmFte0VuYWJsZUNvbHVtbkZpbHRlcnN9ICkgewogICAgICAgICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30gPSB7fTsgICAgIyBkaXNhYmxlIGFsbCBjb2x1bW4gZmlsdGVycwogICAgfQoKICAgIGZvciBteSAkSXRlbSAocXcoQ29uZmlnSXRlbUlEcyBQYWdlU2hvd24gU3RhcnRIaXQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRJdGVtfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEl0ZW0hIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBpbmNpZGVudCBzaWduYWxzCiAgICBteSAlSW5jaVNpZ25hbHMgPSAoCiAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCd3YXJuaW5nJykgICAgID0+ICd5ZWxsb3dsZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnaW5jaWRlbnQnKSAgICA9PiAncmVkbGVkJywKICAgICk7CgogICAgIyBzdG9yZSBkZXBsb3ltZW50IHNpZ25hbHMKICAgIG15ICVEZXBsU2lnbmFsczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBsaXN0IG9mIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAkRGVwbG95bWVudFN0YXRlc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIHNldCBkZXBsb3ltZW50IHN0eWxlIGNvbG9ycwogICAgbXkgJFN0eWxlQ2xhc3NlcyA9ICcnOwoKICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEICggc29ydCBrZXlzICV7JERlcGxveW1lbnRTdGF0ZXNMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc3tDb2xvcn07CiAgICAgICAgbXkgKCRDb2xvcikgPSAkR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY29udmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvbnZlcnQgdG8gbG93ZXIgY2FzZQogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciA9ICggbGMgJENvbG9yICkgPX4gcy9bXjAtOWEtZl0vL21zZ3I7CgogICAgICAgICMgYWRkIHRvIHN0eWxlIGNsYXNzZXMgc3RyaW5nCiAgICAgICAgJFN0eWxlQ2xhc3NlcyAuPSAiCiAgICAgICAgICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjJERlcGxTdGF0ZUNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgIjsKICAgIH0KCiAgICAjIHdyYXAgaW50byBzdHlsZSB0YWdzCiAgICBpZiAoJFN0eWxlQ2xhc3NlcykgewogICAgICAgICRTdHlsZUNsYXNzZXMgPSAiPHN0eWxlPiRTdHlsZUNsYXNzZXM8L3N0eWxlPiI7CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIGlmIGJ1bGsgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBteSAkQnVsa0ZlYXR1cmUgPSAwOwogICAgaWYgKCAkUGFyYW17QnVsa30gJiYgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlJykgKSB7CiAgICAgICAgbXkgQEdyb3VwczsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgKSB7CiAgICAgICAgICAgIEBHcm91cHMgPSBAeyAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpIH07CiAgICAgICAgfQogICAgICAgIGlmICggIUBHcm91cHMgKSB7CiAgICAgICAgICAgICRCdWxrRmVhdHVyZSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb3VudGVyID0gMDsKICAgIG15IEBDb25maWdJdGVtQm94OwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIGlmICggJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fSAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkgKSB7CgogICAgICAgICAgICAjIEdldCBjb25maWcgaXRlbSBkYXRhLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtUmVmLT4lKjsKCiAgICAgICAgICAgICMgc2V0IGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHNpZ25hbHMKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFNpZ25hbH0gPSAkRGVwbFNpZ25hbHN7ICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZX0gfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VySW5jaVNpZ25hbH0gPSAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVte0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgICAgICAjIGZpbGwgY29sdW1uIG5hbWUgYXR0cmlidXRlIHdpdGggY29ycmVzcG9uZGluZyBpdGVtIGF0dHJpYnV0ZQogICAgICAgICAgICAkQ29uZmlnSXRlbXtDcmVhdGVkfSAgICAgPSAkQ29uZmlnSXRlbXtDcmVhdGVUaW1lfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17TGFzdENoYW5nZWR9ID0gJENvbmZpZ0l0ZW17Q2hhbmdlVGltZX07CgogICAgICAgICAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICAgICAgICAgIG15ICVQb3NzaWJsZUFjdGlvbnM7CiAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgICAgICMgZ2V0IGFsbCByZWdpc3RlcmVkIEFjdGlvbnMKICAgICAgICAgICAgaWYgKCByZWYgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1vZHVsZScpIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICBteSAlQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNb2R1bGUnKSB9OwoKICAgICAgICAgICAgICAgICMgb25seSB1c2UgdGhvc2UgQWN0aW9ucyB0aGF0IHN0YXRzIHdpdGggQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgICAgJVBvc3NpYmxlQWN0aW9ucyA9IG1hcCB7ICsrJENvdW50ZXIgPT4gJF8gfQogICAgICAgICAgICAgICAgICAgIGdyZXAgeyBzdWJzdHIoICRfLCAwLCBsZW5ndGggJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nICkgZXEgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nIH0KICAgICAgICAgICAgICAgICAgICBzb3J0IGtleXMgJUFjdGlvbnM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1Cb3gsIFwlQ29uZmlnSXRlbTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBjb2x1bW5zZW5hYmxlZCBpcyBhIGZpbGxlZCBhcnJheSByZWZlcmVuY2VkCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBjb2x1bW4gaXMgcmVhbGx5IGZpbHRlcmFibGUKICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW5OYW1lfTsKICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbk5hbWV9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbHVtblZhbHVlcyA9ICRTZWxmLT5fR2V0Q29sdW1uVmFsdWVzKAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfSwKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnTGlua1BhZ2UnLAogICAgICAgIFZhbHVlID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29udGVudCcsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKCiAgICAjIGFycmF5IHRvIHNhdmUgdGhlIGNvbHVtbiBuYW1lcyB0byBkbyB0aGUgcXVlcnkKICAgIG15IEBDb2wgPSBAeyAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSB9OwoKICAgICMgZGVmaW5lIHNwZWNpYWwgY29uZmlnIGl0ZW0gY29sdW1ucwogICAgbXkgJVNwZWNpYWxDb2x1bW5zID0gKAogICAgICAgIE51bWJlciAgICAgICAgPT4gMSwKICAgICAgICBDdXJEZXBsU2lnbmFsID0+IDEsCiAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAxLAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAkUGFyYW17T3JkZXJCeX0gPSAkUGFyYW17T3JkZXJCeX0gfHwgJ1VwJzsKICAgICRQYXJhbXtTb3J0Qnl9ICA9ICRQYXJhbXtTb3J0Qnl9ICB8fCAnTnVtYmVyJzsKCiAgICBteSAkQ29uZmlnSXRlbURhdGEgPSBzY2FsYXIgQENvbmZpZ0l0ZW1Cb3g7CiAgICBpZiAoJENvbmZpZ0l0ZW1EYXRhKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1RhYmxlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdHlsZUNsYXNzZXMgPT4gJFN0eWxlQ2xhc3NlcywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdUYWJsZUhlYWRlcicgKTsKCiAgICAgICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld0hlYWRlcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQnVsa05hdkJhcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkQ1NTID0gJyc7CgogICAgICAgICMgc2hvdyBzcGVjaWFsIGNvbmZpZyBpdGVtIGNvbHVtbnMsIGlmIG5lZWRlZAogICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBDb2wpIHsKICAgICAgICAgICAgbXkgJFN0YXRpY0NvbHVtbiA9ICEkQ291bnRlcjsKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRDU1MgPSAkQ29sdW1uIC4gKCAkU3RhdGljQ29sdW1uID8gJyBTdGF0aWNDb2x1bW4nIDogJycgKTsKICAgICAgICAgICAgbXkgJFRpdGxlICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgIG15ICRPcmRlckJ5ID0gJFBhcmFte09yZGVyQnl9OwoKICAgICAgICAgICAgIyBUcmFuc2Zvcm0gZmlsdGVyIG5hbWUgdG8gY29sdW1uIG5hbWUKICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSBlcSAnQ2hhbmdlZCcgKSB7CiAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fSA9ICdMYXN0Q2hhbmdlZCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3V0cHV0IG92ZXJhbGwgYmxvY2sgc28gTnVtYmVyIGFzIHdlbGwgYXMgb3RoZXIgY29sdW1ucyBjYW4gYmUgb3JkZXJlZAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbmZpZ0l0ZW1IZWFkZXInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJFNwZWNpYWxDb2x1bW5zeyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAkQ29sdW1uICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2Ugb3JkZXIgZm9yIHNvcnRpbmcgY29sdW1uLgogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJE9yZGVyQnkgZXEgJ1VwJyA/ICdEb3duJyA6ICdVcCc7CgogICAgICAgICAgICAgICAgICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGNvbHVtbiBuYW1lIHRvIHdyaXRlIGl0IGluIHRoZSBjdXJyZW50IGxhbmd1YWdlCiAgICAgICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTaWduYWwnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDb2x1bW4pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSAgICAgPSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30gJiYKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskQ29sdW1ufSB8fAogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57ICRDb2x1bW4gLiAnSURzJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIk92ZXJ2aWV3TmF2QmFyUGFnZSRDb2x1bW4iLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MgICAgICAgICAgICB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgZmlsdGVyYWJsZSBhbmQgc29ydGFibGUKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBodG1sIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUKICAgICAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTFVNTjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gIX4gbXtcQSBEeW5hbWljRmllbGRffXhtcyApIHsKCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICYmICggJFBhcmFte1NvcnRCeX0gZXEgJENvbHVtbiApICkgewogICAgICAgICAgICAgICAgICAgIG15ICRUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgICAgICMgQ2hhbmdlIG9yZGVyIGZvciBzb3J0aW5nIGNvbHVtbi4KICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICRPcmRlckJ5IGVxICdVcCcgPyAnRG93bicgOiAnVXAnOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRPcmRlckJ5IGVxICdEb3duJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGRlc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgJFRpdGxlIC49ICcsICcgLiAkVGl0bGVEZXNjOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBjb2x1bW4gbmFtZSB0byB3cml0ZSBpdCBpbiB0aGUgY3VycmVudCBsYW5ndWFnZQogICAgICAgICAgICAgICAgbXkgJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdEZXBsU3RhdGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGUnIHx8ICRDb2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVwbG95bWVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0luY2lTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnIHx8ICRDb2x1bW4gZXEgJ0N1ckluY2lTaWduYWwnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYXN0IGNoYW5nZWQnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSAmJiAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57ICRDb2x1bW4gLiAnSURzJyB9ICkgewogICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0ZXJBY3RpdmUnOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgZmlsdGVyYWJsZSBhbmQgc29ydGFibGUKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBqdXN0IGZpbHRlcmFibGUKICAgICAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgc29ydGFibGUKICAgICAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaG93IHRoZSBERnMKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb2x1bW47CiAgICAgICAgICAgICAgICAkREZDb2x1bW4gPX4gcy9EeW5hbWljRmllbGRfLy9nOwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRERkNvbHVtbjsKCiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkTGFiZWwgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICAgICAgJFRpdGxlID0gJExhYmVsOwogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlID0gJExhYmVsOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHNvcnRhYmxlIGNvbmRpdGlvbgogICAgICAgICAgICAgICAgbXkgJElzU29ydGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1NvcnRhYmxlJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCRJc1NvcnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENTUyA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICggJFBhcmFte1NvcnRCeX0gZXEgKCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gKSApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJE9yZGVyQnkgZXEgJ1VwJyA/ICdEb3duJyA6ICdVcCc7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRPcmRlckJ5IGVxICdEb3duJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGRlc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlIC49ICcsICcgLiAkVGl0bGVEZXNjOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57U3RvcmVkRmlsdGVyc30gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE5hbWUgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfRmlsdHJhYmxlU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBteSAkQ1NTICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGROYW1lOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGROb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfRmlsdHJhYmxlTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX05vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RhYmxlQm9keScgKTsKCiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnTm9Db25maWdJdGVtRm91bmQnICk7CiAgICB9CgogICAgIyBiYWNrIGxpbmsKICAgIGlmICggJFBhcmFte0xpbmtCYWNrfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQmFjaycsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgUHJvZmlsZSA9PiAkUGFyYW17UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgZmlsdGVyIHNlbGVjdGlvbgogICAgaWYgKCAkUGFyYW17RmlsdGVyc30gKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWx0ZXJzJywKICAgICAgICApOwoKICAgICAgICBteSBATmF2QmFyRmlsdGVyczsKICAgICAgICBmb3IgbXkgJFByaW8gKCBzb3J0IGtleXMgJXsgJFBhcmFte0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtGaWx0ZXJzfS0+eyRQcmlvfTsKICAgICAgICB9CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXInLAogICAgICAgICk7CiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJEZpbHRlciAoQE5hdkJhckZpbHRlcnMpIHsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIGlmICggJENvdW50ID09IHNjYWxhciBATmF2QmFyRmlsdGVycyApIHsKICAgICAgICAgICAgICAgICRGaWx0ZXItPntDU1N9ID0gJ0xhc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRGaWx0ZXItPntGaWx0ZXJ9IGVxICRQYXJhbXtGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRDb25maWdJdGVtUmVmIChAQ29uZmlnSXRlbUJveCkgewoKICAgICAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgbXkgJUNvbmZpZ0l0ZW0gPSAleyRDb25maWdJdGVtUmVmfTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgIERhdGEgPT4geyVDb25maWdJdGVtfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGJ1bGsgZmVhdHVyZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld1JvdycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGFibGUoJ0J1bGsnKSwKICAgICAgICAgICAgICAgIERhdGEgPT4geyVDb25maWdJdGVtfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAgICAgIyBzYXZlIGNvbHVtbiBjb250ZW50CiAgICAgICAgbXkgJERhdGFWYWx1ZTsKCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICAjIHNob3cgYWxsIG5lZWRlZCBjb2x1bW5zCiAgICAgICAgQ09ORklHSVRFTUNPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1Db2x1bW4gKEBDb2wpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdSb3cnLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkU3RhdGljQ29sdW1uID0gISRDb3VudGVyOwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiAhfiBte1xBIER5bmFtaWNGaWVsZF99eG1zICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkQ29uZmlnSXRlbURhdGEnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFNwZWNpYWxDb2x1bW5zeyRDb25maWdJdGVtQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb25maWdJdGVtQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljQ29sdW1uID0+ICRTdGF0aWNDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNQ09MVU1OOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NyZWF0ZWRCeScgKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICVDb25maWdJdGVtQ3JlYXRlZEJ5SW5mbyA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRDb25maWdJdGVte0NyZWF0ZUJ5fSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkQ29uZmlnSXRlbUNyZWF0ZWRCeScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW1DcmVhdGVkQnlJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljQ29sdW1uID0+ICRTdGF0aWNDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEJsb2NrVHlwZSA9ICcnOwogICAgICAgICAgICAgICAgbXkgJENTU0NsYXNzICA9ICRTdGF0aWNDb2x1bW4gPyAnU3RhdGljQ29sdW1uJyA6ICcnOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtQ29sdW1uIGVxICdEZXBsU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnSW5jaVN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NsYXNzJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RyYW5zbGF0YWJsZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NyZWF0ZWQnIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RpbWUnOwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwoKICAgICAgICAgICAgICAgICAgICAjIElmIHZhbHVlIGlzIGluIGRhdGUgZm9ybWF0LCBjaGFuZ2UgYmxvY2sgdHlwZSB0byAnVGltZScgc28gaXQgY2FuIGJlIGxvY2FsaXplZC4gU2VlIGJ1ZyMxNDU0Mi4KICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJERhdGFWYWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkRGF0YVZhbHVlID1+IC9eXGRcZFxkXGQtKFxkfFxkXGQpLShcZHxcZFxkKVxzKFxkfFxkXGQpOihcZHxcZFxkKTooXGR8XGRcZCkkLwogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RpbWUnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJSZWNvcmRDb25maWdJdGVtQ29sdW1uJEJsb2NrVHlwZSIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyaWNWYWx1ZSA9PiAkRGF0YVZhbHVlIHx8ICctJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDU1NDbGFzcyAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZHluYW1pYyBmaWVsZHMKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgICAgICBteSAkREZDb2x1bW4gPSAkQ29uZmlnSXRlbUNvbHVtbjsKICAgICAgICAgICAgICAgICRERkNvbHVtbiA9fiBzL0R5bmFtaWNGaWVsZF8vL2c7CiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJERGQ29sdW1uOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNQ09MVU1OIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCB2YWx1ZQogICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQ29uZmlnSXRlbXtWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyMCwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRWYWx1ZVN0cmctPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZFBsYWluJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRWYWx1ZVN0cmctPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnX0xpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e0xpbmt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIGFjdGlvbiBpdGVtcyBhcyBqcwogICAgICAgIGlmICggJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9ICkgewoKICAgICAgICAgICAgIyByZXBsYWNlIFRUIGRpcmVjdGl2ZXMgZnJvbSBzdHJpbmcgd2l0aCB2YWx1ZXMKICAgICAgICAgICAgZm9yIG15ICRBY3Rpb25JdGVtICggQHsgJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9IH0gKSB7CiAgICAgICAgICAgICAgICAkQWN0aW9uSXRlbS0+e0xpbmt9ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRBY3Rpb25JdGVtLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyAkQWN0aW9uUm93Q29uZmlnSXRlbXN7ICRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0gfSA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoIERhdGEgPT4gJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9ICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbUFjdGlvblJvdy4nIC4gJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRDb25maWdJdGVte0FjdGlvbkl0ZW1zfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgY29sdW1uIGZpbHRlciBmb3JtLCB0byBjb3JyZWN0bHkgZmlsbCB0aGUgY29sdW1uIGZpbHRlcnMgaXMgbmVjZXNzYXJ5IHRvIHBhc3MgZWFjaAogICAgIyAgICBvdmVydmlldyBzb21lIGluZm9ybWF0aW9uIGluIHRoZSBBSkFYIGNhbGwsIGZvciBleGFtcGxlIHRoZSBmaXhlZCBGaWx0ZXJzIG9yIE5hdkJhckZpbHRlcnMKICAgICMgICAgYW5kIGFsc28gb3RoZXIgdmFsdWVzIGxpa2UgdGhlIFF1ZXVlIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1RdWV1ZSwgb3RoZXJ3aXNlIHRoZSBmaWx0ZXJzIHdpbGwgYmUKICAgICMgICAgZmlsbGVkIHdpdGggZGVmYXVsdCByZXN0cmljdGlvbnMsIHJlc3VsdGluZyBpbiBtb3JlIG9wdGlvbnMgdGhhbiB0aGUgb25lcyB0aGF0IHRoZQogICAgIyAgICBhdmFpbGFibGUgY29uZmlnIGl0ZW1zIHNob3VsZCBwcm92aWRlLCBzZWUgQnVnIzk5MDIKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSApICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudENvbHVtbkZpbHRlckZvcm0nLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAleyAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0gfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudENvbHVtbkZpbHRlckZvcm1FbGVtZW50JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEVsZW1lbnROYW1lICA9PiAkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICBFbGVtZW50VmFsdWUgPT4gJFBhcmFte0NvbHVtbkZpbHRlckZvcm19LT57JEVsZW1lbnR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyB1c2UgdGVtcGxhdGUKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e1ZpZXdUeXBlfSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9HZXRDb2x1bW5WYWx1ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIUlzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtIZWFkZXJDb2x1bW59ICk7CgogICAgbXkgJUNvbHVtbkZpbHRlclZhbHVlczsKICAgIG15ICRDb25maWdJdGVtSURzOwoKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfSApICkgewogICAgICAgICRDb25maWdJdGVtSURzID0gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc307CiAgICB9CgogICAgcmV0dXJuIFwlQ29sdW1uRmlsdGVyVmFsdWVzOwp9CgpzdWIgX0luaXRpYWxDb2x1bW5GaWx0ZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtDb2x1bW5OYW1lfTsKICAgIHJldHVybiBpZiAhJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSB9OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfSB8fCAkUGFyYW17Q29sdW1uTmFtZX07CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJycsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgIG15ICRDbGFzcyA9ICdDb2x1bW5GaWx0ZXInOwogICAgaWYgKCAkUGFyYW17Q3NzfSApIHsKICAgICAgICAkQ2xhc3MgLj0gJyAnIC4gJFBhcmFte0Nzc307CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRQYXJhbXtDb2x1bW5OYW1lfSwKICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YSwKICAgICAgICBDbGFzcyAgICAgICA9PiAkQ2xhc3MsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gJFRyYW5zbGF0aW9uT3B0aW9uLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICcnLAogICAgKTsKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySFRNTDsKfQoKc3ViIEZpbHRlckNvbnRlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtIZWFkZXJDb2x1bW59OwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKCiAgICAjIGdldCBjb2x1bW4gdmFsdWVzIGZvciB0byBidWlsZCB0aGUgZmlsdGVycyBsYXRlcgogICAgbXkgJENvbHVtblZhbHVlcyA9ICRTZWxmLT5fR2V0Q29sdW1uVmFsdWVzKAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfSwKICAgICAgICBIZWFkZXJDb2x1bW4gICAgICAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICk7CgogICAgIyBhcHBseSByZXN0cmljdGlvbnMgZm9yIHB1YmxpYyBwZXJtaXNzaW9uIGNvbmRpdGlvbnMKICAgIGlmICggJEhlYWRlckNvbHVtbiBlcSAnQ2xhc3MnICYmICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17Q2xhc3Nlc30tPkAqICkgewogICAgICAgIGZvciBteSAkRmlsdGVyVmFsdWUgKCBrZXlzICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufS0+JSogKSB7CiAgICAgICAgICAgIGlmICggbm9uZSB7ICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9IGVxICRfIH0gJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59eyRGaWx0ZXJWYWx1ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgJiYgJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtEZXBsU3RhdGVzfS0+QCogKSB7CiAgICAgICAgZm9yIG15ICRGaWx0ZXJWYWx1ZSAoIGtleXMgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LT4lKiApIHsKICAgICAgICAgICAgaWYgKCBub25lIHsgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59eyRGaWx0ZXJWYWx1ZX0gZXEgJF8gfSAkUGFyYW17RmlsdGVyc30tPnsgJFBhcmFte0ZpbHRlcn0gfXtTZWFyY2h9e0RlcGxTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn17JEZpbHRlclZhbHVlfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkU2VsZWN0ZWRWYWx1ZSAgPSAnJzsKICAgIG15ICRTZWxlY3RlZENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRIZWFkZXJDb2x1bW4gIX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9eG1zICkgewogICAgICAgICRTZWxlY3RlZENvbHVtbiAuPSAnSURzJzsKICAgIH0KCiAgICBteSAkTGFiZWxDb2x1bW4gPSAkSGVhZGVyQ29sdW1uOwogICAgaWYgKCAkTGFiZWxDb2x1bW4gPX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9eG1zICkgewoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICRMYWJlbENvbHVtbiA9fiBze1xBIER5bmFtaWNGaWVsZF8gfXt9eG1zOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJExhYmVsQ29sdW1uOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZykgKSB7CiAgICAgICAgICAgICRMYWJlbENvbHVtbiA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFNlbGVjdGVkQ29sdW1uICYmICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgewoKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSApIHsKICAgICAgICAgICAgJFNlbGVjdGVkVmFsdWUgPSAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufS0+WzBdOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApICkgewogICAgICAgICAgICAkU2VsZWN0ZWRWYWx1ZSA9ICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59LT57RXF1YWxzfTsKICAgICAgICB9CiAgICB9CgogICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgIG15ICRDb2x1bW5GaWx0ZXJKU09OID0gJFNlbGYtPl9Db2x1bW5GaWx0ZXJKU09OKAogICAgICAgIENvbHVtbk5hbWUgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbENvbHVtbiwKICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufSwKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZFZhbHVlLAogICAgKTsKCiAgICByZXR1cm4gJENvbHVtbkZpbHRlckpTT047Cn0KCiMgPWhlYWQyIF9Db2x1bW5GaWx0ZXJKU09OKCkKCiMgICAgIGNyZWF0ZXMgYSBKU09OIHNlbGVjdCBmaWx0ZXIgZm9yIGNvbHVtbiBoZWFkZXIKCiMgICAgIG15ICRDb2x1bW5GaWx0ZXJKU09OID0gJElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbE9iamVjdC0+X0NvbHVtbkZpbHRlckpTT04oCiMgICAgICAgICBDb2x1bW5OYW1lID0+ICdRdWV1ZScsCiMgICAgICAgICBMYWJlbCAgICAgID0+ICdRdWV1ZScsCiMgICAgICAgICBDb2x1bW5WYWx1ZXMgPT4gewojICAgICAgICAgICAgIDEgPT4gJ1Bvc3RNYXN0ZXInLAojICAgICAgICAgICAgIDIgPT4gJ0p1bmsnLAojICAgICAgICAgfSwKIyAgICAgICAgIFNlbGVjdGVkVmFsdWUgJzEnLAojICAgICApOwoKIyA9Y3V0CgpzdWIgX0NvbHVtbkZpbHRlckpTT04gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoCiAgICAgICAgISRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPnsgJFBhcmFte0NvbHVtbk5hbWV9IH0gJiYKICAgICAgICAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gLiAnSURzJyB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH07CiAgICAkTGFiZWwgPX4gc3sgXEEgRHluYW1pY0ZpZWxkXyB9e31neG1zOwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdEZWxldGVGaWx0ZXInLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlmICggJFBhcmFte0NvbHVtblZhbHVlc30gJiYgcmVmICRQYXJhbXtDb2x1bW5WYWx1ZXN9IGVxICdIQVNIJyApIHsKCiAgICAgICAgbXkgJVZhbHVlcyA9ICV7ICRQYXJhbXtDb2x1bW5WYWx1ZXN9IH07CgogICAgICAgICMgU2V0IHBvc3NpYmxlIHZhbHVlcy4KICAgICAgICBmb3IgbXkgJFZhbHVlS2V5ICggc29ydCB7IGxjICRWYWx1ZXN7JGF9IGNtcCBsYyAkVmFsdWVzeyRifSB9IGtleXMgJVZhbHVlcyApIHsKICAgICAgICAgICAgcHVzaCBAeyREYXRhfSwgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFZhbHVlS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlc3skVmFsdWVLZXl9LAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb25KU09OKAogICAgICAgIFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJFBhcmFte0NvbHVtbk5hbWV9LAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICREYXRhLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNLZXknLAogICAgICAgICAgICAgICAgVHJlZVZpZXcgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1NlbGVjdGVkVmFsdWV9LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZSA9PiAnb2ZmJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gJEpTT047Cn0KCnN1YiBfRGVmYXVsdENvbHVtblNvcnQgewoKICAgIG15ICVEZWZhdWx0Q29sdW1ucyA9ICgKICAgICAgICBDdXJEZXBsU2lnbmFsID0+IDExMCwKICAgICAgICBDdXJJbmNpU2lnbmFsID0+IDExMSwKICAgICAgICBDbGFzcyAgICAgICAgID0+IDExMiwKICAgICAgICBOdW1iZXIgICAgICAgID0+IDExMywKICAgICAgICBOYW1lICAgICAgICAgID0+IDExNCwKICAgICAgICBDdXJEZXBsU3RhdGUgID0+IDExNSwKICAgICAgICBDdXJJbmNpU3RhdGUgID0+IDExNiwKICAgICAgICBMYXN0Q2hhbmdlZCAgID0+IDExNywKICAgICk7CgogICAgIyBkeW5hbWljIGZpZWxkcyBjYW4gbm90IGJlIG9uIHRoZSBEZWZhdWx0Q29sdW1ucyBzb3J0aW5nIGhhc2gKICAgICMgd2hlbiBjb21wYXJpbmcgMiBkeW5hbWljIGZpZWxkcyBzb3J0aW5nIG11c3QgYmUgYWxwaGFiZXRpY2FsCiAgICBpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICYmICEkRGVmYXVsdENvbHVtbnN7JGJ9ICkgewogICAgICAgIHJldHVybiAkYSBjbXAgJGI7CiAgICB9CgogICAgIyB3aGVuIGEgZHluYW1pYyBmaWVsZCBpcyBjb21wYXJlZCB0byBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpdCBtdXN0IGJlIGhpZ2hlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRhfSApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIHdoZW4gYSBjb25maWcgaXRlbSBhdHRyaWJ1dGUgaXMgY29tcGFyZWQgdG8gYSBkeW5hbWljIGZpZWxkIGl0IG11c3QgYmUgbG93ZXIKICAgIGVsc2lmICggISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQoKICAgICMgb3RoZXJ3aXNlIGRvIGEgbnVtZXJpY2FsIGNvbXBhcmlzb24gd2l0aCB0aGUgY29uZmlnIGl0ZW0gYXR0cmlidXRlcwogICAgcmV0dXJuICREZWZhdWx0Q29sdW1uc3skYX0gPD0+ICREZWZhdWx0Q29sdW1uc3skYn07Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/Layout/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhub25lKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0OjpJVFNNQ29uZmlnSXRlbSAtIGFsbCBDb25maWdJdGVtLXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIElUU00gQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50LXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUoKQoKcmV0dXJucyBhbiBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtT3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtICA9PiAkSXRlbVJlZiwKICAgICAgICBQcmludCA9PiAxLCAgICAgICAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCkKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0l0ZW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBJdGVtIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuICcnIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGdlbmVyYXRlIG91dHB1dCBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKCVQYXJhbSk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbUZvcm1EYXRhR2V0KCkKCnJldHVybnMgdGhlIHZhbHVlcyBmcm9tIHRoZSBodG1sIGZvcm0gYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUZvcm1EYXRhR2V0KAogICAgICAgIEtleSAgICAgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgICAgID0+ICRJdGVtUmVmLAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0gQ29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRTZWxmLT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHlwZX0sCiAgICApOwoKICAgIHJldHVybiB7fSBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkRm9ybURhdGEgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICByZXR1cm4gJEZvcm1EYXRhOwp9Cgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1JbnB1dENyZWF0ZSgpCgpyZXR1cm5zIGEgaW5wdXQgZmllbGQgaHRtbCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJVFNNQ29uZmlnSXRlbUlucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRTZWxmLT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHlwZX0sCiAgICApOwoKICAgIHJldHVybiAnJyBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBsb29rdXAgaXRlbSB2YWx1ZQogICAgbXkgJFN0cmluZyA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSglUGFyYW0pOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1TZWFyY2hGb3JtRGF0YUdldCgpCgpyZXR1cm5zIHRoZSB2YWx1ZXMgZnJvbSB0aGUgc2VhcmNoIGh0bWwgZm9ybQoKICAgIG15ICRBcnJheVJlZiA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtU2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJVFNNQ29uZmlnSXRlbVNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRTZWxmLT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHlwZX0sCiAgICApOwoKICAgIHJldHVybiBbXSBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRWYWx1ZXM7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbVNlYXJjaElucHV0Q3JlYXRlKCkKCnJldHVybnMgYSBzZWFyY2ggaW5wdXQgZmllbGQgaHRtbCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuICcnIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGxvb2t1cCBpdGVtIHZhbHVlCiAgICBteSAkU3RyaW5nID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKCVQYXJhbSk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBfSVRTTUxvYWRMYXlvdXRCYWNrZW5kKCkKCmxvYWQgYSBpbnB1dCB0eXBlIGJhY2tlbmQgbW9kdWxlCgogICAgJEJhY2tlbmRPYmplY3QgPSAkTGF5b3V0T2JqZWN0LT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJ0dlbmVyYWxDYXRhbG9nJywKICAgICk7Cgo9Y3V0CgpzdWIgX0lUU01Mb2FkTGF5b3V0QmFja2VuZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxvZyBvYmplY3QKICAgIG15ICRMb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgaWYgKCAhJFBhcmFte1R5cGV9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVHlwZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRHZW5lcmljTW9kdWxlID0gIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0JFBhcmFte1R5cGV9IjsKCiAgICAjIGxvYWQgdGhlIGJhY2tlbmQgbW9kdWxlCiAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRHZW5lcmljTW9kdWxlKSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIGJhY2tlbmQgbW9kdWxlICRQYXJhbXtUeXBlfSEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgbmV3IGluc3RhbmNlCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRHZW5lcmljTW9kdWxlLT5uZXcoCiAgICAgICAgJXskU2VsZn0sCiAgICAgICAgJVBhcmFtLAogICAgICAgIExheW91dE9iamVjdCA9PiAkU2VsZiwKICAgICk7CgogICAgaWYgKCAhJEJhY2tlbmRPYmplY3QgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGJhY2tlbmQgbW9kdWxlICRQYXJhbXtUeXBlfSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAkQmFja2VuZE9iamVjdDsKfQoKPWhlYWQyIElUU01Db25maWdJdGVtTGlzdFNob3coKQoKUmV0dXJucyBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIHNvcnQgYW5kIHBhZ2luYXRpb24gY2FwYWJpbGl0aWVzLgoKVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIEw8S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dFRpY2tldDo6VGlja2V0TGlzdFNob3coKT4KaW4gRjxLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0VGlja2V0LnBtPi4KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdygKICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzUmVmLCAgICAgICAgICAgICAgICAgICMgdG90YWwgbGlzdCBvZiBjb25maWcgaXRlbSBpZHMsIHRoYXQgY2FuIGJlIGxpc3RlZAogICAgICAgIFRvdGFsICAgICAgICAgPT4gc2NhbGFyIEB7ICRDb25maWdJdGVtSURzUmVmIH0sICAgICAgIyB0b3RhbCBudW1iZXIgb2YgbGlzdCBpdGVtcywgY29uZmlnIGl0ZW1zIGluIHRoaXMgY2FzZQogICAgICAgIFZpZXcgICAgICAgICAgPT4gJFNlbGYtPntWaWV3fSwgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgJ1NtYWxsJwogICAgICAgIEZpbHRlciAgICAgICAgPT4gJ0FsbCcsCiAgICAgICAgRmlsdGVycyAgICAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBGaWx0ZXJMaW5rICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIFRpdGxlTmFtZSAgICAgPT4gJ092ZXJ2aWV3OiBDb25maWcgSXRlbTogQ29tcHV0ZXInLAogICAgICAgIFRpdGxlVmFsdWUgICAgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgIEVudiAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgTGlua1BhZ2UgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgTGlua1NvcnQgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgRnJvbnRlbmQgICAgICA9PiAnQWdlbnQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgKEFnZW50fEN1c3RvbWVyfFB1YmxpYyksIGRlZmF1bHQ6IEFnZW50LCBpbmRpY2F0ZXMgZnJvbSB3aGljaCBmcm9udGVuZCB0aGlzIGZ1bmN0aW9uIHdhcyBjYWxsZWQKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IGZyb250ZW5kIHBlciBkZWZhdWx0IHRvIGFnZW50CiAgICAkUGFyYW17RnJvbnRlbmR9IC8vPSAnQWdlbnQnOwoKICAgICMgdGFrZSBvYmplY3QgcmVmIHRvIGxvY2FsLCByZW1vdmUgaXQgZnJvbSAlUGFyYW0gKHByZXZlbnQgbWVtb3J5IGxlYWspCiAgICBteSAkRW52ID0gZGVsZXRlICRQYXJhbXtFbnZ9OwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFBhcmFte1ZpZXd9ICYmICRTZWxmLT57ICdVc2VySVRTTUNvbmZpZ0l0ZW1PdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9ICkgewogICAgICAgICRQYXJhbXtWaWV3fSA9ICRTZWxmLT57ICdVc2VySVRTTUNvbmZpZ0l0ZW1PdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmlldyBtb2RlIHRvICdzbWFsbCcKICAgIG15ICRWaWV3ID0gJFBhcmFte1ZpZXd9IHx8ICdTbWFsbCc7CgogICAgIyBzdG9yZSBsYXRlc3QgdmlldyBtb2RlCiAgICBpZiAoICRQYXJhbXtGcm9udGVuZH0gbmUgJ1B1YmxpYycgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdVc2VySVRTTUNvbmZpZ0l0ZW1PdmVydmlldycgLiAkRW52LT57QWN0aW9ufSwKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMgaWYgbmVlZGVkCiAgICBteSAkS2V5ID0gJ1VzZXJJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259OwogICAgaWYgKCAkUGFyYW17RnJvbnRlbmR9IG5lICdDdXN0b21lcicgJiYgJFBhcmFte0Zyb250ZW5kfSBuZSAnUHVibGljJyApIHsKICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlbW9TeXN0ZW0nKSAmJiAoICRTZWxmLT57JEtleX0gLy8gJycgKSBuZSAkVmlldyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJFZpZXcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGJhY2tlbmQgZnJvbSBjb25maWcKICAgIG15ICRCYWNrZW5kczsKICAgIGlmICggJFBhcmFte0Zyb250ZW5kfSBlcSAnQWdlbnQnICkgewogICAgICAgICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpPdmVydmlldycpOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17RnJvbnRlbmR9IGVxICdDdXN0b21lcicgKSB7CiAgICAgICAgJEJhY2tlbmRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVyT3ZlcnZpZXcnKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICMgcHVibGljIGZyb250ZW5kCiAgICAgICAgJEJhY2tlbmRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY092ZXJ2aWV3Jyk7CiAgICB9CgogICAgaWYgKCAhJEJhY2tlbmRzICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTmVlZCBjb25maWcgb3B0aW9uIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6T3ZlcnZpZXcnLAogICAgICAgICk7CiAgICB9CiAgICBpZiAoIHJlZiAkQmFja2VuZHMgbmUgJ0hBU0gnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ29uZmlnIG9wdGlvbiBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIEhBU0ggcmVmIScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHNlbGVjdGVkIHZpZXcgaXMgYXZhaWxhYmxlCiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CgogICAgICAgICMgdHJ5IHRvIGZpbmQgZmFsbGJhY2ssIHRha2UgZmlyc3QgY29uZmlndXJlZCB2aWV3IG1vZGUKICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gQ29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdmlldyBtb2RlICRWaWV3LCB0b29rICRLZXkgaW5zdGVhZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkVmlldyA9ICRLZXk7CiAgICAgICAgICAgIGxhc3QgS0VZOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVmlldycsCiAgICAgICAgVmFsdWUgPT4gJFZpZXcsCiAgICApOwoKICAgICMgbG9hZCBvdmVydmlldyBiYWNrZW5kIG1vZHVsZQogICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfSApICkgewogICAgICAgIHJldHVybiAkRW52LT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigpOwogICAgfQogICAgbXkgJE9iamVjdCA9ICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0tPm5ldyggJXskRW52fSApOwogICAgcmV0dXJuIGlmICEkT2JqZWN0OwoKICAgICMgcmV0cmlldmUgZmlsdGVyIHZhbHVlcwogICAgaWYgKCAkUGFyYW17RmlsdGVyQ29udGVudE9ubHl9ICkgewogICAgICAgIHJldHVybiAkT2JqZWN0LT5GaWx0ZXJDb250ZW50KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJ1biBhY3Rpb24gcm93IGJhY2tlbmQgbW9kdWxlCiAgICAkUGFyYW17QWN0aW9uUm93fSA9ICRPYmplY3QtPkFjdGlvblJvdygKICAgICAgICAlUGFyYW0sCiAgICAgICAgQ29uZmlnID0+ICRCYWNrZW5kcy0+eyRWaWV3fSwKICAgICk7CgogICAgIyBydW4gb3ZlcnZpZXcgYmFja2VuZCBtb2R1bGUKICAgICRQYXJhbXtTb3J0T3JkZXJCYXJ9ID0gJE9iamVjdC0+U29ydE9yZGVyQmFyKAogICAgICAgICVQYXJhbSwKICAgICAgICBDb25maWcgPT4gJEJhY2tlbmRzLT57JFZpZXd9LAogICAgKTsKCiAgICAjIGNoZWNrIHN0YXJ0IG9wdGlvbiwgaWYgaGlnaGVyIHRoZW4gdGlja2V0cyBhdmFpbGFibGUsIHNldAogICAgIyBpdCB0byB0aGUgbGFzdCB0aWNrZXQgcGFnZSAoVGhhbmtzIHRvIFN0ZWZhbiBTY2htaWR0ISkKICAgIG15ICRTdGFydEhpdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CiAgICBteSAkR3JvdXAgICAgICAgICAgICAgICAgICAgPSAnQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgY2FsY3VsYXRlIG1heC4gc2hvd24gcGVyIHBhZ2UKICAgIGlmICggJFN0YXJ0SGl0ID4gJFBhcmFte1RvdGFsfSApIHsKICAgICAgICBteSAkUGFnZXMgPSBpbnQoICggJFBhcmFte1RvdGFsfSAvICRQYWdlU2hvd24gKSArIDAuOTk5OTkgKTsKICAgICAgICAkU3RhcnRIaXQgPSAoICggJFBhZ2VzIC0gMSApICogJFBhZ2VTaG93biApICsgMTsKICAgIH0KCiAgICAjIGJ1aWxkIG5hdiBiYXIKICAgIG15ICRMaW1pdCAgID0gJFBhcmFte0xpbWl0fSB8fCAyMF8wMDA7CiAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPScgLiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICAgICAgSURQcmVmaXggID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biB0aWNrZXQgcGVyIHBhZ2UKICAgICRQYXJhbXtSZXF1ZXN0ZWRVUkx9ICAgID0gJFBhcmFte1JlcXVlc3RlZFVSTH0gfHwgIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07JFBhcmFte0xpbmtQYWdlfSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkU2VsZi0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5LAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYWdlU2hvd24sCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNWYWx1ZScsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgbmF2IGJhciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgb3ZlcnZpZXcKICAgICRQYXJhbXtWaWV3fSA9ICRWaWV3OwogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmaWx0ZXIgc2VsZWN0aW9uCiAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9ICkgewogICAgICAgIG15IEBOYXZCYXJGaWx0ZXJzOwogICAgICAgIGZvciBteSAkUHJpbyAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7ICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9LT57JFByaW99OwogICAgICAgIH0KICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVyJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlGaWx0ZXIgKEBOYXZCYXJGaWx0ZXJzKSB7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICBpZiAoICRDb3VudCA9PSBzY2FsYXIgQE5hdkJhckZpbHRlcnMgKSB7CiAgICAgICAgICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXItPntDU1N9ID0gJ0xhc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskQ2F0ZWdvcnlGaWx0ZXJ9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q2F0ZWdvcnlGaWx0ZXJ9ICYmICRDYXRlZ29yeUZpbHRlci0+e0NhdGVnb3J5RmlsdGVyfSBlcSAkUGFyYW17Q2F0ZWdvcnlGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRDYXRlZ29yeUZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JENhdGVnb3J5RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHZpZXcgbW9kZQogICAgZm9yIG15ICRCYWNrZW5kICgKICAgICAgICBzb3J0IHsgJEJhY2tlbmRzLT57JGF9LT57TW9kdWxlUHJpb3JpdHl9IDw9PiAkQmFja2VuZHMtPnskYn0tPntNb2R1bGVQcmlvcml0eX0gfQogICAgICAgIGtleXMgJXskQmFja2VuZHN9CiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICRWaWV3IGVxICRCYWNrZW5kICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCVQYWdlTmF2KSB7CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VOYXZCYXInLAogICAgICAgICAgICBEYXRhID0+IFwlUGFnZU5hdiwKICAgICAgICApOwoKICAgICAgICAjIGRvbid0IHNob3cgY29udGV4dCBzZXR0aW5ncyBpbiBBSkFYIGNhc2UgKGUuIGcuIGluIGN1c3RvbWVyIHRpY2tldCBoaXN0b3J5KSwKICAgICAgICAjICAgYmVjYXVzZSB0aGUgc3VibWl0IHdpdGggcGFnZSByZWxvYWQgd2lsbCBub3Qgd29yayB0aGVyZQogICAgICAgIGlmICggISRQYXJhbXtBSkFYfSApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgY29sdW1uIGZpbHRlciBwcmVmZXJlbmNlcwogICAgICAgICAgICBpZiAoICRWaWV3IGVxICdTbWFsbCcgKSB7CgogICAgICAgICAgICAgICAgIyBzZXQgcHJlZmVyZW5jZXMga2V5cwogICAgICAgICAgICAgICAgbXkgJFByZWZLZXlDb2x1bW5zID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkRW52LT57QWN0aW9ufSAuICctJyAuICRQYXJhbXtGaWx0ZXJ9OwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIGV4dHJhIG5lZWRlZCBvYmplY3RzCiAgICAgICAgICAgICAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgICAgICAgICAgICAgIyBjb25maWd1cmUgY29sdW1ucwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkID0gQHsgJE9iamVjdC0+e0NvbHVtbnNFbmFibGVkfSB9OwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNBdmFpbGFibGU7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlIGNvbHVtbnMKICAgICAgICAgICAgICAgIG15ICVVbmlxdWVDb2x1bW5zOwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAQ29sdW1uc0VuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0VuYWJsZWRBdXgsICRDb2x1bW47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNldCBmaWx0ZXJlZCBjb2x1bW4gbGlzdAogICAgICAgICAgICAgICAgQENvbHVtbnNFbmFibGVkID0gQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQgeyAkYSBjbXAgJGIgfSBAeyAkT2JqZWN0LT57Q29sdW1uc0F2YWlsYWJsZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIG5vbmUgeyAkXyBlcSAkQ29sdW1uTmFtZSB9IEBDb2x1bW5zRW5hYmxlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0F2YWlsYWJsZSwgJENvbHVtbk5hbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICVDb2x1bW5zOwogICAgICAgICAgICAgICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCBAQ29sdW1uc0F2YWlsYWJsZSApIHsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uc3tDb2x1bW5zfS0+eyRDb2x1bW5OYW1lfSA9ICggZ3JlcCB7ICRDb2x1bW5OYW1lIGVxICRfIH0gQENvbHVtbnNFbmFibGVkICkgPyAxIDogMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRmlsdGVyQ29sdW1uU2V0dGluZ3MnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICAgICAgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXCVDb2x1bW5zICksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnNFbmFibGVkICAgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcQENvbHVtbnNFbmFibGVkICksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnNBdmFpbGFibGUgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcQENvbHVtbnNBdmFpbGFibGUgKSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZVByZWYgICAgICAgICA9PiAkUHJlZktleUNvbHVtbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIERlc2MgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTaG93biBDb2x1bW5zJyksCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlckFjdGlvbiAgICAgPT4gJEVudi0+e0FjdGlvbn0gLiAnLScgLiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmlldyAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lICAgICAgICA9PiAnQ29uZmlnSXRlbU92ZXJ2aWV3RmlsdGVyU2V0dGluZ3MnLAogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICMgZW5kIHNob3cgY29sdW1uIGZpbHRlcnMgcHJlZmVyZW5jZXMKCiAgICAgICAgIyBjaGVjayBpZiB0aGVyZSB3YXMgc3RvcmVkIGZpbHRlcnMsIGFuZCBwcmludCBhIGxpbmsgdG8gZGVsZXRlIHRoZW0KICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkT2JqZWN0LT57U3RvcmVkRmlsdGVyc30gKSApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3dSZW1vdmVDb2x1bW5GaWx0ZXJzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENTUyA9PiAiQ29udGV4dFNldHRpbmdzIFJlbW92ZUZpbHRlcnMiLAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIG5hdiBiYXIgYW5kIHJ1biBvdmVydmlldyBiYWNrZW5kIG1vZHVsZQogICAgbXkgJE5hdkJhckhUTUwgPSAnJzsKCiAgICBpZiAoICRQYXJhbXtGcm9udGVuZH0gbmUgJ0N1c3RvbWVyJyAmJiAkUGFyYW17RnJvbnRlbmR9IG5lICdQdWJsaWMnICkgewogICAgICAgICROYXZCYXJIVE1MID0gJFNlbGYtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyAlUGFyYW0sIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAkTmF2QmFySFRNTCwKICAgICAgICAkT2JqZWN0LT5SdW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQ2F0ZWdvcnlDbGFzc2VzID0+ICRFbnYtPntDYXRlZ29yeUNsYXNzZXN9LAogICAgICAgICAgICBDb25maWcgICAgICAgICAgPT4gJEJhY2tlbmRzLT57JFZpZXd9LAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgPT4gJExpbWl0LAogICAgICAgICAgICBTdGFydEhpdCAgICAgICAgPT4gJFN0YXJ0SGl0LAogICAgICAgICAgICBQYWdlU2hvd24gICAgICAgPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgQWxsSGl0cyAgICAgICAgID0+ICRQYXJhbXtUb3RhbH0gIHx8IDAsCiAgICAgICAgICAgIE91dHB1dCAgICAgICAgICA9PiAkUGFyYW17T3V0cHV0fSB8fCAnJywKICAgICAgICApOwp9Cgo9aGVhZDIgWE1MRGF0YTJIYXNoKCkKCnJldHVybnMgYSBoYXNoIHJlZmVyZW5jZSB3aXRoIHRoZSByZXF1ZXN0ZWQgYXR0cmlidXRlcyBkYXRhIGZvciBhIGNvbmZpZyBpdGVtCgpSZXR1cm4KCiAgICAkRGF0YSA9IHsKICAgICAgICAnSGFyZERpc2s6OjInID0+IHsKICAgICAgICAgICAgVmFsdWUgPT4gJ0hEMicsCiAgICAgICAgICAgIE5hbWUgID0+ICdIYXJkIERpc2snLAogICAgICAgICB9LAogICAgICAgICdDUFU6OjEnID0+IHsKICAgICAgICAgICAgVmFsdWUgPT4gJycsCiAgICAgICAgICAgIE5hbWUgID0+ICdDUFUnLAogICAgICAgIH0sCiAgICAgICAgJ0hhcmREaXNrOjoyOjpDYXBhY2l0eTo6MScgPT4gewogICAgICAgICAgICBWYWx1ZSA9PiAnNzgwIEdCJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0NhcGFjaXR5JywKICAgICAgICB9LAogICAgfTsKCiAgICBteSAkRGF0YSA9ICRMYXlvdXRPYmplY3QtPlhNTERhdGEySGFzaCgKICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRWZXJzaW9uLT57WE1MRGVmaW5pdGlvbn0sCiAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkVmVyc2lvbi0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgIEF0dHJpYnV0ZXMgICAgPT4gWydDUFU6OjEnLCAnSGFyZERyaXZlOjoyOjpDYXBhY2l0eTo6MScsIC4uLl0sCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJURhdGFIYXNoUmVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBQcmVmaXggICAgICAgID0+ICdIYXJkRGlzazo6MScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBYTUxEYXRhMkhhc2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGF0YX07CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEZWZpbml0aW9ufTsKICAgIHJldHVybiBpZiAhJFBhcmFte0F0dHJpYnV0ZXN9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGF0YX0gbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlvbn0gbmUgJ0FSUkFZJzsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte0F0dHJpYnV0ZXN9IG5lICdBUlJBWSc7CgogICAgIyB0byBzdG9yZSB0aGUgcmV0dXJuIGRhdGEKICAgIG15ICREYXRhID0gJFBhcmFte0RhdGF9IHx8IHt9OwoKICAgICMgY3JlYXRlIGEgbG9va3VwIHN0cnVjdHVyZQogICAgbXkgJVJlbGV2YW50QXR0cmlidXRlcyA9IG1hcCB7ICRfID0+IDEgfSBAeyAkUGFyYW17QXR0cmlidXRlc30gfTsKCiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtICggQHsgJFBhcmFte1hNTERlZmluaXRpb259IH0gKSB7CgogICAgICAgIG15ICRDb3VudE1heCA9ICRJdGVtLT57Q291bnRNYXh9IHx8IDE7CgogICAgICAgIENPVU5URVI6CiAgICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiAkQ291bnRNYXggKSB7CgogICAgICAgICAgICAjIGFkZCBwcmVmaXgKICAgICAgICAgICAgbXkgJFByZWZpeCA9ICRJdGVtLT57S2V5fSAuICc6OicgLiAkQ291bnRlcjsKICAgICAgICAgICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAgICAgICAgICRQcmVmaXggPSAkUGFyYW17UHJlZml4fSAuICc6OicgLiAkUHJlZml4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNraXAgbm90IG5lZWRlZCBlbGVtZW50cyBhbmQgc3ViIGVsZW1lbnRzCiAgICAgICAgICAgIG5leHQgQ09VTlRFUiBpZiBub25lIHsgJF8gPX4gbXtcQSRQcmVmaXh9IH0gQHsgJFBhcmFte0F0dHJpYnV0ZXN9IH07CgogICAgICAgICAgICAjIGxvb2t1cCB2YWx1ZQogICAgICAgICAgICBteSAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+WE1MVmFsdWVMb29rdXAoCiAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXS0+e0NvbnRlbnR9IC8vICcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvbmx5IGlmIHZhbHVlIGlzIGRlZmluZWQKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRWYWx1ZSApIHsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBvdXRwdXQgc3RyaW5nCiAgICAgICAgICAgICAgICAkVmFsdWUgPSAkU2VsZi0+SVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgIEl0ZW0gID0+ICRJdGVtLAogICAgICAgICAgICAgICAgICAgIFByaW50ID0+ICRQYXJhbXtQcmludH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRSZWxldmFudEF0dHJpYnV0ZXN7JFByZWZpeH0gKSB7CgogICAgICAgICAgICAgICAgIyBzdG9yZSB0aGUgaXRlbSBpbiBoYXNoCiAgICAgICAgICAgICAgICAkRGF0YS0+eyRQcmVmaXh9ID0gewogICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICRJdGVtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlIC8vICcnLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIHdhcyBmb3VuZAogICAgICAgICAgICBpZiAoICRJdGVtLT57U3VifSApIHsKICAgICAgICAgICAgICAgICREYXRhID0gJFNlbGYtPlhNTERhdGEySGFzaCgKICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRJdGVtLT57U3VifSwKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXSwKICAgICAgICAgICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRQcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiAkRGF0YSwKICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgID0+ICRQYXJhbXtBdHRyaWJ1dGVzfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICREYXRhOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/Layout/ITSMConfigItemTreeView.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtVHJlZVZpZXc7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldyAtIGFsbCBDb25maWdJdGVtVHJlZVZpZXctcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgQ29uZmlnSXRlbVRyZWVWaWV3LXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgR2VuZXJhdGVIaWVyYXJjaHlHcmFwaCgpCgpjcmVhdGVzIEhUTUwgY29udGFpbmluZyB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIGZvciBkcmF3aW5nIHRoZSBncmFwaC4KCiAgICBteSAkQ2FudmFzSFRNTCA9ICRMYXlvdXRPYmplY3QtPkdlbmVyYXRlSGllcmFyY2h5R3JhcGgoCiAgICAgICAgRGVwdGggICAgICAgICAgPT4gMiwgIyBkZXB0aCBsZXZlbAogICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+IDEgICMgc291cmNlIGNvbmZpZyBpdGVtIElECiAgICAgICAgVmVyc2lvbklEICAgICAgPT4gMSAgIyBzb3VyY2UgY29uZmlnIGl0ZW0gdmVyc2lvbiBJRAogICAgKTsKCj1jdXQKCnN1YiBHZW5lcmF0ZUhpZXJhcmNoeUdyYXBoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LCwKICAgICAgICBWZXJzaW9uSUQgICAgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICApOwoKICAgIGlmICggISRDb25maWdJdGVtICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IGdldCBDb25maWdJdGVtLicKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgJFNlbGYtPntDSVRyZWVNYXhEZXB0aH0gPSAxOwoKICAgIG15IEBMaW5rT3V0cHV0RGF0YVRhcmdldHMgPSAoWwogICAgICAgIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICBJRCA9PiAkU2VsZi0+X0dlbmVyYXRlSUQoICRDb25maWdJdGVtLT4lKiApLAogICAgICAgIH0sCiAgICBdKTsKICAgIG15IEBMaW5rT3V0cHV0RGF0YVNvdXJjZXMgPSBATGlua091dHB1dERhdGFUYXJnZXRzOwoKICAgICMgQnVpbGQgTGV2ZWxzIERvd24gKFRhcmdldHMpCiAgICAkU2VsZi0+R2V0Q0lTdWJUcmVlRGF0YSgKICAgICAgICBMaW5rT3V0cHV0RGF0YSA9PiBcQExpbmtPdXRwdXREYXRhVGFyZ2V0cywgICAgIyB3aWxsIGJlIG1vZGlmaWVkCiAgICAgICAgSW5pdCAgICAgICAgICAgPT4gMSwKICAgICAgICBEZXB0aCAgICAgICAgICA9PiAkUGFyYW17RGVwdGh9LAogICAgICAgIERpcmVjdGlvbiAgICAgID0+ICdTb3VyY2UnCiAgICApOwoKICAgICMgQnVpbGQgTGV2ZWxzIFVwIChTb3VyY2VzKQogICAgJFNlbGYtPkdldENJU3ViVHJlZURhdGEoCiAgICAgICAgTGlua091dHB1dERhdGEgPT4gXEBMaW5rT3V0cHV0RGF0YVNvdXJjZXMsICAgICMgd2lsbCBiZSBtb2RpZmllZAogICAgICAgIEluaXQgICAgICAgICAgID0+IDEsCiAgICAgICAgRGVwdGggICAgICAgICAgPT4gJFBhcmFte0RlcHRofSwKICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAnVGFyZ2V0JwogICAgKTsKCiAgICAjIFRoZSBuZWVkZWQgZGF0YSBoYXMgYmVlbiBjb2xsZWN0ZWQuCiAgICAjIFRoZSBmb2xsb3dpbmcganVzdCBwYXNzZXMgdGhlIHR3byB0cmVlcyB0byB0aGUgd2ViIHBhZ2UuCgogICAgIyBmb3IgdGhlIHNvdXJjZXMgc3RhcnQgd2l0aCB0aGUgZGVlcGVzdCBsZXZlbAogICAgbXkgQExpbmtEYXRhU291cmNlOyAgICAjIHdpbGwgYmUgdXNlZCBpbiBKYXZhU2NyaXB0IGZvciBkcmF3aW5nIHRoZSBhcmNzCiAgICBmb3IgbXkgJExldmVsICggcmV2ZXJzZSAoIDEgLi4gJCNMaW5rT3V0cHV0RGF0YVNvdXJjZXMgKSApIHsKICAgICAgICBteSAkRWxlbWVudHMgPSAkTGlua091dHB1dERhdGFTb3VyY2VzWyAkTGV2ZWwgXTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgID0+ICdDaGlsZFNvdXJjZUVsZW1lbnRzTGV2ZWwnLAogICAgICAgICAgICBMZXZlbCA9PiAkTGV2ZWwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCAkRWxlbWVudHMtPkAqICkgewogICAgICAgICAgICBteSAkSUQgPSAiJEVsZW1lbnQtPntJRH1fUyRMZXZlbCI7ICAgICMgb25seSBsaW5rIHRvIHRoZSBuZXh0IG9yIHByZXZpb3VzIGxldmVsLCB0aGUgc2VwYXJhdG9yIF9TIGluZGljYXRlcyBTb3VyY2UKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDaGlsZFNvdXJjZUVsZW1lbnRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkRWxlbWVudC0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRzICAgICA9PiAkRWxlbWVudC0+e0NvbnRlbnRzfSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEVsZW1lbnQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgICA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbklEICAgID0+ICRQYXJhbXtTZXNzaW9uSUR9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG5lZWQgdG8gY29uc2lkZXIgdGhlIHNwZWNpYWwgY2FzZSB3aGVuIGxpbmtpbmcgdG8gdGhlIG9yaWdpbgogICAgICAgICAgICBteSAkTmV4dExldmVsID0gJExldmVsIC0gMTsKCiAgICAgICAgICAgIGZvciBteSAkTGluayAoIEB7ICRFbGVtZW50LT57TGlua30gLy8gW10gfSApIHsKICAgICAgICAgICAgICAgIG15ICRMaW5rZWRUb0VsZW1lbnQgPSAkTmV4dExldmVsID8gJExpbmstPntMaW5rZWRUb30gLiAnX1MnIC4gJE5leHRMZXZlbCA6ICRMaW5rLT57TGlua2VkVG99OwogICAgICAgICAgICAgICAgcHVzaCBATGlua0RhdGFTb3VyY2UsIGpvaW4gJywnLCAkTGlua2VkVG9FbGVtZW50LCAkSUQsICRMaW5rLT57TGlua1R5cGV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgTGV2ZWwgMAogICAgIyBHaXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSByb290IG5vZGUgdG8gdGhlIHdlYiBwYWdlLgogICAgIyBEeW5hbWljIGZpZWxkIGluZm8gaXMgbm90IG5lZWRlZC4KICAgIHsKICAgICAgICBteSAkQ29udGVudHMgPSAkU2VsZi0+X0dldENvbnRlbnRzKAogICAgICAgICAgICBBdHRyaWJ1dGVzID0+IFsgJ1ZlcnNpb25TdHJpbmcnLCAkU2VsZi0+Q0lUcmVlRGVmYXVsdEF0dHJpYnV0ZXMgXSwgICAgIyB0aGUgcm9vdCBoYXMgYWx3YXlzIGEgdmVyc2lvbgogICAgICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPcmlnaW5FbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgIENvbnRlbnRzICAgICA9PiAkQ29udGVudHMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgSUQgICAgICAgICAgID0+ICRMaW5rT3V0cHV0RGF0YVNvdXJjZXNbMF1bMF17SUR9LAogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZvciB0aGUgdGFyZ2V0cyBzdGFydCB3aXRoIHRoZSBsb3dlc3QgbGV2ZWwKICAgIG15IEBMaW5rRGF0YVRhcmdldDsgICAgIyB3aWxsIGJlIHVzZWQgaW4gSmF2YVNjcmlwdCBmb3IgZHJhd2luZyB0aGUgYXJjcwogICAgZm9yIG15ICRMZXZlbCAoIDEgLi4gJCNMaW5rT3V0cHV0RGF0YVRhcmdldHMgKSB7CiAgICAgICAgbXkgJEVsZW1lbnRzID0gJExpbmtPdXRwdXREYXRhVGFyZ2V0c1sgJExldmVsIF07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDaGlsZFRhcmdldEVsZW1lbnRzTGV2ZWwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExldmVsID0+ICRMZXZlbAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggJEVsZW1lbnRzLT5AKiApIHsKICAgICAgICAgICAgbXkgJElEID0gIiRFbGVtZW50LT57SUR9X1QkTGV2ZWwiOyAgICAjIG9ubHkgbGluayB0byB0aGUgbmV4dCBvciBwcmV2aW91cyBsZXZlbCwgdGhlIHNlcGFyYXRvciBfVCBpbmRpY2F0ZXMgVGFyZ2V0CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2hpbGRUYXJnZXRFbGVtZW50cycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJEVsZW1lbnQtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50cyAgICAgPT4gJEVsZW1lbnQtPntDb250ZW50c30sCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRFbGVtZW50LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgIFNlc3Npb25JRCAgICA9PiAkUGFyYW17U2Vzc2lvbklEfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWFsIGNhc2Ugd2hlbiBsaW5raW5nIHRvIHRoZSBvcmlnaW4KICAgICAgICAgICAgbXkgJFByZXZpb3VzTGV2ZWwgPSAkTGV2ZWwgLSAxOwogICAgICAgICAgICBmb3IgbXkgJExpbmsgKCBAeyAkRWxlbWVudC0+e0xpbmt9IC8vIFtdIH0gKSB7CiAgICAgICAgICAgICAgICBteSAkTGlua2VkVG9FbGVtZW50ID0gJFByZXZpb3VzTGV2ZWwgPyAkTGluay0+e0xpbmtlZFRvfSAuICdfVCcgLiAkUHJldmlvdXNMZXZlbCA6ICRMaW5rLT57TGlua2VkVG99OwogICAgICAgICAgICAgICAgcHVzaCBATGlua0RhdGFUYXJnZXQsIGpvaW4gJywnLCAkSUQsICRMaW5rZWRUb0VsZW1lbnQsICRMaW5rLT57TGlua1R5cGV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDb25maWdJdGVtVHJlZVZpZXcvQ29uZmlnSXRlbVRyZWVWaWV3R3JhcGgnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIE1heERlcHRoICAgICAgID0+ICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9LAogICAgICAgICAgICBMaW5rRGF0YVNvdXJjZSA9PiBqb2luKCAnOycsIEBMaW5rRGF0YVNvdXJjZSApLAogICAgICAgICAgICBMaW5rRGF0YVRhcmdldCA9PiBqb2luKCAnOycsIEBMaW5rRGF0YVRhcmdldCApLAogICAgICAgIH0KICAgICk7Cn0KCj1oZWFkMiBDSVRyZWVEZWZhdWx0QXR0cmlidXRlcygpCgpHZXQgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc2hvd24gaW4gdGhlIG5vZGVzLgoKICAgIG15IEBBdHRyaWJ1dGVzID0gJExheW91dE9iamVjdC0+Q0lUcmVlRGVmYXVsdEF0dHJpYnV0ZXMoKTsKCj1jdXQKCnN1YiBDSVRyZWVEZWZhdWx0QXR0cmlidXRlcyB7CiAgICByZXR1cm4gcXcvQ2xhc3MgQ3VyRGVwbFN0YXRlIEN1ckluY2lTdGF0ZSBDdXJJbmNpU3RhdGVUeXBlLzsKfQoKIyBidWlsZCBDaGlsZHJlbiBzdHJ1Y3R1cmUKc3ViIEdldENJU3ViVHJlZURhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGlua091dHB1dERhdGEgPSAkUGFyYW17TGlua091dHB1dERhdGF9OyAgICAjIHdpbGwgYmUgbW9kaWZpZWQKICAgIG15ICREZXB0aCAgICAgICAgICA9ICRQYXJhbXtEZXB0aH07CiAgICBteSAkSW5pdCAgICAgICAgICAgPSAkUGFyYW17SW5pdH07CiAgICBteSAkRGlyZWN0aW9uICAgICAgPSAkUGFyYW17RGlyZWN0aW9ufTsKCiAgICBteSAkQWN0dWFsTGV2ZWwgICAgICA9IDE7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgYnVpbGQgdGhlIGl0ZW1zIGZvciB0aGUgbmV3IGxldmVscwogICAgTE9PUERFUFRIOgogICAgZm9yIG15ICRHb0RlZXAgKCAkSW5pdCAuLiAkRGVwdGggKSB7CiAgICAgICAgbmV4dCBMT09QREVQVEggaWYgZXhpc3RzICRMaW5rT3V0cHV0RGF0YS0+WyAkR29EZWVwIF07CiAgICAgICAgbGFzdCBMT09QREVQVEggdW5sZXNzICRMaW5rT3V0cHV0RGF0YS0+WyAkR29EZWVwIC0gMSBdOwoKICAgICAgICAjIGdldCBsaW5rZWQgb2JqZWN0cyBmb3IgdGhlIG5leHQgbGV2ZWwKICAgICAgICBteSBASXRlbXNQZXJMZXZlbDsKICAgICAgICBteSAlSXRlbU1hcDsKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCAkTGlua091dHB1dERhdGEtPlsgJEdvRGVlcCAtIDEgXS0+QCogKSB7CgogICAgICAgICAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEVsZW1lbnQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRFbGVtZW50LT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAkRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRGF0YUZvckl0ZW0gPSAkU2VsZi0+R2V0TGlua091dHB1dERhdGEoCiAgICAgICAgICAgICAgICBMaW5rZWRDb25maWdJdGVtcyA9PiAkTGlua2VkQ29uZmlnSXRlbXMsCiAgICAgICAgICAgICAgICBMaW5rZWRUbyAgICAgICAgICA9PiAkRWxlbWVudC0+e0lEfSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICAgICAgID0+ICREaXJlY3Rpb24sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBJVEVNOgogICAgICAgICAgICBmb3IgbXkgJFNpbmdsZUl0ZW0gKCBAeyAkRGF0YUZvckl0ZW0gLy8gW10gfSApIHsKCiAgICAgICAgICAgICAgICAjIGlmIHRoaXMgaXRlbSBhbHJlYWR5IGV4aXN0cyBvbiB0aGlzIGxheWVyLCBqdXN0IGFkZCBhbm90aGVyIGxpbmsgdG8gaXQKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSXRlbU1hcHsgJFNpbmdsZUl0ZW0tPntJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRJdGVtc1BlckxldmVsWyAkSXRlbU1hcHsgJFNpbmdsZUl0ZW0tPntJRH0gfSBde0xpbmt9IH0sICRTaW5nbGVJdGVtLT57TGlua31bMF07CgogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtc1BlckxldmVsLCAkU2luZ2xlSXRlbTsKICAgICAgICAgICAgICAgICRJdGVtTWFweyAkU2luZ2xlSXRlbS0+e0lEfSB9ID0gJCNJdGVtc1BlckxldmVsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoQEl0ZW1zUGVyTGV2ZWwpIHsKICAgICAgICAgICAgJEFjdHVhbExldmVsKys7CiAgICAgICAgICAgICRMaW5rT3V0cHV0RGF0YS0+WyRHb0RlZXBdID0gXEBJdGVtc1BlckxldmVsOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRBY3R1YWxMZXZlbCA+ICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9ICYmICRBY3R1YWxMZXZlbCAhPSAwICkgewogICAgICAgICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9ID0gJEFjdHVhbExldmVsOwogICAgfQoKICAgIHJldHVybjsKfQoKIyByZXR1cm4gY29udGVudHMgb2YgdGhlIG5vZGVzCnN1YiBfR2V0Q29udGVudHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAQXR0cmlidXRlcyA9ICRQYXJhbXtBdHRyaWJ1dGVzfS0+QCo7CiAgICBteSAkQ29uZmlnSXRlbSA9ICRQYXJhbXtDb25maWdJdGVtfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgZmlsbCBkYXRhIHdpdGggY29uZmlnIGl0ZW0gYXR0cmlidXRlcwogICAgbXkgQExpbmVzOwogICAgZm9yIG15ICRDb2x1bW4gKEBBdHRyaWJ1dGVzKSB7CgogICAgICAgIG15ICRDb2x1bW5MYWJlbCA9ICRDb2x1bW47CiAgICAgICAgaWYgKCBpbmRleCggJENvbHVtbiwgJzo6JyApID4gMCApIHsKICAgICAgICAgICAgbXkgQFZhbHMgPSBzcGxpdCAvOjovLCAkQ29sdW1uOwogICAgICAgICAgICBwb3AgQFZhbHM7CiAgICAgICAgICAgICRDb2x1bW5MYWJlbCA9IGpvaW4gJyAnLCBAVmFsczsKICAgICAgICB9CgogICAgICAgIG15ICRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFNlbGYtPl9NYXBBdHRyaWJ1dGVzKCBMYWJlbCA9PiAkQ29sdW1uTGFiZWwgKSApOwogICAgICAgIG15ICRUZXh0ICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJENvbmZpZ0l0ZW0tPnskQ29sdW1ufSAvLyAnJyApOwoKICAgICAgICAjIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlLiBTaG93IHRoZSBncmVlbiwgeWVsbG93LCByZWQgZmxhZ3MuCiAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGVUeXBlJyApIHsKCiAgICAgICAgICAgICMgZGVmaW5lIGluY2lkZW50IHNpZ25hbHMKICAgICAgICAgICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDdXJJbmNpU2lnbmFsID0gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH07CiAgICAgICAgICAgIHB1c2ggQExpbmVzLCBxcXs8c3BhbiBjbGFzcz0iRmxhZyBTbWFsbCI+IDxzcGFuIGNsYXNzPSIkQ3VySW5jaVNpZ25hbCI+IiRUZXh0Ijwvc3Bhbj48L3NwYW4+fTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQExpbmVzLCAiJExhYmVsOiAkVGV4dCI7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBqb2luICI8YnI+XG4iLCBATGluZXM7Cn0KCiMgZ2VuZXJhdGUgYW4gSUQgdGhhdCBpcyB1c2VkIGZvciBkcmF3aW5nIHRoZSBhcmNzCnN1YiBfR2VuZXJhdGVJRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICggZGVmaW5lZCAkUGFyYW17Q29uZmlnSXRlbUlEfSA/ICJDJFBhcmFte0NvbmZpZ0l0ZW1JRH0iIDogJycgKSwKICAgICAgICAoIGRlZmluZWQgJFBhcmFte1ZlcnNpb25JRH0gICAgPyAiViRQYXJhbXtWZXJzaW9uSUR9IiAgICA6ICcnICk7Cn0KCiMgR2V0IGxpbmtzIGZvciByZWxhdGVkIENJLgojIFRoaXMgcmV0dXJuZWQgb3V0cHV0IGRhdGEgaXMgbm90IGEgdHJlZSwgYnV0IGFuIGFycmF5cmVmIG9mIGl0ZW1zIHBlciBsZXZlbC4Kc3ViIEdldExpbmtPdXRwdXREYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWd1cmVkVHlwZXMgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpUeXBlJyk7CgogICAgbXkgQE91dHB1dERhdGE7CiAgICBmb3IgbXkgJExpbmtlZENvbmZpZ0l0ZW0gKCBncmVwIHsgJF8tPntEaXJlY3Rpb259IGVxICRQYXJhbXtEaXJlY3Rpb259IH0gJFBhcmFte0xpbmtlZENvbmZpZ0l0ZW1zfS0+QCogKSB7CgogICAgICAgICMgYmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpbmtlZCBjb25maWcgaXRlbQogICAgICAgICMgVGhlcmUgYXJlIG9ubHkgdHdvIGNhc2VzOgogICAgICAgICMgICAtIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbgogICAgICAgICMgICAtIFZlcnNpb25JRCBpcyBnaXZlbgogICAgICAgIG15ICVJbmNvbWluZ0lEcyA9IG1hcCB7ICRfID0+ICRMaW5rZWRDb25maWdJdGVtLT57JF99IH0gcXcoQ29uZmlnSXRlbUlEIFZlcnNpb25JRCk7CgogICAgICAgICMgQ29uZmlnSXRlbUdldCgpIGFsbG93cyBmb3IgYm90aCBjYXNlcwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICVJbmNvbWluZ0lEcywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgVGhpcyB3aWxsIGJlIHVzZWQgZm9yIGZpbmRpbmcgdGhlIG5leHQgbGV2ZWwgb2YgbGlua3M6CiAgICAgICAgIyAgIC0gQ29uZmlnSXRlbUlEIHdhcyBnaXZlbiA9PiBsYXRlc3QgVmVyc2lvbklEIHdpbGwgYmUgYWRkZWQKICAgICAgICAjICAgLSBWZXJzaW9uSUQgd2FzIGdpdmVuICAgID0+IENvbmZpZ0l0ZW1JRCBmb3IgdGhhdCB2ZXJzaW9uIHdpbGwgYmUgYWRkZWQKICAgICAgICBteSAlT3V0Z29pbmdJRHMgPSBtYXAgeyAkXyA9PiAkQ29uZmlnSXRlbS0+eyRffSB9IHF3KENvbmZpZ0l0ZW1JRCBWZXJzaW9uSUQpOwoKICAgICAgICAjIEZpbmQgbGFiZWwgZm9yIHRoZSBsaW5rLiBJbiBUcmVlVmlldyB0aGUgbGFiZWwgb2YgdGhlIGFyYwogICAgICAgICMgc2hvdWxkIGJlIGluIGFjY29yZGFuY2UgdG8gdGhlIGRpcmVjdGlvbiBvZiB0aGUgYXJjLiBUaGUgYXJlCiAgICAgICAgIyBpcyBhbHdheXMgZGlyZWN0ZWQgZnJvbSBTb3VyY2UgdG8gVGFyZ2V0LiBUaGVyZWZvcmUgdGhlIFNvdXJjZU5hbWUgaXMgdGhlIGFyYyBsYWJlbC4KICAgICAgICBteSAkTGlua1R5cGUgPSAkTGlua2VkQ29uZmlnSXRlbS0+e0xpbmtUeXBlfTsKICAgICAgICBteSAkQXJjTGFiZWwgPSAkQ29uZmlndXJlZFR5cGVzLT57JExpbmtUeXBlfS0+e1NvdXJjZU5hbWV9IHx8ICRMaW5rVHlwZTsKICAgICAgICBteSAkTGluayAgICAgPSBbIHsgTGlua2VkVG8gPT4gJFBhcmFte0xpbmtlZFRvfSwgIExpbmtUeXBlID0+ICRBcmNMYWJlbCB9IF07CgogICAgICAgICMgV2FzIHRoZSBsaW5rIHRvIHRoaXMgaXRlbSB2ZXJzaW9uIHNwZWNpZmljID8KICAgICAgICAjIFRoZSBWZXJzaW9uU3RyaW5nIGlzIG9ubHkgc2hvd24gaW4gdGhlIFRyZWVWaWV3IHdoZW4gYW4gZXhwbGljaXQgdmVyc2lvbiBpcyBsaW5rZWQuCiAgICAgICAgIyBUT0RPOiBpZiB3ZSB3YW50IG11bHRpcGxlIGxpbmtzIHRvIHRoZSB2ZXJzaW9uIG9uIHRoZSBzYW1lIGxheWVyLCBvbmx5IHBhcnRseSB2ZXJzaW9uIHNwZWNpZmljCiAgICAgICAgIyAgICAgICB3ZSB3b3VsZCBuZWVkIHNlcGFyYXRlIGlkcyBmb3IgYm90aC4gVGhpcyBjdXJyZW50bHkgaXMgbm90IGltcGxlbWVudGVkLgogICAgICAgIG15ICRMaW5rZWRBc1ZlcnNpb24gPSAkSW5jb21pbmdJRHN7VmVyc2lvbklEfSA/IDEgOiAwOwoKICAgICAgICAjIGRlZmluZSBpdGVtIGRhdGEKICAgICAgICBwdXNoIEBPdXRwdXREYXRhLCB7CiAgICAgICAgICAgICVPdXRnb2luZ0lEcywKICAgICAgICAgICAgSUQgICAgICAgICAgICAgID0+ICRTZWxmLT5fR2VuZXJhdGVJRCglT3V0Z29pbmdJRHMpLCAgICAjIHVzZWQgZm9yIGxpbmtpbmcgaW4gdGhlIGdyYXBoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICBMaW5rICAgICAgICAgICAgPT4gJExpbmssCiAgICAgICAgICAgIExpbmtlZEFzVmVyc2lvbiA9PiAkTGlua2VkQXNWZXJzaW9uLAogICAgICAgICAgICBDb250ZW50cyAgICAgICAgPT4gJFNlbGYtPl9HZXRDb250ZW50cygKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMgPT4gWwogICAgICAgICAgICAgICAgICAgICggJExpbmtlZEFzVmVyc2lvbiA/ICdWZXJzaW9uU3RyaW5nJyA6ICgpICksCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPkNJVHJlZURlZmF1bHRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICksCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gXEBPdXRwdXREYXRhOwp9CgojIGNoYW5nZSBsYWJlbHMgZm9yIHRyYW5zbGF0YWJsZSB2YWx1ZXMKc3ViIF9NYXBBdHRyaWJ1dGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0xhYmVsfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTGFiZWwhJwogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdGF0ZSAkTWFwVHJhbnNsYXRpb25zID0gewogICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdEZXBsb3ltZW50IFN0YXRlJywKICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnLAogICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnLAogICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJycsCiAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAnQ29uZmlnIEl0ZW0gTnVtYmVyJywKICAgICAgICBWZXJzaW9uU3RyaW5nICAgID0+ICdWZXJzaW9uIFN0cmluZycsCiAgICB9OwoKICAgIHJldHVybiAkTWFwVHJhbnNsYXRpb25zLT57ICRQYXJhbXtMYWJlbH0gfSAvLyAkUGFyYW17TGFiZWx9Owp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/LinkObject/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGxpbmsgb2JqZWN0IChjb25maWcgaXRlbSkKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtLT5uZXcoCiAgICAgICAgVXNlckxhbmd1YWdlID0+ICdlbicsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJMYW5ndWFnZSBVc2VySUQpKSB7CiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfSB8fCBkaWUgIkdvdCBubyAkTmVlZGVkISI7CiAgICB9CgogICAgIyBXZSBuZWVkIG91ciBvd24gTGF5b3V0T2JqZWN0IGluc3RhbmNlIHRvIGF2b2lkIGJsb2NrZGF0YSBjb2xsaXNpb25zCiAgICAjICAgd2l0aCB0aGUgbWFpbiBwYWdlLgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dC0+bmV3KCAleyRTZWxmfSApOwoKICAgICMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZXMKICAgICRTZWxmLT57T2JqZWN0RGF0YX0gPSB7CiAgICAgICAgT2JqZWN0ICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFJlYWxuYW1lICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdE5hbWUgPT4gJ1NvdXJjZU9iamVjdElEJywKICAgIH07CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgVGFibGVDcmVhdGVDb21wbGV4KCkKCnJldHVybiBhbiBhcnJheSB3aXRoIHRoZSBibG9jayBkYXRhCgpSZXR1cm4KCiAgICBAQmxvY2tEYXRhID0gKAogICAgICAgIHsKCiAgICAgICAgICAgIE9iamVjdE5hbWUgID0+ICdDb25maWdJdGVtSUQnLAogICAgICAgICAgICBPYmplY3RJRCAgICA9PiAnMTIzJywKCiAgICAgICAgICAgIE9iamVjdCAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBCbG9ja25hbWUgPT4gJ0NvbmZpZ0l0ZW0gQ29tcHV0ZXInLAogICAgICAgICAgICBIZWFkbGluZSAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAyMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ29uZmlnSXRlbSMnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMzAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NyZWF0ZWQnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gWwogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICA9PiAnQ3VySW5jaVNpZ25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJzEyMycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMTIzJywKICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICA9PiAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0xMjMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1RoZSBOYW1lIG9mIHRoZSBDb25maWcgSXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdJbiBSZXBhaXInLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA4LTAxLTAxIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgPT4gJ0N1ckluY2lTaWduYWwnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgICAgICAgID0+ICcyMzQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIzNCcsCiAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9MjM0JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdUaGUgTmFtZSBvZiB0aGUgQ29uZmlnIEl0ZW0gMjM0JywKICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA3LTExLTExIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgKTsKCiAgICBAQmxvY2tEYXRhID0gJExpbmtPYmplY3QtPlRhYmxlQ3JlYXRlQ29tcGxleCgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgVGFibGVDcmVhdGVDb21wbGV4IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB8fCByZWYgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZXQgYW5kIHJlbWVtYmVyIHRoZSBEZXBsb3ltZW50IHN0YXRlIGNvbG9ycwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICgkQ29sb3IpID0gJFByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRDb2xvcjsKCiAgICAgICAgIyBhZGQgY29sb3Igc3R5bGUgZGVmaW5pdGlvbgogICAgICAgIG15ICREZXBsU3RhdGUgPSAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgIyByZW1vdmUgYW55IG5vbiBhc2NpaSB3b3JkIGNoYXJhY3RlcnMKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBjb3ZlcnQgdG8gbG93ZXIgY2FzZQogICAgICAgICRTZWxmLT57RGVwbFN0YXRlQ29sb3JzfS0+eyREZXBsU3RhdGV9ID0gbGMgJENvbG9yOwogICAgfQoKICAgICMgR2V0IHRoZSBjb2x1bW5zIGNvbmZpZy4KICAgIG15ICRDb2x1bW5zQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTo6U2hvd0NvbHVtbnMnKTsKCiAgICAjIEdldCB0aGUgY29sdW1ucyBieSBjbGFzcyBjb25maWcuCiAgICBteSAkQ29sdW1uc0J5Q2xhc3NDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0xpbmtPYmplY3Q6OklUU01Db25maWdJdGVtOjpTaG93Q29sdW1uc0J5Q2xhc3MnKTsKCiAgICAjIEdldCBjb25maWd1cmVkIGNvbHVtbnMgYW5kIHJlb3JnYW5pemUgdGhlbSBieSBjbGFzcyBuYW1lLgogICAgbXkgJUNvbHVtbkJ5Q2xhc3M7CiAgICBteSAlU2lnbmFsQ29sdW1uTGlzdDsKICAgIGlmICggJENvbHVtbnNCeUNsYXNzQ29uZmlnICYmIHJlZiAkQ29sdW1uc0J5Q2xhc3NDb25maWcgZXEgJ0FSUkFZJyAmJiBAeyRDb2x1bW5zQnlDbGFzc0NvbmZpZ30gKSB7CgogICAgICAgIE5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggQHskQ29sdW1uc0J5Q2xhc3NDb25maWd9ICkgewogICAgICAgICAgICBteSAoICRDbGFzcywgJENvbHVtbiApID0gc3BsaXQgLzo6LywgJE5hbWUsIDI7CgogICAgICAgICAgICBuZXh0IE5BTUUgaWYgISRDb2x1bW47CgogICAgICAgICAgICAjIElmIHNpZ25hbCBjb2x1bW5zIGFyZSBjb25maWd1cmVkIGp1c3QgZm9yIGNlcnRhaW4gY2xhc3NlcywgYWRkIHRoZW0gdG8gdGhlIGJlZ2lubmluZyBvZiBJdGVtQ29sdW1ucyBhcnJheSwKICAgICAgICAgICAgIyBub3QgdG8gdGhlIGFycmF5IHdpdGggb3RoZXIgY29sdW1ucy4KICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRTaWduYWxDb2x1bW5MaXN0eyRDbGFzc30tPnskQ29sdW1ufSA9IDE7CiAgICAgICAgICAgICAgICBuZXh0IE5BTUU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkJ5Q2xhc3N7JENsYXNzfSB9LCAkQ29sdW1uOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNvbnZlcnQgdGhlIGxpc3QKICAgIG15ICVMaW5rTGlzdDsKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IH0gKSB7CgogICAgICAgICMgZXh0cmFjdCBsaW5rIHR5cGUgTGlzdAogICAgICAgIG15ICRMaW5rVHlwZUxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9OwoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyRMaW5rVHlwZUxpc3R9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGRpcmVjdGlvbiBsaXN0CiAgICAgICAgICAgIG15ICREaXJlY3Rpb25MaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259OwoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyREaXJlY3Rpb25MaXN0fSApIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgY2xhc3MKICAgICAgICAgICAgICAgIG15ICRDbGFzcyA9ICREaXJlY3Rpb25MaXN0LT57JENvbmZpZ0l0ZW1JRH0tPntDbGFzc30gfHwgJyc7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRDbGFzczsKCiAgICAgICAgICAgICAgICAkTGlua0xpc3R7JENsYXNzfS0+eyRDb25maWdJdGVtSUR9LT57RGF0YX0gPSAkRGlyZWN0aW9uTGlzdC0+eyRDb25maWdJdGVtSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15IEBCbG9ja0RhdGE7CiAgICBmb3IgbXkgJENsYXNzICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJUxpbmtMaXN0ICkgewoKICAgICAgICAjIGV4dHJhY3QgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgIG15ICRDb25maWdJdGVtTGlzdCA9ICRMaW5rTGlzdHskQ2xhc3N9OwoKICAgICAgICAjIHRvIHN0b3JlIHRoZSBjb2x1bW4gaGVhZGxpbmUKICAgICAgICBteSBAU2hvd0NvbHVtbnNIZWFkbGluZXM7CgogICAgICAgICMgY3JlYXRlIHRoZSBpdGVtIGxpc3QKICAgICAgICBteSBASXRlbUxpc3Q7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKAogICAgICAgICAgICBzb3J0IHsgJENvbmZpZ0l0ZW1MaXN0LT57JGF9LT57RGF0YX0tPntOYW1lfSBjbXAgJENvbmZpZ0l0ZW1MaXN0LT57JGJ9LT57RGF0YX0tPntOYW1lfSB9CiAgICAgICAgICAgIGtleXMgJXskQ29uZmlnSXRlbUxpc3R9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY29sdW1uIGhlYWRsaW5lIGFycmF5IGlzIGVtcHR5IGZvciBlYWNoIGxvb3AKICAgICAgICAgICAgQFNob3dDb2x1bW5zSGVhZGxpbmVzID0gKCk7CgogICAgICAgICAgICBteSBASXRlbUNvbHVtbnMgPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgTGluayAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntCYXNlbGlua30KICAgICAgICAgICAgICAgICAgICAgICAgLiAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9ICgkQ29uZmlnSXRlbS0+e0NsYXNzfSk6ICRDb25maWdJdGVtLT57TmFtZX0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQWRkIGNvbHVtbnMgZnJvbSAnTGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW06OlNob3dDb2x1bW5zJyBzZXR0aW5nIHRvIHRoZSBjdXJyZW50IENJIGNsYXNzCiAgICAgICAgICAgICMgaWYgaXQgZG9lcyBub3QgY29udGFpbiB0aGVtLiBTaWduYWwgY29sdW1ucyBpcyBzYXZlZCBpbiBoYXNoIGJlY2F1c2UgdGhleSB3aWxsIGJlIGFkZGVkIGxhdGVyLgogICAgICAgICAgICBDT0xVTU5DT05GSUc6CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uICggQHskQ29sdW1uc0NvbmZpZ30gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57JENvbHVtbn0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAhZ3JlcCB7ICRfIGVxICRDb2x1bW4gfSBAeyAkQ29sdW1uQnlDbGFzc3skQ2xhc3N9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29sdW1uQnlDbGFzc3skQ2xhc3N9IH0sICRDb2x1bW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWRkIHNpZ25hbCBjb2x1bW5zIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5IGlmIG5lZWRlZC4KICAgICAgICAgICAgaWYgKCAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57Q3VyRGVwbFNpZ25hbH0gKSB7CiAgICAgICAgICAgICAgICB1bnNoaWZ0IEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0N1ckRlcGxTaWduYWwnLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57Q3VySW5jaVNpZ25hbH0gKSB7CiAgICAgICAgICAgICAgICB1bnNoaWZ0IEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgPT4gJ0N1ckluY2lTaWduYWwnLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRoZXNlIGNvbHVtbnMgd2lsbCBiZSBhZGRlZCBpZiBubyBjbGFzcyBiYXNlZCBjb2x1bW4gY29uZmlnIGlzIGRlZmluZWQKICAgICAgICAgICAgbXkgQEFkZGl0aW9uYWxEZWZhdWx0SXRlbUNvbHVtbnMgPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJENvbmZpZ0l0ZW0tPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluZGl2aWR1YWwgY29sdW1uIGNvbmZpZyBmb3IgdGhpcyBjbGFzcyBleGlzdHMKICAgICAgICAgICAgIyBUT0RPOiBpbmNvcnBvcmF0ZSBkeW5hbWljIGZpZWxkIGRhdGEKICAgICAgICAgICAgaWYgKDApIHsgfQoKICAgICAgICAgICAgIyAgICAgICAgICAgIGlmICggJENvbHVtbkJ5Q2xhc3N7JENsYXNzfSApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICMgY29udmVydCB0aGUgWE1MIGRhdGEgaW50byBhIGhhc2gKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICBteSAkRXh0ZW5kZWRWZXJzaW9uRGF0YSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+WE1MRGF0YTJIYXNoKAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRWZXJzaW9uWE1MRGF0YS0+e1hNTERlZmluaXRpb259LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRWZXJzaW9uWE1MRGF0YS0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgID0+ICRDb2x1bW5CeUNsYXNzeyRDbGFzc30sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoIEB7ICRDb2x1bW5CeUNsYXNzeyRDbGFzc30gfSApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3Mgc29tZSBub24teG1sIGF0dHJpYnV0ZXMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgaWYgKCAkVmVyc2lvbi0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAjIGhhbmRsZSB0aGUgQ0kgbmFtZQogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdOYW1lJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGxpbmUKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1uc0hlYWRsaW5lcywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOYW1lJywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpYWwgdHJhbnNsYXRpb24gaGFuZGxpbmcKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJFZlcnNpb24tPnskQ29sdW1ufSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlID0+IDEsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBoZWFkbGluZQogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zSGVhZGxpbmVzLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmFuc2xhdGlvbiBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnICkgewogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGNvbHVtbgogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1Db2x1bW5zLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAkVmVyc2lvbi0+eyRDb2x1bW59LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnNIZWFkbGluZXMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnSW5jaWRlbnQgU3RhdGUnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmFuc2xhdGlvbiBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDbGFzcycgKSB7CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgY29sdW1uCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBASXRlbUNvbHVtbnMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRWZXJzaW9uLT57JENvbHVtbn0sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGxpbmUKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1uc0hlYWRsaW5lcywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDbGFzcycsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWFsIGRhdGUvdGltZSBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDcmVhdGVUaW1lJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFZlcnNpb24tPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnNIZWFkbGluZXMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU47CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgdG8gYXNjaWkgdGV4dCBpbiBjYXNlIHRoZSB2YWx1ZSBjb250YWlucyBodG1sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSgKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRXh0ZW5kZWRWZXJzaW9uRGF0YS0+eyRDb2x1bW59LT57VmFsdWV9LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICApIHx8ICcnOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBhbGwgd2hpdGVzcGFjZSBhbmQgbmV3bGluZXMgdG8gc2luZ2xlIHNwYWNlcwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPX4gc3sgXHMrIH17IH1neG1zOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgcHVzaCBASXRlbUNvbHVtbnMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkVmFsdWUsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zSGVhZGxpbmVzLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRFeHRlbmRlZFZlcnNpb25EYXRhLT57JENvbHVtbn0tPntOYW1lfSB8fCAnJywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMgICAgICAgICAgICB9CgogICAgICAgICAgICAjIGluZGl2aWR1YWwgY29sdW1uIGNvbmZpZyBmb3IgdGhpcyBjbGFzcyBkb2VzIG5vdCBleGlzdCwKICAgICAgICAgICAgIyBzbyB0aGUgZGVmYXVsdCBjb2x1bW5zIHdpbGwgYmUgdXNlZAogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGFkZCB0aGUgZGVmYXVsdCBjb2x1bW5zCiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgQEFkZGl0aW9uYWxEZWZhdWx0SXRlbUNvbHVtbnM7CgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIGRlZmF1bHQgY29sdW1uIGhlYWRsaW5lcwogICAgICAgICAgICAgICAgQFNob3dDb2x1bW5zSGVhZGxpbmVzID0gKAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDEzMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXEBJdGVtQ29sdW1uczsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpZiAhQEl0ZW1MaXN0OwoKICAgICAgICAjIGRlZmluZSB0aGUgYmxvY2sgZGF0YQogICAgICAgIG15ICVCbG9jayA9ICgKICAgICAgICAgICAgT2JqZWN0ICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9LAogICAgICAgICAgICBCbG9ja25hbWUgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSAuICcgKCcgLiAkQ2xhc3MgLiAnKScsCiAgICAgICAgICAgIEhlYWRsaW5lICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ29uZmlnSXRlbSMnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gXEBJdGVtTGlzdCwKICAgICAgICApOwoKICAgICAgICAjIEFkZCAnQ3VySW5jaVNpZ25hbCcgYW5kICdDdXJEZXBsU2lnbmFsJyBjb2x1bW5zIHRvIHRoZSBiZWdpbm5pbmcgb2YgaGVhZGxpbmUgaWYgbmVlZGVkLgogICAgICAgIGlmICggJFNpZ25hbENvbHVtbkxpc3R7JENsYXNzfS0+e0N1ckRlcGxTaWduYWx9ICkgewogICAgICAgICAgICB1bnNoaWZ0IEB7ICRCbG9ja3tIZWFkbGluZX0gfSwgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDIwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBpZiAoICRTaWduYWxDb2x1bW5MaXN0eyRDbGFzc30tPntDdXJJbmNpU2lnbmFsfSApIHsKICAgICAgICAgICAgdW5zaGlmdCBAeyAkQmxvY2t7SGVhZGxpbmV9IH0sIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMjAsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgY29sdW1uIGhlYWRsaW5lcwogICAgICAgIHB1c2ggQHsgJEJsb2Nre0hlYWRsaW5lfSB9LCBAU2hvd0NvbHVtbnNIZWFkbGluZXM7CgogICAgICAgIHB1c2ggQEJsb2NrRGF0YSwgXCVCbG9jazsKICAgIH0KCiAgICByZXR1cm4gQEJsb2NrRGF0YTsKfQoKPWhlYWQyIFRhYmxlQ3JlYXRlU2ltcGxlKCkKCnJldHVybiBhIGhhc2ggd2l0aCB0aGUgbGluayBvdXRwdXQgZGF0YQoKUmV0dXJuCgogICAgJUxpbmtPdXRwdXREYXRhID0gKAogICAgICAgIE5vcm1hbDo6U291cmNlID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NJOjU1NTU1JywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICdDb25maWdJdGVtIyA1NTU1NTU6IFRoZSBjb25maWcgaXRlbSBuYW1lJywKICAgICAgICAgICAgICAgICAgICBDc3MgICAgID0+ICdzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2giJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ0k6MjIyMjInLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJ0NvbmZpZ0l0ZW0jIDIyMjIyOiBUaXRsZSBvZiBjb25maWcgbmFtZSAyMjIyMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUGFyZW50Q2hpbGQ6OlRhcmdldCA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDSTo3Nzc3NycsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAnQ29uZmlnSXRlbSMgNzc3Nzc6IENvbmZpZ0l0ZW0gbmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKICAgICVMaW5rT3V0cHV0RGF0YSA9ICRMaW5rT2JqZWN0LT5UYWJsZUNyZWF0ZVNpbXBsZSgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgVGFibGVDcmVhdGVTaW1wbGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IHx8IHJlZiAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBPYmplY3RMaW5rTGlzdFdpdGhEYXRhIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUxpbmtPdXRwdXREYXRhOwogICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAleyAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gfSApIHsKCiAgICAgICAgIyBleHRyYWN0IGxpbmsgdHlwZSBMaXN0CiAgICAgICAgbXkgJExpbmtUeXBlTGlzdCA9ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfS0+eyRMaW5rVHlwZX07CgogICAgICAgIGZvciBteSAkRGlyZWN0aW9uICggc29ydCBrZXlzICV7JExpbmtUeXBlTGlzdH0gKSB7CgogICAgICAgICAgICAjIGV4dHJhY3QgZGlyZWN0aW9uIGxpc3QKICAgICAgICAgICAgbXkgJERpcmVjdGlvbkxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn07CgogICAgICAgICAgICBteSBASXRlbUxpc3Q7CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICRWZXJzaW9uID0gJERpcmVjdGlvbkxpc3QtPnskQ29uZmlnSXRlbUlEfTsKCiAgICAgICAgICAgICAgICAjIGRlZmluZSBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICVJdGVtID0gKAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NJOicgLiAkVmVyc2lvbi0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAiQ29uZmlnSXRlbSMgJFZlcnNpb24tPntOdW1iZXJ9ICgkVmVyc2lvbi0+e0NsYXNzfSk6ICRWZXJzaW9uLT57TmFtZX0iLAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JwogICAgICAgICAgICAgICAgICAgICAgICAuICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1MaXN0LCBcJUl0ZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGl0ZW0gbGlzdCB0byBsaW5rIG91dHB1dCBkYXRhCiAgICAgICAgICAgICRMaW5rT3V0cHV0RGF0YXsgJExpbmtUeXBlIC4gJzo6JyAuICREaXJlY3Rpb24gfS0+e0lUU01Db25maWdJdGVtfSA9IFxASXRlbUxpc3Q7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlTGlua091dHB1dERhdGE7Cn0KCj1oZWFkMiBDb250ZW50U3RyaW5nQ3JlYXRlKCkKCnJldHVybiBhIG91dHB1dCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+Q29udGVudFN0cmluZ0NyZWF0ZSgKICAgICAgICBDb250ZW50RGF0YSA9PiAkSGFzaFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgQ29udGVudFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29udGVudERhdGF9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb250ZW50RGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZXh0cmFjdCBjb250ZW50CiAgICBteSAkQ29udGVudCA9ICRQYXJhbXtDb250ZW50RGF0YX07CgogICAgaWYgKCAkQ29udGVudC0+e1R5cGV9IG5lICdDdXJJbmNpU2lnbmFsJyAmJiAkQ29udGVudC0+e1R5cGV9IG5lICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFN0cmluZzsKICAgIGlmICggJENvbnRlbnQtPntUeXBlfSBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CgogICAgICAgICMgc2V0IGluY2lkZW50IHNpZ25hbAogICAgICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICAgICAgaW5jaWRlbnQgICAgPT4gJ3JlZGxlZCcsCiAgICAgICAgICAgIG9wZXJhdGlvbmFsID0+ICdncmVlbmxlZCcsCiAgICAgICAgICAgIHVua25vd24gICAgID0+ICdncmF5bGVkJywKICAgICAgICAgICAgd2FybmluZyAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBjdXJyZW50IGluY2lkZW50IHNpZ25hbAogICAgICAgICRDb250ZW50LT57Q3VySW5jaVN0YXRlVHlwZX0gfHw9ICd1bmtub3duJzsKICAgICAgICBteSAkQ3VySW5jaVNpZ25hbCA9ICRJbmNpU2lnbmFsc3sgJENvbnRlbnQtPntDdXJJbmNpU3RhdGVUeXBlfSB9OwogICAgICAgICRDdXJJbmNpU2lnbmFsIHx8PSAkSW5jaVNpZ25hbHN7dW5rbm93bn07CgogICAgICAgICRTdHJpbmcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJzxkaXYgY2xhc3M9IkZsYWcgU21hbGwiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+ICcKICAgICAgICAgICAgICAgIC4gJzxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj48L3NwYW4+IDwvZGl2PicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkQ3VySW5jaVNpZ25hbCwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkQ29udGVudC0+e1R5cGV9IGVxICdDdXJEZXBsU2lnbmFsJyApIHsKCiAgICAgICAgIyBjb252ZXJ0IGRlcGxveW1lbnQgc3RhdGUgdG8gYSB3ZWIgc2FmZSBDU1MgY2xhc3MKICAgICAgICBteSAkRGVwbFN0YXRlID0gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJzsKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBnZXQgdGhlIGNvbG9yIG9mIHRoZSBkZXBseW1lbnQgc3RhdGUgaWYgZGVmaW5lZAogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciA9ICggJFNlbGYtPntEZXBsU3RhdGVDb2xvcnN9LT57JERlcGxTdGF0ZX0gfHwgJycgKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgbXkgJFRlbXBsYXRlID0gJzxkaXYgY2xhc3M9IkZsYWcgU21hbGwiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+ICc7CgogICAgICAgICMgY2hlY2sgaWYgY29sb3IgaXMgZGVmaW5lZCBhbmQgc2V0IHRoZSBzdHlsZSBjbGFzcwogICAgICAgIGlmICgkRGVwbFN0YXRlQ29sb3IpIHsKICAgICAgICAgICAgJFRlbXBsYXRlIC49IDw8IkVORCI7CjxzdHlsZT4KICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIyREZXBsU3RhdGVDb2xvcjsKICAgIH0KPC9zdHlsZT4KRU5ECiAgICAgICAgfQoKICAgICAgICAkVGVtcGxhdGUgLj0gIjxzcGFuIGNsYXNzPVwiRGVwbFN0YXRlICREZXBsU3RhdGVcIj48L3NwYW4+IDwvZGl2PiI7CgogICAgICAgICRTdHJpbmcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJFRlbXBsYXRlLAogICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgPT4gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VsZWN0YWJsZU9iamVjdExpc3QoKQoKcmV0dXJuIGFuIGFycmF5IGhhc2ggd2l0aCBDPHNlbGVjdGFibGU+IG9iamVjdHMKClJldHVybgoKICAgIEBTZWxlY3RhYmxlT2JqZWN0TGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OjI1JywKICAgICAgICAgICAgVmFsdWUgPT4gJ0NvbmZpZ0l0ZW06OkNvbXB1dGVyJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjoyNicsCiAgICAgICAgICAgIFZhbHVlID0+ICdDb25maWdJdGVtOjpTb2Z0d2FyZScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6MjcnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQ29uZmlnSXRlbTo6TmV0d29yaycsCiAgICAgICAgfSwKICAgICk7CgogICAgQFNlbGVjdGFibGVPYmplY3RMaXN0ID0gJExpbmtPYmplY3QtPlNlbGVjdGFibGVPYmplY3RMaXN0KAogICAgICAgIFNlbGVjdGVkID0+ICRJZGVudGlmaWVyLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFNlbGVjdGFibGVPYmplY3RMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWZpbmUgaGVhZGxpbmUKICAgIG15IEBPYmplY3RTZWxlY3RMaXN0OwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIGlmICEkQ2xhc3NMaXN0OwogICAgcmV0dXJuIGlmIHJlZiAkQ2xhc3NMaXN0IG5lICdIQVNIJzsKCiAgICAjIGdldCB0aGUgY29uZmlnIHdpdGggdGhlIGRlZmF1bHQgc3Vib2JqZWN0cwogICAgbXkgJERlZmF1bHRTdWJvYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0xpbmtPYmplY3Q6OkRlZmF1bHRTdWJPYmplY3QnKSB8fCB7fTsKCiAgICBteSAkSGFzU2VsZWN0ZWRJdGVtOwoKICAgIENMQVNTSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgbGMgJENsYXNzTGlzdC0+eyRhfSBjbXAgbGMgJENsYXNzTGlzdC0+eyRifSB9IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKCiAgICAgICAgIyBzaG93IGNsYXNzIG9ubHkgaWYgdXNlciBoYXMgYWNjZXNzIHJpZ2h0cwogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgICA9PiAncm8nLAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NJRCBpZiAhJEhhc0FjY2VzczsKCiAgICAgICAgbXkgJENsYXNzICAgICAgPSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IHx8ICcnOwogICAgICAgIG15ICRJZGVudGlmaWVyID0gJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0gLiAnOjonIC4gJENsYXNzSUQ7CgogICAgICAgICMgc2V0IHNlbGVjdGVkIGZsYWcKICAgICAgICBteSAkU2VsZWN0ZWQ7CiAgICAgICAgaWYgKCAkUGFyYW17U2VsZWN0ZWR9ICkgewoKICAgICAgICAgICAgaWYgKCAkUGFyYW17U2VsZWN0ZWR9IGVxICRJZGVudGlmaWVyICkgewogICAgICAgICAgICAgICAgJFNlbGVjdGVkID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17U2VsZWN0ZWR9IGVxICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9CiAgICAgICAgICAgICAgICAmJiAkRGVmYXVsdFN1Ym9iamVjdC0+eyAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgZGVmYXVsdCBjbGFzcyBuYW1lCiAgICAgICAgICAgICAgICBteSAkRGVmYXVsdENsYXNzID0gJERlZmF1bHRTdWJvYmplY3QtPnsgJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0gfSB8fCAnJzsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGNsYXNzCiAgICAgICAgICAgICAgICBpZiAoICREZWZhdWx0Q2xhc3MgZXEgJENsYXNzICkgewogICAgICAgICAgICAgICAgICAgICRTZWxlY3RlZCA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkU2VsZWN0ZWQpIHsKICAgICAgICAgICAgJEhhc1NlbGVjdGVkSXRlbSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSByb3cKICAgICAgICBteSAlUm93ID0gKAogICAgICAgICAgICBLZXkgICAgICA9PiAkSWRlbnRpZmllciwKICAgICAgICAgICAgVmFsdWUgICAgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSAuICc6OicgLiAkQ2xhc3MsCiAgICAgICAgICAgIFNlbGVjdGVkID0+ICRTZWxlY3RlZCwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBPYmplY3RTZWxlY3RMaXN0LCBcJVJvdzsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtTZWxlY3RlZH0gJiYgISRIYXNTZWxlY3RlZEl0ZW0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAiTm8gdmFsaWQgc2VsZWN0aW9uIGZvciBsaW5rIG9iamVjdDogJyRQYXJhbXtTZWxlY3RlZH0nISBUaGUgY29uZmlndXJlZCBkZWZhdWx0IGNsYXNzIChMaW5rT2JqZWN0OjpEZWZhdWx0U3ViT2JqZWN0IyMjSVRTTUNvbmZpZ0l0ZW0pIG1heSBub3QgZXhpc3QuIiwKICAgICAgICApOwogICAgfQoKICAgICMgb25seSBhZGQgaGVhZGxpbmUgaWYgdGhlcmUgYXJlIGNvbmZpZ2l0ZW0gY2xhc3NlcwogICAgIyB3aGVyZSB0aGUgdXNlciBoYXMgdGhlIHBlcm1pc3Npb24gdG8gdXNlIHRoZW0KICAgIGlmIChAT2JqZWN0U2VsZWN0TGlzdCkgewoKICAgICAgICAjIGFkZCBoZWFkbGluZSBhcyBmaXJzdCBhcnJheSBlbGVtZW50CiAgICAgICAgdW5zaGlmdCBAT2JqZWN0U2VsZWN0TGlzdCwgewogICAgICAgICAgICBLZXkgICAgICA9PiAnLScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntSZWFsbmFtZX0sCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gQE9iamVjdFNlbGVjdExpc3Q7Cn0KCj1oZWFkMiBTZWFyY2hPcHRpb25MaXN0KCkKCnJldHVybiBhbiBhcnJheSBoYXNoIHdpdGggc2VhcmNoIG9wdGlvbnMKClJldHVybgoKICAgIEBTZWFyY2hPcHRpb25MaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ0NvbmZpZ0l0ZW0jJywKICAgICAgICAgICAgSW5wdXRTdHJnID0+ICRGb3JtU3RyaW5nLAogICAgICAgICAgICBGb3JtRGF0YSAgPT4gJzEyMzQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBJbnB1dFN0cmcgPT4gJEZvcm1TdHJpbmcsCiAgICAgICAgICAgIEZvcm1EYXRhICA9PiAnQmxhQmxhJywKICAgICAgICB9LAogICAgKTsKCiAgICBAU2VhcmNoT3B0aW9uTGlzdCA9ICRMaW5rT2JqZWN0LT5TZWFyY2hPcHRpb25MaXN0KAogICAgICAgIFN1Yk9iamVjdCA9PiAnMjUnLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaE9wdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNlYXJjaCBvcHRpb24gbGlzdAogICAgbXkgQFNlYXJjaE9wdGlvbkxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lID0+ICdDb25maWdJdGVtIycsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdOYW1lJywKICAgICAgICAgICAgTmFtZSA9PiAnTmFtZScsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdEZXBsU3RhdGVJRHMnLAogICAgICAgICAgICBOYW1lID0+ICdEZXBsb3ltZW50IFN0YXRlJywKICAgICAgICAgICAgVHlwZSA9PiAnTGlzdCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIE5hbWUgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgVHlwZSA9PiAnTGlzdCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgb2JqZWN0IGRlcGVuZGVuY2UgYXR0cmlidXRlcwogICAgI2lmICggJFBhcmFte1N1Yk9iamVjdH0gKSB7CiAgICAjCiAgICAjICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICMgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICMgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAjICAgICk7CiAgICAjCiAgICAjICAgIGlmICggJENsYXNzTGlzdCAmJiAkQ2xhc3NMaXN0IGVxICdIQVNIJyApIHsKICAgICMKICAgICMgICAgICAgICMgYWRkIGhlcmUgdGhlIHNlYXJjaCBhdHRyaWJ1dGVzIG9mIHRoZSBzdWJvYmplY3QhCiAgICAjICAgIH0KICAgICN9CgogICAgIyBhZGQgZm9ybWtleQogICAgZm9yIG15ICRSb3cgKEBTZWFyY2hPcHRpb25MaXN0KSB7CiAgICAgICAgJFJvdy0+e0Zvcm1LZXl9ID0gJ1NFQVJDSDo6JyAuICRSb3ctPntLZXl9OwogICAgfQoKICAgICMgYWRkIGZvcm0gZGF0YSBhbmQgaW5wdXQgc3RyaW5nCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKCiAgICAgICAgIyBwcmVwYXJlIHRleHQgaW5wdXQgZmllbGRzCiAgICAgICAgaWYgKCAkUm93LT57VHlwZX0gZXEgJ1RleHQnICkgewoKICAgICAgICAgICAgIyBnZXQgZm9ybSBkYXRhCiAgICAgICAgICAgICRSb3ctPntGb3JtRGF0YX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAkUm93LT57Rm9ybUtleX0gKTsKCiAgICAgICAgICAgICMgcGFyc2UgdGhlIGlucHV0IHRleHQgYmxvY2sKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0lucHV0VGV4dCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkUm93LT57Rm9ybUtleX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFJvdy0+e0Zvcm1EYXRhfSB8fCAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCB0aGUgaW5wdXQgc3RyaW5nCiAgICAgICAgICAgICRSb3ctPntJbnB1dFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0xpbmtPYmplY3QnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgbGlzdCBib3hlcwogICAgICAgIGlmICggJFJvdy0+e1R5cGV9IGVxICdMaXN0JyApIHsKCiAgICAgICAgICAgICMgZ2V0IGZvcm0gZGF0YQogICAgICAgICAgICBteSBARm9ybURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUm93LT57Rm9ybUtleX0gKTsKICAgICAgICAgICAgJFJvdy0+e0Zvcm1EYXRhfSA9IFxARm9ybURhdGE7CgogICAgICAgICAgICAjIHByZXBhcmUgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIG15ICVMaXN0RGF0YTsKICAgICAgICAgICAgaWYgKCAkUm93LT57S2V5fSBlcSAnRGVwbFN0YXRlSURzJyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgICAgICAgICAgICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICREZXBsU3RhdGVMaXN0ICYmIHJlZiAkRGVwbFN0YXRlTGlzdCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJUxpc3REYXRhID0gJXskRGVwbFN0YXRlTGlzdH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcHJlcGFyZSBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIGVsc2lmICggJFJvdy0+e0tleX0gZXEgJ0luY2lTdGF0ZUlEcycgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgICAgICAgICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICRJbmNpU3RhdGVMaXN0ICYmIHJlZiAkSW5jaVN0YXRlTGlzdCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJUxpc3REYXRhID0gJXskSW5jaVN0YXRlTGlzdH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIHRoZSBpbnB1dCBzdHJpbmcKICAgICAgICAgICAgJFJvdy0+e0lucHV0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcJUxpc3REYXRhLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkUm93LT57Rm9ybUtleX0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+ICRSb3ctPntGb3JtRGF0YX0sCiAgICAgICAgICAgICAgICBTaXplICAgICAgID0+IDMsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBAU2VhcmNoT3B0aW9uTGlzdDsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminGenericInterfaceInvokerConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QgWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIj4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJHZW5lcmljSW50ZXJmYWNlIFdlYiBTZXJ2aWNlIE1hbmFnZW1lbnQiKSB8IGh0bWwgJV08L2gxPgoKICAgIFslIFVTRSBCcmVhZGNydW1iTGluayA9IFN0cmluZygiQWRtaW5HZW5lcmljSW50ZXJmYWNlV2Vic2VydmljZSIpICVdCgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCAnV2ViIFNlcnZpY2UgTWFuYWdlbWVudCcgKSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5XZWJzZXJ2aWNlTmFtZSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmsuY29weS5hcHBlbmQoICI7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9IiwgRGF0YS5XZWJzZXJ2aWNlSUQgKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIFNXSVRDSCBEYXRhLk1vZGUgJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEludm9rZXIiKSx9KSAlXQogICAgICAgIFslIENBU0UgJ0NoYW5nZScgJV0KICAgICAgICAgICAgWyUgVVNFIEVkaXRUaXRsZSA9IFN0cmluZyhUcmFuc2xhdGUoIkVkaXQgSW52b2tlciIpKSAlXQogICAgICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsgTmFtZSA9PiBFZGl0VGl0bGUuYXBwZW5kKCAnOiAnLCBEYXRhLkludm9rZXIgKSwgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+IFslIFRyYW5zbGF0ZSgiR28gYmFjayB0byB3ZWIgc2VydmljZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk1vZGUgPT0gJ0NoYW5nZScgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9ImJ1dHRvbiIgaWQ9IkRlbGV0ZUJ1dHRvbiI+PHNwYW4+IDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+IFslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIiBpZD0iRGVsZXRlRGlhbG9nQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iV2FybmluZ0RpYWxvZyAiPiZuYnNwOzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iRGVsZXRlRGlhbG9nIiBjbGFzcz0iQ2VudGVyIFdhcm5pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBpbnZva2VyPyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iQ2VudGVyIFdhcm5pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkFsbCBjb25maWd1cmF0aW9uIGRhdGEgd2lsbCBiZSBsb3N0LiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkludm9rZXIgRGV0YWlscyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgY2xhc3M9IlZhbGlkYXRlIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIERhdGEuQWN0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBEYXRhLk1vZGUgfCBodG1sICVdQWN0aW9uIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IldlYnNlcnZpY2VJRCIgdmFsdWU9IlslIERhdGEuV2Vic2VydmljZUlEIHwgaHRtbCAlXSIgaWQ9IldlYnNlcnZpY2VJRCIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJJbnZva2VyVHlwZSIgdmFsdWU9IlslIERhdGEuSW52b2tlclR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiR2VuZXJhbCBpbnZva2VyIGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbnZva2VyIiBjbGFzcz0iTWFuZGF0b3J5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzUwcGMgUmVnaXN0ZXJDaGFuZ2UgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5JbnZva2VyU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjIwMCIgaWQ9Ikludm9rZXIiIG5hbWU9Ikludm9rZXIiIHZhbHVlPSJbJSBEYXRhLk5ld0ludm9rZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik9sZEludm9rZXIiIG5hbWU9Ik9sZEludm9rZXIiIHZhbHVlPSJbJSBEYXRhLkludm9rZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIG5hbWUgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2FsbCB1cCBhbiBvcGVyYXRpb24gb2YgYSByZW1vdGUgd2ViIHNlcnZpY2UuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbnZva2VyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgiUGxlYXNlIHByb3ZpZGUgYSB1bmlxdWUgbmFtZSBmb3IgdGhpcyB3ZWIgc2VydmljZS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iSW52b2tlclNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGUgbmFtZSB5b3UgZW50ZXJlZCBhbHJlYWR5IGV4aXN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGVzY3JpcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJXNTBwYyBSZWdpc3RlckNoYW5nZSIgbWF4bGVuZ3RoPSIyMDAiIGlkPSJEZXNjcmlwdGlvbiIgbmFtZT0iRGVzY3JpcHRpb24iIHZhbHVlPSJbJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikludm9rZXJUeXBlRGlzcGxheSI+WyUgVHJhbnNsYXRlKCJJbnZva2VyIGJhY2tlbmQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHJlYWRvbmx5IGNsYXNzPSJXNTBwYyIgaWQ9Ikludm9rZXJUeXBlRGlzcGxheSIgdmFsdWU9IlslIERhdGEuSW52b2tlclR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhpcyBPVE9CTyBpbnZva2VyIGJhY2tlbmQgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHRvIHByZXBhcmUgdGhlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUgcmVtb3RlIHN5c3RlbSwgYW5kIHRvIHByb2Nlc3MgaXRzIHJlc3BvbnNlIGRhdGEuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXR0aW5nR2VuZXJhbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdHZW5lcmFsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlcXVlc3QiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVxdWVzdCBkYXRhIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNldHRpbmdSZXF1ZXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdMYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2V0dGluZ0hUTUwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nRXhwbGFuYXRpb24pIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV1FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNlcnZlckVycm9yKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2V0dGluZ1JlcXVlc3QiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVxdWVzdCIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1hcHBpbmdPdXRib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBvdXRnb2luZyByZXF1ZXN0IGRhdGEiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5NYXBwaW5nT3V0Ym91bmRTdHJnICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1hcHBpbmdPdXRib3VuZENvbmZpZ3VyZUJ1dHRvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iTWFwcGluZ091dGJvdW5kQ29uZmlnRGlhbG9nIiB2YWx1ZT0iWyUgRGF0YS5NYXBwaW5nT3V0Ym91bmRDb25maWdEaWFsb2cgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJIaWRlT25DaGFuZ2UgQ2FsbEZvckFjdGlvbiBJbkxpbmUiIGlkPSJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNvbmZpZ3VyZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+ClslIFJlbmRlckJsb2NrRW5kKCJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIGRhdGEgZnJvbSB0aGUgaW52b2tlciBvZiBPVE9CTyB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGlzIG1hcHBpbmcsIHRvIHRyYW5zZm9ybSBpdCB0byB0aGUga2luZCBvZiBkYXRhIHRoZSByZW1vdGUgc3lzdGVtIGV4cGVjdHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNYXBwaW5nSW5ib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBpbmNvbWluZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTWFwcGluZ0luYm91bmRTdHJnICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJNYXBwaW5nSW5ib3VuZENvbmZpZ0RpYWxvZyIgdmFsdWU9IlslIERhdGEuTWFwcGluZ0luYm91bmRDb25maWdEaWFsb2cgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJIaWRlT25DaGFuZ2UgQ2FsbEZvckFjdGlvbiBJbkxpbmUiIGlkPSJNYXBwaW5nSW5ib3VuZENvbmZpZ3VyZUJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNvbmZpZ3VyZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSByZXNwb25zZSBkYXRhIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoaXMgbWFwcGluZywgdG8gdHJhbnNmb3JtIGl0IHRvIHRoZSBraW5kIG9mIGRhdGEgdGhlIGludm9rZXIgb2YgT1RPQk8gZXhwZWN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlc3BvbnNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MgZm9yIGluY29taW5nIHJlc3BvbnNlIGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0dGluZ1Jlc3BvbnNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdMYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2V0dGluZ0hUTUwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nRXhwbGFuYXRpb24pIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV1FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNlcnZlckVycm9yKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2V0dGluZ1Jlc29uc2UiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVzcG9uc2UiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Nb2RlID09ICdDaGFuZ2UnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkV2ZW50IGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRXZlbnRzVGFibGUiPlslIFRyYW5zbGF0ZSgiRXZlbnQgVHJpZ2dlcnMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFc1MHBjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBXNTBwYyIgaWQ9IkV2ZW50c1RhYmxlIiBzdW1tYXJ5PSJMaXN0IG9mIGFsbCBjb25maWd1cmVkIGV2ZW50cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKCJFdmVudCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDZW50ZXIiPlslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKCJDb25kaXRpb24iKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoIkVkaXQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkV2ZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkFzQmxvY2siPlslIERhdGEuRXZlbnQgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKERhdGEuQXN5bmNocm9ub3VzKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoRGF0YS5Db25kaXRpb24pIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iUGVuY2lsIEVkaXRFdmVudCBIaWRlT25DaGFuZ2UiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyRXZlbnQ7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9WyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCBodG1sICVdO0ludm9rZXI9WyUgRGF0YS5JbnZva2VyIHwgaHRtbCAlXTtFdmVudD1bJSBEYXRhLkV2ZW50IHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRWRpdCB0aGlzIGV2ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRWRpdCB0aGlzIGV2ZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZWRpdCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0iRGVsZXRlRXZlbnRbJSBEYXRhLkV2ZW50IHwgaHRtbCAlXSIgY2xhc3M9IlRyYXNoQ2FuIERlbGV0ZUV2ZW50IEhpZGVPbkNoYW5nZSIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIHRoaXMgZXZlbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZWxldGUgdGhpcyBldmVudCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiRXZlbnRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoaXMgaW52b2tlciB3aWxsIGJlIHRyaWdnZXJlZCBieSB0aGUgY29uZmlndXJlZCBldmVudHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIiBpZD0iRGVsZXRlRXZlbnREaWFsb2dDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQgPSJEZWxldGVFdmVudERpYWxvZyIgY2xhc3M9IklubmVyQ29udGVudCBHZW5lcmljSW50ZXJmYWNlRGlhbG9nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ildhcm5pbmdEaWFsb2cgIj4mbmJzcDs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJDZW50ZXIgV2FybmluZyI+WyUgVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZXZlbnQgdHJpZ2dlcj8iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJFdmVudFR5cGUiPlslIFRyYW5zbGF0ZSgiQWRkIEV2ZW50IFRyaWdnZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkV2ZW50VHlwZVN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRXZlbnRBZGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRXZlbnRTdHJnICVdClslIFJlbmRlckJsb2NrRW5kKCJFdmVudEFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iQXN5bmNocm9ub3VzIiBjaGVja2VkIGNsYXNzPSJHZW5lcmljSW50ZXJmYWNlU3BhY2luZyIgbmFtZT0iQXN5bmNocm9ub3VzIj48bGFiZWwgZm9yPSJBc3luY2hyb25vdXMiPlslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9IkFkZEV2ZW50IiBjbGFzcz0iQWRkIEdlbmVyaWNJbnRlcmZhY2VTcGFjaW5nIEhpZGVPbkNoYW5nZSIgbmFtZT0iQWRkRXZlbnQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkFkZCBFdmVudCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJBZGQgRXZlbnQiKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVG8gYWRkIGEgbmV3IGV2ZW50IHNlbGVjdCB0aGUgZXZlbnQgb2JqZWN0IGFuZCBldmVudCBuYW1lIGFuZCBjbGljayBvbiB0aGUgXCIrXCIgYnV0dG9uIikgfCBodG1sICVdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIGV2ZW50IHRyaWdnZXJzIGFyZSBoYW5kbGVkIGJ5IHRoZSBPVE9CTyBTY2hlZHVsZXIgRGFlbW9uIGluIGJhY2tncm91bmQgKHJlY29tbWVuZGVkKS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTeW5jaHJvbm91cyBldmVudCB0cmlnZ2VycyB3b3VsZCBiZSBwcm9jZXNzZWQgZGlyZWN0bHkgZHVyaW5nIHRoZSB3ZWIgcmVxdWVzdC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSBhbmQgZmluaXNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminGenericInterfaceOperationConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QgWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIj4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJHZW5lcmljSW50ZXJmYWNlIFdlYiBTZXJ2aWNlIE1hbmFnZW1lbnQiKSB8IGh0bWwgJV08L2gxPgoKICAgIFslIFVTRSBCcmVhZGNydW1iTGluayA9IFN0cmluZygiQWRtaW5HZW5lcmljSW50ZXJmYWNlV2Vic2VydmljZSIpICVdCgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCAnV2ViIFNlcnZpY2UgTWFuYWdlbWVudCcgKSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5XZWJzZXJ2aWNlTmFtZSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmsuY29weS5hcHBlbmQoICI7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9IiwgRGF0YS5XZWJzZXJ2aWNlSUQgKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIFNXSVRDSCBEYXRhLk1vZGUgJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIE9wZXJhdGlvbiIpLH0pICVdCiAgICAgICAgWyUgQ0FTRSAnQ2hhbmdlJyAlXQogICAgICAgICAgICBbJSBVU0UgRWRpdFRpdGxlID0gU3RyaW5nKFRyYW5zbGF0ZSgiRWRpdCBPcGVyYXRpb24iKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZCggJzogJywgRGF0YS5PcGVyYXRpb24gKSwgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+IFslIFRyYW5zbGF0ZSgiR28gYmFjayB0byB3ZWIgc2VydmljZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk1vZGUgPT0gJ0NoYW5nZScgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9ImJ1dHRvbiIgaWQ9IkRlbGV0ZUJ1dHRvbiI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIaWRkZW4iIGlkPSJEZWxldGVEaWFsb2dDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJXYXJuaW5nRGlhbG9nICI+Jm5ic3A7PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJEZWxldGVEaWFsb2ciIGNsYXNzPSJDZW50ZXIgV2FybmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIG9wZXJhdGlvbj8iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkNlbnRlciBXYXJuaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBbGwgY29uZmlndXJhdGlvbiBkYXRhIHdpbGwgYmUgbG9zdC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIk9wZXJhdGlvbiBEZXRhaWxzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBjbGFzcz0iVmFsaWRhdGUiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlslIERhdGEuTW9kZSB8IGh0bWwgJV1BY3Rpb24iIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iV2Vic2VydmljZUlEIiB2YWx1ZT0iWyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCBodG1sICVdIiBpZD0iV2Vic2VydmljZUlEIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik9wZXJhdGlvblR5cGUiIHZhbHVlPSJbJSBEYXRhLk9wZXJhdGlvblR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiR2VuZXJhbCBvcGVyYXRpb24gZGF0YSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik9wZXJhdGlvbiIgY2xhc3M9Ik1hbmRhdG9yeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOgogICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIFJlZ2lzdGVyQ2hhbmdlIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuT3BlcmF0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjIwMCIgaWQ9Ik9wZXJhdGlvbiIgbmFtZT0iT3BlcmF0aW9uIiB2YWx1ZT0iWyUgRGF0YS5OZXdPcGVyYXRpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik9sZE9wZXJhdGlvbiIgbmFtZT0iT2xkT3BlcmF0aW9uIiB2YWx1ZT0iWyUgRGF0YS5PcGVyYXRpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIG5hbWUgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2FsbCB1cCB0aGlzIHdlYiBzZXJ2aWNlIG9wZXJhdGlvbiBmcm9tIGEgcmVtb3RlIHN5c3RlbS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik9wZXJhdGlvbkVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIlBsZWFzZSBwcm92aWRlIGEgdW5pcXVlIG5hbWUgZm9yIHRoaXMgd2ViIHNlcnZpY2UuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik9wZXJhdGlvblNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGUgbmFtZSB5b3UgZW50ZXJlZCBhbHJlYWR5IGV4aXN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGVzY3JpcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJXNTBwYyBSZWdpc3RlckNoYW5nZSIgbWF4bGVuZ3RoPSIyMDAiIGlkPSJEZXNjcmlwdGlvbiIgbmFtZT0iRGVzY3JpcHRpb24iIHZhbHVlPSJbJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik9wZXJhdGlvblR5cGVEaXNwbGF5Ij5bJSBUcmFuc2xhdGUoIk9wZXJhdGlvbiBiYWNrZW5kIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiByZWFkb25seSBjbGFzcz0iVzUwcGMiIGlkPSJPcGVyYXRpb25UeXBlRGlzcGxheSIgdmFsdWU9IlslIERhdGEuT3BlcmF0aW9uVHlwZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIE9UT0JPIG9wZXJhdGlvbiBiYWNrZW5kIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbnRlcm5hbGx5IHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QsIGdlbmVyYXRpbmcgZGF0YSBmb3IgdGhlIHJlc3BvbnNlLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0dGluZ0dlbmVyYWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLlNldHRpbmdOYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0xhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXR0aW5nSFRNTCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdFeHBsYW5hdGlvbikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLlNldHRpbmdOYW1lIHwgaHRtbCAlXUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2VydmVyRXJyb3IpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXR0aW5nR2VuZXJhbCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXF1ZXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXR0aW5nUmVxdWVzdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdSZXF1ZXN0IikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJlcXVlc3QiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiTWFwcGluZyIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNYXBwaW5nSW5ib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5NYXBwaW5nSW5ib3VuZFN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWFwcGluZ0luYm91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik1hcHBpbmdJbmJvdW5kQ29uZmlnRGlhbG9nIiB2YWx1ZT0iWyUgRGF0YS5NYXBwaW5nSW5ib3VuZENvbmZpZ0RpYWxvZyB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IkhpZGVPbkNoYW5nZSBDYWxsRm9yQWN0aW9uIElubGluZSIgaWQ9Ik1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFwcGluZ0luYm91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIHJlcXVlc3QgZGF0YSB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGlzIG1hcHBpbmcsIHRvIHRyYW5zZm9ybSBpdCB0byB0aGUga2luZCBvZiBkYXRhIE9UT0JPIGV4cGVjdHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXNwb25zZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNldHRpbmdSZXNwb25zZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdSZXNvbnNlIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJlc3BvbnNlIikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1hcHBpbmdPdXRib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTWFwcGluZ091dGJvdW5kU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik1hcHBpbmdPdXRib3VuZENvbmZpZ0RpYWxvZyIgdmFsdWU9IlslIERhdGEuTWFwcGluZ091dGJvdW5kQ29uZmlnRGlhbG9nIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iSGlkZU9uQ2hhbmdlIENhbGxGb3JBY3Rpb24gSW5saW5lIiBpZD0iTWFwcGluZ091dGJvdW5kQ29uZmlndXJlQnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFwcGluZ091dGJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSByZXNwb25zZSBkYXRhIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoaXMgbWFwcGluZywgdG8gdHJhbnNmb3JtIGl0IHRvIHRoZSBraW5kIG9mIGRhdGEgdGhlIHJlbW90ZSBzeXN0ZW0gZXhwZWN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Nb2RlID09ICdDaGFuZ2UnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0QW5kQ29udGludWUiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluR2VuZXJpY0ludGVyZmFjZVdlYnNlcnZpY2U7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9WyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCB1cmkgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminITSMConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdDb25maWcgSXRlbSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElGIChEYXRhLkNsYXNzU2VsZWN0ZWQpICVdCiAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7CiAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5DbGFzc1NlbGVjdGVkLk5hbWUsCiAgICAgICAgICAgIExpbmsgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPUNsYXNzRGVmaW5pdGlvbkxpc3Q7Q2xhc3NJRD0nIF8gRGF0YS5DbGFzc1NlbGVjdGVkLklECiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElGIChEYXRhLlJvbGVTZWxlY3RlZCkgJV0KICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsKICAgICAgICAgICAgTmFtZSA9PiBEYXRhLlJvbGVTZWxlY3RlZC5OYW1lLAogICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtO1N1YmFjdGlvbj1Sb2xlRGVmaW5pdGlvbkxpc3Q7Um9sZUlEPScgXyBEYXRhLlJvbGVTZWxlY3RlZC5JRAogICAgICAgIH0pICVdCiAgICBbJSBFTkQgJV0KCiAgICBbJSBJRiAoRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZCkgJV0KICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsKICAgICAgICAgICAgTmFtZSA9PiAnVmVyc2lvbiAnIF8gRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZC5WZXJzaW9uLAogICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtO1N1YmFjdGlvbj1DbGFzc0RlZmluaXRpb25WaWV3O0RlZmluaXRpb25JRD0nIF8gRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZC5JRAogICAgICAgIH0pICVdCiAgICBbJSBFTkQgJV0KCiAgICBbJSBJRiAoRGF0YS5Sb2xlVmVyc2lvblNlbGVjdGVkKSAlXQogICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goewogICAgICAgICAgICBOYW1lID0+ICdWZXJzaW9uICcgXyBEYXRhLlJvbGVWZXJzaW9uU2VsZWN0ZWQuVmVyc2lvbiwKICAgICAgICAgICAgTGluayA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbTtTdWJhY3Rpb249Um9sZURlZmluaXRpb25WaWV3O0RlZmluaXRpb25JRD0nIF8gRGF0YS5Sb2xlVmVyc2lvblNlbGVjdGVkLklECiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElGIChEYXRhLkVkaXQpICVdCiAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7CiAgICAgICAgICAgIE5hbWUgPT4gJ0VkaXQgZGVmaW5pdGlvbicsCiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NvbnRlbnQnPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJnZXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iQ2xhc3NEZWZpbml0aW9uQ2hhbmdlIi8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNsYXNzT3B0aW9uU3RyZyAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkNoYW5nZSBjbGFzcyBkZWZpbml0aW9uIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9ImdldCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJSb2xlRGVmaW5pdGlvbkNoYW5nZSIvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5Sb2xlT3B0aW9uU3RyZyAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkNoYW5nZSByb2xlIGRlZmluaXRpb24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkNsYXNzRXhwb3J0Ii8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNsYXNzT3B0aW9uTXVsdFN0cmcgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkV4cG9ydElERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhwb3J0SURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciIgdHlwZT0ic3VibWl0IiBpZD0iRXhwb3J0IiB2YWx1ZT0iRXhwb3J0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtZG93bmxvYWQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwb3J0IENsYXNzZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgoKClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbk92ZXJ2aWV3IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0IFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkNsYXNzSW1wb3J0Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRXhhbXBsZUNsYXNzTGlzdCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhhbXBsZUNsYXNzRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhhbXBsZUNsYXNzU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIiBuYW1lPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIiB2YWx1ZT0iMSIgY2hlY2tlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIj5bJSBUcmFuc2xhdGUoIlVwZGF0ZSBleGlzdGluZyBlbnRpdGllcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nIycgaWQ9J0ltcG9ydCcgY2xhc3M9J0NhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0nZmEgZmEtdXBsb2FkJz48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdMaXN0IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxpc3QiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSBDbGFzcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3RGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1DbGFzc0RlZmluaXRpb25MaXN0O0NsYXNzSUQ9WyUgRGF0YS5DbGFzc0lEIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3RGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gUm9sZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3Um9sZUxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Sb2xlRGVmaW5pdGlvbkxpc3Q7Um9sZUlEPVslIERhdGEuUm9sZUlEIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3Um9sZUxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TGlzdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzRGVmaW5pdGlvbkxpc3QiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVzUwcGMiPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzc0RlZmluaXRpb25MaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249Q2xhc3NEZWZpbml0aW9uVmlldztEZWZpbml0aW9uSUQ9WyUgRGF0YS5EZWZpbml0aW9uSUQgfCB1cmkgJV0iPlslIERhdGEuQ2xhc3MgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLlZlcnNpb24gfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsYXNzRGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsYXNzRGVmaW5pdGlvbkxpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb2xlRGVmaW5pdGlvbkxpc3QiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVzUwcGMiPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gUm9sZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJWZXJzaW9uIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJvbGVEZWZpbml0aW9uTGlzdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVJvbGVEZWZpbml0aW9uVmlldztEZWZpbml0aW9uSUQ9WyUgRGF0YS5EZWZpbml0aW9uSUQgfCB1cmkgJV0iPlslIERhdGEuUm9sZSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ3JlYXRlQnlVc2VyIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm9sZURlZmluaXRpb25MaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb2xlRGVmaW5pdGlvbkxpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzc0RlZmluaXRpb25WaWV3IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlZpZXciKSB8IGh0bWwgJV06IDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiRGVmaW5pdGlvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+WyUgRGF0YS5EZWZpbml0aW9uU3RyaW5nICVdPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3NEZWZpbml0aW9uVmlldyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvbGVEZWZpbml0aW9uVmlldyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJWaWV3IikgfCBodG1sICVdOiA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIFJvbGUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiRGVmaW5pdGlvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+WyUgRGF0YS5EZWZpbml0aW9uU3RyaW5nICVdPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm9sZURlZmluaXRpb25WaWV3IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ2xhc3NEZWZpbml0aW9uQ2hhbmdlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkNoYW5nZSIpIHwgaHRtbCAlXTogPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJDbGFzc0RlZmluaXRpb25TYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ2xhc3NJRCIgdmFsdWU9IlslIERhdGEuQ2xhc3NJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgoKWyUgSUYgRGF0YS5FcnJvciAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgV2lkZ2V0TWVzc2FnZSBUb3AgRXJyb3IiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+WyUgVHJhbnNsYXRlKERhdGEuRXJyb3IsIERhdGEuRXJyb3JBcmcxLCBEYXRhLkVycm9yQXJnMikgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIEVORCAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2xhc3MgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZWZpbml0aW9uIj5bJSBUcmFuc2xhdGUoIkRlZmluaXRpb24iKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvZGVNaXJyb3JDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNNVG9vbGJhckNvbnRhaW5lciIgY2xhc3M9IkNNVG9vbGJhckNvbnRhaW5lciBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDTVRvb2xiYXJJY29ucyIgY2xhc3M9IkNNVG9vbGJhckljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQXV0byBJbmRlbnQgQ29kZSIpIHwgaHRtbCAlXSIgY2xhc3M9IkNNSW5kZW50IiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuSW5kZW50Q29kZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbW1lbnQvVW5jb21tZW50IENvZGUiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTUNvbW1lbnQiIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5Ub29nbGVDb21tZW50KCk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2giIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5TZWFyY2goKTsiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2ggJiBSZXBsYWNlIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2hSZXBsYWNlIiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuU2VhcmNoUmVwbGFjZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBBbGwiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTVNlbGVjdEFsbCIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlNlbGVjdEFsbCgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGwgU2NyZWVuIikgfCBodG1sICVdIiBjbGFzcz0iQ01NYXhpbWl6ZSIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlRvb2dsZUZ1bGxTY3JlZW4oJ01heGltaXplJyk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJEZWZpbml0aW9uIiBpZD0iRGVmaW5pdGlvbiIgY2xhc3M9IiBDb2RlTWlycm9yRWRpdG9yIFslIElGIERhdGEuRXJyb3IgJV1bJSBEYXRhLkVycm9yQ2xhc3NlcyAlXVslIEVORCAlXSIgcm93cz0iWyUgRGF0YS5Sb3dzIHwgaHRtbCAlXSIgY29scz0iODAiIHdyYXA9Im9mZiI+WyUgRGF0YS5EZWZpbml0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSBlZGl0aW5nIGZpZWxkIGFsbG93cyB5b3UgdG8gdXNlIGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBhdXRvbWF0aWMgZm9ybWF0dGluZywgd2luZG93IHJlc2l6ZSBhcyB3ZWxsIGFzIHRhZy0gYW5kIGJyYWNrZXQtY29tcGxldGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXRBbmRDb250aW51ZSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDbGFzc0RlZmluaXRpb25DaGFuZ2UiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb2xlRGVmaW5pdGlvbkNoYW5nZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJDaGFuZ2UiKSB8IGh0bWwgJV06IDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iUm9sZURlZmluaXRpb25TYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUm9sZUlEIiB2YWx1ZT0iWyUgRGF0YS5Sb2xlSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29udGludWVBZnRlclNhdmUiIGlkPSJDb250aW51ZUFmdGVyU2F2ZSIgdmFsdWU9IiIvPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KClslIElGIERhdGEuRXJyb3IgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFdpZGdldE1lc3NhZ2UgVG9wIEVycm9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPlslIFRyYW5zbGF0ZShEYXRhLkVycm9yLCBEYXRhLkVycm9yQXJnMSwgRGF0YS5FcnJvckFyZzIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBFTkQgJV0KCgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSBSb2xlIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJvbGUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZWZpbml0aW9uIj5bJSBUcmFuc2xhdGUoIkRlZmluaXRpb24iKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvZGVNaXJyb3JDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNNVG9vbGJhckNvbnRhaW5lciIgY2xhc3M9IkNNVG9vbGJhckNvbnRhaW5lciBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDTVRvb2xiYXJJY29ucyIgY2xhc3M9IkNNVG9vbGJhckljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQXV0byBJbmRlbnQgQ29kZSIpIHwgaHRtbCAlXSIgY2xhc3M9IkNNSW5kZW50IiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuSW5kZW50Q29kZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbW1lbnQvVW5jb21tZW50IENvZGUiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTUNvbW1lbnQiIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5Ub29nbGVDb21tZW50KCk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2giIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5TZWFyY2goKTsiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2ggJiBSZXBsYWNlIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2hSZXBsYWNlIiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuU2VhcmNoUmVwbGFjZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBBbGwiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTVNlbGVjdEFsbCIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlNlbGVjdEFsbCgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGwgU2NyZWVuIikgfCBodG1sICVdIiBjbGFzcz0iQ01NYXhpbWl6ZSIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlRvb2dsZUZ1bGxTY3JlZW4oJ01heGltaXplJyk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJEZWZpbml0aW9uIiBpZD0iRGVmaW5pdGlvbiIgY2xhc3M9IiBDb2RlTWlycm9yRWRpdG9yIFslIElGIERhdGEuRXJyb3IgJV1bJSBEYXRhLkVycm9yQ2xhc3NlcyAlXVslIEVORCAlXSIgcm93cz0iWyUgRGF0YS5Sb3dzIHwgaHRtbCAlXSIgY29scz0iODAiIHdyYXA9Im9mZiI+WyUgRGF0YS5EZWZpbml0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSBlZGl0aW5nIGZpZWxkIGFsbG93cyB5b3UgdG8gdXNlIGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBhdXRvbWF0aWMgZm9ybWF0dGluZywgd2luZG93IHJlc2l6ZSBhcyB3ZWxsIGFzIHRhZy0gYW5kIGJyYWNrZXQtY29tcGxldGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXRBbmRDb250aW51ZSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb2xlRGVmaW5pdGlvbkNoYW5nZSIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlldyIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentDashboardITSMConfigItemGeneric.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlck5hdkJhciIpICVdCjxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KICAgIFslIERhdGEuU2l0ZU5hdkJhciAlXQo8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlck5hdkJhciIpICVdClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlciIpICVdCgojPCEtLSBUaGlzIGZvcm0gd2lsbCBub3QgYmUgc3VibWl0dGVkLCB3ZSBuZWVkIGl0IGZvciB0aGUgQUpBWCBjYWxscy4gLS0+Cjxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkN1c3RvbWVySUQiIHZhbHVlPSJbJSBEYXRhLkN1c3RvbWVySUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDdXN0b21lclVzZXJJRCIgdmFsdWU9IlslIERhdGEuQ3VzdG9tZXJVc2VySUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGaWx0ZXJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBpZD0iRmlsdGVyWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRmlsdGVyVmFsdWUgfCBodG1sICVdIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWRkaXRpb25hbEZpbHRlclslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGlkPSJBZGRpdGlvbmFsRmlsdGVyWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuQWRkaXRpb25hbEZpbHRlclZhbHVlIHwgaHRtbCAlXSIgLz4KICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICA8dGhlYWQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyIikgJV0KICAgICAgICAgICAgPHRyPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiR2VuZXJhbE92ZXJ2aWV3SGVhZGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YSIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkRhc2hib2FyZEhlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YUxpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGlkPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdRmxhZ092ZXJ2aWV3Q29udHJvbFslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+PC9hPgoKWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YUxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlck1ldGFFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkhlYWRlckNvbHVtbk5hbWUpIHwgaHRtbCAlXSI+PC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJNZXRhRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1IZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1OdW1iZXJDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIgQ29uZmlnSXRlbU51bWJlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJDb25maWdJdGVtTnVtYmVyIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iQ29uZmlnSXRlbU51bWJlck92ZXJ2aWV3Q29udHJvbFslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9IkNvbmZpZ0l0ZW1OdW1iZXJPdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBocmVmPSIjIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBDb25maWcoIkNvbmZpZ0l0ZW06Okhvb2siKSAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1OdW1iZXJDb2x1bW4iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtDdXN0b21lcklEU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iQ3VzdG9tZXJJREF1dG9Db21wbGV0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtDdXN0b21lcklEU2VhcmNoIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJVc2VyQXV0b0NvbXBsZXRlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkRlbGV0ZUZpbHRlciBIaWRkZW4iPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1lPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaHJlZj0iIyIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiA+WyUgRGF0YS5IZWFkZXJOYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+CgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1lPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaHJlZj0iIyIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiA+WyUgRGF0YS5IZWFkZXJOYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkxpbmsiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rQ3VzdG9tZXJVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iQ3VzdG9tZXJVc2VyQXV0b0NvbXBsZXRlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua0N1c3RvbWVyVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iRGVsZXRlRmlsdGVyIEhpZGRlbiI+PGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBEYXRhLkhlYWRlck5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBEYXRhLkhlYWRlck5hbWVUcmFuc2xhdGVkICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5FbXB0eSIpICVdCiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb25maWdJdGVtSGVhZGVyIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKICAgICAgICAgICAgPC90cj4KClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlciIpICVdCiAgICAgICAgPC90aGVhZD4KCiAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1JvdyIpICVdCiAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGEiKSAlXQogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJbJSBEYXRhLkNsYXNzVGFibGUgfCBodG1sICVdIEZsYWdzIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljUm93TWV0YUltYWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSBTbWFsbCIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DbGFzc1NwYW4gfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNSb3dNZXRhIikgJV0KCiMgICAgICAgICAgICA8dGQgY2xhc3M9IlcxMHBjIj4KIyAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEICVdIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJBc0Jsb2NrIE1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuQ29uZmlnSXRlbU51bWJlciB8IGh0bWwgJV08L2E+CiMgICAgICAgICAgICA8L3RkPgojICAgICAgICAgICAgPHRkIGNsYXNzPSJXNTBwYyI+CiMgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg3MCkgfCBodG1sICVdPC9kaXY+CiMgICAgICAgICAgICA8L3RkPgojICAgICAgICAgICAgPHRkPlslIERhdGEuVGltZSB8IGh0bWwgJV08L3RkPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb25maWdJdGVtQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb25maWdJdGVtTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEICVdIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJBc0Jsb2NrIE1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1OdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtU2lnbmFsIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuU3RhdGUgfCBodG1sICVdIiBjbGFzcz0iRmxhZyBTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5TaWduYWwgfCBodG1sICVdIj4iWyUgVHJhbnNsYXRlKERhdGEuU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgaHRtbCAlXSI+WyUgRGF0YS5HZW5lcmljVmFsdWUgfCB0cnVuY2F0ZSg0MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtVGl0bGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuV2hvbGVUaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbVRpdGxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5UcmFuc2xhdGFibGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5HZW5lcmljVmFsdWUpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5UaW1lIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uVGltZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRXNjYWxhdGlvbiIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5HZW5lcmljVmFsdWUgfCBodG1sICVdIiBjbGFzcz0iWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRXNjYWxhdGlvbiIpICVdClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1Db2x1bW4iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iICB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZExpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGQiKSAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1JvdyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljTm9uZSIpICVdCiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQXV0b0NvbHNwYW4iPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgibm9uZSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljTm9uZSIpICVdCiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+CjwvZm9ybT4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemAdd.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMT5bJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSIpIHwgaHRtbCAlXTwvaDE+CgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyQ2xhc3NlcyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIENsYXNzZXMiKSB8IGh0bWwgJV08L2xhYmVsPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iRmlsdGVyQ2xhc3NlcyIgY2xhc3M9IkZpbHRlckJveCIgbmFtZT0iRmlsdGVyQ2xhc3NlcyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBDbGFzc2VzIikgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCJKdXN0IHN0YXJ0IHR5cGluZyB0byBmaWx0ZXIuLi4iKSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiSGludCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBpZD0iQ2xhc3NlcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlcxMDBwYyI+WyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iRmlsdGVyTWVzc2FnZSBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZSgiTm8gbWF0Y2hlcyBmb3VuZC4iKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0l0ZW1MaXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtDbGFzc0lEPVslIERhdGEuQ2xhc3NJRCB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3SXRlbUxpc3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemBulk.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCdWxrQWN0aW9uIikgJV0KPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9ImNvbXBvc2UiIGNsYXNzPSJWYWxpZGF0ZSI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJEbyIvPgoKICAgIDxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uIikgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlVzZWRDb25maWdJdGVtSUQiKSAlXQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29uZmlnSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiAvPgpbJSBSZW5kZXJCbG9ja0VuZCgiVXNlZENvbmZpZ0l0ZW1JRCIpICVdCgogICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlcGxTdGF0ZUlEIj5bJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgc3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGVwbFN0YXRlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlcGxTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluY2lTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5jaVN0YXRlSUQiPlslIFRyYW5zbGF0ZSgiSW5jaWRlbnQgc3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuSW5jaVN0YXRlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2lTdGF0ZSIpICVdCgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkxpbmtUb2dldGhlciI+WyUgVHJhbnNsYXRlKCJMaW5rIHRvZ2V0aGVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUb2dldGhlclllc05vT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGlua1RvZ2V0aGVyTGlua1R5cGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMaW5rVG9nZXRoZXJBbm90aGVyIj5bJSBUcmFuc2xhdGUoIkxpbmsgdG8gYW5vdGhlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJbJSBEYXRhLkxpbmtUb2dldGhlckFub3RoZXJJbnZhbGlkIHwgaHRtbCAlXSBXMjVwYyIgaWQ9IkxpbmtUb2dldGhlckFub3RoZXIiIG5hbWU9IkxpbmtUb2dldGhlckFub3RoZXIiIHZhbHVlPSJbJSBEYXRhLkxpbmtUb2dldGhlckFub3RoZXIgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkxpbmtUb2dldGhlckFub3RoZXJTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVHlwZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgRGF0YS5EeW5hbWljRmllbGRIVE1MICVdCiAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJzdWJtaXRSaWNoVGV4dCIgYWNjZXNza2V5PSJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0gKGcpIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiQnVsa0FjdGlvbiIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemDelete.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTnVtYmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk51bWJlcikgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgoKPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyIpIHwgaHRtbCAlXQo8L3A+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemEdit.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGFydE5vcm1hbCIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICA8aDE+WyUgVHJhbnNsYXRlKCJFZGl0IikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5OdW1iZXIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ2xhc3MiKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L2gxPgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+ClslIFJlbmRlckJsb2NrRW5kKCJTdGFydE5vcm1hbCIpICVdCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkNsYXNzSXRlbSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiIGlkPSJDbGFzc0l0ZW0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGFydFNtYWxsIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRWRpdCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuTnVtYmVyKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5DbGFzcykgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAiIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsICYgY2xvc2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTY3JlZW5UeXBlIiB2YWx1ZT0iUG9wdXAiLz4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXJ0U21hbGwiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNhdmUiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDbGFzc0lEIiB2YWx1ZT0iWyUgRGF0YS5DbGFzc0lEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbmZpZ0l0ZW1JRCIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkR1cGxpY2F0ZUlEIiB2YWx1ZT0iWyUgRGF0YS5EdXBsaWNhdGVJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuUm93TmFtZUludmFsaWQgfCBodG1sICVdIiBtYXhsZW5ndGg9IjI1MCIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0iKSB8IGh0bWwgJV0iWyUgSUYgRGF0YS5SZWFkb25seSAlXSByZWFkb25seVslIEVORCAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93TmFtZUVycm9yRGVmYXVsdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93TmFtZUVycm9yRGVmYXVsdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWVFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyIsIERhdGEuRHVwbGljYXRlcykgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93TmFtZUVycm9yRHVwbGljYXRlcyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWVFcnJvclJlZ0V4IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZShEYXRhLlJlZ0V4RXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dOYW1lRXJyb3JSZWdFeCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93VmVyc2lvblN0cmluZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlZlcnNpb25TdHJpbmciPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiVmVyc2lvbiBOdW1iZXIiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWZXJzaW9uU3RyaW5nIiBpZD0iVmVyc2lvblN0cmluZyIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuUm93VmVyc2lvblN0cmluZ0ludmFsaWQgfCBodG1sICVdIiBtYXhsZW5ndGg9IjI1MCIgdmFsdWU9IlslIERhdGEuVmVyc2lvblN0cmluZyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0iKSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWZXJzaW9uU3RyaW5nRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93VmVyc2lvblN0cmluZ0Vycm9yRGVmYXVsdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWZXJzaW9uU3RyaW5nU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93VmVyc2lvblN0cmluZ0Vycm9yRGVmYXVsdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd1ZlcnNpb25TdHJpbmdFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVmVyc2lvblN0cmluZ1NlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMiLCBEYXRhLkR1cGxpY2F0ZXMpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJvd1ZlcnNpb25TdHJpbmdFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93VmVyc2lvblN0cmluZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd0RlcGxTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkRlcGxTdGF0ZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgU3RhdGUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGVwbFN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRGVwbFN0YXRlSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiID48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRGVwbFN0YXRlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dEZXBsU3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3dJbmNpU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJJbmNpU3RhdGVJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JbmNpU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbmNpU3RhdGVJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSIgPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbmNpU3RhdGVJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJvd0luY2lTdGF0ZSIpICVdCgpbJSBEYXRhLkR5bmFtaWNGaWVsZEhUTUwgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd0Rlc2NyaXB0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlc2NyaXB0aW9uIj5bJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJSaWNoVGV4dEZpZWxkIiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJEZXNjcmlwdGlvbiIgY2xhc3M9IlJpY2hUZXh0IFslIERhdGEuUmljaFRleHRJbnZhbGlkIHwgaHRtbCAlXSIgbmFtZT0iRGVzY3JpcHRpb24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSB8IGh0bWwgJV0iPlslIERhdGEuRGVzY3JpcHRpb24gfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dEZXNjcmlwdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50cyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJTkNMVURFICJGb3JtRWxlbWVudHMvQXR0YWNobWVudExpc3QudHQiICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iU3VibWl0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0QnV0dG9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkNhbmNlbEJ1dHRvbiIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJFbmRTbWFsbCIpICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRW5kU21hbGwiKSAlXQogICAgICAgIDwvZm9ybT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRW5kTm9ybWFsIikgJV0KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkVuZE5vcm1hbCIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemHistory.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8IS0tIHN0YXJ0IGZvcm0gLS0+CjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMiLCBEYXRhLk5hbWUpIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICAgICAgPHA+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJIaXN0b3J5IENvbnRlbnQiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBzdW1tYXJ5PSJDb25maWd1cmF0aW9uIEl0ZW0gSGlzdG9yeSIgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBY3Rpb24iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiWm9vbSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlVzZXIiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDcmVhdGV0aW1lIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5IaXN0b3J5VHlwZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBjbGFzcz0iTGlua1pvb21WaWV3IEFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEICVdIj5bJSBUcmFuc2xhdGUoIlpvb20gdmlldyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Vc2VyRnVsbG5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICA8L2Rpdj4KPC9kaXY+CjwhLS0gZW5kIGZvcm0gLS0+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemOverviewNavBar.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhciIpICVdCjxkaXYgY2xhc3M9Ik92ZXJ2aWV3Qm94IEFSSUFSb2xlTWFpbiBbJSBEYXRhLlZpZXcgfCBodG1sICVdIj4KICAgIDxoMT5bJSBUcmFuc2xhdGUoRGF0YS5UaXRsZU5hbWUpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuVGl0bGVWYWx1ZSkgfCBodG1sICVdPC9oMT4KCiAgICBbJSBEYXRhLkRhdGFJblRoZU1pZGRsZSAlXQoKICAgIDxkaXYgY2xhc3M9Ik92ZXJ2aWV3Q29udHJvbCIgaWQ9Ik92ZXJ2aWV3Q29udHJvbCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFicyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXUNhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08c3Bhbj5bJSBEYXRhLkNvdW50IHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtGaWx0ZXIgJV1DYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAtClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW0iKSAlXQogICAgICAgICAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBpZD0iSVRTTUNvbmZpZ0l0ZW1TZWFyY2giIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0JhY2sgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdIFslIERhdGEuUHJvZmlsZU5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZXh0U2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQ29udGV4dEZ1bmN0aW9ucyI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudEFjdGlvblJvd1JlbW92ZUNvbHVtbkZpbHRlcnMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyICVdO0NhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV07Vmlldz1bJSBEYXRhLlZpZXcgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIGFjdGl2ZSBmaWx0ZXJzIGZvciB0aGlzIHNjcmVlbi4iKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVudEFjdGlvblJvd1JlbW92ZUNvbHVtbkZpbHRlcnMiKSAlXQoKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkNvbnRleHRTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZXR0aW5ncyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY29nIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyIiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZ092ZXJ2aWV3WyUgRGF0YS5WaWV3IHwgaHRtbCAlXSIgY2xhc3M9IldpZGdldFNldHRpbmdzRm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50UHJlZmVyZW5jZXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVXBkYXRlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikdyb3VwIiB2YWx1ZT0iWyUgRGF0YS5Hcm91cCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmVkaXJlY3RVUkwiIHZhbHVlPSJbJSBEYXRhLlJlcXVlc3RlZFVSTCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuUHJlZmVyZW5jZXNLZXkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtcyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkZpbHRlckNvbHVtblNldHRpbmdzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJDb2x1bW5zRW5hYmxlZEpTT04iIHZhbHVlPSJbJSBEYXRhLkNvbHVtbnNFbmFibGVkIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJDb2x1bW5zQXZhaWxhYmxlSlNPTiIgdmFsdWU9IlslIERhdGEuQ29sdW1uc0F2YWlsYWJsZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJHcm91cCIgdmFsdWU9IlslIERhdGEuR3JvdXBOYW1lIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRmlsdGVyQWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5GaWx0ZXJBY3Rpb24gfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkRvbnRQcmludCIgZm9yPSJbJSBEYXRhLk5hbWVQcmVmIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuRGVzYykgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBEb250UHJpbnQgTGF5b3V0R3JpZCBBbGxvY2F0aW9uTGlzdENvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2l6ZTFvZjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+WyUgVHJhbnNsYXRlKCJBdmFpbGFibGUgQ29sdW1ucyIpIHwgaHRtbCAlXTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpbHRlcklucHV0Q29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iRmlsdGVyQXZhaWxhYmxlRmllbGRzIiBuYW1lPSJGaWx0ZXJBdmFpbGFibGVGaWVsZHMiIHZhbHVlPSIiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZpbHRlciBhdmFpbGFibGUgZmllbGRzIikgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCJGaWx0ZXIgYXZhaWxhYmxlIGZpZWxkcyIpIHwgaHRtbCAlXS4uLiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWxsb2NhdGlvbkxpc3QgVGFibGVsaWtlIEF2YWlsYWJsZUZpZWxkcyBTZXR0aW5nc092ZXJ2aWV3IiBpZD0iQXZhaWxhYmxlRmllbGQtRGFzaGJvYXJkWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+PC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaXplMW9mMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFibGVsaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyIj5bJSBUcmFuc2xhdGUoIlZpc2libGUgQ29sdW1ucyAob3JkZXIgYnkgZHJhZyAmIGRyb3ApIikgfCBodG1sICVdPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBbGxvY2F0aW9uTGlzdCBUYWJsZWxpa2UgQXNzaWduZWRGaWVsZHMgT3JkZXJOdW1iZXJzIFNldHRpbmdzT3ZlcnZpZXciIGlkPSJBc3NpZ25lZEZpZWxkcy1EYXNoYm9hcmRbJSBEYXRhLk5hbWUgfCBodG1sICVdIj48L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja0VuZCgiRmlsdGVyQ29sdW1uU2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrRW5kKCJDb250ZXh0U2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJPdmVydmlld0FjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuQWN0aW9uUm93ICVdCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJPdmVydmlld1pvb20iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJBY3RpdmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q2F0ZWdvcnk9WyUgRGF0YS5DYXRlZ29yeUZpbHRlciB8IHVyaSAlXTtWaWV3PVslIERhdGEuVmlldyB8IHVyaSAlXTtbJSBEYXRhLkxpbmtGaWx0ZXIgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk5hbWVTaG9ydCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdO1ZpZXc9WyUgRGF0YS5WaWV3IHwgdXJpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTmFtZVNob3J0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRMb25nICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KIyBzb3J0IG9yZGVyIGJhciBpZiBuZWVkZWQKICAgICAgICAgICAgICAgIFslIERhdGEuU29ydE9yZGVyQmFyICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyIikgJV0K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemOverviewSmall.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50QWN0aW9uUm93IikgJV0KPHVsIGNsYXNzPSJBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRBY3Rpb25Sb3dCdWxrIikgJV0KICAgIDxsaSBpZD0iQ29uZmlnSXRlbUJ1bGtBY3Rpb24iIGNsYXNzPSJBbHdheXNQcmVzZW50IEJ1bGsgSW5hY3RpdmUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2E+PC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50QWN0aW9uUm93QnVsayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudEFjdGlvblJvd0xhc3RDb2x1bW5GaWx0ZXIiKSAlXQogICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyI+WyUgVHJhbnNsYXRlKCJSZXNldCBvdmVydmlldyIpIHwgaHRtbCAlXTwvYT48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRBY3Rpb25Sb3dMYXN0Q29sdW1uRmlsdGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50QWN0aW9uUm93SXRlbSIpICVdCiAgICA8bGkgY2xhc3M9IlslIERhdGEuQ1NTIHwgaHRtbCAlXSI+PGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPjwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVudEFjdGlvblJvd0l0ZW0iKSAlXQo8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRBY3Rpb25Sb3ciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb250ZW50IikgJV0KPGRpdiBpZD0iT3ZlcnZpZXdDb250YWluZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGaWx0ZXJzIikgJV0KICAgIDxkaXYgaWQ9Ik92ZXJ2aWV3Q29udHJvbCIgY2xhc3M9IlNpZGVCYXJGaWx0ZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyRmlsdGVyIikgJV0KICAgICAgICA8dWw+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNpZGVCYXJGaWx0ZXJJdGVtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZCIpICVdCiAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtDYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdIChbJSBEYXRhLkNvdW50IHwgaHRtbCAlXSk8L2E+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdCiAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdRmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0NhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV0gKFslIERhdGEuQ291bnQgfCBodG1sICVdKTwvYT4KICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlNpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgLQpbJSBSZW5kZXJCbG9ja0VuZCgiU2lkZUJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyRmlsdGVySXRlbSIpICVdCiAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIlNpZGVCYXJGaWx0ZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyUGFnZUJhY2siKSAlXQogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBpZD0iSVRTTUNvbmZpZ0l0ZW1TZWFyY2giIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0JhY2sgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdIFslIERhdGEuUHJvZmlsZU5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+ClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyUGFnZUJhY2siKSAlXQogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGaWx0ZXJzIikgJV0KCiAgICA8ZGl2IGlkPSJPdmVydmlld0JvZHkiIGNsYXNzPSJPdmVydmlldyBDb25maWdJdGVtTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vQ29uZmlnSXRlbUZvdW5kIikgJV0KICAgICAgICA8ZGl2IGlkPSJFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vQ29uZmlnSXRlbUZvdW5kIikgJV0KCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9Im1hdHJpeCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbmZpZ0l0ZW1JRCIgdmFsdWU9IiIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYXN0Q29sdW1uRmlsdGVyIiBpZD0iTGFzdENvbHVtbkZpbHRlciIgdmFsdWU9IlslIERhdGEuTGFzdENvbHVtbkZpbHRlciB8IGh0bWwgJV0iLz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdUYWJsZSIpICVdCiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCBOb0NlbGxzcGFjaW5nIj4KICAgICAgICAgICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dHI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQnVsa05hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hlY2tib3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iQ2hlY2tib3giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBhbGwiKSB8IGh0bWwgJV0iIGlkPSJTZWxlY3RBbGxDb25maWdJdGVtcyIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJCdWxrTmF2QmFyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgfCB1cmkgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZ0xpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VGbGFnRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VGbGFnRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1OdW1iZXI7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVXNlckF1dG9Db21wbGV0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1bJSBEYXRhLkNvbHVtbk5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PVslIERhdGEuQ29sdW1uTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5IikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik92ZXJ2aWV3SGVhZGVyIFslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV0gRHluYW1pY0ZpZWxkIExhc3QgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZFNvcnRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZVNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuTGFiZWwgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJhbE92ZXJ2aWV3SGVhZGVyIikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEeW5hbWljRmllbGQgTGFzdCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Tb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Tb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX05vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Ob3RTb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX0ZpbHRyYWJsZVNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgojICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkxhYmVsIHwgaHRtbCAlXTwvYT4KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX0ZpbHRyYWJsZVNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDFfRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiMgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuTGFiZWwgfCBodG1sICVdPC9zcGFuPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDFfRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICA8L3RoPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiMgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRHluYW1pY0ZpZWxkIExhc3QgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfU29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9hPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfU29ydGFibGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9Ob3RTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9zcGFuPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfTm90U29ydGFibGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9GaWx0cmFibGVTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NUcmlnZ2VyIiB0aXRsZT0iWyUgRGF0YS5GaWx0ZXJUaXRsZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NCb3giPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5MYWJlbCB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9GaWx0cmFibGVTb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyX0ZpbHRyYWJsZU5vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgojICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkxhYmVsIHwgaHRtbCAlXTwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyX0ZpbHRyYWJsZU5vdFNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPC90aD4KCiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGhlYWQ+ClslIFJlbmRlckJsb2NrRW5kKCJUYWJsZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlQm9keSIpICVdCiAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRyIGlkPSJDb25maWdJdGVtSURfWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCdWxrIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDaGVja2JveCBOb25UZXh0Q29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9IkNoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgbmFtZT0iQ29uZmlnSXRlbUlEIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWxlY3QgdGhpcyBjb25maWcgaXRlbSIpIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQnVsayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljUm93TWV0YSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iWyUgRGF0YS5DbGFzc1RhYmxlIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSBTbWFsbCIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkNsYXNzU3BhbiB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+WyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbURhdGEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckRlcGxTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iRmxhZ2dlZE5hbWUiPlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VyRGVwbFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGbGFnIFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DdXJJbmNpU2lnbmFsIHwgaHRtbCAlXSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9IkZsYWdnZWROYW1lIj5bJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckluY2lTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1DcmVhdGVkQnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlVzZXJGdWxsbmFtZSB8IGh0bWwgJV0gKFslIERhdGEuVXNlckxvZ2luIHwgaHRtbCAlXSkiPlslIERhdGEuVXNlckZ1bGxuYW1lIHwgdHJ1bmNhdGUoNTApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNyZWF0ZWRCeSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuR2VuZXJpY1ZhbHVlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRpbWUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbURhdGEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZCIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJhbE92ZXJ2aWV3Um93IikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPHRkPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9MaW5rIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFfTGluayIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdCiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgPC90ZD4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgICAgICA8dGQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX0xpbmsiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMl9MaW5rIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsdWUgJV0KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICA8L3RkPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQoKICAgICAgICAgICAgICAgICAgICA8L3RyPgoKWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICA8L3Rib2R5PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGFibGVCb2R5IikgJV0KICAgICAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VGFibGUiKSAlXQogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29udGVudCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm0iKSAlXQo8Zm9ybSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb2x1bW4gRmlsdGVycyBGb3JtIikgfCBodG1sICVdIiBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgfCBodG1sICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9IkNvbHVtbkZpbHRlckF0dHJpYnV0ZXMiIGlkPSJDb2x1bW5GaWx0ZXJBdHRyaWJ1dGVzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJbJSBEYXRhLkVsZW1lbnROYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRWxlbWVudFZhbHVlIHwgaHRtbCAlXSIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCjwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29sdW1uRmlsdGVyRm9ybSIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemSearch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hBSkFYIikgJV0KPGRpdiBjbGFzcz0iSW5uZXJDb250ZW50Ij4KICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iQ2xhc3MiPlslIFRyYW5zbGF0ZSgiQ2xhc3MiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIiBpZD0nRGl2Q2xhc3NJRCc+CiAgICAgICAgICAgIFslIERhdGEuQ2xhc3NPcHRpb25TdHJnICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2ZpZWxkc2V0Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9IklubmVyQ29udGVudCIgaWQ9IkFKQVhVcGRhdGUiPgoKICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iU2VhcmNoRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNsYXNzSUQiIHZhbHVlPSJbJSBEYXRhLkNsYXNzSUQgfCBodG1sICVdIiBpZD0iU2VhcmNoQ2xhc3NJRCIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgoKICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSdJVFNNU2VhcmNoUHJvZmlsZSc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIlRlbXBsYXRlcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2VhcmNoUHJvZmlsZSI+WyUgVHJhbnNsYXRlKCJTZWFyY2ggdGVtcGxhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlNlYXJjaFByb2ZpbGUiIG5hbWU9IlNlYXJjaFByb2ZpbGUiIHZhbHVlPSJbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZWFyY2hQcm9maWxlQWRkQmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJQcm9maWxlTmFtZSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGROYW1lIi8+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdHlwZT0iYnV0dG9uIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGUgVGVtcGxhdGUiKSB8IGh0bWwgJV0iIGlkPSJTZWFyY2hQcm9maWxlQWRkQWN0aW9uIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTYXZlUHJvZmlsZSIgdmFsdWU9IjEiLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZU5ldyIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBOZXciKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVEZWxldGUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVBc0xpbmsiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiUHJvZmlsZSBsaW5rIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlByb2ZpbGUgbGluayIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KCiAgICA8L2Zvcm0+CjwvZGl2PgoKPGRpdiBjbGFzcz0iQ29udGVudEZvb3RlciBDZW50ZXIiPgogICAgPGJ1dHRvbiBpZD0iU2VhcmNoRm9ybVN1Ym1pdCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSBIaWRkZW4iIHZhbHVlPSJSdW4gU2VhcmNoIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+WyUgVHJhbnNsYXRlKCJSdW4gU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEFKQVgiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQUpBWENvbnRlbnQiKSAlXQo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDbGFzc0lEIiB2YWx1ZT0iWyUgRGF0YS5DbGFzc0lEIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaENsYXNzSUQiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2VhcmNoRGlhbG9nIiB2YWx1ZT0nMSc+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNob3duQXR0cmlidXRlcyIgdmFsdWU9IiIgaWQ9IlNob3duQXR0cmlidXRlcyI+CiAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSdJVFNNU2VhcmNoUHJvZmlsZSc+CiAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIlRlbXBsYXRlcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICA8bGFiZWwgZm9yPSJTZWFyY2hQcm9maWxlIj5bJSBUcmFuc2xhdGUoIlNlYXJjaCB0ZW1wbGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5Qcm9maWxlc1N0cmcgJV0KICAgICAgICAgICAgPGRpdiBpZD0iU2VhcmNoUHJvZmlsZUFkZEJsb2NrIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJQcm9maWxlTmFtZSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGROYW1lIi8+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB0eXBlPSJidXR0b24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBUZW1wbGF0ZSIpIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVOZXciIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNyZWF0ZSBOZXciKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVEZWxldGUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZUFzTGluayIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gSGlkZGVuIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJQcm9maWxlIGxpbmsiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiUHJvZmlsZSBsaW5rIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJTYXZlIGNoYW5nZXMgaW4gdGVtcGxhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2F2ZVByb2ZpbGUiIGlkPSJTYXZlUHJvZmlsZSIgdmFsdWU9IjEiLz4KICAgICAgICA8L2Rpdj4KICAgIDwvZmllbGRzZXQ+CgogICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgSGlkZGVuIiBpZD0nSVRTTVNlYXJjaEZpZWxkcyc+CiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiIGlkPSJTZWFyY2hJbnNlcnQiPgogICAgICAgICAgICA8bGVnZW5kPjxzcGFuPlslIFRyYW5zbGF0ZSgiRmlsdGVycyBpbiB1c2UiKSB8IGh0bWwgJV08L3NwYW4+PC9sZWdlbmQ+CiAgICAgICAgPC9maWVsZHNldD4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgIDxsZWdlbmQ+PHNwYW4+WyUgVHJhbnNsYXRlKCJBZGRpdGlvbmFsIGZpbHRlcnMiKSB8IGh0bWwgJV08L3NwYW4+PC9sZWdlbmQ+CiAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkFkZCBhbm90aGVyIGF0dHJpYnV0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkF0dHJpYnV0ZXNTdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJPdXRwdXQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRGb3JtU3RyZyAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgPC9maWVsZHNldD4KPC9mb3JtPgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSJTZWFyY2hBdHRyaWJ1dGVzSGlkZGVuIj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxsYWJlbCBmb3I9Ik51bWJlciIgaWQ9IkxhYmVsTnVtYmVyIj5bJSBUcmFuc2xhdGUoIk51bWJlciIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIihlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCopIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgdmFsdWU9IlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPGxhYmVsIGZvcj0iTmFtZSIgaWQ9IkxhYmVsTmFtZSI+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJEZXBsU3RhdGVJRHMiIGlkPSJMYWJlbERlcGxTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJEZXBsb3ltZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgWyUgRGF0YS5DdXJEZXBsU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJJbmNpU3RhdGVJRHMiIGlkPSJMYWJlbEluY2lTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgWyUgRGF0YS5MYWJlbCAlXQogICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dHJpYnV0ZVJvdyIpICVdCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJbJSBUcmFuc2xhdGUoRGF0YS5LZXkpIHwgaHRtbCAlXSIgaWQ9IkxhYmVsWyUgRGF0YS5LZXkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5EZXNjcmlwdGlvbikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICBbJSBEYXRhLklucHV0U3RyaW5nICVdCiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dHJpYnV0ZVJvdyIpICVdCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICBbJSBEYXRhLkF0dHJpYnV0ZXNPcmlnU3RyZyAlXQo8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiQUpBWENvbnRlbnQiKSAlXQo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemTreeView.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIiPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0iKSB8IGh0bWwgJV06IFslIERhdGEuQ29uZmlnSXRlbU51bWJlciB8IGh0bWwgJV0g4oCUIFslIERhdGEuQ29uZmlnSXRlbU5hbWUgfCBodG1sICVdCiAgICAgICAgPC9oMT4KICAgICAgICA8cD4KICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlRyZWVWaWV3Q2xvc2VMaW5rIj5bJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgZGlhbG9nIikgfCBodG1sICVdPC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4gU3BhY2luZ1RvcCI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIiBpZD0iV2lkZ2V0Q29udGFpbmVyIj4KCiAgICAgICAgICAgIDxmb3JtIG5hbWU9IlRyZWVWaWV3IiBpZD0iVHJlZVZpZXciPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29uZmlnSXRlbUlEIiAgICAgICAgaWQ9IkNvbmZpZ0l0ZW1JRCIgICAgICAgIHZhbHVlPSJbJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVmVyc2lvbklEIiAgICAgICAgICAgaWQ9IlZlcnNpb25JRCIgICAgICAgICAgIHZhbHVlPSJbJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT1RPQk9BZ2VudEludGVyZmFjZSIgaWQ9Ik9UT0JPQWdlbnRJbnRlcmZhY2UiIHZhbHVlPSJbJSBEYXRhLlNlc3Npb25JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2hvd0xpbmtMYWJlbHMiICAgICAgaWQ9IlNob3dMaW5rTGFiZWxzIiAgICAgIHZhbHVlPSJbJSBEYXRhLlNob3dMaW5rTGFiZWxzIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYXN0Wm9vbSIgICAgICAgICAgICBpZD0iTGFzdFpvb20iICAgICAgICAgICAgdmFsdWU9IjEwMCI+CiAgICAgICAgICAgIDwvZm9ybT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3cgQ29udGFpbmVyQmFyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvd1RpdGxlIj48aSBjbGFzcz0iZmEgZmEtc2l0ZW1hcCI+PC9pPiBbJSBUcmFuc2xhdGUoIlRyZWUgVmlldyIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iT3B0Q29udGFpbmVyIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGlkPSJEZXB0aExhYmVsIj5bJSBUcmFuc2xhdGUoIkRlcHRoIExldmVsIikgfCBodG1sICVdOiA8L2xhYmVsPiAgPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0iRGVwdGgiIGlkPSJEZXB0aCIgbWluPSIxIiBtYXg9IjEwIiB2YWx1ZT0iWyUgRGF0YS5EZXB0aCB8IGh0bWwgJV0iIGNsYXNzPSJPcHREZXB0aCI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGlkPSJab29tSW5PdXRMYWJlbCI+WyUgVHJhbnNsYXRlKCJab29tIEluL091dCIpIHwgaHRtbCAlXTogPC9sYWJlbD4gPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0iWm9vbSIgaWQ9Ilpvb20iIG1pbj0iMjAiIG1heD0iMjAwIiBzdGVwPSIxMCIgdmFsdWU9IjEwMCI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9IkFKQVhMb2FkZXJEZXB0aCIgY2xhc3M9IkFKQVhMb2FkZXIgSGlkZGVuIj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0iVHJlZVZpZXdNZXNzYWdlcyIgY2xhc3M9IlRyZWVWaWV3TWVzc2FnZXMgQ2VudGVyIEhpZGRlbiI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iQ2VudGVyIFRyZWVWaWV3TWVzc2FnZSI+WyUgVHJhbnNsYXRlKCJNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEiKSB8IGh0bWwgICVdPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGFpbmVyQ2FudmFzIiBpZD0iQ2FudmFzIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxkaXYgY2xhc3M9IkZsYWciIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGgxIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbmZpZ3VyYXRpb24gSXRlbSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdICZuZGFzaDsgWyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoNDApIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJdGVtIikgfCBodG1sICVdOiBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0gPHNwYW4+Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CgogICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdCgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNZXRhIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIFRpZ2h0Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuTmFtZSB8IHRydW5jYXRlKDI1KSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkN1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckRlcGxTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDdXJyZW50IEluY2lkZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmxhZyBTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VySW5jaVNpZ25hbCB8IGh0bWwgJV0iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DcmVhdGVCeVVzZXJGdWxsTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYXN0IGNoYW5nZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBjaGFuZ2VkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNoYW5nZUJ5VXNlckZ1bGxOYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0ZpbGVuYW1lPVslIERhdGEuRmlsZW5hbWUgfCB1cmkgJV07Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFslIERhdGEuRmlsZXNpemUgfCBMb2NhbGl6ZSgnRmlsZXNpemUnKSB8IGh0bWwgJV0pClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50cyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk1ldGEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMaW5rVGFibGVTaW1wbGUiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlua2VkIE9iamVjdHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUYWJsZVN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxpbmtUYWJsZVNpbXBsZSIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3ciPgogICAgICAgICAgICAgICAgPGgyPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWVudSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1lbnVJdGVtIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXVslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiBpZD0iTWVudVslIERhdGEuTWVudUlEIHwgaHRtbCAlXSIgY2xhc3M9IlslIERhdGEuTWVudUNsYXNzIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkRlc2NyaXB0aW9uKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudUl0ZW0iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudSIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VsZWN0aW9uUm93IikgJV0KICAgICAgICAgICAgPGRpdiBpZD0iU2VsZWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBhZ2VTZWxlY3Rpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTmFtZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZShEYXRhLlBhZ2VOYW1lKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZU5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IHVyaSAlXTtQYWdlPVslIERhdGEuUGFnZU5hbWUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJvb29TIFBhZ2VTZWxlY3Rpb25CdXR0b24gQ2FsbEZvckFjdGlvblslIElGIERhdGEuRGlzYWJsZWQgJV0gRGlzYWJsZWRbJSBFTFNJRiBEYXRhLlNlbGVjdGVkICVdIFNlbGVjdGVkWyUgRU5EICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5QYWdlTmFtZSkgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZUxpbmsiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgaWQ9IlZlcnNpb25TZWxlY3Rpb25Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvblNlbGVjdGlvbiAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VsZWN0aW9uUm93IikgJV0KICAgICAgICAgICAgPGRpdiBpZD0iSVRTTUl0ZW1zIj4KICAgICAgICAgICAgICAgIFslIERhdGEuRHluYW1pY0ZpZWxkSFRNTCAlXQogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGlua1RhYmxlQ29tcGxleCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVGFibGVTdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGlua1RhYmxlQ29tcGxleCIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/ConfigItemTreeView/ConfigItemTreeViewGraph.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSJTZWN0aW9uQ29udGFpbmVyIj4KCiAgICA8ZGl2IGNsYXNzPSJDaGlsZENvbnRhaW5lciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNoaWxkU291cmNlRWxlbWVudHNMZXZlbCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIiBpZD0iU291cmNlTGV2ZWxbJURhdGEuTGV2ZWwgfCBodG1sJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDaGlsZFNvdXJjZUVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3giIGlkPSJbJSBEYXRhLklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1JbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV07T1RPQk9BZ2VudEludGVyZmFjZT1bJSBEYXRhLlNlc3Npb25JRCB8IHVyaSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJab29tTGluayI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFNvdXJjZUVsZW1lbnRzIikgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFNvdXJjZUVsZW1lbnRzTGV2ZWwiKSAlXQogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ2hpbGRDb250YWluZXIiIGlkPSJPcmlnaW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPcmlnaW5FbGVtZW50IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IiBpZD0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29uZmlnSXRlbUluZm8iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWRkaXRpb25hbEluZm8iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPcmlnaW5FbGVtZW50IikgJV0KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ2hpbGRUYXJnZXRFbGVtZW50c0xldmVsIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIiBpZD0iVGFyZ2V0TGV2ZWxbJURhdGEuTGV2ZWwgfCBodG1sJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDaGlsZFRhcmdldEVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3giIGlkPSJbJSBEYXRhLklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1JbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV07T1RPQk9BZ2VudEludGVyZmFjZT1bJSBEYXRhLlNlc3Npb25JRCB8IHVyaSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJab29tTGluayI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFRhcmdldEVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2hpbGRUYXJnZXRFbGVtZW50c0xldmVsIikgJV0KCiAgICA8L2Rpdj4KCjwvZGl2Pgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJNYXhEZXB0aCIgICAgICAgaWQ9Ik1heERlcHRoIiAgICAgICB2YWx1ZT0iWyUgRGF0YS5NYXhEZXB0aCB8IGh0bWwgJV0iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMaW5rRGF0YVNvdXJjZSIgaWQ9IkxpbmtEYXRhU291cmNlIiB2YWx1ZT0iWyUgRGF0YS5MaW5rRGF0YVNvdXJjZSB8IGh0bWwgJV0iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMaW5rRGF0YVRhcmdldCIgaWQ9IkxpbmtEYXRhVGFyZ2V0IiB2YWx1ZT0iWyUgRGF0YS5MaW5rRGF0YVRhcmdldCB8IGh0bWwgJV0iPgoKIDxkaXYgY2xhc3M9IlNwYWNlclRyZWUiPjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiWW91ciBDb25maWdJdGVtcyIpIHwgaHRtbCAlXTwvaDE+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaEJveCIpICVdCiAgICAgICAgPGRpdiBpZD0ib29vU2VhcmNoQm94Ij4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YSBpZD0nb29vSGVhZGVyQnV0dG9uJyBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaDtGaWx0ZXI9MTtWaWV3PVNtYWxsO1NvcnRCeT1BZ2U7T3JkZXJCeT1VcCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBhY2Nlc3NrZXk9IlslIERhdGEuQWNjZXNzS2V5IHwgaHRtbCAlXSI+PGJ1dHRvbj48c3Bhbj4gWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+PC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoQm94IikgJV0KICAgIDwvZGl2PgogICAgPGRpdiBpZD0nb29vTWFpbkJveCc+CiAgICAgICAgPGRpdiBpZD0nb29vSVRTTUNvbmZpZ0l0ZW1MaXN0SGVhZGVyJz4KWyUgSUYgRW52KCJTdWJhY3Rpb24iKSA9PSAnU2VhcmNoJyAlXQogICAgICAgICAgICA8cCBjbGFzcz0ib29vMTIgb29vbCBTZWxlY3RlZCI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTogICJbJSBEYXRhLkZ1bGx0ZXh0IHwgaHRtbCAlXSIKICAgICAgICAgICAgPC9wPgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmlsdGVySGVhZGVyIikgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuQ2xhc3NBIHwgaHRtbCAlXSBvb28xMmcgb29vbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVslIEVudigiU3ViYWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO1NvcnRCeT1bJSBEYXRhLlNvcnRCeSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXVslIERhdGEuQ3VzdG9tZXJJRHMgJV07RnVsbHRleHQ9WyUgRGF0YS5GdWxsdGV4dCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0gKFslIERhdGEuQ291bnQgfCBodG1sICVdKQogICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJGaWx0ZXJIZWFkZXIiKSAlXQpbJSBJRiBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vMTJnIG9vb3IiPgogICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmlsdGVyRGVsZXRlIikgJV0KICAgICAgICAgICAgPGRpdiBpZD0ib29vSVRTTUNvbmZpZ0l0ZW1GaWx0ZXJEZWxldGUiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJSZXNldCBvdmVydmlldyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJvb29mbyBvb29mby1kZWxldGVfb3V0bCI+PC9pPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZpbHRlckRlbGV0ZSIpICVdCiMgICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIG9vb2wiPlslIERhdGEuSVRTTUNvbmZpZ0l0ZW1Db3VudCB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJDb25maWdJdGVtcyIpIHwgaHRtbCAlXTwvcD4KIyAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMmcgb29vbCI+WyUgVHJhbnNsYXRlKCJTb3J0IikgfCBodG1sICVdPC9wPgojICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyBvb29yIj5bJSBUcmFuc2xhdGUoIkZpbHRlciIpIHwgaHRtbCAlXTwvcD4KIyAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMmcgb29vciI+WyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIFslIERhdGEuSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCAlXQogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemOverviewSmall.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0Ij4KICAgIDxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0U2Nyb2xsQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb250ZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQogICAgICAgIDxkaXYgaWQ9IkVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1RhYmxlIikgJV0KICAgICAgICA8dGFibGUgY2xhc3M9IlRhYmxlU21hbGwgTm9DZWxsc3BhY2luZyI+CiAgICAgICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlSGVhZGVyIikgJV0KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZ0xpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpIHwgdXJpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PVslIERhdGEuTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VGbGFnTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VyRGVwbFNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJEZXBsU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJJbmNpU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik92ZXJ2aWV3SGVhZGVyIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NCb3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9IlVzZXJBdXRvQ29tcGxldGUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5Db2x1bW5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5Db2x1bW5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbmZpZ0l0ZW1IZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBEeW5hbWljRmllbGQgTGFzdCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NUcmlnZ2VyIiB0aXRsZT0iWyUgRGF0YS5GaWx0ZXJUaXRsZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVTb3J0YWJsZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5MYWJlbCB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90aGVhZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlRhYmxlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGFibGVCb2R5IikgJV0KICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgPHRyIGlkPSJDb25maWdJdGVtSURfWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtRGF0YSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckRlcGxTaWduYWwiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXXRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VyRGVwbFNpZ25hbCB8IGh0bWwgJV0iPiJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJEZXBsU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VySW5jaVNpZ25hbCB8IGh0bWwgJV0iPiJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJJbmNpU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNyZWF0ZWRCeSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlVzZXJGdWxsbmFtZSB8IGh0bWwgJV0gKFslIERhdGEuVXNlckxvZ2luIHwgaHRtbCAlXSkiPlslIERhdGEuVXNlckZ1bGxuYW1lIHwgdHJ1bmNhdGUoNTApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UcmFuc2xhdGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuR2VuZXJpY1ZhbHVlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UcmFuc2xhdGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVGltZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVGltZSIpICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtRGF0YSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdSb3ciKSAlXQogICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgIDwvdGJvZHk+ClslIFJlbmRlckJsb2NrRW5kKCJUYWJsZUJvZHkiKSAlXQogICAgICAgIDwvdGFibGU+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1RhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29udGVudCIpICVdCiAgICA8L2Rpdj4KPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm0iKSAlXQo8Zm9ybSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb2x1bW4gRmlsdGVycyBGb3JtIikgfCBodG1sICVdIiBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgfCBodG1sICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9IkNvbHVtbkZpbHRlckF0dHJpYnV0ZXMiIGlkPSJDb2x1bW5GaWx0ZXJBdHRyaWJ1dGVzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJbJSBEYXRhLkVsZW1lbnROYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRWxlbWVudFZhbHVlIHwgaHRtbCAlXSIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCjwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29sdW1uRmlsdGVyRm9ybSIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemSearch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiQ29uZmlnSXRlbSBTZWFyY2giKSB8IGh0bWwgJV08L2gxPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hCb3giKSAlXQogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaWQ9J29vb0hlYWRlckJ1dHRvbicgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2g7RmlsdGVyPTE7Vmlldz1TbWFsbDtTb3J0Qnk9QWdlO09yZGVyQnk9VXAiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIgYWNjZXNza2V5PSJbJSBEYXRhLkFjY2Vzc0tleSB8IGh0bWwgJV0iPjxidXR0b24+PHNwYW4+IFslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPjwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEJveCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9J29vb01haW5Cb3gnPgogICAgICAgIDxkaXYgaWQ9Im9vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciI+ClslIElGIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb28xMmcgb29vciI+CiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPC9kaXY+ClslIEVORCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hGb3JtIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJvb29JVFNNQ29uZmlnSXRlbVNlYXJjaCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0lUU01Db25maWdJdGVtU2VhcmNoRm9ybSI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTZWFyY2hEaWFsb2ciIHZhbHVlPScxJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9Ik1vZHVsYXJGb3JtIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGVybWlzc2lvbkNvbmRpdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZENlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5QZXJtaXNzaW9uQ29uZGl0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlBlcm1pc3Npb25Db25kaXRpb24iPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlBlcm1pc3Npb25Db25kaXRpb24iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZENlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DbGFzc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDbGFzc0lEcyI+WyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3MiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIHZhbHVlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOdW1iZXIiPlslIFRyYW5zbGF0ZSgiTnVtYmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOYW1lIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOYW1lIj5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlcGxTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJEZXBsb3ltZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEZXBsU3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNpU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluY2lTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5jaVN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkJvdHRvbUFjdGlvblJvdyIgY2xhc3M9IkFjdGlvblJvdyBSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hBY3Rpb24iIHR5cGU9InN1Ym1pdCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoRm9ybSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaFJlc3VsdCIpICVdCiAgICAgICAgWyUgRGF0YS5JVFNNQ29uZmlnSXRlbUxpc3RIVE1MICVdClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hSZXN1bHQiKSAlXQogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgaWQ9J29vb0NvbnRlbnQnIGNsYXNzPSdBUklBUm9sZU1haW4nPgogICAgWyUgRGF0YS5TdHlsZUNsYXNzZXMgJV0KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGRpdiBjbGFzcz0nb29vV2l0aFN1Yic+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZ1bGxTdWIiKSAlXQogICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXSNbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0jWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiRnVsbFN1YiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzU3ViIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJDbGFzc1N1YiIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0nQ0lJbmZvQmFyJz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVwbG95bWVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuRGVwbFN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJEZXBsb3ltZW50U3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNpZGVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuSW5jaVN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJJbmNpZGVudFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ3JlYXRlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPjxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3A+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ3JlYXRlZFRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBDaGFuZ2VkIikgfCBodG1sICVdOjwvbGFiZWw+PHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgPGRpdiBpZD0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBhZ2VTZWxlY3Rpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTmFtZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKERhdGEuUGFnZU5hbWUpIHwgaHRtbCAlXTwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlBhZ2VOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGFnZUxpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCB1cmkgJV07UGFnZT1bJSBEYXRhLlBhZ2VOYW1lIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ib29vUyBQYWdlU2VsZWN0aW9uQnV0dG9uWyUgSUYgRGF0YS5TZWxlY3RlZCAlXSBTZWxlY3RlZFslIEVORCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuUGFnZU5hbWUpIHwgaHRtbCAlXTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlBhZ2VMaW5rIikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50cyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBdHRhY2htZW50Q29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iQXR0YWNobWVudHMiIGhyZWY9IiMiPjxpIGNsYXNzPSdvb29mbyBvb29mby1hdHRhY2htZW50Jz48L2k+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50cyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBdHRhY2htZW50Qm94IiBjbGFzcz0iSGlkZGVuIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7RmlsZW5hbWU9WyUgRGF0YS5GaWxlbmFtZSB8IHVyaSAlXTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWxlbmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAoWyUgRGF0YS5GaWxlc2l6ZSB8IExvY2FsaXplKCdGaWxlc2l6ZScpIHwgaHRtbCAlXSk8YnIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dGFjaG1lbnRzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVmVyc2lvbnMiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZlcnNpb25TZWxlY3Rpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWZXJzaW9uU2VsZWN0aW9uIj5bJSBUcmFuc2xhdGUoIlZlcnNpb24iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJWZXJzaW9ucyIpICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBEYXRhLkR5bmFtaWNGaWVsZEhUTUwgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DynamicField/Agent/ITSMConfigItemLens.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iWyUgRGF0YS5GaWVsZE5hbWUgJV0iIG5hbWU9IlslIERhdGEuRmllbGROYW1lICVdIiB2YWx1ZT0iWyUgRGF0YS5WYWx1ZUVzY2FwZWQgJV0iIC8+CjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iWyUgRGF0YS5GaWVsZENsYXNzICVdIiBpZD0iQXV0b2NvbXBsZXRlX1slIERhdGEuRmllbGROYW1lICVdIiBuYW1lPSJBdXRvY29tcGxldGVfWyUgRGF0YS5GaWVsZE5hbWUgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5GaWVsZExhYmVsRXNjYXBlZCkgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5WaXNpYmxlVmFsdWUgJV0iIC8+ClslIElGIERhdGEuTWFuZGF0b3J5ICVdCjxkaXYgaWQ9IlslIERhdGEuRGl2SURNYW5kYXRvcnkgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgIDxwPgogICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkZpZWxkUmVxdWlyZWRNZXNzYWdlKSB8IGh0bWwgJV0KICAgIDwvcD4KPC9kaXY+ClslIEVORCAlXQpbJSBJRiBEYXRhLlNlcnZlckVycm9yICVdCjxkaXYgaWQ9IlslIERhdGEuRGl2SURTZXJ2ZXJFcnJvciAlXSIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgPHA+CiAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV0KICAgIDwvcD4KPC9kaXY+ClslIEVORCAlXQo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/ITSMConfigItemDetails.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpUVDo6U2NyaXB0VXNhZ2UpCjxkaXYgY2xhc3M9Im9vb0NvbnRlbnRHcmlkIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOlslIERhdGEuV2lkdGhzIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRDZWxsIikgJV0KICAgIDxkaXYgY2xhc3M9Im9vb0NvbnRlbnRDZWxsIFslIERhdGEuVHlwZSB8IGh0bWwgJV1fQ2VsbCIgc3R5bGU9IlslIERhdGEuR3JpZEFyZWEgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyUm93IikgJV0KICAgICAgICA8aDIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkhlYWRlcikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5IZWFkZXIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJSb3ciKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IkNlbGxDb250ZW50Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmllbGREaXNwbGF5Um93IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGREaXNwbGF5Um93IiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOlslIERhdGEuV2lkdGhzIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZpZWxkRGlzcGxheUNlbGwiKSAlXQpbJSBJRiBEYXRhLlR5cGUgPT0gJ0xhYmVsJyAlXQogICAgICAgICAgICAgICAgPGxhYmVsIFslIElGIERhdGEuQ1NTQ2xhc3MgJV1jbGFzcz0iWyUgRGF0YS5DU1NDbGFzcyB8IGh0bWwgJV0iIFslIEVORCAlXXRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdIiBzdHlsZT0iWyUgRGF0YS5HcmlkQ29sdW1tIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvbGFiZWw+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWUnICVdCiAgICAgICAgICAgICAgICA8cCB0aXRsZT0iWyUgRGF0YS5UaXRsZSAlXSIgc3R5bGU9IlslIERhdGEuR3JpZENvbHVtbiB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3A+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWVMaW5rJyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWYWx1ZUl0ZW1MaW5rIikgJV0KICAgICAgICAgICAgICAgIDxwIHRpdGxlPSJbJSBEYXRhLlRpdGxlICVdIiBzdHlsZT0iWyUgRGF0YS5HcmlkQ29sdW1uIHwgaHRtbCAlXSI+PGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iWyUgSUYgRGF0YS5MaW5rUHJldmlldyAlXSBkYXRhLXRyaWdnZXI9ImZsb2F0ZXIiIGRhdGEtZmxvYXRlci11cmw9IlslIERhdGEuTGlua1ByZXZpZXcgfCBJbnRlcnBvbGF0ZSAlXSJbJSBFTkQgJV0gY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+PC9wPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNdWx0aXZhbHVlU2VwYXJhdG9yTGluayIpICVdCiAgICAgICAgICAgICAgICA8YnIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiTXVsdGl2YWx1ZVNlcGFyYXRvckxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiVmFsdWVJdGVtTGluayIpICVdClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWVSYXcnICVdCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJbJSBEYXRhLkdyaWRDb2x1bW4gfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC9kaXY+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnRnVsbFJvdycgJV0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMyI+WyUgRGF0YS5WYWx1ZSAlXTwvZGl2PgpbJSBFTFNJRiBEYXRhLlR5cGUgPT0gJ0lmcmFtZScgJV0KICAgICAgICAgICAgICAgIDxkaXY+CiMgZXhlY3V0ZSBJRnJhbWUgSlMgYXN5bmNocm9ub3VzbHkuIE90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4gYmVmb3JlIG91ciBBUEkgd2FzIGxvYWRlZAojIHRoZSBmb2xsb3dpbmcgSlMgY29kZSBtdXN0IGJlIHdpdGhpbiB0aGUgdGVtcGxhdGUsIG90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4sIHRoYXQgYWxzbyB0aGlzIGNvZGUgaXRzZWxmIGlzIG5vdCBsb2FkZWQgeWV0CjxzY3JpcHQ+CmZ1bmN0aW9uIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKSB7CiAgICBpZiAodHlwZW9mIENvcmUgPT09ICdvYmplY3QnICYmIHR5cGVvZiBDb3JlLkFnZW50ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgSVRTTS5bJSBEYXRhLkZyb250ZW5kIHwgaHRtbCAlXS5Db25maWdJdGVtLlpvb20gPT09ICdvYmplY3QnKSB7CiAgICAgICAgSVRTTS5bJSBEYXRhLkZyb250ZW5kIHwgaHRtbCAlXS5Db25maWdJdGVtLlpvb20uSWZyYW1lQXV0b0hlaWdodCgkKCcjJyArIElGcmFtZUlEKSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKTsKICAgICAgICB9LCA1MDApOwogICAgfQp9Cjwvc2NyaXB0PgojIFVzZSB0aGUgSFRNTDUgc2FuZGJveCBhdHRyaWJ1dGUgdG8gcHJldmVudCBwbHVnaW5zIGFuZCBzY3JpcHRzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIuCiMgQXBwZW5kIHNlc3Npb24gaW5mbyB0byBVUkwgYmVjYXVzZSBJRSB3aWxsIG5vdCBzZW5kIGNvb2tpZXMuCiMgU2V0ICdhbGxvdy1wb3B1cHMnIHRvIGFsbG93IElFMTArIHRvIG9wZW4gbGlua3MuIHJlZjogaHR0cDovL3d3dy53My5vcmcvaHRtbC93Zy93aWtpL0NoYW5nZVByb3Bvc2Fscy9zYW5kYm94X2FsbG93X3BvcHVwcwogICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctcG9wdXBzIG1zLWFsbG93LXBvcHVwcyBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3giIHdpZHRoPSIxMDAlIiBmcmFtZWJvcmRlcj0iMCIgaWQ9IklmcmFtZVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgb25sb2FkPSJ3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCl7IENoZWNrSUZyYW1lSGVpZ2h0KCdJZnJhbWVbJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV0nKTsgfSwgNTAwKTsiIHNyYz0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIERhdGEuRnJvbnRlbmQgfCBodG1sICVdSVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50O1N1YmFjdGlvbj1IVE1MVmlldztDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV07WyUgRW52KCJTZXNzaW9uTmFtZSIpIHwgaHRtbCAlXT1bJSBFbnYoIlNlc3Npb25JRCIpIHwgaHRtbCAlXSI+PC9pZnJhbWU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJGaWVsZERpc3BsYXlDZWxsIikgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGaWVsZERpc3BsYXlSb3ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmljSFRNTCIpICVdCiAgICAgICAgWyUgRGF0YS5IVE1MICVdClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmljSFRNTCIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRDZWxsIikgJV0KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/JavaScript/Templates/Standard/Agent/ITSMConfigurationManagement/ClassImportConfirm.html.tmpl" Permission="660" Encode="Base64">PHA+e3sgIlRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkIiB8IFRyYW5zbGF0ZSB9fTo8L3A+CjxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRTbWFsbCBOYXJyb3ciPgoKeyUgZm9yIENsYXNzIGluIENsYXNzZXMgJX0KCiAgICA8cCBjbGFzcz0iVmFsdWUiPnt7IENsYXNzIH19PC9wPgoKeyUgZW5kZm9yICV9Cgo8L2ZpZWxkc2V0PgoKeyUgaWYgUm9sZXMgJX0KCjxwPnt7ICJUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQiIHwgVHJhbnNsYXRlIH19OjwvcD4KPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZFNtYWxsIE5hcnJvdyI+CgogICAgeyUgZm9yIFJvbGUgaW4gUm9sZXMgJX0KCiAgICA8cCBjbGFzcz0iVmFsdWUiPnt7IFJvbGUgfX08L3A+CgogICAgeyUgZW5kZm9yICV9Cgo8L2ZpZWxkc2V0PgoKeyUgZW5kaWYgJX0KCjxwIGNsYXNzPSJFcnJvciIgc3R5bGU9Im1heC13aWR0aDogNDUwcHg7Ij57eyAiTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLiIgfCBUcmFuc2xhdGUgfX08L3A+CjxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPHAgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHg7Ij57eyAiRG8geW91IHdhbnQgdG8gcHJvY2VlZD8iIHwgVHJhbnNsYXRlfX08L3A+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/PublicITSMConfigItemZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgaWQ9J29vb0NvbnRlbnQnIGNsYXNzPSdBUklBUm9sZU1haW4nPgogICAgWyUgRGF0YS5TdHlsZUNsYXNzZXMgJV0KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGRpdiBjbGFzcz0nb29vV2l0aFN1Yic+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZ1bGxTdWIiKSAlXQogICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXSNbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0jWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiRnVsbFN1YiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzU3ViIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJDbGFzc1N1YiIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0nQ0lJbmZvQmFyJz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVwbG95bWVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuRGVwbFN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJEZXBsb3ltZW50U3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNpZGVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuSW5jaVN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJJbmNpZGVudFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ3JlYXRlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPjxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3A+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ3JlYXRlZFRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBDaGFuZ2VkIikgfCBodG1sICVdOjwvbGFiZWw+PHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KCiMgU0hPVUxEIEtFRVA/ICAgIApbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0xpbmsiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IkJhY2tsaW5rQm94Ij48YSBjbGFzcz0iQmFja2xpbmsiIHRpdGxlPSJCYWNrIHRvIG92ZXJ2aWV3IiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW0iPjxpIGNsYXNzPSJvb29mbyBvb29mby1hcnJvd19sIj48L2k+PHNwYW4+WyUgVHJhbnNsYXRlKCJCYWNrIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TGluayIpICVdCgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGlkPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGRpdiBpZD0iUGFnZVNlbGVjdGlvbiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBhZ2VOYW1lIikgJV0KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoRGF0YS5QYWdlTmFtZSkgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZU5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IHVyaSAlXTtQYWdlPVslIERhdGEuUGFnZU5hbWUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJvb29TIFBhZ2VTZWxlY3Rpb25CdXR0b25bJSBJRiBEYXRhLlNlbGVjdGVkICVdIFNlbGVjdGVkWyUgRU5EICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5QYWdlTmFtZSkgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZUxpbmsiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRzIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkF0dGFjaG1lbnRDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIDxhIGlkPSJBdHRhY2htZW50cyIgaHJlZj0iIyI+PGkgY2xhc3M9J29vb2ZvIG9vb2ZvLWF0dGFjaG1lbnQnPjwvaT5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnRzIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkF0dGFjaG1lbnRCb3giIGNsYXNzPSJIaWRkZW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtGaWxlbmFtZT1bJSBEYXRhLkZpbGVuYW1lIHwgdXJpICVdO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIChbJSBEYXRhLkZpbGVzaXplIHwgTG9jYWxpemUoJ0ZpbGVzaXplJykgfCBodG1sICVdKTxici8+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudHMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWZXJzaW9ucyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvblNlbGVjdGlvbiAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZlcnNpb25TZWxlY3Rpb24iPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlZlcnNpb25zIikgJV0KICAgICAgICAgICAgPC9kaXY+ClslIERhdGEuRHluYW1pY0ZpZWxkSFRNTCAlXQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/PublicITSMConfigItemSearch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2gxPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hCb3giKSAlXQogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaWQ9J29vb0hlYWRlckJ1dHRvbicgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iIGFjY2Vzc2tleT0iWyUgRGF0YS5BY2Nlc3NLZXkgfCBodG1sICVdIj48YnV0dG9uPjxzcGFuPiBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj48L2E+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hCb3giKSAlXQogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KICAgICAgICA8ZGl2IGlkPSJvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0xpbmsiKSAlXQogICAgICAgICAgICA8YSBjbGFzcz0iQmFja2xpbmsiIHRpdGxlPSJCYWNrIHRvIG92ZXJ2aWV3IiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW0iPjxpIGNsYXNzPSJvb29mbyBvb29mby1hcnJvd19sIj48L2k+PHNwYW4+WyUgVHJhbnNsYXRlKCJCYWNrIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TGluayIpICVdClslIElGIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb28xMmcgb29vciI+CiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPC9kaXY+ClslIEVORCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hGb3JtIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJvb29JVFNNQ29uZmlnSXRlbVNlYXJjaCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0lUU01Db25maWdJdGVtU2VhcmNoRm9ybSI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTZWFyY2hEaWFsb2ciIHZhbHVlPScxJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9Ik1vZHVsYXJGb3JtIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGVybWlzc2lvbkNvbmRpdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZENlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5QZXJtaXNzaW9uQ29uZGl0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlBlcm1pc3Npb25Db25kaXRpb24iPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlBlcm1pc3Npb25Db25kaXRpb24iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZENlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DbGFzc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDbGFzc0lEcyI+WyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3MiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIHZhbHVlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOdW1iZXIiPlslIFRyYW5zbGF0ZSgiTnVtYmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOYW1lIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOYW1lIj5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlcGxTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJEZXBsb3ltZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEZXBsU3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNpU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluY2lTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5jaVN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkJvdHRvbUFjdGlvblJvdyIgY2xhc3M9IkFjdGlvblJvdyBSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hBY3Rpb24iIHR5cGU9InN1Ym1pdCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoRm9ybSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaFJlc3VsdCIpICVdCiAgICAgICAgWyUgRGF0YS5JVFNNQ29uZmlnSXRlbUxpc3RIVE1MICVdClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hSZXN1bHQiKSAlXQogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/PublicITSMConfigItemOverviewSmall.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0Ij4KICAgIDxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0U2Nyb2xsQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb250ZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQogICAgICAgIDxkaXYgaWQ9IkVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1RhYmxlIikgJV0KICAgICAgICA8dGFibGUgY2xhc3M9IlRhYmxlU21hbGwgTm9DZWxsc3BhY2luZyI+CiAgICAgICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlSGVhZGVyIikgJV0KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZ0xpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpIHwgdXJpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PVslIERhdGEuTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VGbGFnTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VyRGVwbFNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJEZXBsU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJJbmNpU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik92ZXJ2aWV3SGVhZGVyIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVXNlckF1dG9Db21wbGV0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1bJSBEYXRhLkNvbHVtbk5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1bJSBEYXRhLkNvbHVtbk5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIER5bmFtaWNGaWVsZCBMYXN0IFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZFNvcnRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVTb3J0YWJsZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuTGFiZWwgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJhbE92ZXJ2aWV3SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+ClslIFJlbmRlckJsb2NrRW5kKCJUYWJsZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlQm9keSIpICVdCiAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgICAgIDx0ciBpZD0iQ29uZmlnSXRlbUlEX1slIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbiI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdSb3ciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbURhdGEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJEZXBsU2lnbmFsIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV10aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VyRGVwbFN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGbGFnIFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckRlcGxTaWduYWwgfCBodG1sICVdIj4iWyUgVHJhbnNsYXRlKERhdGEuQ3VyRGVwbFN0YXRlKSB8IGh0bWwgJV0iPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VyRGVwbFNpZ25hbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckluY2lTaWduYWwiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXSB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGbGFnIFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj4iWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0iPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VySW5jaVNpZ25hbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+WyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5IikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVXNlckZ1bGxuYW1lIHwgaHRtbCAlXSAoWyUgRGF0YS5Vc2VyTG9naW4gfCBodG1sICVdKSI+WyUgRGF0YS5Vc2VyRnVsbG5hbWUgfCB0cnVuY2F0ZSg1MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1DcmVhdGVkQnkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ29sdW1uIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgaHRtbCAlXSI+WyUgRGF0YS5HZW5lcmljVmFsdWUgfCB0cnVuY2F0ZSgxMDApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRyYW5zbGF0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5HZW5lcmljVmFsdWUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuR2VuZXJpY1ZhbHVlKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRyYW5zbGF0YWJsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UaW1lIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXSI+WyUgRGF0YS5HZW5lcmljVmFsdWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UaW1lIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1EYXRhIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZExpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZExpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgPC90Ym9keT4KWyUgUmVuZGVyQmxvY2tFbmQoIlRhYmxlQm9keSIpICVdCiAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb250ZW50IikgJV0KICAgIDwvZGl2Pgo8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50Q29sdW1uRmlsdGVyRm9ybSIpICVdCjxmb3JtIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbHVtbiBGaWx0ZXJzIEZvcm0iKSB8IGh0bWwgJV0iIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSB8IGh0bWwgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iQ29sdW1uRmlsdGVyQXR0cmlidXRlcyIgaWQ9IkNvbHVtbkZpbHRlckF0dHJpYnV0ZXMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm1FbGVtZW50IikgJV0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlslIERhdGEuRWxlbWVudE5hbWUgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5FbGVtZW50VmFsdWUgfCBodG1sICVdIi8+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm1FbGVtZW50IikgJV0KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtIikgJV0K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/PublicITSMConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2gxPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hCb3giKSAlXQogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaWQ9J29vb0hlYWRlckJ1dHRvbicgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iIGFjY2Vzc2tleT0iWyUgRGF0YS5BY2Nlc3NLZXkgfCBodG1sICVdIj48YnV0dG9uPjxzcGFuPiBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj48L2E+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hCb3giKSAlXQogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KICAgICAgICA8ZGl2IGlkPSdvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXInPgpbJSBJRiBFbnYoIlN1YmFjdGlvbiIpID09ICdTZWFyY2gnICVdCiAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMiBvb29sIFNlbGVjdGVkIj4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdOiAgIlslIERhdGEuRnVsbHRleHQgfCBodG1sICVdIgogICAgICAgICAgICA8L3A+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGaWx0ZXJIZWFkZXIiKSAlXQogICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5DbGFzc0EgfCBodG1sICVdIG9vbzEyZyBvb29sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249WyUgRW52KCJTdWJhY3Rpb24iKSAlXTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07U29ydEJ5PVslIERhdGEuU29ydEJ5IHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdWyUgRGF0YS5DdXN0b21lcklEcyAlXTtGdWxsdGV4dD1bJSBEYXRhLkZ1bGx0ZXh0IHwgdXJpICVdIj4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSAoWyUgRGF0YS5Db3VudCB8IGh0bWwgJV0pCiAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZpbHRlckhlYWRlciIpICVdClslIElGIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb28xMmcgb29vciI+CiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPC9kaXY+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGaWx0ZXJEZWxldGUiKSAlXQogICAgICAgICAgICA8ZGl2IGlkPSJvb29JVFNNQ29uZmlnSXRlbUZpbHRlckRlbGV0ZSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtEZWxldGVGaWx0ZXJzPURlbGV0ZUZpbHRlcnMiPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUmVzZXQgb3ZlcnZpZXciKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0ib29vZm8gb29vZm8tZGVsZXRlX291dGwiPjwvaT4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGaWx0ZXJEZWxldGUiKSAlXQojICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyBvb29sIj5bJSBEYXRhLklUU01Db25maWdJdGVtQ291bnQgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgiQ29uZmlnSXRlbXMiKSB8IGh0bWwgJV08L3A+CiMgICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIG9vb2wiPlslIFRyYW5zbGF0ZSgiU29ydCIpIHwgaHRtbCAlXTwvcD4KIyAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMmcgb29vciI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIiKSB8IGh0bWwgJV08L3A+CiMgICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIG9vb3IiPlslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICBbJSBEYXRhLklUU01Db25maWdJdGVtTGlzdEhUTUwgJV0KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ClassExport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NFeHBvcnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvcmVhY2hUb0ZvcikKCiMgSW5mb3JtIHRoZSBvYmplY3QgbWFuYWdlciBhYm91dCB0aGUgaGFyZCBkZXBlbmRlbmNpZXMuCiMgVGhpcyBtb2R1bGUgbXVzdCBiZSBkaXNjYXJkZWQgd2hlbiBvbmUgb2YgdGhlIGhhcmQgZGVwZW5kZW5jaWVzIGhhcyBiZWVuIGRpc2NhcmRlZC4Kb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkNsYXNzRXhwb3J0IC0gc3VwcG9ydCBmb3IgdXBncmFkaW5nIHRoZSBDTURCCgo9aGVhZDEgREVTQ1JJUFRJT04KCk1vZHVsZSBmb3IgdGhlIGNvbnNvbGUgY29tbWFuZCBDPEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpDbGFzc0V4cG9ydD4uCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbigKICAgICAgICAnRXhwb3J0IGR5bmFtaWMgZmllbGQgY2xhc3NlcyBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBkeW5hbWljIGZpZWxkcy4nCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnY2xhc3MnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgZXhwb3J0ZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmaWxlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICAgICAiVGhlIG91dHB1dCBZQU1MIGZpbGUgY29udGFpbmluZyB0aGUgZXhwb3J0ZWQgY2xhc3MgZGVmaW5pdGlvbiBhbmQgaXRzIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbi4gRGVmYXVsdHMgdG8gYSBsb2NhbCBmaWxlIHdpdGggdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGNsYXNzIGluIHRoZSBsaXN0LiIsCiAgICAgICAgUmVxdWlyZWQgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ID0+IHFyLy4vLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZvcmNlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiSWYgdGhlIG91dHB1dCBZQU1MIGZpbGUgYWxyZWFkeSBleGlzdHMsIG92ZXJ3cml0ZSBpdCB3aXRob3V0IGFza2luZy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMCwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CgogICAgcmV0dXJuOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2xhc3NOYW1lTGlzdCAgPSAkU2VsZi0+R2V0T3B0aW9uKCdjbGFzcycpOwogICAgbXkgJEZpbGVOYW1lICAgICAgID0gJFNlbGYtPkdldE9wdGlvbignZmlsZScpIHx8ICIkQ2xhc3NOYW1lTGlzdC0+WzBdLnltbCI7ICAgICMgYnkgZGVmYXVsdCBmaWxlIGhhcyB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgY2xhc3MKICAgIG15ICRGb3JjZU92ZXJ3cml0ZSA9ICRTZWxmLT5HZXRPcHRpb24oJ2ZvcmNlJyk7CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGxpc3RzIG9mIGV4aXN0aW5nIGNsYXNzZXMgYW5kIHJvbGVzCiAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApIC8vIHt9CiAgICB9OwogICAgbXkgJVJvbGVMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgICkgLy8ge30KICAgIH07CgogICAgbXkgJEVycm9yID0gc3ViIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+JF9bMF08L3JlZD5cbiIpOwogICAgICAgICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9OwoKICAgIG15IEBDbGFzc0lETGlzdDsKICAgIGZvciBteSAkQ2xhc3NOYW1lICggQHskQ2xhc3NOYW1lTGlzdH0gKSB7CgogICAgICAgIGlmICggJENsYXNzTG9va3VweyRDbGFzc05hbWV9ICkgewogICAgICAgICAgICBwdXNoIEBDbGFzc0lETGlzdCwgJENsYXNzTG9va3VweyRDbGFzc05hbWV9OwoKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXhwb3J0aW5nIGV4aXN0aW5nIGNvbmZpZ2l0ZW08L2dyZWVuPiAkQ2xhc3NOYW1lIDxncmVlbj5jbGFzczwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUm9sZUxvb2t1cHskQ2xhc3NOYW1lfSApIHsKICAgICAgICAgICAgcHVzaCBAQ2xhc3NJRExpc3QsICRSb2xlTG9va3VweyRDbGFzc05hbWV9OwoKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXhwb3J0aW5nIGV4aXN0aW5nIGNvbmZpZ2l0ZW08L2dyZWVuPiAkQ2xhc3NOYW1lIDxncmVlbj5yb2xlPC9ncmVlbj5cbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRFcnJvci0+KCAnQ2xhc3Mgb3IgUm9sZSAnIC4gJENsYXNzTmFtZSAuICcgZG9lcyBub3QgZXhpc3QuJyApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoIC1lICRGaWxlTmFtZSAmJiAhJEZvcmNlT3ZlcndyaXRlICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5GaWxlICckRmlsZU5hbWUnIGFscmVhZHkgZXhpc3RzLiBPdmVyd3JpdGUgaXQ/PC95ZWxsb3c+XG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPHllbGxvdz5QbGVhc2UgY29uZmlybSBieSB0eXBpbmcgJ3knZXM8L3llbGxvdz5cblx0Iik7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpIGlmIDxTVERJTj4gIX4gL155ZT9zPyQvaTsKICAgIH0KCiAgICBteSAkWUFNTENvbnRlbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NFeHBvcnQoIEl0ZW1JRExpc3QgPT4gXEBDbGFzc0lETGlzdCApOwoKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVdyaXRlKAogICAgICAgIExvY2F0aW9uID0+ICRGaWxlTmFtZSwKICAgICAgICBDb250ZW50ICA9PiBcJFlBTUxDb250ZW50LAogICAgKTsKICAgIHJldHVybiAkRXJyb3ItPigiQ291bGQgbm90IHdyaXRlIGZpbGUuIikgdW5sZXNzICRTdWNjZXNzOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgd2l0aCBhbGw8L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ClassImport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NJbXBvcnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvcmVhY2hUb0ZvcikKCiMgSW5mb3JtIHRoZSBvYmplY3QgbWFuYWdlciBhYm91dCB0aGUgaGFyZCBkZXBlbmRlbmNpZXMuCiMgVGhpcyBtb2R1bGUgbXVzdCBiZSBkaXNjYXJkZWQgd2hlbiBvbmUgb2YgdGhlIGhhcmQgZGVwZW5kZW5jaWVzIGhhcyBiZWVuIGRpc2NhcmRlZC4Kb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpDbGFzc0ltcG9ydCAtIHN1cHBvcnQgZm9yIHVwZ3JhZGluZyB0aGUgQ01EQgoKPWhlYWQxIERFU0NSSVBUSU9OCgpNb2R1bGUgZm9yIHRoZSBjb25zb2xlIGNvbW1hbmQgQzxBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NJbXBvcnQ+LgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1jdXQKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oCiAgICAgICAgJ0ltcG9ydCBkeW5hbWljIGZpZWxkIGNsYXNzZXMgYW5kIHRoZWlyIHJlc3BlY3RpdmUgZHluYW1pYyBmaWVsZHMuJwogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZpbGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJUaGUgZmlsZSBjb250YWluaW5nIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFuZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24gYXMgWUFNTC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CgogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndXBkYXRlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiSWYgdGhlIGNsYXNzIGFscmVhZHkgZXhpc3RzLCB1cGRhdGUgaXQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDAsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAxOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+SW1wb3J0aW5nIG5ldyBjb25maWdpdGVtIGNsYXNzPC9ncmVlbj5cbiIpOwoKICAgIG15ICRGaWxlID0gJFNlbGYtPkdldE9wdGlvbignZmlsZScpOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgbXkgJEVycm9yID0gc3ViIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+JF9bMF08L3JlZD5cbiIpOwoKICAgICAgICAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfTsKCiAgICBteSAkRGVmaW5pdGlvbllBTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkRmlsZSwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25SYXcgPSAkWUFNTE9iamVjdC0+TG9hZCgKICAgICAgICBEYXRhID0+ICR7JERlZmluaXRpb25ZQU1MfSwKICAgICk7CgogICAgaWYgKCByZWYgJERlZmluaXRpb25SYXcgZXEgJ0hBU0gnICkgewogICAgICAgICREZWZpbml0aW9uUmF3ID0gWyREZWZpbml0aW9uUmF3XTsKICAgIH0KCiAgICByZXR1cm4gJEVycm9yLT4oJ0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLicpIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJERlZmluaXRpb25SYXcpOwoKICAgIG15ICRDbGFzc0V4aXN0cyA9ICRTZWxmLT5HZXRPcHRpb24oJ3VwZGF0ZScpID8gJ1VQREFURScgOiAnRVJST1InOwogICAgbXkgJFJlc3VsdCAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgID0+ICREZWZpbml0aW9uUmF3LAogICAgICAgIENsYXNzRXhpc3RzID0+ICRDbGFzc0V4aXN0cywKICAgICk7CgogICAgcmV0dXJuICRFcnJvci0+KCAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSB8fCAiQ291bGQgbm90IGltcG9ydCBkZWZpbml0aW9ucyBmcm9tIGZpbGUuIiApIHVubGVzcyAkUmVzdWx0LT57U3VjY2Vzc307CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSB3aXRoIGFsbDwvZ3JlZW4+XG4iKTsKCiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ConvertLegacyRefDFs.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q29udmVydExlZ2FjeVJlZkRGczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6SW50ZXJmYWNlQ29uc29sZTsgICAgIyMgbm8gcGVybGltcG9ydHMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oCiAgICAgICAgJ0NvbnZlcnQgbGVnYWN5IE90b2JvUGFyIERGcyBvZiB0eXBlIElUU01Db25maWdJdGVtUmVmZXJlbmNlIHRvIHN0YW5kYXJkIENvbmZpZ0l0ZW0gZmllbGRzLicKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmaWxlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRmlsZSBuYW1lIGZvciB0aGUgY29uc3RyaWN0aW9ucyByZXBvcnQsIGJ5IGRlZmF1bHQgcHJpbnRzIHRoZSByZXBvcnQgdG8gdGhlIGRpc3BsYXkuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmb3JjZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIklmIHRoZSByZXBvcnQgZmlsZSBhbHJlYWR5IGV4aXN0cywgb3ZlcndyaXRlIHdpdGhvdXQgcHJvbXB0aW5nLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4vLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmlsZU5hbWUgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdmaWxlJyk7CiAgICBteSAkRm9yY2VPdmVyd3JpdGUgPSAkU2VsZi0+R2V0T3B0aW9uKCdmb3JjZScpOwoKICAgIGlmICggLWUgJEZpbGVOYW1lICYmICEkRm9yY2VPdmVyd3JpdGUgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkNvbnN0cmljdGlvbnMgcmVwb3J0IGZpbGUgJyRGaWxlTmFtZScgYWxyZWFkeSBleGlzdHMuIE92ZXJ3cml0ZSBpdD88L3llbGxvdz4iKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPHllbGxvdz5QbGVhc2UgY29uZmlybSBieSB0eXBpbmcgJ3knZXM8L3llbGxvdz46ICIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpIGlmIDxTVERJTj4gIX4gL155ZT9zPyQvaTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJERCT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKTsKICAgIG15ICRQYWNrYWdlT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJyk7CgogICAgIyBzdXBwb3J0IGNvbnNvbGUgY29tbWFuZAogICAgaWYgKCAhZGVmaW5lZCAkREJPYmplY3QtPntkYmh9ICkgewogICAgICAgICREQk9iamVjdC0+Q29ubmVjdCgpOwogICAgfQogICAgaWYgKCAhZGVmaW5lZCAkREJPYmplY3QtPntkYmh9ICkgewogICAgICAgIGRpZSgidW5hYmxlIHRvIGNvbm5lY3QgdG8gRGF0YWJhc2UuIik7CiAgICB9CgogICAgJERCT2JqZWN0LT5CZWdpbldvcmsoKTsKICAgIG15IEBJRHMgPSAkU2VsZi0+X0dldERGVHlwZUlEcygKICAgICAgICBEQk9iamVjdCA9PiAkREJPYmplY3QsCiAgICAgICAgREZUeXBlICAgPT4gJ0lUU01Db25maWdJdGVtUmVmZXJlbmNlJywKICAgICk7CgogICAgbXkgJENvdW50RmllbGRVcGRhdGVzID0gMDsKICAgIG15ICRDb3VudFZhbHVlVXBkYXRlcyA9IDA7CiAgICBteSBAQ29uc3RyaWN0aW9uc0xpc3Q7CgogICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgICRTZWxmLT5fVXBkYXRlRHluYW1pY0ZpZWxkQ29uZmlnKAogICAgICAgICAgICBJRCAgICAgICAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICBEeW5hbWljRmllbGRPYmplY3QgPT4gJER5bmFtaWNGaWVsZE9iamVjdCwKICAgICAgICAgICAgQ29uc3RyaWN0aW9uc0xpc3QgID0+IFxAQ29uc3RyaWN0aW9uc0xpc3QsCiAgICAgICAgKTsKICAgICAgICAkQ291bnRGaWVsZFVwZGF0ZXMrKzsKICAgICAgICAkQ291bnRWYWx1ZVVwZGF0ZXMgKz0gJFNlbGYtPl9VcGRhdGVEeW5hbWljRmllbGRWYWx1ZXMoCiAgICAgICAgICAgIElEICAgICAgICAgICAgICAgICAgICAgID0+ICRJRCwKICAgICAgICAgICAgREJPYmplY3QgICAgICAgICAgICAgICAgPT4gJERCT2JqZWN0LAogICAgICAgICAgICBEeW5hbWljRmllbGRWYWx1ZU9iamVjdCA9PiAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAkREJPYmplY3QtPntkYmh9LT5jb21taXQoKTsKCiAgICAkU2VsZi0+UHJpbnQoIiRDb3VudEZpZWxkVXBkYXRlcyBmaWVsZHMgdXBkYXRlZFxuIik7CiAgICAkU2VsZi0+UHJpbnQoIiRDb3VudFZhbHVlVXBkYXRlcyBmaWVsZCB2YWx1ZXMgdXBkYXRlZFxuIik7CgogICAgJFNlbGYtPl9SZXBvcnRDb25zdHJpY3Rpb25zKAogICAgICAgIENvbnN0cmljdGlvbnNMaXN0ID0+IFxAQ29uc3RyaWN0aW9uc0xpc3QsCiAgICAgICAgRmlsZU5hbWUgICAgICAgICAgPT4gJEZpbGVOYW1lLAogICAgKTsKCiAgICAjIHJlbW92ZSBEeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbSBwYWNrYWdlCiAgICBteSAkUGFja2FnZU5hbWUgPSAnRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlVuaW5zdGFsbGluZyAkUGFja2FnZU5hbWUgcGFja2FnZS4uLjwveWVsbG93PlxuIik7CiAgICBteSBAUmVwb3MgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUxpc3QoCiAgICAgICAgUmVzdWx0ID0+ICdTaG9ydCcKICAgICk7CiAgICBteSBAUGFja2FnZUVudHJ5ID0gZ3JlcCB7ICRfLT57TmFtZX0gZXEgJFBhY2thZ2VOYW1lIH0gQFJlcG9zOwogICAgaWYgKCAhQFBhY2thZ2VFbnRyeSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGZpbmQgJFBhY2thZ2VOYW1lIHBhY2thZ2UhPC9yZWQ+XG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICRQYWNrYWdlVmVyc2lvbiA9ICRQYWNrYWdlRW50cnlbMF17VmVyc2lvbn07CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkZvdW5kICRQYWNrYWdlTmFtZSBWZXJzaW9uICRQYWNrYWdlVmVyc2lvbjwveWVsbG93PlxuIik7CiAgICAgICAgbXkgJFBhY2thZ2UgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUdldCgKICAgICAgICAgICAgTmFtZSAgICA9PiAkUGFja2FnZU5hbWUsCiAgICAgICAgICAgIFZlcnNpb24gPT4gJFBhY2thZ2VWZXJzaW9uLAogICAgICAgICk7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkUGFja2FnZU9iamVjdC0+UGFja2FnZVVuaW5zdGFsbCgKICAgICAgICAgICAgU3RyaW5nID0+ICRQYWNrYWdlLAogICAgICAgICk7CiAgICAgICAgaWYgKCRTdWNjZXNzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgdW5pbnN0YWxsaW5nICRQYWNrYWdlTmFtZSBwYWNrYWdlLjwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5pbnN0YWxsICRQYWNrYWdlTmFtZSBwYWNrYWdlITwvcmVkPlxuIik7CiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmU8L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKc3ViIF9VcGRhdGVEeW5hbWljRmllbGRDb25maWcgewoKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJElEICAgICAgICAgICAgICAgICA9ICRQYXJhbXsnSUQnfTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkUGFyYW17J0R5bmFtaWNGaWVsZE9iamVjdCd9OwogICAgbXkgJENvbnN0cmljdGlvbnNMaXN0ICA9ICRQYXJhbXsnQ29uc3RyaWN0aW9uc0xpc3QnfTsKCiAgICBteSAkREYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIElEID0+ICRJRCApOwoKICAgIG15ICROZXdDb25maWcgPSB7CiAgICAgICAgJ0ltcG9ydFNlYXJjaEF0dHJpYnV0ZScgPT4gJycsCiAgICAgICAgJ011bHRpc2VsZWN0JyAgICAgICAgICAgPT4gKCAkREYtPntDb25maWd9e01heEFycmF5U2l6ZX0gPiAxID8gMSA6IDAgKSwKICAgICAgICAnUmVmZXJlbmNlRmlsdGVyTGlzdCcgICA9PiBbXSwKICAgICAgICAnU2VhcmNoQXR0cmlidXRlJyAgICAgICA9PiAnJywKICAgICAgICAnUG9zc2libGVOb25lJyAgICAgICAgICA9PiAnMScsCiAgICAgICAgJ0VkaXRGaWVsZE1vZGUnICAgICAgICAgPT4gJ0F1dG9Db21wbGV0ZScsCiAgICAgICAgJ011bHRpVmFsdWUnICAgICAgICAgICAgPT4gMCwKICAgICAgICAnTGlua1R5cGUnICAgICAgICAgICAgICA9PiAnJywKICAgICAgICAnTGlua0RpcmVjdGlvbicgICAgICAgICA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScsCiAgICAgICAgJ0Rpc3BsYXlUeXBlJyAgICAgICAgICAgPT4gJFNlbGYtPl9Db252ZXJ0RnJvbURpc3BsYXlQYXR0ZXJuKCBQYXR0ZXJuID0+ICRERi0+e0NvbmZpZ317RGlzcGxheVBhdHRlcm59ICksCiAgICAgICAgJ0NsYXNzSURzJyAgICAgICAgICAgICAgPT4gJERGLT57Q29uZmlnfXtJVFNNQ29uZmlnSXRlbUNsYXNzZXN9LAogICAgICAgICdEZXBsU3RhdGVJRHMnICAgICAgICAgID0+ICRERi0+e0NvbmZpZ317RGVwbG95bWVudFN0YXRlc30sCiAgICAgICAgJ1Rvb2x0aXAnICAgICAgICAgICAgICAgPT4gJycsCiAgICAgICAgJ1JlZmVyZW5jZWRPYmplY3RUeXBlJyAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIH07CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkSUQsCiAgICAgICAgTmFtZSAgICAgICA9PiAkREYtPntOYW1lfSwKICAgICAgICBMYWJlbCAgICAgID0+ICRERi0+e0xhYmVsfSwKICAgICAgICBGaWVsZE9yZGVyID0+ICRERi0+e0ZpZWxkT3JkZXJ9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJERGLT57T2JqZWN0VHlwZX0sCiAgICAgICAgVmFsaWRJRCAgICA9PiAkREYtPntWYWxpZElEfSwKICAgICAgICBDb25maWcgICAgID0+ICROZXdDb25maWcsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoICI8cmVkPlVuYWJsZSB0byBzZXQgREYgQ29uZmlnIGZvciAiIC4gJERGLT57TmFtZX0gLiAiICgkSUQpIHdpdGg6XG4gJE5ld0NvbmZpZzwvcmVkPlxuIiApOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgIG15IEBMb2NhbENvbnN0cmljdGlvbnMgPSBzcGxpdCggL1xyXG4vLCAkREYtPntDb25maWd9e0NvbnN0cmljdGlvbnN9ICk7CiAgICBmb3IgbXkgJENvbnN0cmljdGlvbiAoQExvY2FsQ29uc3RyaWN0aW9ucykgewogICAgICAgIHB1c2ggQHskQ29uc3RyaWN0aW9uc0xpc3R9LCB7CiAgICAgICAgICAgIElEICAgICAgICAgICA9PiAkSUQsCiAgICAgICAgICAgIEZpZWxkTmFtZSAgICA9PiAkREYtPntOYW1lfSwKICAgICAgICAgICAgQ29uc3RyaWN0aW9uID0+ICRDb25zdHJpY3Rpb24sCiAgICAgICAgfTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIF9Db252ZXJ0RnJvbURpc3BsYXlQYXR0ZXJuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhdHRlcm4gPSAkUGFyYW17J1BhdHRlcm4nfTsKCiAgICBpZiAoICRQYXR0ZXJuID1+IC88Q0lfQ2xhc3M+LyAmJiAkUGF0dGVybiA9fiAvPENJX05hbWU+LyApIHsKICAgICAgICByZXR1cm4gJ0NsYXNzQ29uZmlnSXRlbU5hbWUnOwogICAgfQogICAgZWxzaWYgKCAkUGF0dGVybiA9fiAvPENJX0NsYXNzPi8gJiYgJFBhdHRlcm4gPX4gLzxDSV9OdW1iZXI+LyApIHsKICAgICAgICByZXR1cm4gJ0NsYXNzQ29uZmlnSXRlbU51bWJlcic7CiAgICB9CiAgICBlbHNpZiAoICRQYXR0ZXJuID1+IC88Q0lfTmFtZT4vICkgewogICAgICAgIHJldHVybiAnQ29uZmlnSXRlbU5hbWUnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICdDb25maWdJdGVtTnVtYmVyJzsKICAgIH0KfQoKc3ViIF9VcGRhdGVEeW5hbWljRmllbGRWYWx1ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGRJRCAgICAgICAgICAgICAgICAgPSAkUGFyYW17J0lEJ307CiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgICAgPSAkUGFyYW17J0RCT2JqZWN0J307CiAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QgPSAkUGFyYW17J0R5bmFtaWNGaWVsZFZhbHVlT2JqZWN0J307CgogICAgbXkgQE9iamVjdElEczsKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICdTRUxFQ1QgRElTVElOQ1Qgb2JqZWN0X2lkIEZST00gZHluYW1pY19maWVsZF92YWx1ZSBXSEVSRSBmaWVsZF9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJEZpZWxkSUQgXSwKICAgICk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBPYmplY3RJRHMsICRSb3dbMF07CiAgICB9CgogICAgbXkgJENvdW50VmFsdWVVcGRhdGVzID0gMDsKICAgIGZvciBteSAkT2JqZWN0SUQgKEBPYmplY3RJRHMpIHsKCiAgICAgICAgbXkgJEV4aXN0aW5nVmFsdWVzID0gJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgRmllbGRJRCAgPT4gJEZpZWxkSUQsCiAgICAgICAgICAgIE9iamVjdElEID0+ICRPYmplY3RJRAogICAgICAgICk7CgogICAgICAgIG15IEBOZXdWYWx1ZXM7CiAgICAgICAgbXkgJEluZGV4VmFsdWUgPSAwOwogICAgICAgIGZvciBteSAkRXhpc3RpbmdWYWx1ZSAoICRFeGlzdGluZ1ZhbHVlcy0+QCogKSB7CiAgICAgICAgICAgIG15ICROZXdWYWx1ZSA9IHsKICAgICAgICAgICAgICAgIFZhbHVlVGV4dCA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIFZhbHVlSW50ICA9PiAkRXhpc3RpbmdWYWx1ZS0+e1ZhbHVlVGV4dH0sCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICggc2NhbGFyICRFeGlzdGluZ1ZhbHVlcy0+QCogPiAxICkgewogICAgICAgICAgICAgICAgJE5ld1ZhbHVlLT57SW5kZXhWYWx1ZX0gPSAkSW5kZXhWYWx1ZTsKICAgICAgICAgICAgICAgICRJbmRleFZhbHVlKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBATmV3VmFsdWVzLCAkTmV3VmFsdWU7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRWYWx1ZU9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgIEZpZWxkSUQgID0+ICRGaWVsZElELAogICAgICAgICAgICBPYmplY3RJRCA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgIFZhbHVlICAgID0+IFxATmV3VmFsdWVzLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+VW5hYmxlIHRvIHNldCBERiBWYWx1ZSBmb3Igb2JqZWN0ICRPYmplY3RJRCBmaWVsZCAkRmllbGRJRC48L3JlZD5cbiIpOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICAgICB9CgogICAgICAgICRDb3VudFZhbHVlVXBkYXRlcyArPSBzY2FsYXIgJEV4aXN0aW5nVmFsdWVzLT5AKjsKICAgIH0KCiAgICByZXR1cm4gJENvdW50VmFsdWVVcGRhdGVzOwp9CgpzdWIgX0dldERGVHlwZUlEcyB7CgogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkREJPYmplY3QgPSAkUGFyYW17J0RCT2JqZWN0J307CiAgICBteSAkREZUeXBlICAgPSAkUGFyYW17J0RGVHlwZSd9OwoKICAgIG15IEBSZXN1bHQ7CiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAnU0VMRUNUIGlkIEZST00gZHluYW1pY19maWVsZCBXSEVSRSBmaWVsZF90eXBlID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkREZUeXBlIF0sCiAgICApOwoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQFJlc3VsdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKc3ViIF9SZXBvcnRDb25zdHJpY3Rpb25zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnN0cmljdGlvbnNMaXN0ID0gJFBhcmFteydDb25zdHJpY3Rpb25zTGlzdCd9OwogICAgbXkgJEZpbGVOYW1lICAgICAgICAgID0gJFBhcmFteydGaWxlTmFtZSd9OwoKICAgIGlmICggQHskQ29uc3RyaWN0aW9uc0xpc3R9ICkgewogICAgICAgIG15ICRDb25zdHJpY3Rpb25zU3RyID0gImZpZWxkXHRjb25zdHJpY3Rpb25cbiI7CiAgICAgICAgZm9yIG15ICRDb25zdHJpY3Rpb24gKCBAeyRDb25zdHJpY3Rpb25zTGlzdH0gKSB7CiAgICAgICAgICAgICRDb25zdHJpY3Rpb25zU3RyIC49ICRDb25zdHJpY3Rpb24tPntGaWVsZE5hbWV9IC4gIlx0IiAuICRDb25zdHJpY3Rpb24tPntDb25zdHJpY3Rpb259IC4gIlxuIjsKICAgICAgICB9CiAgICAgICAgbXkgJENvdW50ID0gc2NhbGFyIEB7JENvbnN0cmljdGlvbnNMaXN0fTsKICAgICAgICBpZiAoJEZpbGVOYW1lKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVdyaXRlKAogICAgICAgICAgICAgICAgTG9jYXRpb24gPT4gJEZpbGVOYW1lLAogICAgICAgICAgICAgICAgQ29udGVudCAgPT4gXCRDb25zdHJpY3Rpb25zU3RyLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3Qgd3JpdGUgZmlsZS48L3JlZD5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Gb3VuZCAkQ291bnQgY29uc3RyaWN0aW9ucywgdGhleSByZXF1aXJlIG1hbnVhbCBjb25maWd1cmF0aW9uLiBQbGVhc2UgY2hlY2sgdGhlIHJlcG9ydCBmaWxlICckRmlsZU5hbWUnLjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBwcmludCAkQ29uc3RyaWN0aW9uc1N0cjsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkZvdW5kICRDb3VudCBjb25zdHJpY3Rpb25zLCB0aGV5IHJlcXVpcmUgbWFudWFsIGNvbmZpZ3VyYXRpb24uPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIk5vIGNvbnN0cmljdGlvbnMgd2VyZSBmb3VuZC5cbiIpOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/Delete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6RGVsZXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdEZWxldGUgY29uZmlnIGl0ZW1zIChhbGwsIGJ5IGNsYXNzIChhbmQgZGVwbG95bWVudCBzdGF0ZSkgb3IgYnkgbnVtYmVyKS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbCcsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBhbGwgY29uZmlnIGl0ZW1zLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRBcmd1bWVudCgKICAgICAgICBOYW1lICAgICAgICA9PiAnYWNjZXB0JywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWNjZXB0IGRlbGV0ZSBhbGwgb3IgY2FuY2VsLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8oeXxuKS9zbXgsCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnY2xhc3MnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWxldGUgYWxsIGNvbmZpZyBpdGVtcyBvZiB0aGlzIGNsYXNzLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdkZXBsb3ltZW50LXN0YXRlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbXMgd2l0aCB0aGlzIGRlcGxveW1lbnQgc3RhdGUgKE9OTFkgVE9HRVRIRVIgd2l0aCB0aGUgLS1jbGFzcyBwYXJhbWV0ZXIpLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdjb25maWdpdGVtLW51bWJlcicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBsaXN0ZWQgY29uZmlnIGl0ZW1zLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyL1xkKy9zbXgsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdhbGwtb2xkLXZlcnNpb25zJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbSB2ZXJzaW9ucyBleGNlcHQgdGhlIG5ld2VzdCB2ZXJzaW9uLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbC1idXQta2VlcC1sYXN0LXZlcnNpb25zJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbSB2ZXJzaW9ucyBidXQga2VlcCB0aGUgbGFzdCBYWCB2ZXJzaW9ucy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWxldGUgYWxsIGNvbmZpZyBpdGVtIHZlcnNpb25zIG9sZGVyIHRoYW4gWFggZGF5cy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQWxsICAgICAgICAgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwnKTsKICAgIG15ICRDbGFzcyAgICAgICAgICAgICA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CiAgICBteSBAQ29uZmlnSXRlbU51bWJlcnMgPSBAeyAkU2VsZi0+R2V0T3B0aW9uKCdjb25maWdpdGVtLW51bWJlcicpIC8vIFtdIH07CiAgICBteSAkRGVwbG95bWVudFN0YXRlICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdkZXBsb3ltZW50LXN0YXRlJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsT2xkVmVyc2lvbnMgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkLXZlcnNpb25zJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsQnV0S2VlcExhc3QgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycpICAgLy8gJyc7CiAgICBteSAkQWxsT2xkZXJUaGFuRGF5cyAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJykgLy8gJyc7CgogICAgaWYgKAogICAgICAgICEkQWxsCiAgICAgICAgJiYgISRDbGFzcwogICAgICAgICYmICFAQ29uZmlnSXRlbU51bWJlcnMKICAgICAgICAmJiAhJERlcGxveW1lbnRTdGF0ZQogICAgICAgICYmICEkQWxsT2xkVmVyc2lvbnMKICAgICAgICAmJiAhJEFsbEJ1dEtlZXBMYXN0CiAgICAgICAgJiYgISRBbGxPbGRlclRoYW5EYXlzCiAgICAgICAgKQogICAgewogICAgICAgIGRpZQogICAgICAgICAgICAiUGxlYXNlIHByb3ZpZGUgb3B0aW9uIC0tYWxsLCAtLWNsYXNzLCAtLWNvbmZpZ2l0ZW0tbnVtYmVyLCAtLWFsbC1vbGQtdmVyc2lvbnMsIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgb3IgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zLiIKICAgICAgICAgICAgLiAiIEZvciBtb3JlIGRldGFpbHMgdXNlIC0taGVscFxuIjsKICAgIH0KCiAgICBteSAkQWxsT3B0aW9uVHlwZUNvdW50ID0gMDsKICAgIGZvciBteSAkVmFsdWUgKCAkQWxsLCAkQWxsT2xkVmVyc2lvbnMsICRBbGxCdXRLZWVwTGFzdCwgJEFsbE9sZGVyVGhhbkRheXMgKSB7CiAgICAgICAgaWYgKCRWYWx1ZSkgewogICAgICAgICAgICAkQWxsT3B0aW9uVHlwZUNvdW50Kys7CiAgICAgICAgfQogICAgfQogICAgaWYgKCAkQWxsT3B0aW9uVHlwZUNvdW50ID4gMSApIHsKICAgICAgICBkaWUKICAgICAgICAgICAgIlRoZSBvcHRpb25zIC0tYWxsLCAtLWFsbC1vbGQtdmVyc2lvbnMsIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgYW5kIC0tYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyBjYW4gbm90IGJlIG1peGVkLiBcbkZvciBtb3JlIGRldGFpbHMgdXNlIC0taGVscFxuIjsKICAgIH0KICAgIGlmICggJEFsbE9wdGlvblR5cGVDb3VudCAmJiAoICRDbGFzcyB8fCBAQ29uZmlnSXRlbU51bWJlcnMgfHwgJERlcGxveW1lbnRTdGF0ZSApICkgewogICAgICAgIGRpZQogICAgICAgICAgICAiVGhlIG9wdGlvbnMgLS1hbGwsIC0tYWxsLW9sZC12ZXJzaW9ucywgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyBhbmQgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIGNhbiBub3QgdXNlZCB0b2dldGhlciB3aXRoIGFueSBvdGhlciBvcHRpb24uIFxuRm9yIG1vcmUgZGV0YWlscyB1c2UgLS1oZWxwXG4iOwogICAgfQoKICAgIGlmICggJERlcGxveW1lbnRTdGF0ZSAmJiAhJENsYXNzICkgewogICAgICAgIGRpZQogICAgICAgICAgICAiRGVsZXRpbmcgYWxsIGNvbmZpZyBpdGVtcyB3aXRoIHRoaXMgZGVwbG95bWVudCBzdGF0ZSBpcyBwb3NpYmxlIE9OTFkgVE9HRVRIRVIgd2l0aCB0aGUgLS1jbGFzcyBwYXJhbWV0ZXIuIFxuRm9yIG1vcmUgZGV0YWlscyB1c2UgLS1oZWxwXG4iOwogICAgfQoKICAgIGlmICggQENvbmZpZ0l0ZW1OdW1iZXJzICYmICggJENsYXNzIHx8ICREZXBsb3ltZW50U3RhdGUgKSApIHsKICAgICAgICBkaWUKICAgICAgICAgICAgIlRoZSBvcHRpb24gLS1jb25maWdpdGVtLW51bWJlciBjYW4gbm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgLS1jbGFzcyBvciB0aGUgLS1kZXBsb3ltZW50LXN0YXRlIHBhcmFtZXRlci4gXG5Gb3IgbW9yZSBkZXRhaWxzIHVzZSAtLWhlbHBcbiI7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIGNvbmZpZyBpdGVtcy4uLjwveWVsbG93PlxuXG4iKTsKCiAgICBteSAkQWxsICAgICAgICAgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwnKTsKICAgIG15ICRDbGFzcyAgICAgICAgICAgICA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CiAgICBteSBAQ29uZmlnSXRlbU51bWJlcnMgPSBAeyAkU2VsZi0+R2V0T3B0aW9uKCdjb25maWdpdGVtLW51bWJlcicpIC8vIFtdIH07CiAgICBteSAkRGVwbG95bWVudFN0YXRlICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdkZXBsb3ltZW50LXN0YXRlJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsT2xkVmVyc2lvbnMgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkLXZlcnNpb25zJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsQnV0S2VlcExhc3QgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycpICAgLy8gJyc7CiAgICBteSAkQWxsT2xkZXJUaGFuRGF5cyAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJykgLy8gJyc7CgogICAgIyBkZWxldGUgYWxsIGNvbmZpZyBpdGVtcwogICAgaWYgKCRBbGwpIHsKCiAgICAgICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMKICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKCBSZXN1bHQgPT4gJ0FSUkFZJyApOwoKICAgICAgICAjIGdldCBudW1iZXIgb2YgY29uZmlnIGl0ZW1zCiAgICAgICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIGFueSBDSSB0byBkZWxldGUKICAgICAgICBpZiAoJENJQ291bnQpIHsKCiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5BcmUgeW91IHN1cmUgdGhhdCB5b3Ugd2FudCB0byBkZWxldGUgQUxMICRDSUNvdW50IGNvbmZpZyBpdGVtcz88L3llbGxvdz5cbiIpOwogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VGhpcyBpcyBpcnJldm9jYWJsZS4gW3kvbl0gPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgbXkgJENvbmZpcm1hdGlvbiA9ICRTZWxmLT5HZXRBcmd1bWVudCgnYWNjZXB0Jyk7CiAgICAgICAgICAgIGNob21wKCAkQ29uZmlybWF0aW9uID0gbGMgPFNURElOPiApIGlmICFkZWZpbmVkICRDb25maXJtYXRpb247CgogICAgICAgICAgICAjIGlmIHRoZSB1c2VyIGNvbmZpcm1zIHRoZSBkZWxldGlvbgogICAgICAgICAgICBpZiAoICRDb25maXJtYXRpb24gZXEgJ3knICkgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtcwogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RGVsZXRpbmcgYWxsIGNvbmZpZyBpdGVtcy4uLjwvZ3JlZW4+XG4iKTsKICAgICAgICAgICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtcyggQ29uZmlnSXRlbUlEcyA9PiBcQENvbmZpZ0l0ZW1JRHMgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Db21tYW5kIGRlbGV0ZSB3YXMgY2FuY2VsZWQ8L3llbGxvdz5cbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5UaGVyZSBhcmUgTk8gY29uZmlnIGl0ZW1zIHRvIGRlbGV0ZS48L3llbGxvdz5cbiIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBsaXN0ZWQgY29uZmlnIGl0ZW1zCiAgICBlbHNpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggXEBDb25maWdJdGVtTnVtYmVycyApICkgewoKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY29uZmlnIGl0ZW0gaWQKICAgICAgICAgICAgbXkgJElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJRCkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJElEOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlVuYWJsZSB0byBmaW5kIGNvbmZpZyBpdGVtICRDb25maWdJdGVtTnVtYmVyLjwveWVsbG93PlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtcyAoaWYgYW55IHZhbGlkIG51bWJlciB3YXMgZ2l2ZW4pCiAgICAgICAgaWYgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5EZWxldGluZyBzcGVjaWZpZWQgY29uZmlnIGl0ZW1zLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1zKCBDb25maWdJdGVtSURzID0+IFxAQ29uZmlnSXRlbUlEcyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBjb25maWcgaXRlbXMgdGhhdCBiZWxvbmcgdG8gdGhlIGNsYXNzCiAgICBlbHNpZiAoJENsYXNzKSB7CgogICAgICAgIG15IEBDb25maWdJdGVtSURzOwoKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIGludmVydCB0aGUgaGFzaCB0byBoYXZlIHRoZSBjbGFzc2VzIG5hbWVzIGFzIGtleXMKICAgICAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwoKICAgICAgICBpZiAoICRDbGFzc05hbWUySUR7JENsYXNzfSApIHsKICAgICAgICAgICAgbXkgJElEID0gJENsYXNzTmFtZTJJRHskQ2xhc3N9OwoKICAgICAgICAgICAgIyBkZWZpbmUgdGhlIHNlYXJjaCBwYXJhbSBmb3IgdGhlIGNsYXNzIHNlYXJjaAogICAgICAgICAgICBteSAlU2VhcmNoUGFyYW0gPSAoCiAgICAgICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyRJRF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFsc28gYSBkZXBsb3ltZW50IHN0YXRlIGlzIGdpdmVuCiAgICAgICAgICAgIGlmICgkRGVwbG95bWVudFN0YXRlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgICAgICBteSAkRGVwbG95bWVudFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBpbnZlcnQgdGhlIGhhc2ggdG8gaGF2ZSB0aGUgZGVwbG95bWVudCBzdGF0ZSBuYW1lcyBhcyBrZXlzCiAgICAgICAgICAgICAgICBteSAlRGVwbG95bWVudFN0YXRlMklEID0gcmV2ZXJzZSAleyREZXBsb3ltZW50U3RhdGVMaXN0fTsKCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBkZXBsb3ltZW50IHN0YXRlIGlzIHZhbGlkCiAgICAgICAgICAgICAgICBpZiAoICREZXBsb3ltZW50U3RhdGUySUR7JERlcGxveW1lbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgICAgICAgICAgbXkgJElEID0gJERlcGxveW1lbnRTdGF0ZTJJRHskRGVwbG95bWVudFN0YXRlfTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgc2VhcmNoIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXtEZXBsU3RhdGVJRHN9ID0gWyRJRF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiVW5hYmxlIHRvIGZpbmQgZGVwbG95bWVudCBzdGF0ZSAkRGVwbG95bWVudFN0YXRlLiIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBpZHMgb2YgdGhpcyBjbGFzcyAoYW5kIG1heWJlIGRlcGxveW1lbnQgc3RhdGUpIGNvbmZpZyBpdGVtcwogICAgICAgICAgICBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKCVTZWFyY2hQYXJhbSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiVW5hYmxlIHRvIGZpbmQgY2xhc3MgbmFtZSAkQ2xhc3MuIik7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgY29uZmlnIGl0ZW1zIChpZiBhbnkgdmFsaWQgbnVtYmVyIHdhcyBnaXZlbikKICAgICAgICBpZiAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIGNvbmZpZyBpdGVtcyB0aGF0IGJlbG9uZyB0byB0aGUgY2xhc3MgJENsYXNzLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1zKCBDb25maWdJdGVtSURzID0+IFxAQ29uZmlnSXRlbUlEcyApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlRoZXJlIGFyZSBubyBjb25maWcgaXRlbXMgdGhhdCBiZWxvbmcgdG8gdGhlIGNsYXNzICRDbGFzcy4uLjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIHZlcnNpb25zIG9sZGVyIHRoYW4geHggZGF5cyBmcm9tIGFsbCBjb25maWcgaXRlbXMKICAgIGVsc2lmICgkQWxsT2xkZXJUaGFuRGF5cykgewoKICAgICAgICBteSAkT2xkZXJEYXRlRFRPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAkT2xkZXJEYXRlRFRPYmplY3QtPlN1YnRyYWN0KAogICAgICAgICAgICBEYXlzID0+ICRBbGxPbGRlclRoYW5EYXlzLAogICAgICAgICk7CgogICAgICAgIG15ICRWZXJzaW9uc09sZGVyRGF0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgKICAgICAgICAgICAgT2xkZXJEYXRlID0+ICRPbGRlckRhdGVEVE9iamVjdC0+VG9TdHJpbmcoKSwKICAgICAgICApOwoKICAgICAgICAjIFdlIG5lZWQgdG8gZ2V0IGFsbCB2ZXJzaW9ucyB0byBtYWtlIHN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgdmVyc2lvbiByZW1haW5zCiAgICAgICAgIyAtPiBpZiBvbmUgdmVyc2lvbiBvZiBhIGNvbmZpZ2l0ZW0gaXMgeW91bmdlciB0aGFuIHRoZSBhbW91bnQgb2YgZGF5cywKICAgICAgICAjICAgIHdlIGNhbiBkZWxldGUgYWxsIFZlcnNpb25zIHJlY2VpdmVkIGJ5IHRoZSAiT2xkZXJEYXRlIiBxdWVyeQogICAgICAgICMgLT4gaWYgbm8gdmVyc2lvbiBpcyB5b3VuZ2VyIHRoYW4gdGhlIGFtb3VudCBvZiBkYXlzCiAgICAgICAgIyAgICB3ZSBoYXZlIHRvIGtlZXAgb25lIHZlcnNpb24gb2YgdGhlICJPbGRlckRhdGUiIHF1ZXJ5IHJlc3VsdAogICAgICAgIG15ICRWZXJzaW9uc0FsbCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgpOwoKICAgICAgICBteSBAVmVyc2lvbnNUb0RlbGV0ZTsKCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7JFZlcnNpb25zT2xkZXJEYXRlfSApIHsKCiAgICAgICAgICAgICMgbnVtYmVyIG9mIGZvdW5kIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgQ0kKICAgICAgICAgICAgbXkgJE51bWJlck9mT2xkZXJWZXJzaW9ucyA9IHNjYWxhciBrZXlzICV7ICRWZXJzaW9uc09sZGVyRGF0ZS0+eyRDb25maWdJdGVtSUR9IH07CgogICAgICAgICAgICAjIG51bWJlciBvZiBhbGwgdmVyc2lvbnMgb2YgdGhpcyBDSQogICAgICAgICAgICBteSAkTnVtYmVyT2ZBbGxWZXJzaW9ucyA9IHNjYWxhciBrZXlzICV7ICRWZXJzaW9uc0FsbC0+eyRDb25maWdJdGVtSUR9IH07CgogICAgICAgICAgICAjIG5leHQgaWYgdGhlcmUgYXJlIG5vIG9sZGVyIHZlcnNpb25zCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkTnVtYmVyT2ZPbGRlclZlcnNpb25zOwoKICAgICAgICAgICAgIyBuZXh0IGlmIHRoZXJlIGlzIG9ubHkgb25lIG9yIHplcm8gb2YgYWxsIHZlcnNpb25zCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICROdW1iZXJPZkFsbFZlcnNpb25zIDw9IDE7CgogICAgICAgICAgICAjIGlmIHRoZSBhbW91bnQgb2YgVmVyc2lvbnMgd2UgaGF2ZSB0byBkZWxldGUKICAgICAgICAgICAgIyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBhbW91bnQgb2YgQWxsVmVyc2lvbnMKICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIGtlZXAgdGhlIGxhc3Qgb25lCiAgICAgICAgICAgICMgaW4gb3JkZXIgdG8ga2VlcCB0aGUgc3lzdGVtIHdvcmtpbmcKICAgICAgICAgICAgIwogICAgICAgICAgICAjIC0+IHNvIGxldCdzIHN0YXJ0IGNvdW50aW5nIGF0ICIxIiBpbnN0ZWFkIG9mICIwIgogICAgICAgICAgICAjIGluIG9yZGVyIHRvIHN0b3AgZGVsZXRpbmcgYmVmb3JlIHdlIHJlYWNoIHRoZSBuZXdlc3QgdmVyc2lvbgogICAgICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgICAgICBpZiAoICROdW1iZXJPZk9sZGVyVmVyc2lvbnMgPT0gJE51bWJlck9mQWxsVmVyc2lvbnMgKSB7CiAgICAgICAgICAgICAgICAkQ291bnQgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IHRoZSB2ZXJzaW9ucyBhcmUgbnVtZXJpY2FsbHkgc29ydGVkCiAgICAgICAgICAgIGZvciBteSAkVmVyc2lvbiAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7ICRWZXJzaW9uc09sZGVyRGF0ZS0+eyRDb25maWdJdGVtSUR9IH0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkQ291bnQgPCAkTnVtYmVyT2ZPbGRlclZlcnNpb25zICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFZlcnNpb25zVG9EZWxldGUsICRWZXJzaW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtVmVyc2lvbnMoCiAgICAgICAgICAgIFZlcnNpb25JRHMgPT4gXEBWZXJzaW9uc1RvRGVsZXRlLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgZXhjZXB0IHRoZSBuZXdlc3QgdmVyc2lvbgogICAgZWxzaWYgKCRBbGxPbGRWZXJzaW9ucykgewoKICAgICAgICBteSAkVmVyc2lvbnNBbGwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkxpc3RBbGwoKTsKCiAgICAgICAgbXkgQFZlcnNpb25zVG9EZWxldGU7CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkVmVyc2lvbnNBbGwpICkgewoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyRWZXJzaW9uc0FsbH0gKSB7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSApOwoKICAgICAgICAgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgdGhlIHZlcnNpb25zIGFyZSBudW1lcmljYWxseSBzb3J0ZWQKICAgICAgICAgICAgICAgIG15IEBSZWR1Y2VkVmVyc2lvbnMgPSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSB9OwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBsYXN0IChuZXdlc3QpIHZlcnNpb24KICAgICAgICAgICAgICAgIHBvcCBAUmVkdWNlZFZlcnNpb25zOwoKICAgICAgICAgICAgICAgIHB1c2ggQFZlcnNpb25zVG9EZWxldGUsIEBSZWR1Y2VkVmVyc2lvbnM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtVmVyc2lvbnMoCiAgICAgICAgICAgIFZlcnNpb25JRHMgPT4gXEBWZXJzaW9uc1RvRGVsZXRlLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgYnV0IGtlZXAgdGhlIGxhc3QgWFggdmVyc2lvbnMKICAgIGVsc2lmICgkQWxsQnV0S2VlcExhc3QpIHsKCiAgICAgICAgbXkgJFZlcnNpb25zQWxsID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25MaXN0QWxsKCk7CgogICAgICAgIG15IEBWZXJzaW9uc1RvRGVsZXRlOwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRWZXJzaW9uc0FsbCkgKSB7CgogICAgICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7JFZlcnNpb25zQWxsfSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRWZXJzaW9uc0FsbC0+eyRDb25maWdJdGVtSUR9ICk7CgogICAgICAgICAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGUgdmVyc2lvbnMgYXJlIG51bWVyaWNhbGx5IHJldmVyc2Ugc29ydGVkCiAgICAgICAgICAgICAgICBteSBAUmVkdWNlZFZlcnNpb25zID0gcmV2ZXJzZSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSB9OwoKICAgICAgICAgICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgICAgICAgICBAUmVkdWNlZFZlcnNpb25zID0gZ3JlcCB7ICRDb3VudCsrOyAkQ291bnQgPiAkQWxsQnV0S2VlcExhc3QgfSBAUmVkdWNlZFZlcnNpb25zOwogICAgICAgICAgICAgICAgcHVzaCBAVmVyc2lvbnNUb0RlbGV0ZSwgQFJlZHVjZWRWZXJzaW9uczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1WZXJzaW9ucygKICAgICAgICAgICAgVmVyc2lvbklEcyA9PiBcQFZlcnNpb25zVG9EZWxldGUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIk5vIGNvbmZpZyBpdGVtIGZvciBkZWxldGUuIik7CiAgICB9CgogICAgIyBzaG93IHN1Y2Nlc3NmdWxsIG91dHB1dAogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKc3ViIERlbGV0ZUNvbmZpZ0l0ZW1zIHsKCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWxldGVkQ0k7CgogICAgIyBkZWxldGUgc3BlY2lmaWVkIGNvbmZpZyBpdGVtcwogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICBteSAkVHJ1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkVHJ1ZSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlVuYWJsZSB0byBkZWxldGUgY29uZmlnIGl0ZW0gd2l0aCBpZCAkQ29uZmlnSXRlbUlELiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJERlbGV0ZWRDSSsrOwogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5EZWxldGVkICREZWxldGVkQ0kgY29uZmlnIGl0ZW0ocykuPC9ncmVlbj5cblxuIik7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBEZWxldGVDb25maWdJdGVtVmVyc2lvbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWZXJzaW9uSURzfSApOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRlbGV0aW5nIGNvbmZpZyBpdGVtIHZlcnNpb25zLjwvZ3JlZW4+XG5cbiIpOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uRGVsZXRlKAogICAgICAgIFZlcnNpb25JRHMgPT4gJFBhcmFte1ZlcnNpb25JRHN9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/DumpGraph.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkR1bXBHcmFwaDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gcXcoCiAgICBLZXJuZWw6OlN5c3RlbTo6REIKICAgIEtlcm5lbDo6U3lzdGVtOjpNYWluCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdEdW1wIHRoZSBncmFwaCBvZiBjb25maWcgaXRlbXMgYXMgU1ZHIHRvIHRoZSBmaWxlIE9UT0JPX0lUU01fQ29uZmlnX0l0ZW1zLnN2Zy4nKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIENoZWNrIHdoZXRoZXIgdGhlIG9wdGlvbmFsIG1vZHVsZSBHcmFwaFZpejIgaXMgaW5zdGFsbGVkCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBpZiAoICEkTWFpbk9iamVjdC0+UmVxdWlyZSgnR3JhcGhWaXoyJykgKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlRoZSBvcHRpb25hbCBQZXJsIG1vZHVsZSAnR3JhcGhWaXoyJyBpcyBub3QgaW5zdGFsbGVkIik7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcjsKICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRSb3dzICAgICA9ICREQk9iamVjdC0+U2VsZWN0QWxsKAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKU0VMRUNUIHNvdXJjZV9jb25maWdpdGVtX2lkLCBzb3VyY2VfY29uZmlnaXRlbV92ZXJzaW9uX2lkLCB0YXJnZXRfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCxsaW5rX3R5cGVfaWQKICBGUk9NIGNvbmZpZ2l0ZW1fbGluawpFTkRfU1FMCiAgICApOwoKICAgIG15ICRHcmFwaCA9IEdyYXBoVml6Mi0+bmV3KAogICAgICAgIGVkZ2UgICA9PiB7IGNvbG9yICAgID0+ICdncmV5JyB9LAogICAgICAgIGdsb2JhbCA9PiB7IGRpcmVjdGVkID0+IDEgfSwKICAgICAgICBncmFwaCAgPT4gewogICAgICAgICAgICBsYWJlbCAgID0+ICdPVE9CTyBJVFNNIENvbmZpZyBJdGVtcycsCiAgICAgICAgICAgIHJhbmtkaXIgPT4gJ1RCJwogICAgICAgIH0sCiAgICAgICAgbm9kZSA9PiB7CiAgICAgICAgICAgIHNoYXBlID0+ICdvdmFsJywKICAgICAgICAgICAgY29sb3IgPT4gJ2JsdWUnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgbG9vayBvdmVyIHRoZSBlZGdlcywgYWRkIG5vZGVzLCBhZGQgdGhlIGVkZ2VzCiAgICBteSAlTm9kZVNlZW47CiAgICBmb3IgbXkgJFJvdyAoICRSb3dzLT5AKiApIHsKICAgICAgICBteSAoICRTb3VyY2VDb25maWdJdGVtSUQsICRTb3VyY2VWZXJzaW9uSUQsICRUYXJnZXRDb25maWdJdGVtSUQsICRUYXJnZXRWZXJzaW9uSUQsICRMaW5rVHlwZUlEICkgPSAkUm93LT5AKjsKCiAgICAgICAgbXkgJFNvdXJjZU5hbWUgPSAkU291cmNlQ29uZmlnSXRlbUlEID8gIkNJICRTb3VyY2VDb25maWdJdGVtSUQiIDogIlZlcnNpb24gJFNvdXJjZVZlcnNpb25JRCI7CiAgICAgICAgaWYgKCAhJE5vZGVTZWVueyRTb3VyY2VOYW1lfSsrICkgewogICAgICAgICAgICBteSAkU2hhcGUgPSAkU291cmNlQ29uZmlnSXRlbUlEID8gJ2NpcmNsZScgOiAnZGlhbW9uZCc7CiAgICAgICAgICAgICRHcmFwaC0+YWRkX25vZGUoCiAgICAgICAgICAgICAgICBuYW1lICA9PiAkU291cmNlTmFtZSwKICAgICAgICAgICAgICAgIHNoYXBlID0+ICRTaGFwZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRUYXJnZXROYW1lID0gJFRhcmdldENvbmZpZ0l0ZW1JRCA/ICJDSSAkVGFyZ2V0Q29uZmlnSXRlbUlEIiA6ICJWZXJzaW9uICRUYXJnZXRWZXJzaW9uSUQiOwogICAgICAgIGlmICggISROb2RlU2VlbnskVGFyZ2V0TmFtZX0rKyApIHsKICAgICAgICAgICAgbXkgJFNoYXBlID0gJFRhcmdldENvbmZpZ0l0ZW1JRCA/ICdjaXJjbGUnIDogJ2RpYW1vbmQnOwogICAgICAgICAgICAkR3JhcGgtPmFkZF9ub2RlKAogICAgICAgICAgICAgICAgbmFtZSAgPT4gJFRhcmdldE5hbWUsCiAgICAgICAgICAgICAgICBzaGFwZSA9PiAkU2hhcGUKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRHcmFwaC0+YWRkX2VkZ2UoCiAgICAgICAgICAgIGZyb20gID0+ICRTb3VyY2VOYW1lLAogICAgICAgICAgICB0byAgICA9PiAkVGFyZ2V0TmFtZSwKICAgICAgICAgICAgbGFiZWwgPT4gIkxpbmsgVHlwZSAkTGlua1R5cGVJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBUT0RPOiBjbHVzdGVyIGFuZCBvcmRlciB0aGUgdmVyc2lvbnMgb2YgYSBDSQogICAgICAgICMkR3JhcGgtPnB1c2hfc3ViZ3JhcGgoCiAgICAgICAgIyAgICBuYW1lICA9PiAnY2x1c3Rlcl8xJywKICAgICAgICAjICAgIGdyYXBoID0+IHtsYWJlbCA9PiAnQ2hpbGQnfSwKICAgICAgICAjICAgIG5vZGUgID0+IHtjb2xvciA9PiAnbWFnZW50YScsIHNoYXBlID0+ICdkaWFtb25kJ30sCiAgICAgICAgIyk7CiAgICAgICAgIyAkR3JhcGgtPmFkZF9lZGdlKGZyb20gPT4gJ0NoYWRzdG9uZScsIHRvID0+ICdXYXZlcmxleScpOwogICAgICAgICMgJEdyYXBoLT5wb3Bfc3ViZ3JhcGg7CiAgICB9CgogICAgbXkgJE91dHB1dEZpbGUgPSAnT1RPQk9fSVRTTV9Db25maWdfSXRlbXMuc3ZnJzsKICAgICRHcmFwaC0+cnVuKCBvdXRwdXRfZmlsZSA9PiAkT3V0cHV0RmlsZSApOwoKICAgICRTZWxmLT5QcmludCgiRHVtcCBncmFwaCBpbiAkT3V0cHV0RmlsZVxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ListDuplicates.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ0xpc3QgQ29uZmlnSXRlbXMgd2hpY2ggaGF2ZSBhIG5vbi11bmlxdWUgbmFtZS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2NsYXNzJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQ2hlY2sgb25seSBjb25maWcgaXRlbXMgb2YgdGhpcyBjbGFzcy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnc2NvcGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWZpbmUgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayAoZ2xvYmFsfGNsYXNzKSIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLyhnbG9iYWx8Y2xhc3MpL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdhbGwtc3RhdGVzJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWxzbyBjaGVjayBjb25maWcgaXRlbXMgaW4gbm9uLXByb2R1Y3RpdmUgc3RhdGVzLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjbGFzcyBhcmd1bWVudAogICAgbXkgJENsYXNzID0gJFNlbGYtPkdldE9wdGlvbignY2xhc3MnKSAvLyAnJzsKCiAgICBpZiAoJENsYXNzKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgICMgaW52ZXJ0IHRoZSBoYXNoIHRvIGhhdmUgdGhlIGNsYXNzZXMnIG5hbWVzIGFzIGtleXMKICAgICAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAkQ2xhc3NMaXN0LT4lKjsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGlzIGNsYXNzIGV4aXN0cwogICAgICAgIGlmICggJENsYXNzTmFtZTJJRHskQ2xhc3N9ICkgewogICAgICAgICAgICBteSAkSUQgPSAkQ2xhc3NOYW1lMklEeyRDbGFzc307CgogICAgICAgICAgICAjIGdldCBpZHMgb2YgdGhpcyBjbGFzcycgY29uZmlnIGl0ZW1zCiAgICAgICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT57Q2xhc3NJRHN9ID0gWyRJRF07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBkaWUgIkNsYXNzICRDbGFzcyBkb2VzIG5vdCBleGlzdC4uLlxuIjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93Pkxpc3RpbmcgZHVwbGljYXRlcyBvZiBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cblxuIik7CgogICAgaWYgKCAhJFNlbGYtPkdldE9wdGlvbignYWxsLXN0YXRlcycpICkgewoKICAgICAgICAjIExpbWl0IHRoZSBjaGVja2VkIGNvbmZpZyBpdGVtcyBieSBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAncHJlcHJvZHVjdGl2ZScsICdwcm9kdWN0aXZlJyBdLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT57RGVwbFN0YXRlSURzfSA9IFsga2V5cyAkU3RhdGVMaXN0LT4lKiBdOwogICAgfQoKICAgICMgZ2V0IElUU01Db25maWdJdGVtIG9iamVjdAogICAgbXkgJElUU01Db25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMKICAgIG15IEBDb25maWdJdGVtSURzID0gJElUU01Db25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT4lKiwKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICk7CgogICAgIyBnZXQgbnVtYmVyIG9mIGNvbmZpZyBpdGVtcwogICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgIyBnZXQgY2xhc3MgYXJndW1lbnQKICAgIG15ICRDbGFzcyA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CgogICAgIyBpZiB0aGVyZSBhcmUgYW55IENJIHRvIGNoZWNrCiAgICBpZiAoJENJQ291bnQpIHsKCiAgICAgICAgIyBpZiB0aGUgc2NvcGUgd2FzIGV4cGxpY2l0ZWx5IGRlZmluZWQsIHNldCBpdCwgb3RoZXJ3aXNlIHRoaXMgc2NyaXB0IHdpbGwgZmFsbCBiYWNrIHRvIHRoZQogICAgICAgICMgdmFsdWUgc2V0IGluIFN5c0NvbmZpZwogICAgICAgIG15ICRTY29wZSA9ICRTZWxmLT5HZXRPcHRpb24oJ3Njb3BlJyk7CiAgICAgICAgaWYgKCRTY29wZSkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5TZXQoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkU2NvcGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJENsYXNzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5DaGVja2luZyBjb25maWcgaXRlbXMgb2YgY2xhc3MgJENsYXNzLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5DaGVja2luZyBhbGwgY29uZmlnIGl0ZW1zLi4uXG48L3llbGxvdz5cbiIpOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPlByaW50KCAiPGdyZWVuPiIgLiAoICc9JyB4IDY5ICkgLiAiPC9ncmVlbj5cbiIgKTsKCiAgICAgICAgbXkgJER1cGxpY2F0ZXNGb3VuZCA9IDA7CgogICAgICAgICMgY2hlY2sgY29uZmlnIGl0ZW1zCiAgICAgICAgQ09ORklHX0lURU1fSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBjb25maWcgaXRlbQogICAgICAgICAgICBteSAkVmVyc2lvbiA9ICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRWZXJzaW9uOwoKICAgICAgICAgICAgaWYgKCAhJFZlcnNpb24tPntOYW1lfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Ta2lwcGluZyBDb25maWdJdGVtICRDb25maWdJdGVtSUQgYXMgaXQgZG9lc24ndCBoYXZlIGEgbmFtZS5cbjwvcmVkPlxuIik7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdfSVRFTV9JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRWZXJzaW9uLT57Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb24tPntOYW1lfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJER1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICREdXBsaWNhdGVzRm91bmQgPSAxOwoKICAgICAgICAgICAgICAgIG15IEBEdXBsaWNhdGVEYXRhID0KICAgICAgICAgICAgICAgICAgICBtYXAgeyAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoIENvbmZpZ0l0ZW1JRCA9PiAkXyApIH0KICAgICAgICAgICAgICAgICAgICAkRHVwbGljYXRlcy0+QCo7CgogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgICAgICI8eWVsbG93PkNvbmZpZ0l0ZW0gJFZlcnNpb24tPntOdW1iZXJ9IChOYW1lOiAkVmVyc2lvbi0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiJFZlcnNpb24tPntDb25maWdJdGVtSUR9KSBoYXMgdGhlIGZvbGxvd2luZyBkdXBsaWNhdGVzOjwveWVsbG93PlxuIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGxpc3QgYWxsIHRoZSBkZXRhaWxzIG9mIHRoZSBkdXBsaWNhdGVzCiAgICAgICAgICAgICAgICBmb3IgbXkgJER1cGxpY2F0ZVZlcnNpb24gKEBEdXBsaWNhdGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgICAgICAgICAiXG48Z3JlZW4+XHQgKiAkRHVwbGljYXRlVmVyc2lvbi0+e051bWJlcn0gKENvbmZpZ0l0ZW1JRDogJER1cGxpY2F0ZVZlcnNpb24tPntDb25maWdJdGVtSUR9KTwvZ3JlZW4+XG4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJER1cGxpY2F0ZXNGb3VuZCkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5GaW5pc2hlZCBjaGVja2luZyBmb3IgZHVwbGljYXRlIG5hbWVzLlxuPC9ncmVlbj5cbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93Pk5vIGR1cGxpY2F0ZSBuYW1lcyBmb3VuZC5cbjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlRoZXJlIGFyZSBOTyBjb25maWcgaXRlbXMgdG8gY2hlY2suXG48L3llbGxvdz5cbiIpOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUuPC9ncmVlbj5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/UpgradeTo11.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTE7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBQYXRoOjpDbGFzcyBxdyhkaXIpOwp1c2UgTGlzdDo6VXRpbCAgcXcoYW55IHVuaXEpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpGb3JlYWNoVG9Gb3IpCgojIEluZm9ybSB0aGUgb2JqZWN0IG1hbmFnZXIgYWJvdXQgdGhlIGhhcmQgZGVwZW5kZW5jaWVzLgojIFRoaXMgbW9kdWxlIG11c3QgYmUgZGlzY2FyZGVkIHdoZW4gb25lIG9mIHRoZSBoYXJkIGRlcGVuZGVuY2llcyBoYXMgYmVlbiBkaXNjYXJkZWQuCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpYTUwnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OlVwZ3JhZGVUbzExIC0gc3VwcG9ydCBmb3IgdXBncmFkaW5nIHRoZSBDTURCCgo9aGVhZDEgREVTQ1JJUFRJT04KCk1vZHVsZSBmb3IgdGhlIGNvbnNvbGUgY29tbWFuZCBDPEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpVcGdyYWRlVG8xMT4uCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbigKICAgICAgICAnVXBncmFkZSB0aGUgY29tcGxldGUgQ01EQiBmcm9tIE9UT0JPIDEwIHRvIE9UT0JPIDExLiBBbGwgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgd2lsbCBiZSBjaGFuZ2VkLCBmb3IgZWFjaCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgYSBkeW5hbWljIGZpZWxkIHdpbGwgYmUgcHJlcGFyZWQgYW5kIHRoZSBkYXRhIHdpbGwgYmUgbWlncmF0ZWQuJwogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3VzZS1kZWZhdWx0cycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIk1ha2UgdGhlIHNjcmlwdCBub24gaW50ZXJhY3RpdmUuIEFsd2F5cyB1c2UgZGVmYXVsdCBzdWdnZXN0aW9ucyBhbmQgZG8gbm90IGdpdmUgdGhlIGNoYW5jZSB0byBjdXN0b21pemUgdGhlIHNjaGVtYXRhLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3N0YXJ0LWF0JywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3RhcnQgYXQgYSBjZXJ0YWluIHN0ZXAuIFZhbGlkIHZhbHVlcyBhcmU6IDAgLSBSZXN0YXJ0IGNvbXBsZXRlbHk7IDEgLSIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyL15bMC00XSQvLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3RtcGRpcicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlByb3ZpZGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHN0b3JlIG1hcHBpbmdzIGFuZCBzY2hlbWF0YS4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICduby1uYW1lc3BhY2UnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJQcm92aWRlIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlcyB3aGljaCBhcmUgdG8gYmUgZ2VuZXJhdGVkIHdpdGhvdXQgbmFtZXNwYWNlLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4vLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgRGVjbGFyYXRpb24gb2YgcHJvY2Vzc2luZyBzdGVwcy4KICAgICMgVGhpcyBhbGxvd3MgcGlja2luZyB1cCBwcm9jZXNzaW5nIGF0IGEgc3BlY2lmaWMgc3RlcC4gT24gdGhlIGNvbW1hbmQgbGluZQogICAgIyB0aGUgc3RlcHMgYXJlIG51bWJlcmVkLCBzdGFydGluZyBhdCAxLgogICAgbXkgQFN0ZXBEZWNsYXJhdGlvbnMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdQcmVwYXJlIEF0dHJpYnV0ZSBNYXBwaW5nJywKICAgICAgICAgICAgSGFuZGxlciA9PiBcJl9QcmVwYXJlQXR0cmlidXRlTWFwcGluZywKICAgICAgICB9LAoKICAgICAgICAjICdQcmVwYXJlIER5bmFtaWNGaWVsZHMnLCAgIyBuZWNlc3Nhcnk/IHdoYXQgZG8gd2Ugd2FudCB0byBtYWtlIGNvbmZpZ3VyYWJsZSBiZXNpZGVzIHRoZSBuYW1lPyAoc3RlcCAwKQogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICA9PiAnUHJlcGFyZSBEZWZpbml0aW9ucycsCiAgICAgICAgICAgIEhhbmRsZXIgPT4gXCZfUHJlcGFyZURlZmluaXRpb25zLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdNaWdyYXRlIERlZmluaXRpb25zJywKICAgICAgICAgICAgSGFuZGxlciA9PiBcJl9NaWdyYXRlRGVmaW5pdGlvbnMsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgPT4gJ01pZ3JhdGUgQXR0cmlidXRlIERhdGEnLAogICAgICAgICAgICBIYW5kbGVyID0+IFwmX01pZ3JhdGVBdHRyaWJ1dGVEYXRhLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdEZWxldGUgTGVnYWN5IERhdGEnLAogICAgICAgICAgICBIYW5kbGVyID0+IFwmX0RlbGV0ZUxlZ2FjeURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFRlbXBEaXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RlbXBEaXInKTsKCiAgICAkU2VsZi0+e1dvcmtpbmdEaXJ9ICA9ICRTZWxmLT5HZXRPcHRpb24oJ3RtcGRpcicpIHx8ICIkVGVtcERpci9DTURCVXBncmFkZVRvMTFTY2hlbWF0YSI7CiAgICAkU2VsZi0+e1VzZURlZmF1bHRzfSA9ICRTZWxmLT5HZXRPcHRpb24oJ3VzZS1kZWZhdWx0cycpOwogICAgJFNlbGYtPntOb05hbWVzcGFjZX0gPSAkU2VsZi0+R2V0T3B0aW9uKCduby1uYW1lc3BhY2UnKTsKICAgIG15ICRTdGFydEF0ID0gJFNlbGYtPkdldE9wdGlvbignc3RhcnQtYXQnKSAvLyAkU2VsZi0+X0dldEN1cnJlbnRTdGVwKCk7CgogICAgaWYgKCRTdGFydEF0KSB7CiAgICAgICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPk5lZWQgZXhpc3Rpbmcgd29ya2luZyBkaXJlY3RvcnkgJyRTZWxmLT57V29ya2luZ0Rpcn0nLjwvcmVkPlxuIik7CgogICAgICAgICAgICBkaWU7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Q29udGludWUgQ01EQiB1cGdyYWRlIGF0OiAnJFN0ZXBEZWNsYXJhdGlvbnNbICRTdGFydEF0IF0tPntOYW1lfSchPC95ZWxsb3c+XG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5TdGFydGluZyBDTURCIHVwZ3JhZGUhPC95ZWxsb3c+XG4iKTsKICAgIH0KCiAgICAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICRTZWxmLT57WUFNTE9iamVjdH0gICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICAjIGxpc3Qgb2YgQ29uZmlnSXRlbSBjbGFzc2VzLCBlaXRoZXIgaW4gT1RPQk8gMTAgb3IgT1RPQk8gMTEgZm9ybWF0CiAgICAkU2VsZi0+e0NsYXNzTGlzdH0gPSAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2JqZWN0fS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBnZXQgY29tcGxldGUgaGlzdG9yeSBvZiB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBjb25maWdpdGVtIGNsYXNzCiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAkU2VsZi0+e0NsYXNzTGlzdH0tPiUqICkgewogICAgICAgICRTZWxmLT57RGVmaW5pdGlvbkxpc3R9eyRDbGFzc0lEfSA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPkRlZmluaXRpb25MaXN0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFN1Y2Nlc3M7CiAgICBTVEVQOgogICAgZm9yIG15ICRDdXJyZW50U3RlcCAoICRTdGFydEF0IC4uICQjU3RlcERlY2xhcmF0aW9ucyApIHsKICAgICAgICBteSAkU3RlcERlY2xhcmF0aW9uID0gJFN0ZXBEZWNsYXJhdGlvbnNbJEN1cnJlbnRTdGVwXTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPGdyZWVuPn5+IFN0ZXAgJEN1cnJlbnRTdGVwIH5+XG5TdGFydCB3b3JraW5nIG9uICRTdGVwRGVjbGFyYXRpb24tPntOYW1lfTwvZ3JlZW4+XG4iKTsKICAgICAgICAkU3VjY2VzcyA9ICRTdGVwRGVjbGFyYXRpb24tPntIYW5kbGVyfS0+KAogICAgICAgICAgICAkU2VsZiwKICAgICAgICAgICAgQ3VycmVudFN0ZXAgPT4gJEN1cnJlbnRTdGVwLAogICAgICAgICk7CgogICAgICAgIGxhc3QgU1RFUCB1bmxlc3MgJFN1Y2Nlc3M7CiAgICAgICAgbGFzdCBTVEVQIHVubGVzcyAkU3VjY2VzcyBlcSAnTmV4dCc7CiAgICB9CgogICAgaWYgKCRTdWNjZXNzKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSE8L2dyZWVuPlxuIik7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPazsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5BbiBlcnJvciBvY2N1cnJlZCE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3I7CiAgICB9Cn0KCj1oZWFkMSBQUklWQVRFIE1FVEhPRFMKCj1oZWFkMiAgX0dldEN1cnJlbnRTdGVwKCkKClRoaXMgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCgo9Y3V0CgpzdWIgX0dldEN1cnJlbnRTdGVwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDA7Cn0KCj1oZWFkMiBfUHJlcGFyZUF0dHJpYnV0ZU1hcHBpbmcoKQoKQ29sbGVjdCB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGluIGFueSB2ZXJzaW9uIG9mIGFueSBvZiB0aGUgbGVnYWN5IGNvbmZpZyBpdGVtIGNsYXNzZXMuCgpPbmUgbWFwcGluZyBpcyBkdW1wZWQgcGVyIGNvbmZpZyBpdGVtIGNsYXNzLiBUaGlzIG1hcHBpbmcgbWFwcyB0aGUga2V5IG9mIHRoZSBsZWdhY3kgYXR0cmlidXRlCnRvIHRoZSBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBjb25maWcgaXRlbSBpbiBPVE9CTyAxMS4KCj1jdXQKCnN1YiBfUHJlcGFyZUF0dHJpYnV0ZU1hcHBpbmcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIFRPRE86IGNyZWF0ZSBkaXJlY3RvcnkgaW4gYW4gaW5pdGlhbGl6YXRpb24gc3Vicm91dGluZQogICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICBkaXIoICRTZWxmLT57V29ya2luZ0Rpcn0gKS0+bWtwYXRoKCAwLCBvY3QoJzc3MCcpICk7ICAgICMgMCB0dXJucyBvZmYgdmVyYm9zaXR5CiAgICB9CgogICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGNyZWF0ZSB0aGUgd29ya2luZyBkaXJlY3RvcnkgJzwvcmVkPiRTZWxmLT57V29ya2luZ0Rpcn08cmVkPicuPC9yZWQ+XG4iKTsKCiAgICAgICAgZGllOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Xcml0aW5nIGF0dHJpYnV0ZSBtYXBzIGludG88L3llbGxvdz4gJFNlbGYtPntXb3JraW5nRGlyfVxuIik7CgogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgIG15ICVOb05hbWVzcGFjZTsKICAgIGlmICggJFNlbGYtPntOb05hbWVzcGFjZX0gKSB7CiAgICAgICAgJU5vTmFtZXNwYWNlID0gbWFwIHsgJF8gPT4gMSB9IHNwbGl0KCAvXHMqLFxzKi8sICRTZWxmLT57Tm9OYW1lc3BhY2V9ICk7CiAgICB9CgogICAgQ0xBU1NfSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAkU2VsZi0+e0NsYXNzTGlzdH0tPiUqICkgewoKICAgICAgICAjIExvb3Agb3ZlciBhbGwgdmVyc2lvbnMgb2YgZGVmaW5pdGlvbnMgZm9yIHRoYXQgY29uZmlnIGl0ZW0gY2xhc3MKICAgICAgICBteSBAQXR0cmlidXRlS2V5czsKICAgICAgICBmb3IgbXkgJERlZmluaXRpb24gKCAkU2VsZi0+e0RlZmluaXRpb25MaXN0fXskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICBteSBAQXR0cmlidXRlc0ZvclZlcnNpb24gPSAkU2VsZi0+X0dldEF0dHJpYnV0ZXNGcm9tTGVnYWN5WUFNTCgKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIFJlY3VTdWJzICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgbm90IGNhcmluZyBhYm91dCBkdXBsaWNhdGVzIGhlcmUKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlS2V5cywgbWFwIHsgJF8tPntLZXl9IH0gQEF0dHJpYnV0ZXNGb3JWZXJzaW9uOwogICAgICAgIH0KCiAgICAgICAgIyBkbyBub3Qgd3JpdGUgYW4gYXR0cmlidXRlIG1hcCBmb3IgT1RPQk8gMTEgY29uZmlnIGl0ZW1zCiAgICAgICAgIyBUT0RPOiBtYXliZSBjaGVjayBmb3IgYSBtaXggb2YgT1RPQk8gMTAgYW5kIE9UT0JPIDExIGZvcm1hdHMKICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyBAQXR0cmlidXRlS2V5czsKCiAgICAgICAgbXkgJE5hbWVzcGFjZSA9ICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gPX4gcy9bXlx3XGRdLy9ncjsKCiAgICAgICAgIyBUT0RPOiB3aGF0IGlzIHNwZWNpYWwgYWJvdXQgVW1sYXV0cyBhbmQgw58KICAgICAgICBteSAlU3Vic3RpdGlvbnMgPSAoCiAgICAgICAgICAgICfDpCcgPT4gJ2FlJywKICAgICAgICAgICAgJ8O2JyA9PiAnb2UnLAogICAgICAgICAgICAnw7wnID0+ICd1ZScsCiAgICAgICAgICAgICfDnycgPT4gJ3NzJywKICAgICAgICAgICAgJ18nID0+ICcnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkU3ViICggc29ydCBrZXlzICVTdWJzdGl0aW9ucyApIHsKICAgICAgICAgICAgJE5hbWVzcGFjZSA9fiBzLyRTdWIvJFN1YnN0aXRpb25zeyRTdWJ9LzsKICAgICAgICB9CgogICAgICAgIG15ICVBdHRyaWJ1dGVNYXA7CiAgICAgICAgZm9yIG15ICRLZXkgKCB1bmlxIEBBdHRyaWJ1dGVLZXlzICkgewogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJEtleSA9fiBzL1teXHdcZF0vL2dyOwogICAgICAgICAgICBmb3IgbXkgJFN1YiAoIHNvcnQga2V5cyAlU3Vic3RpdGlvbnMgKSB7CiAgICAgICAgICAgICAgICAkRmllbGROYW1lID1+IHMvJFN1Yi8kU3Vic3RpdGlvbnN7JFN1Yn0vOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkQXR0cmlidXRlTWFweyRLZXl9ID0gJE5vTmFtZXNwYWNleyRLZXl9ID8gJEZpZWxkTmFtZSA6ICROYW1lc3BhY2UgLiAnLScgLiAkRmllbGROYW1lOwogICAgICAgIH0KCiAgICAgICAgbXkgJE1hcFlBTUwgPSAkU2VsZi0+e1lBTUxPYmplY3R9LT5EdW1wKAogICAgICAgICAgICBEYXRhID0+IFwlQXR0cmlidXRlTWFwLAogICAgICAgICk7CgogICAgICAgICRNYWluT2JqZWN0LT5GaWxlV3JpdGUoCiAgICAgICAgICAgIERpcmVjdG9yeSA9PiAkU2VsZi0+e1dvcmtpbmdEaXJ9LAogICAgICAgICAgICBGaWxlbmFtZSAgPT4gJ0F0dHJpYnV0ZU1hcF8nIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICcueW1sJywKICAgICAgICAgICAgQ29udGVudCAgID0+IFwkTWFwWUFNTCwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X0NvbnRpbnVlT3JOb3QoIEN1cnJlbnRTdGVwID0+ICRQYXJhbXtDdXJyZW50U3RlcH0gKTsKfQoKc3ViIF9QcmVwYXJlRGVmaW5pdGlvbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+V3JpdGluZyBjbGFzcyBkZWZpbml0aW9ucy48L3llbGxvdz5cbiIpOwoKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICAjIHdoZW4gY2hlY2tpbmcgZm9yIHRoZSBuZWNlc3NhcnkgcGFja2FnZXMgdG8gaW5zdGFsbCB3aXRob3V0IC0tdXNlLWRlZmF1bHRzCiAgICAjIGlmIGV4aXN0cyBtb3JlIHRoYW4gb25lIGVsZW1lbnQgb3IgbW9yZSB0aGFuIG9uZSB2ZXJzaW9uIG9mIGFuIGVsZW1lbnQgdGhhdCByZXF1aXJlcyBhIHBhY2thZ2UKICAgICMgdGhlIHNhbWUgbWVzc2FnZSBpcyBpc3N1ZWQgcmVwZWF0ZWRseSByZWZlcnJpbmcgdG8gdGhlIHNhbWUgcGFja2FnZQogICAgIyB0aGlzIGhhc2ggaXMgdXNlZCB0byBwcmV2ZW50IG1lc3NhZ2UgcmVwZXRpdGlvbgogICAgbXkgJUNoZWNrZWRQYWNrYWdlczsKCiAgICAkU2VsZi0+e01pc3NpbmdQYWNrYWdlc30gPSAwOwoKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJFNlbGYtPntDbGFzc0xpc3R9LT4lKiApIHsKCiAgICAgICAgbXkgJEZpbGVuYW1lQ2xlYW4gPSAkTWFpbk9iamVjdC0+RmlsZW5hbWVDbGVhblVwKAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnQXR0cmlidXRlTWFwXycgLiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJy55bWwnLAogICAgICAgICk7CgogICAgICAgICMgU2tpcCB0aGUgY2xhc3Mgd2hlbiB0aGVyZSBpcyBubyBhdHRyaWJ1dGUgbWFwcGluZy4KICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyAtZSAkU2VsZi0+e1dvcmtpbmdEaXJ9IC4gJy8nIC4gJEZpbGVuYW1lQ2xlYW47CgogICAgICAgIG15ICRNYXBSZWYgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgIERpcmVjdG9yeSA9PiAkU2VsZi0+e1dvcmtpbmdEaXJ9LAogICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lQ2xlYW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBTa2lwIHRoZSBjbGFzcyB3aGVuIHRoZXJlIGlzIG5vIGF0dHJpYnV0ZSBtYXBwaW5nLgogICAgICAgICMgVGhpcyBoYXBwZW5zIHdoZW4gdGhlIGZpbGUgd2FzIHJlbW92ZWQgb3Igd2hlbiB0aGUgY2xhc3MgYWxyZWFkeSB3YXMgaW4gT1RPQk8gMTEgZm9ybWF0LgogICAgICAgICMgVE9ETzogaGVyZSBpdCBpcyBhbiBlcnJvciBub3csIHdlIGRvbid0IGV2ZW4gdHJ5IGlmIHRoZSBmaWxlIGlzIHJlbW92ZWQKICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyBkZWZpbmVkICRNYXBSZWY7CgogICAgICAgIG15ICRBdHRyaWJ1dGVNYXAgPSAkU2VsZi0+e1lBTUxPYmplY3R9LT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICR7JE1hcFJlZn0sCiAgICAgICAgKTsKCiAgICAgICAgIyBhIHNhbml0eSBjaGVjawogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzIHJlZiAkQXR0cmlidXRlTWFwIGVxICdIQVNIJzsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uICggJFNlbGYtPntEZWZpbml0aW9uTGlzdH17JENsYXNzSUR9LT5AKiApIHsKICAgICAgICAgICAgbXkgQEF0dHJpYnV0ZXMgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZXNGcm9tTGVnYWN5WUFNTCgKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICREZWZpbml0aW9uWUFNTCA9ICRTZWxmLT5fR2VuZXJhdGVEZWZpbml0aW9uWUFNTCgKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMgICAgICA9PiBcQEF0dHJpYnV0ZXMsCiAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgICAgPT4gJEF0dHJpYnV0ZU1hcCwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICA9PiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9LAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgIENoZWNrZWRQYWNrYWdlcyA9PiBcJUNoZWNrZWRQYWNrYWdlcywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRGaWxlTG9jYXRpb24gPSAkTWFpbk9iamVjdC0+RmlsZVdyaXRlKAogICAgICAgICAgICAgICAgRGlyZWN0b3J5ID0+ICRTZWxmLT57V29ya2luZ0Rpcn0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICdfQ0lEZWZpbml0aW9uXycgLiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gLiAnLnltbCcsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gXCREZWZpbml0aW9uWUFNTC0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJEZpbGVMb2NhdGlvbiA9ICRNYWluT2JqZWN0LT5GaWxlV3JpdGUoCiAgICAgICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJ19ERkRlZmluaXRpb25fJyAuICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSAuICcueW1sJywKICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiBcJERlZmluaXRpb25ZQU1MLT57RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkU2VsZi0+e01pc3NpbmdQYWNrYWdlc30gKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCJcbjxyZWQ+SW1wb3J0IGZhaWxlZC4gVGhlcmUgYXJlICRTZWxmLT57TWlzc2luZ1BhY2thZ2VzfSBuZWNlc3NhcnkgcGFja2FnZShzKSBtaXNzaW5nIGluc3RhbGxhdGlvbi48L3JlZD5cbiIpOwogICAgICAgIHJldHVybiAnRXhpdCc7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fQ29udGludWVPck5vdCggQ3VycmVudFN0ZXAgPT4gJFBhcmFte0N1cnJlbnRTdGVwfSApOwp9CgpzdWIgX01pZ3JhdGVEZWZpbml0aW9ucyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5JbXBvcnQgZGVmaW5pdGlvbnMuPC95ZWxsb3c+XG4iKTsKCiAgICBteSAkTWFpbk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICREQk9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRZQU1MT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRYTUxPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WE1MJyk7CgogICAgIyBrZWVwIHRoZSBsZWdhY3kgZGVmaW5pdGlvbiBmb3Igbm93CiAgICBteSAkQ29sdW1uQWRkWE1MID0gPDwnRU5EX1hNTCc7CjxUYWJsZUFsdGVyIE5hbWU9ImNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiI+CiAgPENvbHVtbkFkZCBOYW1lPSJjb25maWdpdGVtX2RlZmluaXRpb25fbGVnYWN5IiBSZXF1aXJlZD0iZmFsc2UiIFR5cGU9IkxPTkdCTE9CIiAvPgo8L1RhYmxlQWx0ZXI+CkVORF9YTUwKCiAgICAjIENyZWF0ZSBkYXRhYmFzZSBzcGVjaWZpYyBTUUwgYW5kIFBvc3RTUUwgY29tbWFuZHMgb3V0IG9mIFhNTC4KICAgIG15IEBBZGRYTUxBUlJBWSA9ICRYTUxPYmplY3QtPlhNTFBhcnNlKCBTdHJpbmcgPT4gJENvbHVtbkFkZFhNTCApOwoKICAgICMgQ3JlYXRlIGRhdGFiYXNlIHNwZWNpZmljIFNRTC4KICAgIG15IEBDb2x1bW5BZGRTUUwgPSAkREJPYmplY3QtPlNRTFByb2Nlc3NvcigKICAgICAgICBEYXRhYmFzZSA9PiBcQEFkZFhNTEFSUkFZLAogICAgKTsKCiAgICAjIENyZWF0ZSBkYXRhYmFzZSBzcGVjaWZpYyBQb3N0U1FMLgogICAgbXkgQENvbHVtbkFkZFNRTFBvc3QgPSAkREJPYmplY3QtPlNRTFByb2Nlc3NvclBvc3QoKTsKCiAgICAjIEV4ZWN1dGUgU1FMLgogICAgZm9yIG15ICRTUUwgKCBAQ29sdW1uQWRkU1FMLCBAQ29sdW1uQWRkU1FMUG9zdCApIHsKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oIFNRTCA9PiAkU1FMICk7CiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgICAgICI8eWVsbG93PkNvdWxkIG5vdCBjbG9uZSB0aGUgY29uZmlnaXRlbV9kZWZpbml0aW9uIGNvbHVtbiBEQiB0YWJsZS4gSWYgeW91IGF0dGVtcHRlZCB0aGlzIHN0ZXAgZWFybGllciwgcGxlYXNlIHdyaXRlICdjb24nIHRvIGNvbnRpbnVlLjwveWVsbG93PlxuXHQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gaWYgPFNURElOPiAhfiBtL15jb24odGludWUpPyQvOwogICAgICAgIH0KICAgIH0KCiAgICAkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBTRVQgY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeSA9IGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbicsCiAgICApOwoKICAgIG15ICVEeW5hbWljRmllbGRzOwogICAgbXkgJURlZmluaXRpb25zOwogICAgbXkgJU5hbWVzcGFjZXM7CgogICAgIyBjb2xsZWN0IGRhdGEKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJFNlbGYtPntDbGFzc0xpc3R9LT4lKiApIHsKCiAgICAgICAgbXkgJEZpbGVuYW1lQ2xlYW4gPSAkTWFpbk9iamVjdC0+RmlsZW5hbWVDbGVhblVwKAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnQXR0cmlidXRlTWFwXycgLiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJy55bWwnLAogICAgICAgICk7CgogICAgICAgICMgU2tpcCB0aGUgY2xhc3Mgd2hlbiB0aGVyZSBpcyBubyBhdHRyaWJ1dGUgbWFwcGluZy4KICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyAtZSAkU2VsZi0+e1dvcmtpbmdEaXJ9IC4gJy8nIC4gJEZpbGVuYW1lQ2xlYW47CgogICAgICAgIERFRklOSVRJT046CiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uICggJFNlbGYtPntEZWZpbml0aW9uTGlzdH17JENsYXNzSUR9LT5AKiApIHsKCiAgICAgICAgICAgIG15ICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lID0+ICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnX0NJRGVmaW5pdGlvbl8nIC4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9IC4gJy55bWwnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBza2lwIGRlZmluaXRpb25zIGlmIGZpbGVzIGFyZSBub3QgcHJvdmlkZWQ7IFRPRE86IG9ubHkgc2tpcCB3aXRob3V0IGVycm9yIGlmIHRoaXMgaXMgZm9yIHRoZSB3aG9sZSBjbGFzcwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gdW5sZXNzIC1lICRTZWxmLT57V29ya2luZ0Rpcn0gLiAnLycgLiAkRmlsZW5hbWVDbGVhbjsKCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtWUFNTCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKICAgICAgICAgICAgICAgIERpcmVjdG9yeSA9PiAkU2VsZi0+e1dvcmtpbmdEaXJ9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZUNsZWFuLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkxvYWQoCiAgICAgICAgICAgICAgICBEYXRhID0+ICR7JENvbmZpZ0l0ZW1ZQU1MfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgVE9ETzogQWRkIGFuZCB1c2UgYSBEZWZpbml0aW9uQ2hlY2sgb2YgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpEZWZpbml0aW9uCgogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbURlZmluaXRpb24gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoICI8cmVkPkNvdWxkIG5vdCBpbnRlcnByZXQiIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICdfQ0lEZWZpbml0aW9uXycgLiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gLiAiLnltbCE8L3JlZD5cbiIgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lID0+ICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnX0RGRGVmaW5pdGlvbl8nIC4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9IC4gJy55bWwnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFlBTUwgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWVDbGVhbiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGREZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkxvYWQoCiAgICAgICAgICAgICAgICBEYXRhID0+ICR7JER5bmFtaWNGaWVsZFlBTUx9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZERlZmluaXRpb24gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoICI8cmVkPkNvdWxkIG5vdCBpbnRlcnByZXQiIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICdfREZEZWZpbml0aW9uXycgLiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gLiAiLnltbCE8L3JlZD5cbiIgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICREZWZpbml0aW9uc3skQ2xhc3NJRH17ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSB9ID0gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbVlBTUwgPT4gJHskQ29uZmlnSXRlbVlBTUx9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICAgPT4gJER5bmFtaWNGaWVsZERlZmluaXRpb24sCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJER5bmFtaWNGaWVsZERlZmluaXRpb24tPiUqICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZHN7JE5hbWV9ID0gJER5bmFtaWNGaWVsZERlZmluaXRpb24tPnskTmFtZX07CgogICAgICAgICAgICAgICAgaWYgKCAkTmFtZSA9fiAvXihbXi1dKyktLyApIHsKICAgICAgICAgICAgICAgICAgICAkTmFtZXNwYWNlc3skMX0gPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZERlZmluaXRpb24tPnskTmFtZX17RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVkICggJER5bmFtaWNGaWVsZERlZmluaXRpb24tPnskTmFtZX17Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEluY2x1ZGVkLT57REZ9ID1+IC9eKFteLV0rKS0vICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5hbWVzcGFjZXN7JDF9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZHN7ICRJbmNsdWRlZC0+e0RGfSB9ID0gJEluY2x1ZGVkLT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IG5hbWVzcGFjZSBzZXR0aW5nIGlmIGVtcHR5CiAgICBteSAkTmFtZXNwYWNlc1NldHRpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ05hbWVzcGFjZXMjIyNEeW5hbWljRmllbGQnKTsKICAgIGlmICggJU5hbWVzcGFjZXMgJiYgKCAhJE5hbWVzcGFjZXNTZXR0aW5nIHx8ICEkTmFtZXNwYWNlc1NldHRpbmctPkAqICkgKSB7CiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgIExvY2tBbGwgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VwZGF0ZSgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJ05hbWVzcGFjZXMjIyNEeW5hbWljRmllbGQnLAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSAgICA9PiBbIHNvcnQga2V5cyAlTmFtZXNwYWNlcyBdLAogICAgICAgICAgICBFeGNsdXNpdmVMb2NrR1VJRCA9PiAkRXhjbHVzaXZlTG9ja0dVSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICAgICAgVW5sb2NrQWxsID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyAnUmVidWlsZCcgdGhlIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlndXJhdGlvbkRlcGxveSgKICAgICAgICAgICAgQ29tbWVudHMgICAgPT4gIkNNREIgVXBncmFkZTogQWRkIGR5bmFtaWMgZmllbGQgbmFtZXNwYWNlcy4iLAogICAgICAgICAgICBBbGxTZXR0aW5ncyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoJU5hbWVzcGFjZXMpIHsKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICJcbjx5ZWxsb3c+WW91IGFscmVhZHkgaGF2ZSBkeW5hbWljIGZpZWxkIG5hbWVzcGFjZXMgZGVwbG95ZWQsIHRodXMgdGhlIG5ldyBvbmVzIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYmUgc2V0LiBQbGVhc2UgYWRkIHRoZW0gbWFudWFsbHk6PC95ZWxsb3c+XG4iCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJE5hbWVzcGFjZSAoIHNvcnQga2V5cyAlTmFtZXNwYWNlcyApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCJcdCROYW1lc3BhY2VcbiIpOwogICAgICAgIH0KICAgICAgICAkU2VsZi0+UHJpbnQoIlxuIik7CiAgICB9CgogICAgIyBnZXQgY3VycmVudCBmaWVsZCBvcmRlcgogICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkID0+IDAsCiAgICApOwogICAgbXkgJE9yZGVyID0gJER5bmFtaWNGaWVsZExpc3QtPkAqOwoKICAgICMgY3JlYXRlIGR5bmFtaWMgZmllbGRzCiAgICBmb3IgbXkgJEZpZWxkICggc29ydCBrZXlzICVEeW5hbWljRmllbGRzICkgewogICAgICAgIG15ICVTZXRDb25maWc7CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkc3skRmllbGR9e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgIG15IEBJbmNsdWRlZCA9IG1hcCB7IHsgREYgPT4gJF8tPntERn0gfSB9ICREeW5hbWljRmllbGRzeyRGaWVsZH17Q29uZmlnfXtJbmNsdWRlfS0+QCo7CiAgICAgICAgICAgICVTZXRDb25maWcgPSAoCiAgICAgICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRzeyRGaWVsZH17Q29uZmlnfS0+JSosCiAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSA9PiBcQEluY2x1ZGVkLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICREeW5hbWljRmllbGRzeyRGaWVsZH17SUR9ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkc3skRmllbGR9LT4lKiwKICAgICAgICAgICAgJVNldENvbmZpZywKICAgICAgICAgICAgRmllbGRPcmRlciA9PiArKyRPcmRlciwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBSZW9yZGVyICAgID0+IDAsCiAgICAgICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISREeW5hbWljRmllbGRzeyRGaWVsZH17SUR9ICkgewoKICAgICAgICAgICAgIyBUT0RPOiBhbHRlcm5hdGl2ZWx5IHRyeSB0byBnZXQgdGhlIERGLCBhbmQgY2hlY2sgd2hldGhlciBpdHMgZGVmaW5pdGlvbiBmaXRzLiBNYXliZSBzdGlsbCBhc2sKICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgIjxyZWQ+Q291bGQgbm90IGNyZWF0ZSBkeW5hbWljIGZpZWxkICRGaWVsZCEgRml4IGl0cyBkZWZpbml0aW9ucyBhbmQgZGVsZXRlIGFsbCBvdGhlciBkeW5hbWljIGZpZWxkcyBjcmVhdGVkIGJ5IHRoaXMgcHJvY2VzcyBiZWZvcmUgcmV0cnlpbmcuPC9yZWQ+XG4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRBbGxTdWNjZXNzID0gMTsKCiAgICAjIHNldCBuZXcgZGVmaW5pdGlvbnMKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJURlZmluaXRpb25zICkgewoKICAgICAgICBteSAkRmlsZW5hbWVDbGVhbiA9ICRNYWluT2JqZWN0LT5GaWxlbmFtZUNsZWFuVXAoCiAgICAgICAgICAgIEZpbGVuYW1lID0+ICdBdHRyaWJ1dGVNYXBfJyAuICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnLnltbCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBTa2lwIHRoZSBjbGFzcyB3aGVuIHRoZXJlIGlzIG5vIGF0dHJpYnV0ZSBtYXBwaW5nLgogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzIC1lICRTZWxmLT57V29ya2luZ0Rpcn0gLiAnLycgLiAkRmlsZW5hbWVDbGVhbjsKCiAgICAgICAgREVGSU5JVElPTjoKICAgICAgICBmb3IgbXkgJERlZmluaXRpb25JRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICREZWZpbml0aW9uc3skQ2xhc3NJRH0tPiUqICkgewoKICAgICAgICAgICAgIyBhZGQgdGhlIElEIG9mIHRoZSBuZXdseSBjcmVhdGVkIGR5bmFtaWMgZmllbGRzIHRvIHRoZWlyIGRlZmluaXRpb24gc3BlY2lmaWMgY29uZmlncwogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHZhbHVlcyAkRGVmaW5pdGlvbnN7JENsYXNzSUR9eyREZWZpbml0aW9uSUR9e0R5bmFtaWNGaWVsZH0tPiUqICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e0lEfSA9ICREeW5hbWljRmllbGRzeyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfXtJRH07CgogICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVkICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAkSW5jbHVkZWQtPntEZWZpbml0aW9ufXtJRH0gPSAkRHluYW1pY0ZpZWxkc3sgJEluY2x1ZGVkLT57REZ9IH17SUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFlBTUwgPSAkWUFNTE9iamVjdC0+RHVtcCgKICAgICAgICAgICAgICAgIERhdGEgPT4gJERlZmluaXRpb25zeyRDbGFzc0lEfXskRGVmaW5pdGlvbklEfXtEeW5hbWljRmllbGR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMICA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBTRVQgY29uZmlnaXRlbV9kZWZpbml0aW9uID0gPywgZHluYW1pY2ZpZWxkX2RlZmluaXRpb24gPSA/IFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCREZWZpbml0aW9uc3skQ2xhc3NJRH17JERlZmluaXRpb25JRH17Q29uZmlnSXRlbVlBTUx9LCBcJER5bmFtaWNGaWVsZFlBTUwsIFwkRGVmaW5pdGlvbklEIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFRPRE86IElmIGFuIGVycm9yIG9jY3VycywgYXNrLCB3aGV0aGVyIHdlIHNob3VsZCBjb250aW51ZSBvciBub3QgcHJvYmFibHkuIEhlcmUgaXQgd291bGQgc3RhcnQgdG8gZ2V0IG1lc3N5Li4uCiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCB1cGRhdGUgREIgZW50cnkgb2YgZGVmaW5pdGlvbiBpZCAnJERlZmluaXRpb25JRCchPC9yZWQ+XG4iKTsKICAgICAgICAgICAgICAgICRBbGxTdWNjZXNzID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJFBlcm1pc3Npb25Hcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgICAgICBHcm91cCA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBjbGFzcyBwcmVmZXJlbmNlcwogICAgICAgIG15ICVQcmVmZXJlbmNlc0RlZmF1bHRzID0gKAogICAgICAgICAgICBQZXJtaXNzaW9uICAgICAgICAgID0+IFskUGVybWlzc2lvbkdyb3VwSURdLAogICAgICAgICAgICBOdW1iZXJNb2R1bGUgICAgICAgID0+IFsnQXV0b0luY3JlbWVudCddLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nTW9kdWxlID0+IFsnSW5jcmVtZW50YWwnXSwKICAgICAgICAgICAgQ2F0ZWdvcmllcyAgICAgICAgICA9PiBbJ0FsbCddLAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICgga2V5cyAlUHJlZmVyZW5jZXNEZWZhdWx0cyApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2JqZWN0fS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkUHJlZmVyZW5jZSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkUHJlZmVyZW5jZXNEZWZhdWx0c3skUHJlZmVyZW5jZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3Qgc2V0IHByZWZlcmVuY2UgJyRQcmVmZXJlbmNlJyBmb3IgY2xhc3MgJyRDbGFzc0lEJyE8L3JlZD5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiB1bmxlc3MgJEFsbFN1Y2Nlc3M7CiAgICByZXR1cm4gJ05leHQnOwp9CgpzdWIgX01pZ3JhdGVBdHRyaWJ1dGVEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkNvcHkgYXR0cmlidXRlIGRhdGEuPC95ZWxsb3c+XG4iKTsKCiAgICBteSAkTWFpbk9iamVjdCAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICRTeXNDb25maWdPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJERCT2JqZWN0ICAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdVUERBVEUgY29uZmlnaXRlbV92ZXJzaW9uIFNFVCBjaGFuZ2VfdGltZT1jcmVhdGVfdGltZSwgY2hhbmdlX2J5PWNyZWF0ZV9ieSBXSEVSRSBjaGFuZ2VfYnkgSVMgTlVMTDsnLAogICAgKTsKCiAgICBteSAlQmFzZUFycmF5RmllbGRzID0gbWFwIHsgJF8gPT4gMSB9IHF3L0dlbmVyYWxDYXRhbG9nIEN1c3RvbWVyQ29tcGFueSBDdXN0b21lclVzZXIgVGlja2V0IENvbmZpZ0l0ZW0gQWdlbnQgU2VydmljZSBRdWV1ZSBTTEEgVHlwZS87CiAgICBteSAkRGlzYWJsZWRIaXN0b3J5OwogICAgbXkgJEhpc3RvcnlTZXR0aW5nID0gcXtJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMTAwLUhpc3Rvcnl9OwoKICAgIGRlbGV0ZSAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmplY3R9e0NhY2hlfXtEZWZpbml0aW9uR2V0fTsKICAgIGxvY2FsICR8ID0gMTsKCiAgICBDTEFTU19JRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICRTZWxmLT57Q2xhc3NMaXN0fS0+JSogKSB7CgogICAgICAgIG15ICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ0F0dHJpYnV0ZU1hcF8nIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICcueW1sJywKICAgICAgICApOwoKICAgICAgICAjIFNraXAgdGhlIGNsYXNzIHdoZW4gdGhlcmUgaXMgbm8gYXR0cmlidXRlIG1hcHBpbmcuCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgLWUgJFNlbGYtPntXb3JraW5nRGlyfSAuICcvJyAuICRGaWxlbmFtZUNsZWFuOwoKICAgICAgICBteSAlRGVmaW5pdGlvbjsKICAgICAgICBteSAkTWFwUmVmID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZUNsZWFuLAogICAgICAgICk7CgogICAgICAgICMgU2tpcCB0aGUgY2xhc3Mgd2hlbiB0aGVyZSBpcyBubyBhdHRyaWJ1dGUgbWFwcGluZy4KICAgICAgICAjIFRoaXMgaGFwcGVucyB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIG9yIHdoZW4gdGhlIGNsYXNzIGFscmVhZHkgd2FzIGluIE9UT0JPIDExIGZvcm1hdC4KICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyBkZWZpbmVkICRNYXBSZWY7CgogICAgICAgIG15ICRBdHRyaWJ1dGVNYXAgPSAkU2VsZi0+e1lBTUxPYmplY3R9LT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICR7JE1hcFJlZn0sCiAgICAgICAgKTsKCiAgICAgICAgIyBhIHNhbml0eSBjaGVjawogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzIHJlZiAkQXR0cmlidXRlTWFwIGVxICdIQVNIJzsKCiAgICAgICAgIyBmb3Igc2V0cwogICAgICAgIG15ICRBdHRyaWJ1dGVMb29rdXAgPSB7IHJldmVyc2UgJEF0dHJpYnV0ZU1hcC0+JSogfTsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uSUQgKCBtYXAgeyAkXy0+e0RlZmluaXRpb25JRH0gfSAkU2VsZi0+e0RlZmluaXRpb25MaXN0fXskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICAkRGVmaW5pdGlvbnskRGVmaW5pdGlvbklEfSA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGFsbCB2ZXJzaW9ucyBvZiBhIGNsYXNzIGluIG9uZSBnbwogICAgICAgICMgVE9ETzogRG8gd2UgbmVlZCBiYXRjaGVzIGZvciByZWFsbHkgbGFyZ2UgQ01EQnM/CiAgICAgICAgbXkgJFJvd3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0QWxsKAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCB2LmlkLCB2LmRlZmluaXRpb25faWQsIHYuY29uZmlnaXRlbV9pZAogIEZST00gY29uZmlnaXRlbV92ZXJzaW9uIHYKICBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW0gY2kgT04gdi5jb25maWdpdGVtX2lkID0gY2kuaWQKICBXSEVSRSBjaS5jbGFzc19pZCA9ID8KICBPUkRFUiBCWSB2LmlkCkVORF9TUUwKICAgICAgICAgICAgQmluZCA9PiBbIFwkQ2xhc3NJRCBdLAogICAgICAgICk7CgogICAgICAgICMgVE9ETzogZGlzYWJsZSBoaXN0b3J5IGJlZm9yZSB0aGUgbG9vcCBvdmVyIHRoZSBjbGFzc2VzCiAgICAgICAgaWYgKCAhJERpc2FibGVkSGlzdG9yeSAmJiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJEhpc3RvcnlTZXR0aW5nKSApIHsKCiAgICAgICAgICAgICMgZG8gbm90IHdyaXRlIGEgaGlzdG9yeQogICAgICAgICAgICBteSAkRXhjbHVzaXZlTG9ja0dVSUQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nTG9jaygKICAgICAgICAgICAgICAgIExvY2tBbGwgPT4gMSwKICAgICAgICAgICAgICAgIEZvcmNlICAgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdVcGRhdGUoCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkSGlzdG9yeVNldHRpbmcsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXhjbHVzaXZlTG9ja0dVSUQgPT4gJEV4Y2x1c2l2ZUxvY2tHVUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdVbmxvY2soCiAgICAgICAgICAgICAgICBVbmxvY2tBbGwgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgJ1JlYnVpbGQnIHRoZSBjb25maWd1cmF0aW9uLgogICAgICAgICAgICAjIFRPRE86IHdoeSBtdXN0IHRoaXMgc2V0dGluZyBiZSBkZXBsb3llZD8gSXQgc2hvdWxkIHN1ZmZpY2UgdG8gY2hhbmdlIGlzIHRlbXBvcmFyaWx5CiAgICAgICAgICAgICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ3VyYXRpb25EZXBsb3koCiAgICAgICAgICAgICAgICBDb21tZW50cyAgICA9PiAiQ01EQiBVcGdyYWRlOiBUZW1wb3JhcmlseSBkaXNhYmxlIENNREIgaGlzdG9yeSBmb3IgdGhlIGRhdGEgdHJhbnNmZXIuIiwKICAgICAgICAgICAgICAgIEFsbFNldHRpbmdzID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJERpc2FibGVkSGlzdG9yeSA9IDE7CiAgICAgICAgfQoKICAgICAgICBteSBAU2tpcHBlZDsKICAgICAgICBteSAlQ0lWZXJzaW9uU3RyaW5nQ291bnRlcjsKICAgICAgICBteSAkQ291bnQgPSBzY2FsYXIgJFJvd3MtPkAqOwogICAgICAgIG15ICRGcmFjICA9IGludCggJENvdW50IC8gMTAgKTsKICAgICAgICBteSAkYyAgICAgPSAwOwoKICAgICAgICAkU2VsZi0+UHJpbnQoIlx0V29ya2luZyBvbiA8eWVsbG93PiRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH08L3llbGxvdz4gKCRDb3VudCBWZXJzaW9ucykiKTsKCiAgICAgICAgUk9XOgogICAgICAgIGZvciBteSAkUm93ICggJFJvd3MtPkAqICkgewogICAgICAgICAgICBteSAoICRWZXJzaW9uSUQsICREZWZpbml0aW9uSUQsICRDb25maWdJdGVtSUQgKSA9ICRSb3ctPkAqOwoKICAgICAgICAgICAgIyBzZXQgY29uZmlnaXRlbSB2ZXJzaW9uIHN0cmluZwogICAgICAgICAgICAkQ0lWZXJzaW9uU3RyaW5nQ291bnRlcnskQ29uZmlnSXRlbUlEfSAvLz0gMTsKICAgICAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApVUERBVEUgY29uZmlnaXRlbV92ZXJzaW9uCiAgU0VUIHZlcnNpb25fc3RyaW5nID0gPywgY2hhbmdlX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcCwgY2hhbmdlX2J5ID0gPwogIFdIRVJFIGlkID0gPwpFTkRfU1FMCiAgICAgICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgICAgICBcJENJVmVyc2lvblN0cmluZ0NvdW50ZXJ7JENvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgXDEsCiAgICAgICAgICAgICAgICAgICAgXCRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3Qgc2V0IFZlcnNpb25TdHJpbmcgZm9yIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCwgVmVyc2lvbiAkVmVyc2lvbklEITwvcmVkPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENJVmVyc2lvblN0cmluZ0NvdW50ZXJ7JENvbmZpZ0l0ZW1JRH0rKzsKCiAgICAgICAgICAgIGlmICggKyskYyA9PSAkRnJhYyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiLiIpOwogICAgICAgICAgICAgICAgJGMgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEkRGVmaW5pdGlvbnskRGVmaW5pdGlvbklEfXtEeW5hbWljRmllbGRSZWZ9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAU2tpcHBlZCwgJFZlcnNpb25JRDsKCiAgICAgICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICAgICBteSBAWE1MID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlhNTCcpLT5YTUxIYXNoR2V0KAogICAgICAgICAgICAgICAgVHlwZSA9PiAiSVRTTTo6Q29uZmlnSXRlbTo6JENsYXNzSUQiLAogICAgICAgICAgICAgICAgS2V5ICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB0cnkgYXJjaGl2ZQogICAgICAgICAgICBpZiAoICFAWE1MICkgewogICAgICAgICAgICAgICAgQFhNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpYTUwnKS0+WE1MSGFzaEdldCgKICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICJJVFNNOjpDb25maWdJdGVtOjpBcmNoaXY6OiRDbGFzc0lEIiwKICAgICAgICAgICAgICAgICAgICBLZXkgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICRYTUxbMV17VmVyc2lvbn1bMV0tPiUqICkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgdW5sZXNzICRBdHRyaWJ1dGVNYXAtPnskQXR0cmlidXRlfTsKCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJERlZmluaXRpb257JERlZmluaXRpb25JRH17RHluYW1pY0ZpZWxkUmVmfXsgJEF0dHJpYnV0ZU1hcC0+eyRBdHRyaWJ1dGV9IH07CgogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgdW5sZXNzICREeW5hbWljRmllbGQ7CgogICAgICAgICAgICAgICAgbXkgJFZhbHVlOwogICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFNldCAoIEB7ICRYTUxbMV17VmVyc2lvbn1bMV17JEF0dHJpYnV0ZX0gfVsgMSAuLiAkWE1MWzFde1ZlcnNpb259WzFdeyRBdHRyaWJ1dGV9LT4kIyogXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJVNldFZhbHVlOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJbmNsdWRlZCAoICREeW5hbWljRmllbGQtPntDb25maWd9e0luY2x1ZGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZUxvb2t1cC0+eyAkSW5jbHVkZWQtPntERn0gfSBlcSAkQXR0cmlidXRlIC4gJzo6PFN1YlByaW1hcnlBdHRyaWJ1dGU+JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZWQtPntEZWZpbml0aW9ufXtGaWVsZFR5cGV9IGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZXQtPntDb250ZW50fSAuPSAnOjAwJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZXRWYWx1ZXsgJEluY2x1ZGVkLT57REZ9IH0gPSAkQmFzZUFycmF5RmllbGRzeyAkSW5jbHVkZWQtPntEZWZpbml0aW9ufXtGaWVsZFR5cGV9IH0gPyBbICRTZXQtPntDb250ZW50fSBdIDogJFNldC0+e0NvbnRlbnR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE5hbWUgICAgPSAkQXR0cmlidXRlTG9va3VwLT57ICRJbmNsdWRlZC0+e0RGfSB9ID1+IHMvXi4rPzo6Ly9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdWJBdHRyID0gJFNldC0+eyROYW1lfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkU3ViQXR0clZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEJhc2VBcnJheUZpZWxkc3sgJEluY2x1ZGVkLT57RGVmaW5pdGlvbn17RmllbGRUeXBlfSB9IHx8ICRJbmNsdWRlZC0+e0RlZmluaXRpb259e0NvbmZpZ317TXVsdGlWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdWJBdHRyVmFsdWUgPSBbIG1hcCB7ICRfLT57Q29udGVudH0gfSBAeyRTdWJBdHRyfVsgMSAuLiAkU3ViQXR0ci0+JCMqIF0gXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdWJBdHRyVmFsdWUgPSAkU3ViQXR0ci0+WzFde0NvbnRlbnR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAlVmFsdWVzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5jbHVkZWQtPntERn0gPT4gJFN1YkF0dHJWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRJbmNsdWRlZC0+e0RlZmluaXRpb259e0ZpZWxkVHlwZX0gZXEgJ0RhdGVUaW1lJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVZhbHVlcyA9IG1hcCB7ICggJF8gPT4gJFZhbHVlc3skX30gLiAnOjAwJyApIH0ga2V5cyAlVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVNldFZhbHVlID0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlU2V0VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCAkVmFsdWUtPkAqLCBcJVNldFZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFZhbHVlcyA9IG1hcCB7ICRfLT57Q29udGVudH0gfSBAeyAkWE1MWzFde1ZlcnNpb259WzFdeyRBdHRyaWJ1dGV9IH1bIDEgLi4gJFhNTFsxXXtWZXJzaW9ufVsxXXskQXR0cmlidXRlfS0+JCMqIF07CgogICAgICAgICAgICAgICAgICAgIElOREVYOgogICAgICAgICAgICAgICAgICAgIHdoaWxlIChAVmFsdWVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFZhbHVlc1stMV0gfHwgJFZhbHVlc1stMV0gZXEgJycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3AgQFZhbHVlczsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgSU5ERVg7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICFAVmFsdWVzOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWYWx1ZXMgPSBtYXAgeyAkXyAuICc6MDAnIH0gQFZhbHVlczsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRWYWx1ZSA9IFxAVmFsdWVzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFZhbHVlID0gJEJhc2VBcnJheUZpZWxkc3sgJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gfSA/IFsgJFhNTFsxXXtWZXJzaW9ufVsxXXskQXR0cmlidXRlfVsxXXtDb250ZW50fSBdIDogJFhNTFsxXXtWZXJzaW9ufVsxXXskQXR0cmlidXRlfVsxXXtDb250ZW50fTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnRGF0ZVRpbWUnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVmFsdWUgLj0gJzowMCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ0F0dGFjaG1lbnQnICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVudFN0b3JhZ2UnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnQgICAgICAgICAgICAgID0gJEF0dGFjaG1lbnRCYWNrZW5kT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRWYWx1ZSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkeyAkQXR0YWNobWVudC0+e0NvbnRlbnRSZWZ9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJEF0dGFjaG1lbnQtPntQcmVmZXJlbmNlc317RGF0YVR5cGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRBdHRhY2htZW50LT57RmlsZU5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVTaXplICAgID0+ICRBdHRhY2htZW50LT57UHJlZmVyZW5jZXN9e0ZpbGVTaXplQnl0ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgIWRlZmluZWQgJFZhbHVlIHx8ICRWYWx1ZSBlcSAnJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISggcmVmICRWYWx1ZSApIHx8ICggcmVmICRWYWx1ZSBuZSAnQVJSQVknICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRWYWx1ZSA9IFskVmFsdWVdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSGFuZGxlZCAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJFNlbGYtPlByaW50KCJcbiIpOwogICAgfQoKICAgIGlmICgkRGlzYWJsZWRIaXN0b3J5KSB7CgogICAgICAgICMgcmVhY3RpdmF0ZSB3cml0aW5nIGhpc3RvcnkKICAgICAgICBteSAkRXhjbHVzaXZlTG9ja0dVSUQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nTG9jaygKICAgICAgICAgICAgTG9ja0FsbCA9PiAxLAogICAgICAgICAgICBGb3JjZSAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVXBkYXRlKAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkSGlzdG9yeVNldHRpbmcsCiAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICBVbmxvY2tBbGwgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjICdSZWJ1aWxkJyB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICBDb21tZW50cyAgICA9PiAiQ01EQiBVcGdyYWRlOiBSZWVuYWJsZSBDTURCIGhpc3RvcnkuIiwKICAgICAgICAgICAgQWxsU2V0dGluZ3MgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCcKICAgICk7CgogICAgcmV0dXJuICdOZXh0JzsKfQoKc3ViIF9EZWxldGVMZWdhY3lEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KAogICAgICAgICI8eWVsbG93Pk9wdGlvbmFsbHkgYWxsIGxlZ2FjeSBkYXRhIGNhbiBiZSBkZWxldGVkLiBUaGlzIHN0ZXAgaXMgbm90IG5lY2Vzc2FyeSBmb3IgdGhlIG1pZ3JhdGVkIENNREIgdG8gd29yayBhbmQgY2FuIGJlIGRvbmUgYXQgYW55IGxhdGVyIHRpbWUuPC95ZWxsb3c+XG4iCiAgICApOwogICAgJFNlbGYtPlByaW50KCJcbjxyZWQ+RG8geW91IHJlYWxseSB3YW50IHRvIHBlcm1hbmVudGx5IGRlbGV0ZSBhbGwgYmFja3VwIGxlZ2FjeSBkYXRhIGZyb20gdGhlIHN5c3RlbT8gKHR5cGUgJ3llcycpPC9yZWQ+XG4iKTsKCiAgICBpZiAoIDxTVERJTj4gPX4gbS9eeWVzJC9pICkgeyAgICAjIyBubyBjcml0aWMgcXcoSW5wdXRPdXRwdXQ6OlByb2hpYml0RXhwbGljaXRTdGRpbik7CgogICAgICAgICMgZ2V0IG5lY2Vzc2FyeSBvYmplY3RzCiAgICAgICAgbXkgJE1haW5PYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgICAgICBteSAkUGFja2FnZU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnKTsKCiAgICAgICAgIyAxLiBkZWxldGUgZmlsZXMgZnJvbSB0ZW1wb3JhcnkgZGlyZWN0b3J5CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIHByZXZpb3VzbHkgY3JlYXRlZCB0ZW1wb3JhcnkgZmlsZXMgZnJvbSBkaXNrLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICBteSBARmlsZXNJbkRpcmVjdG9yeSA9ICRNYWluT2JqZWN0LT5EaXJlY3RvcnlSZWFkKAogICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgRmlsdGVyICAgID0+ICcqJywKICAgICAgICApOwogICAgICAgIGZvciBteSAkRmlsZSAoIHNvcnQgQEZpbGVzSW5EaXJlY3RvcnkgKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJE1haW5PYmplY3QtPkZpbGVEZWxldGUoCiAgICAgICAgICAgICAgICBMb2NhdGlvbiA9PiAkRmlsZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGRlbGV0ZSBmaWxlICRGaWxlITwvcmVkPiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgZGVsZXRpbmcgdGVtcG9yYXJ5IGZpbGVzLjwvZ3JlZW4+XG4iKTsKCiAgICAgICAgIyAyLiBkZWxldGUgY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeSBkYXRhYmFzZSBjb2x1bW4KICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+RGVsZXRpbmcgZGF0YWJhc2UgY29sdW1uIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9sZWdhY3kgZnJvbSB0YWJsZSBjb25maWdpdGVtX2RlZmluaXRpb24uLi48L3llbGxvdz5cbiIpOwogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgU1FMID0+ICdBTFRFUiBUQUJMRSBjb25maWdpdGVtX2RlZmluaXRpb24gRFJPUCBDT0xVTU4gY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeScsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5Eb25lIGRlbGV0aW5nIHRoZSBkYXRhYmFzZSBjb2x1bW4uPC9ncmVlbj5cbiIpOwoKICAgICAgICAjIDMuIGNsZWFuIHVwIHhtbCBzdG9yYWdlCiAgICAgICAgIyBnZXQgYWxsIHZlcnNpb25zIGFuZCBjb3JyZXNwb25kaW5nIGNsYXNzIGlkcyBpbiBvbmUgZ28KICAgICAgICAjIFRPRE86IERvIHdlIG5lZWQgYmF0Y2hlcyBmb3IgcmVhbGx5IGxhcmdlIENNREJzPwogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5EZWxldGluZyBjb25maWdpdGVtIGRhdGEgZnJvbSB4bWwgc3RvcmFnZS4uLjwveWVsbG93PlxuIik7CiAgICAgICAgbXkgJFJvd3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0QWxsKAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCB2LmlkLCBjaS5jbGFzc19pZAogIEZST00gY29uZmlnaXRlbV92ZXJzaW9uIHYKICBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW0gY2kgT04gdi5jb25maWdpdGVtX2lkID0gY2kuaWQKICBPUkRFUiBCWSB2LmlkCkVORF9TUUwKICAgICAgICApOwoKICAgICAgICAjIFRPRE86IGRpc2FibGUgaGlzdG9yeSBiZWZvcmUgdGhlIGxvb3Agb3ZlciB0aGUgY2xhc3NlcwogICAgICAgIG15ICREaXNhYmxlZEhpc3Rvcnk7CiAgICAgICAgbXkgJEhpc3RvcnlTZXR0aW5nID0gcXtJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMTAwLUhpc3Rvcnl9OwogICAgICAgIGlmICggISREaXNhYmxlZEhpc3RvcnkgJiYgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCRIaXN0b3J5U2V0dGluZykgKSB7CgogICAgICAgICAgICAjIGRvIG5vdCB3cml0ZSBhIGhpc3RvcnkKICAgICAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgICAgICBMb2NrQWxsID0+IDEsCiAgICAgICAgICAgICAgICBGb3JjZSAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVXBkYXRlKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJEhpc3RvcnlTZXR0aW5nLAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICAgICAgVW5sb2NrQWxsID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjICdSZWJ1aWxkJyB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgIyBUT0RPOiB3aHkgbXVzdCB0aGlzIHNldHRpbmcgYmUgZGVwbG95ZWQ/IEl0IHNob3VsZCBzdWZmaWNlIHRvIGNoYW5nZSBpcyB0ZW1wb3JhcmlseQogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICAgICAgQ29tbWVudHMgICAgPT4gIkNNREIgVXBncmFkZTogVGVtcG9yYXJpbHkgZGlzYWJsZSBDTURCIGhpc3RvcnkgZm9yIHRoZSBkYXRhIHRyYW5zZmVyLiIsCiAgICAgICAgICAgICAgICBBbGxTZXR0aW5ncyA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREaXNhYmxlZEhpc3RvcnkgPSAxOwogICAgICAgIH0KCiAgICAgICAgUk9XOgogICAgICAgIGZvciBteSAkUm93ICggJFJvd3MtPkAqICkgewogICAgICAgICAgICBteSAoICRWZXJzaW9uSUQsICRDbGFzc0lEICkgPSAkUm93LT5AKjsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpYTUwnKS0+WE1MSGFzaERlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gIklUU006OkNvbmZpZ0l0ZW06OiRDbGFzc0lEIiwKICAgICAgICAgICAgICAgIEtleSAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSBkZWxldGluZyBjb25maWcgaXRlbSBkYXRhIGZyb20geG1sIHN0b3JhZ2UuPC9ncmVlbj5cbiIpOwoKICAgICAgICAjIHJlbW92ZSBDSUF0dHJpYnV0ZUNvbGxlY3Rpb24gcGFja2FnZSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFBhY2thZ2VOYW1lID0gJ0lUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uJzsKICAgICAgICBteSBAUmVwb3MgICAgICAgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUxpc3QoCiAgICAgICAgICAgIFJlc3VsdCA9PiAnU2hvcnQnCiAgICAgICAgKTsKICAgICAgICBteSBAUGFja2FnZUVudHJ5ID0gZ3JlcCB7ICRfLT57TmFtZX0gZXEgJFBhY2thZ2VOYW1lIH0gQFJlcG9zOwogICAgICAgIGlmIChAUGFja2FnZUVudHJ5KSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Vbmluc3RhbGxpbmcgJFBhY2thZ2VOYW1lIHBhY2thZ2UuLi48L3llbGxvdz5cbiIpOwogICAgICAgICAgICBteSAkUGFja2FnZVZlcnNpb24gPSAkUGFja2FnZUVudHJ5WzBde1ZlcnNpb259OwogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Rm91bmQgJFBhY2thZ2VOYW1lIFZlcnNpb24gJFBhY2thZ2VWZXJzaW9uPC95ZWxsb3c+XG4iKTsKCiAgICAgICAgICAgICMgcmVzZXQgc2V0dGluZ3MgdGhhdCB0aGlzIGxlZ2FjeSBwYWNrYWdlIHVuc3VjY2Vzc2Z1bGx5IGF0dGVtcHRzIHRvIHJlc2V0IHVwb24gdW5pbnN0YWxsYXRpb24gKGxvY2sgaXMgbWlzc2luZykKICAgICAgICAgICAgJFNlbGYtPl9SZXNldFNldHRpbmdzKAogICAgICAgICAgICAgICAgU2V0dGluZ05hbWUgPT4gJ0xvYWRlcjo6QWdlbnQ6OkNvbW1vbkpTIyMjMTAwLUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRQYWNrYWdlID0gJFBhY2thZ2VPYmplY3QtPlJlcG9zaXRvcnlHZXQoCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRQYWNrYWdlTmFtZSwKICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gJFBhY2thZ2VWZXJzaW9uLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRQYWNrYWdlT2JqZWN0LT5QYWNrYWdlVW5pbnN0YWxsKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYWNrYWdlLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJFN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgdW5pbnN0YWxsaW5nICRQYWNrYWdlTmFtZSBwYWNrYWdlLjwvZ3JlZW4+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5pbnN0YWxsICRQYWNrYWdlTmFtZSBwYWNrYWdlITwvcmVkPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICI8Z3JlZW4+Q29udGludWluZyB3aXRob3V0IGRlbGV0aW5nIGxlZ2FjeSBkYXRhLjwvZ3JlZW4+XG4iCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJ05leHQnOwp9CgpzdWIgX0dlbmVyYXRlRGVmaW5pdGlvbllBTUwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEV4cGxpY2l0bHkgZ2VuZXJhdGUgYSBZQU1MIHN0cmluZyBpbiBvcmRlciB0byBoYXZlIGJldHRlciBjb250cm9sCiAgICAjIG9mIHRoZSBsYXlvdXQuCiAgICBteSAkQ0lZQU1MID0gPDwnRU5EX1lBTUwnOwotLS0KUGFnZXM6CiAgLSBOYW1lOiBDb250ZW50CiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDEKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQoKU2VjdGlvbnM6CiAgQXR0cmlidXRlczoKICAgIENvbnRlbnQ6CkVORF9ZQU1MCgogICAgbXkgJUR5bmFtaWNGaWVsZHM7CgogICAgQVRUUklCVVRFOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkUGFyYW17QXR0cmlidXRlc30tPkAqICkgewogICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfTsKCiAgICAgICAgbXkgJFlBTUxMaW5lID0gIiAgICAgIC0gREY6ICRQYXJhbXtBdHRyaWJ1dGVNYXB9eyAkQXR0cmlidXRlLT57S2V5fSB9XG4iOwoKICAgICAgICBpZiAoICRBdHRyaWJ1dGUtPntJbnB1dH17UmVxdWlyZWR9ICkgewogICAgICAgICAgICAkWUFNTExpbmUgLj0gIiAgICAgICAgTWFuZGF0b3J5OiAxXG4iOwogICAgICAgIH0KCiAgICAgICAgbXkgJURGQmFzaWMgPSAoCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFBhcmFte0F0dHJpYnV0ZU1hcH17ICRBdHRyaWJ1dGUtPntLZXl9IH0sCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEF0dHJpYnV0ZS0+e05hbWV9LAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIENJQ2xhc3MgICAgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICApOwoKICAgICAgICBteSAlREZTcGVjaWZpYyA9ICRTZWxmLT5fREZDb25maWdGcm9tTGVnYWN5KAogICAgICAgICAgICBBdHRyaWJ1dGUgICAgPT4gJEF0dHJpYnV0ZSwKICAgICAgICAgICAgQXR0cmlidXRlTWFwID0+ICRQYXJhbXtBdHRyaWJ1dGVNYXB9LAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRQYXJhbXtEZWZpbml0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVERlNwZWNpZmljICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICAgICAiPHJlZD5Db3VsZCBub3QgY29udmVydCAnJEF0dHJpYnV0ZS0+e05hbWV9JyB0byBEeW5hbWljRmllbGQgKENsYXNzOiAnJFBhcmFte0NsYXNzfSc7IERlZmluaXRpb25JRDogJyRQYXJhbXtEZWZpbml0aW9uSUR9JykgLSBza2lwcGluZyBhdHRyaWJ1dGUhPC9yZWQ+XG4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IEFUVFJJQlVURTsKICAgICAgICB9CgogICAgICAgICRDSVlBTUwgLj0gJFlBTUxMaW5lOwoKICAgICAgICAkRHluYW1pY0ZpZWxkc3sgJFBhcmFte0F0dHJpYnV0ZU1hcH17ICRBdHRyaWJ1dGUtPntLZXl9IH0gfSA9IHsgJURGQmFzaWMsICVERlNwZWNpZmljIH07CiAgICB9CgogICAgbXkgJERGWUFNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkR1bXAoCiAgICAgICAgRGF0YSA9PiBcJUR5bmFtaWNGaWVsZHMsCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgQ29uZmlnSXRlbSAgID0+ICRDSVlBTUwsCiAgICAgICAgRHluYW1pY0ZpZWxkID0+ICRERllBTUwsCiAgICB9Owp9CgpzdWIgX0dldEF0dHJpYnV0ZXNGcm9tTGVnYWN5WUFNTCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJFBhcmFte0RlZmluaXRpb25SZWZ9IC8vICRTZWxmLT57WUFNTE9iamVjdH0tPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkUGFyYW17RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgU2tpcCBkZWZpbml0aW9ucyB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBmb3JtYXQgZm9yIE9UT0JPIDExCiAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZiBlcSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuIGlmICREZWZpbml0aW9uUmVmLT57UGFnZXN9OwogICAgICAgIHJldHVybiBpZiAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfTsKICAgIH0KCiAgICAjIGEgc2FuaXR5IHRlc3Qgd2hldGhlciB0aGlzIGlzIHBvc3NpYmx5IGluIHRoZSBmb3JtYXQgZm9yIE9UT0JPIDEwCiAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZiBuZSAnQVJSQVknICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5OZWVkIGEgdmFsaWQgbGVnYWN5IGRlZmluaXRpb24hPC9yZWQ+XG4iKTsKCiAgICAgICAgZGllOwogICAgfQoKICAgIG15IEBBdHRyaWJ1dGVzOwogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkRGVmaW5pdGlvblJlZi0+QCogKSB7CiAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJEF0dHJpYnV0ZTsKCiAgICAgICAgaWYgKCAkQXR0cmlidXRlLT57U3VifSAmJiAkUGFyYW17UmVjdVN1YnN9ICkgewogICAgICAgICAgICBteSAkUHJpbWFyeVN1YiA9IHsgS2V5ID0+ICRBdHRyaWJ1dGUtPntLZXl9IC4gJzo6PFN1YlByaW1hcnlBdHRyaWJ1dGU+JyB9OwoKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJFByaW1hcnlTdWI7CiAgICAgICAgICAgIG15IEBTdWJBdHRyaWJ1dGVzID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVzRnJvbUxlZ2FjeVlBTUwoIERlZmluaXRpb25SZWYgPT4gJEF0dHJpYnV0ZS0+e1N1Yn0gKTsKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgbWFwIHsgeyBLZXkgPT4gJEF0dHJpYnV0ZS0+e0tleX0gLiAnOjonIC4gJF8tPntLZXl9IH0gfSBAU3ViQXR0cmlidXRlczsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEBBdHRyaWJ1dGVzOwp9CgpzdWIgX0RGQ29uZmlnRnJvbUxlZ2FjeSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtUeXBlfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+QXR0cmlidXRlIHdpdGhvdXQgSW5wdXQgVHlwZSE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBteSAkVHlwZSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtUeXBlfTsKICAgIG15ICVERjsKCiAgICBpZiAoIGFueSB7IGRlZmluZWQgJFBhcmFte0F0dHJpYnV0ZX17JF99IH0gcXcvQ291bnRNaW4gQ291bnRNYXggQ291bnREZWZhdWx0LyApIHsKICAgICAgICB1bmxlc3MgKCAhJFBhcmFte0F0dHJpYnV0ZX17Q291bnRNYXh9IHx8ICggJFBhcmFte0F0dHJpYnV0ZX17Q291bnRNYXh9ICYmICRQYXJhbXtBdHRyaWJ1dGV9e0NvdW50TWF4fSA8PSAxICkgKSB7ICAgICMjIG5vIGNyaXRpYyBxdyhDb250cm9sU3RydWN0dXJlczo6UHJvaGliaXRVbmxlc3NCbG9ja3MpCiAgICAgICAgICAgICRERntDb25maWd9e011bHRpVmFsdWV9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtTdWJ9ICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1NldCc7CgogICAgICAgIGlmICggJFBhcmFte0luU3VifSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPlN1YnMgb2Ygc3VicyBhcmUgbm90IHN1cHBvcnRlZCE8L3JlZD5cbiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1YiAgICAgPSBkZWxldGUgJFBhcmFte0F0dHJpYnV0ZX17U3VifTsKICAgICAgICBteSAkUHJpbWFyeSA9IHsKICAgICAgICAgICAgJFBhcmFte0F0dHJpYnV0ZX0tPiUqLAogICAgICAgICAgICBLZXkgID0+ICc8U3ViUHJpbWFyeUF0dHJpYnV0ZT4nLAogICAgICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICB9OwoKICAgICAgICAjIHByaW1hcnkgYXR0cmlidXRlIGNhbm5vdCBiZSBtdWx0aXZhbHVlIGluIFhNTCBzY2hlbWEKICAgICAgICBmb3IgbXkgJERlbGV0ZSAocXcvQ291bnRNaW4gQ291bnRNYXggQ291bnREZWZhdWx0LykgewogICAgICAgICAgICBkZWxldGUgJFByaW1hcnktPnskRGVsZXRlfTsKICAgICAgICB9CgogICAgICAgIG15IEBJbmNsdWRlOwoKICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkUHJpbWFyeSwgJFN1Yi0+QCogKSB7CiAgICAgICAgICAgICRBdHRyaWJ1dGUtPntLZXl9ID0gJFBhcmFte0F0dHJpYnV0ZX17S2V5fSAuICc6OicgLiAkQXR0cmlidXRlLT57S2V5fTsKCiAgICAgICAgICAgIG15ICVERkJhc2ljID0gKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfSwKICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEF0dHJpYnV0ZS0+e05hbWV9LAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgQ0lDbGFzcyAgICA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJURGU3BlY2lmaWMgPSAkU2VsZi0+X0RGQ29uZmlnRnJvbUxlZ2FjeSgKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSAgICA9PiAkQXR0cmlidXRlLAogICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwID0+ICRQYXJhbXtBdHRyaWJ1dGVNYXB9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICElREZTcGVjaWZpYyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgICAgICAgICAiPHJlZD5Db3VsZCBub3QgY29udmVydCBzdWIgYXR0cmlidXRlICckQXR0cmlidXRlLT57TmFtZX0nICgkUGFyYW17QXR0cmlidXRlfXtLZXl9OjokQXR0cmlidXRlLT57S2V5fSkgdG8gRHluYW1pY0ZpZWxkIChDbGFzczogJyRQYXJhbXtDbGFzc30nOyAgRGVmaW5pdGlvbklEOiAnJFBhcmFte0RlZmluaXRpb25JRH0nKSAtIHNraXBwZWQgYXR0cmlidXRlITwvcmVkPlxuIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBASW5jbHVkZSwgewogICAgICAgICAgICAgICAgREYgICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4geyAlREZCYXNpYywgJURGU3BlY2lmaWMgfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRERntDb25maWd9e0luY2x1ZGV9ID0gXEBJbmNsdWRlOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnVGV4dCcgfHwgJFR5cGUgZXEgJ1RleHRBcmVhJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICRUeXBlOwogICAgICAgICRERntDb25maWd9e1JlZ0V4TGlzdH0gPSBbXTsKCiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXh9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtSZWdFeExpc3R9ID0gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXh9LAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXhFcnJvck1lc3NhZ2V9IC8vICdGb3JtYXQgaW52YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVEZWZhdWx0fSApIHsKICAgICAgICAgICAgJERGe0NvbmZpZ317RGVmYXVsdFZhbHVlfSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZURlZmF1bHR9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0dlbmVyYWxDYXRhbG9nJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICRUeXBlOwoKICAgICAgICBpZiAoICEkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17Q2xhc3N9ICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+R2VuZXJhbENhdGFsb2cgYXR0cmlidXRlIHdpdGhvdXQgY2xhc3MhPC9yZWQ+XG4iKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRERntDb25maWd9e0NsYXNzfSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtDbGFzc307CgogICAgICAgIGlmICggJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAgICAgJERGe0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0N1c3RvbWVyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAkVHlwZTsKCiAgICAgICAgJERGe0NvbmZpZ317UG9zc2libGVOb25lfSAgPSAxOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0Ryb3Bkb3duJzsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0N1c3RvbWVyJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdDdXN0b21lclVzZXInOwoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ICA9IDE7CiAgICAgICAgJERGe0NvbmZpZ317RWRpdEZpZWxkTW9kZX0gPSAnQXV0b0NvbXBsZXRlJzsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0RhdGUnIHx8ICRUeXBlIGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAkVHlwZTsKCiAgICAgICAgJERGe0NvbmZpZ317WWVhcnNJbkZ1dHVyZX0gPSA1OwogICAgICAgICRERntDb25maWd9e1llYXJzSW5QYXN0fSAgID0gNTsKICAgICAgICAkREZ7Q29uZmlnfXtZZWFyc1BlcmlvZH0gICA9IDA7CgogICAgICAgIGlmICggJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1llYXJQZXJpb2RGdXR1cmV9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtZZWFyc1BlcmlvZH0gICA9IDE7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzSW5GdXR1cmV9ID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1llYXJQZXJpb2RGdXR1cmV9OwogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtZZWFyUGVyaW9kUGFzdH0gKSB7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzUGVyaW9kfSA9IDE7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzSW5QYXN0fSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtZZWFyUGVyaW9kUGFzdH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnSW50ZWdlcicgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnRHJvcGRvd24nOwoKICAgICAgICAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVNaW59IHx8PSAwOwogICAgICAgICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZU1heH0gfHw9IDMwOwoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZVZhbHVlc30gPSB7IG1hcCB7ICRfID0+ICRfIH0gKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVNaW59IC4uICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZU1heH0gKSB9OwoKICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZURlZmF1bHR9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtEZWZhdWx0VmFsdWV9ID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1ZhbHVlRGVmYXVsdH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ID0gMTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdUaWNrZXRSZWZlcmVuY2UnICkgewogICAgICAgICRERntGaWVsZFR5cGV9ICAgICAgICAgICAgICAgICAgICA9ICdUaWNrZXQnOwogICAgICAgICRERntDb25maWd9e1Bvc3NpYmxlTm9uZX0gICAgICAgICA9IDE7CiAgICAgICAgJERGe0NvbmZpZ317RWRpdEZpZWxkTW9kZX0gICAgICAgID0gJ0F1dG9Db21wbGV0ZSc7CiAgICAgICAgJERGe0NvbmZpZ317UmVmZXJlbmNlZE9iamVjdFR5cGV9ID0gJ1RpY2tldCc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdDSUNsYXNzUmVmZXJlbmNlJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSAgICAgICAgICAgICAgID0gJ0NvbmZpZ0l0ZW0nOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ICAgPSAnQXV0b0NvbXBsZXRlJzsKICAgICAgICAkREZ7Q29uZmlnfXtTZWFyY2hBdHRyaWJ1dGV9ID0gJ05hbWUnOwoKICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtSZWZlcmVuY2VkQ0lDbGFzc05hbWV9ICkgewogICAgICAgICAgICBteSAkUmVmZXJlbmNlZENJQ2xhc3NOYW1lID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1JlZmVyZW5jZWRDSUNsYXNzTmFtZX07CiAgICAgICAgICAgIG15ICVDbGFzc05hbWUySUQgICAgICAgICAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICkgLy8ge30KICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCAkQ2xhc3NOYW1lMklEeyRSZWZlcmVuY2VkQ0lDbGFzc05hbWV9ICkgewogICAgICAgICAgICAgICAgJERGe0NvbmZpZ317Q2xhc3NJRHN9ID0gWyAkQ2xhc3NOYW1lMklEeyRSZWZlcmVuY2VkQ0lDbGFzc05hbWV9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBteSAkQXR0cktleSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0tleX07CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VGhlIFJlZmVyZW5jZWRDSUNsYXNzTmFtZSAnJFJlZmVyZW5jZWRDSUNsYXNzTmFtZScgaW4gYXR0cmlidXRlICckQXR0cktleScgaGFzIG5vIG1hdGNoPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ1VzZXInICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ0FnZW50JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ0lBQ0N1c3RvbWVyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnQ3VzdG9tZXJDb21wYW55JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ3VzdG9tZXJVc2VyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnQ3VzdG9tZXJDb21wYW55JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ0lBdHRhY2htZW50JyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkQXR0YWNobWVudCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENoZWNrUGFja2FnZSAmJiAkU2VsZi0+e1VzZURlZmF1bHRzfSApIHsKICAgICAgICAgICAgJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9Kys7CiAgICAgICAgfQogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ0F0dGFjaG1lbnQnOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0F1dG9Db21wbGV0ZSc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdTZXJ2aWNlUmVmZXJlbmNlJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdTZXJ2aWNlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnUXVldWVSZWZlcmVuY2UnICkgewogICAgICAgIG15ICRDaGVja1BhY2thZ2UgPSAkU2VsZi0+X0NoZWNrSW5zdGFsbGVkUGFja2FnZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBQYWNrYWdlID0+ICdEeW5hbWljRmllbGRUaWNrZXRzQXR0cmlidXRlcycsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENoZWNrUGFja2FnZSAmJiAkU2VsZi0+e1VzZURlZmF1bHRzfSApIHsKICAgICAgICAgICAgJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9Kys7CiAgICAgICAgfQogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1F1ZXVlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnU0xBUmVmZXJlbmNlJyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkVGlja2V0c0F0dHJpYnV0ZXMnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDaGVja1BhY2thZ2UgJiYgJFNlbGYtPntVc2VEZWZhdWx0c30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TWlzc2luZ1BhY2thZ2VzfSsrOwogICAgICAgIH0KICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdTTEEnOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0F1dG9Db21wbGV0ZSc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdUeXBlUmVmZXJlbmNlJyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkVGlja2V0c0F0dHJpYnV0ZXMnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDaGVja1BhY2thZ2UgJiYgJFNlbGYtPntVc2VEZWZhdWx0c30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TWlzc2luZ1BhY2thZ2VzfSsrOwogICAgICAgIH0KICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdUeXBlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnVGV4dExpbmsnICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1RleHQnOwogICAgICAgICRERntDb25maWd9e0xpbmt9ID0gJ1slIERhdGEuVmFsdWUgfCB1cmwgJV0nOwogICAgfQoKICAgICMgTGVnYWN5IERGIHR5cGUgJ0R5bmFtaWNGaWVsZCcgZnJvbSB0aGUgcGFja2FnZSBDSUF0dHJpYnV0ZXNDb2xsZWN0aW9uCiAgICAjIFRoaXMgdHlwZSByZWZlcmVuY2VzIGEgZ2VuZXJpYyBERiB3aG9zZSB0eXBlIG11c3QgYmUgc3BlY2lmaWVkIGJ5IHRoZSBsZWdhY3kgYXR0cmlidXRlIE5hbWUKICAgIGVsc2lmICggJFR5cGUgZXEgJ0R5bmFtaWNGaWVsZCcgKSB7CiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17TmFtZX0gKSB7CiAgICAgICAgICAgIG15ICRMZWdhY3lGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e05hbWV9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkREZ7RmllbGRUeXBlfSAgICAgICAgICAgICAgPSAnRHJvcGRvd24nOwogICAgICAgICAgICAkREZ7Q29uZmlnfXtNdWx0aVZhbHVlfSAgICAgPSAoICRQYXJhbXtBdHRyaWJ1dGV9e0NvdW50TWF4fSAmJiAkUGFyYW17QXR0cmlidXRlfXtDb3VudE1heH0gPiAxICkgPyAxIDogMDsKICAgICAgICAgICAgJERGe0NvbmZpZ317UG9zc2libGVWYWx1ZXN9ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZWdhY3lGaWVsZCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5GaWVsZCB0eXBlICdEeW5hbWljRmllbGQnIHJlcXVpcmVzIE5hbWUgc3BlY2lmaWNhdGlvbiE8L3JlZD5cbiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Vbmtub3duIGlucHV0IHR5cGUgJyRUeXBlJyE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICVERjsKfQoKc3ViIF9Db250aW51ZU9yTm90IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICdOZXh0JyBpZiAkU2VsZi0+e1VzZURlZmF1bHRzfTsKCiAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgIjx5ZWxsb3c+RG9uZS5cblxuWW91IGNhbiBwYXVzZSBoZXJlIHRvIHJldmlldyBhbmQgcG9zc2libHkgYWx0ZXIgdGhlIHN1Z2dlc3Rpb25zIGJ5IGluc3BlY3RpbmcgYW5kIGNoYW5naW5nIHRoZSBmaWxlcy4gQ2FsbGluZyB0aGUgc2NyaXB0IGFnYWluIGxhdGVyIHNob3VsZCBhdXRvbWF0aWNhbGx5IHJlc3VtZSBhdCB0aGUgcmlnaHQgc3RlcCwgeW91IGNhbiBtYW51YWxseSBlbmZvcmNlIHRoaXMgYnkgY2FsbGluZyB2aWE6PC95ZWxsb3c+XG4iCiAgICApOwogICAgJFNlbGYtPlByaW50KCAiXHRiaW4vb3RvYm8uQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTEgLS1zdGFydC1hdCAiIC4gKCAkUGFyYW17Q3VycmVudFN0ZXB9ICsgMSApIC4gIlxuIiApOwogICAgJFNlbGYtPlByaW50KAogICAgICAgICJcbjx5ZWxsb3c+VG8gZmluaXNoIHRoZSBzY3JpcHQgbm93LCBqdXN0IHByZXNzIGVudGVyLiBUbyBkaXJlY3RseSBjb250aW51ZSB3aXRoIHRoZSBkZWZhdWx0IHN1Z2dlc3Rpb25zIHdpdGhvdXQgcmV2aWV3IHdyaXRlICdkZWYnLjwveWVsbG93PlxuXHQiCiAgICApOwoKICAgIHJldHVybiAnTmV4dCcgaWYgPFNURElOPiA9fiBtL15kZWYoYXVsdCk/JC87CgogICAgcmV0dXJuICdFeGl0JzsKfQoKc3ViIF9DaGVja0luc3RhbGxlZFBhY2thZ2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUGFzcyA9IDE7CgogICAgcmV0dXJuICRQYXNzIGlmICRTZWxmLT57Q2hlY2tlZFR5cGVzfXsgJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1R5cGV9IH07CgogICAgJFBhc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UGFja2FnZScpLT5QYWNrYWdlSXNJbnN0YWxsZWQoCiAgICAgICAgTmFtZSA9PiAkUGFyYW17UGFja2FnZX0sCiAgICApOwogICAgaWYgKCAhJFBhc3MgKSB7CiAgICAgICAgbXkgJENsYXNzICAgICAgICA9ICRQYXJhbXtDbGFzc307CiAgICAgICAgbXkgJERlZmluaXRpb25JRCA9ICRQYXJhbXtEZWZpbml0aW9uSUR9OwogICAgICAgIG15ICRGaWVsZFR5cGUgICAgPSAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VHlwZX07CiAgICAgICAgbXkgJEZpZWxkTmFtZSAgICA9ICRQYXJhbXtBdHRyaWJ1dGV9e05hbWV9OwogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5cbkVycm9yIGNvbnZlcnRpbmcgREYgKENsYXNzOiAkQ2xhc3MsIERlZmluaXRpb25JRDogJERlZmluaXRpb25JRCwgRmllbGQgVHlwZTogJEZpZWxkVHlwZSwgRmllbGQgTmFtZTogJEZpZWxkTmFtZSkuIDwvcmVkPiIpOwogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5UaGUgJFBhcmFte1BhY2thZ2V9IHBhY2thZ2UgaXMgcmVxdWlyZWQuPC9yZWQ+XG4iKTsKICAgIH0KICAgICRTZWxmLT57Q2hlY2tlZFR5cGVzfXsgJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1R5cGV9IH0gPSAxOwoKICAgIHJldHVybiAkUGFzczsKfQoKc3ViIF9SZXNldFNldHRpbmdzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJFNldHRpbmdOYW1lICAgICAgID0gJFBhcmFte1NldHRpbmdOYW1lfTsKICAgIG15ICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdMb2NrKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIEZvcmNlICA9PiAxLAogICAgICAgIE5hbWUgICA9PiAkU2V0dGluZ05hbWUsCiAgICApOwogICAgaWYgKCAhJEV4Y2x1c2l2ZUxvY2tHVUlEICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgbG9jayAnJFNldHRpbmdOYW1lJyBmb3IgcmVzZXQ8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CiAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdSZXNldCgKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkU2V0dGluZ05hbWUsCiAgICAgICAgRXhjbHVzaXZlTG9ja0dVSUQgPT4gJEV4Y2x1c2l2ZUxvY2tHVUlELAogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICApOwogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCByZXNldCAnJFNldHRpbmdOYW1lJzwvcmVkPlxuIik7CgogICAgICAgIHJldHVybjsKICAgIH0KICAgICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICBOYW1lICAgPT4gJFNldHRpbmdOYW1lLAogICAgKTsKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5sb2NrICckU2V0dGluZ05hbWUnPC9yZWQ+XG4iKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbXkgJURlcGxveW1lbnRSZXN1bHQgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgIENvbW1lbnRzID0+ICJSZXNldCAkU2V0dGluZ05hbWUuIiwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIEZvcmNlICAgID0+IDEsCiAgICApOwogICAgaWYgKCAhJERlcGxveW1lbnRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCBkZXBsb3kgcmVzZXQgb2YgJyRTZXR0aW5nTmFtZSc8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5TdWNjZXNzZnVsbHkgcmVzZXQgJyRTZXR0aW5nTmFtZScuPC9ncmVlbj5cbiIpOwogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ImportExport/Export.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW1wb3J0RXhwb3J0OjpFeHBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdUaGUgdG9vbCBmb3IgZXhwb3J0aW5nIGNvbmZpZyBpdGVtcycpOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndGVtcGxhdGUtbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3BlY2lmeSBhIHRlbXBsYXRlIG51bWJlciB0byBiZSBleHBvcnRlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKICAgICRTZWxmLT5BZGRBcmd1bWVudCgKICAgICAgICBOYW1lICAgICAgICA9PiAnZGVzdGluYXRpb24nLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJTcGVjaWZ5IHRoZSBwYXRoIHRvIGEgZmlsZSB3aGVyZSBjb25maWcgaXRlbSBkYXRhIHNob3VsZCBiZSBleHBvcnRlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLiovc214LAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGVtcGxhdGVJRCA9ICRTZWxmLT5HZXRPcHRpb24oJ3RlbXBsYXRlLW51bWJlcicpOwoKICAgICMgZ2V0IHRlbXBsYXRlIGRhdGEKICAgIG15ICRUZW1wbGF0ZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlRlbXBsYXRlR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkVGVtcGxhdGVEYXRhLT57VGVtcGxhdGVJRH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlRlbXBsYXRlICRUZW1wbGF0ZUlEIG5vdCBmb3VuZCEuXG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXhwb3J0IGFib3J0ZWQuLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkV4cG9ydGluZyBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cbiIpOwogICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgICMgZXhwb3J0IGRhdGEKICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPkV4cG9ydCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJFJlc3VsdCApIHsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXJyb3Igb2NjdXJyZWQuIEV4cG9ydCBpbXBvc3NpYmxlISBTZWUgU3lzbG9nIGZvciBkZXRhaWxzLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCAiPGdyZWVuPiIgLiAoICctJyB4IDY5ICkgLiAiPC9ncmVlbj5cbiIgKTsKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPlN1Y2Nlc3M6ICRSZXN1bHQtPntTdWNjZXNzfSBzdWNjZWVkZWQ8L2dyZWVuPlxuIik7CiAgICBpZiAoICRSZXN1bHQtPntGYWlsZWR9ICkgewogICAgICAgICRTZWxmLT5QcmludEVycm9yKCIkUmVzdWx0LT57RmFpbGVkfSBmYWlsZWQuXG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkVycm9yOiAkUmVzdWx0LT57RmFpbGVkfSBmYWlsZWQuPC9ncmVlbj5cbiIpOwogICAgfQoKICAgIG15ICREZXN0aW5hdGlvbkZpbGUgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ2Rlc3RpbmF0aW9uJyk7CgogICAgaWYgKCREZXN0aW5hdGlvbkZpbGUpIHsKCiAgICAgICAgbXkgJEZpbGVDb250ZW50ID0gam9pbiAiXG4iLCBAeyAkUmVzdWx0LT57RGVzdGluYXRpb25Db250ZW50fSB9OwoKICAgICAgICAjIHNhdmUgZGVzdGluYXRpb24gY29udGVudCB0byBmaWxlCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlV3JpdGUoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICREZXN0aW5hdGlvbkZpbGUsCiAgICAgICAgICAgIENvbnRlbnQgID0+IFwkRmlsZUNvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludEVycm9yKCJDYW4ndCB3cml0ZSBmaWxlICREZXN0aW5hdGlvbkZpbGUuXG5FeHBvcnQgYWJvcnRlZC5cbiIpOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkZpbGUgJERlc3RpbmF0aW9uRmlsZSBzYXZlZC48L2dyZWVuPlxuIik7CgogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkV4cG9ydCBjb21wbGV0ZS48L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ImportExport/Import.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW1wb3J0RXhwb3J0OjpJbXBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdUaGUgdG9vbCBmb3IgaW1wb3J0aW5nIGNvbmZpZyBpdGVtcycpOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndGVtcGxhdGUtbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3BlY2lmeSBhIHRlbXBsYXRlIG51bWJlciB0byBiZSBpbXBvZXJ0ZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvXGQrL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkQXJndW1lbnQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3NvdXJjZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIGZpbGUgd2hpY2ggY29udGFpbmluZyB0aGUgY29uZmlnIGl0ZW0gZGF0YSBmb3IgaW1wb3J0aW5nLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTb3VyY2VQYXRoID0gJFNlbGYtPkdldEFyZ3VtZW50KCdzb3VyY2UnKTsKICAgIGlmICggJFNvdXJjZVBhdGggJiYgIS1yICRTb3VyY2VQYXRoICkgewogICAgICAgIGRpZSAiRmlsZSAkU291cmNlUGF0aCBkb2VzIG5vdCBleGlzdCwgY2FuIG5vdCBiZSByZWFkLlxuIjsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGVtcGxhdGVJRCA9ICRTZWxmLT5HZXRPcHRpb24oJ3RlbXBsYXRlLW51bWJlcicpOwoKICAgICMgZ2V0IHRlbXBsYXRlIGRhdGEKICAgIG15ICRUZW1wbGF0ZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlRlbXBsYXRlR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkVGVtcGxhdGVEYXRhLT57VGVtcGxhdGVJRH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlRlbXBsYXRlICRUZW1wbGF0ZUlEIG5vdCBmb3VuZCEuXG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXhwb3J0IGFib3J0ZWQuLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkltcG9ydGluZyBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cbiIpOwogICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgIG15ICRTb3VyY2VDb250ZW50OwogICAgbXkgJFNvdXJjZUZpbGUgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ3NvdXJjZScpOwoKICAgIGlmICgkU291cmNlRmlsZSkgewoKICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+UmVhZCBGaWxlICRTb3VyY2VGaWxlLjwveWVsbG93PlxuIik7CgogICAgICAgICMgcmVhZCBzb3VyY2UgZmlsZQogICAgICAgICRTb3VyY2VDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVJlYWQoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICRTb3VyY2VGaWxlLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnU0NBTEFSJywKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ2Jpbm1vZGUnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTb3VyY2VDb250ZW50ICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiQ2FuJ3QgcmVhZCBmaWxlICRTb3VyY2VGaWxlLlxuSW1wb3J0IGFib3J0ZWQuXG4iKSBpZiAhJFNvdXJjZUNvbnRlbnQ7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgIH0KCiAgICB9CgogICAgIyBpbXBvcnQgZGF0YQogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKS0+SW1wb3J0KAogICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgU291cmNlQ29udGVudCA9PiAkU291cmNlQ29udGVudCwKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKICAgIGlmICggISRSZXN1bHQgKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlxuRXJyb3Igb2NjdXJyZWQuIEltcG9ydCBpbXBvc3NpYmxlISBTZWUgdGhlIE9UT0JPIGxvZyBmb3IgZGV0YWlscy5cbiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgICMgcHJpbnQgcmVzdWx0CiAgICAkU2VsZi0+UHJpbnQoIlxuPGdyZWVuPkltcG9ydCBvZiAkUmVzdWx0LT57Q291bnRlcn0gJFJlc3VsdC0+e09iamVjdH0gcmVjb3Jkczo8L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+U3VjY2VzczogJFJlc3VsdC0+e1N1Y2Nlc3N9IHN1Y2NlZWRlZDwvZ3JlZW4+XG4iKTsKICAgIGlmICggJFJlc3VsdC0+e0ZhaWxlZH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIiRSZXN1bHQtPntGYWlsZWR9IGZhaWxlZC5cbiIpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXJyb3I6ICRSZXN1bHQtPntGYWlsZWR9IGZhaWxlZC48L2dyZWVuPlxuIik7CiAgICB9CgogICAgZm9yIG15ICRSZXRDb2RlICggc29ydCBrZXlzICV7ICRSZXN1bHQtPntSZXRDb2RlfSB9ICkgewogICAgICAgIG15ICRDb3VudCA9ICRSZXN1bHQtPntSZXRDb2RlfS0+eyRSZXRDb2RlfSB8fCAwOwogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkltcG9ydCBvZiAkUmVzdWx0LT57Q291bnRlcn0gJFJlc3VsdC0+e09iamVjdH0gcmVjb3JkczogJENvdW50ICRSZXRDb2RlPC9ncmVlbj5cbiIpOwogICAgfQogICAgaWYgKCAkUmVzdWx0LT57RmFpbGVkfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5MYXN0IHByb2Nlc3NlZCBsaW5lIG51bWJlciBvZiBpbXBvcnQgZmlsZTogJFJlc3VsdC0+e0NvdW50ZXJ9PC9ncmVlbj5cbiIpOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkltcG9ydCBjb21wbGV0ZS48L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/IncidentState/Recalculate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW5jaWRlbnRTdGF0ZTo6UmVjYWxjdWxhdGU7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ1JlY2FsY3VsYXRlcyB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgY29uZmlnIGl0ZW1zLicpOwoKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2NvbmZpZ2l0ZW0tbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiUmVjYWxjdWxhdGUgbGlzdGVkIGNvbmZpZyBpdGVtcy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5SZWNhbGN1bGF0aW5nIHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cblxuIik7CgogICAgbXkgQENvbmZpZ0l0ZW1JRHM7ICAgICMgZWl0aGVyIGV4cGxpY2l0IGxpc3Qgb3IgYWxsIHZhbGlkIGNsYXNzZXMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzID0gQHsgJFNlbGYtPkdldE9wdGlvbignY29uZmlnaXRlbS1udW1iZXInKSAvLyBbXSB9OwogICAgaWYgKEBDb25maWdJdGVtTnVtYmVycykgewoKICAgICAgICBDT05GSUdfSVRFTV9OVU1CRVI6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY29uZmlnIGl0ZW0gaWQKICAgICAgICAgICAgbXkgJElEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJRCkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJElEOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fTlVNQkVSOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VW5hYmxlIHRvIGZpbmQgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1OdW1iZXIuPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIGNsYXNzIGlkcwogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKICAgICAgICBteSBAVmFsaWRDbGFzc0lEcyA9IHNvcnQga2V5cyAkQ2xhc3NMaXN0LT4lKjsKCiAgICAgICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMgZm9ybSBhbGwgdmFsaWQgY2xhc3NlcwogICAgICAgIG15ICVDb25maWdJdGVtc0lEc1JlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQFZhbGlkQ2xhc3NJRHMsCiAgICAgICAgICAgIFJlc3VsdCAgID0+ICdIQVNIJwogICAgICAgICk7CgogICAgICAgIEBDb25maWdJdGVtSURzID0ga2V5cyAlQ29uZmlnSXRlbXNJRHNSZWY7CiAgICB9CgogICAgIyBnZXQgbnVtYmVyIG9mIGNvbmZpZyBpdGVtcwogICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlJlY2FsY3VsYXRpbmcgaW5jaWRlbnQgc3RhdGUgZm9yICRDSUNvdW50IGNvbmZpZyBpdGVtcy48L3llbGxvdz5cbiIpOwoKICAgICMgUmVtZW1iZXIgY29uZmlnIGl0ZW0gcmVzdWx0cyB0aHJvdWdoIG11bHRpcGxlIHJ1bnMgb2YgQ3VySW5jaVN0YXRlUmVjYWxjKCkuCiAgICBteSAlTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGU7CiAgICBteSAlU2Nhbm5lZENvbmZpZ0l0ZW1JRHM7CgogICAgbXkgJENvdW50ID0gMDsKICAgIENPTkZJR0lURU06CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSA9PiBcJU5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLAogICAgICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyAgICAgICA9PiBcJVNjYW5uZWRDb25maWdJdGVtSURzLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Li4uIGNvdWxkIG5vdCByZWNhbGN1bGF0ZSBpbmNpZGVudCBzdGF0ZSBmb3IgY29uZmlnIGl0ZW0gaWQgJyRDb25maWdJdGVtSUQnITwvcmVkPlxuIik7CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU07CiAgICAgICAgfQoKICAgICAgICAkQ291bnQrKzsKCiAgICAgICAgaWYgKCAkQ291bnQgJSAxMDAgPT0gMCApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+Li4uICRDb3VudCBjb25maWcgaXRlbXMgcmVjYWxjdWxhdGVkLjwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPlByaW50KCJcbjxncmVlbj5SZWFkeS4gUmVjYWxjdWxhdGVkICRDb3VudCBjb25maWcgaXRlbXMuPC9ncmVlbj5cblxuIik7CgogICAgIyBnZXQgc2VydmljZSBvYmplY3QKICAgIG15ICRTZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKCiAgICAjIGdldCBsaXN0IG9mIGFsbCBzZXJ2aWNlcyAodmFsaWQgYW5kIGludmFsaWQpCiAgICBteSAlU2VydmljZUxpc3QgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIG15ICROdW1iZXJPZlNlcnZpY2VzID0gc2NhbGFyIGtleXMgJVNlcnZpY2VMaXN0OwoKICAgICRTZWxmLT5QcmludCgKICAgICAgICAiPGdyZWVuPlJlc2V0dGluZyBTZXJ2aWNlUHJlZmVyZW5jZXMgJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJyBmb3IgJE51bWJlck9mU2VydmljZXMgc2VydmljZXMuLi48L2dyZWVuPlxuIgogICAgKTsKCiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUxpc3QgKSB7CgogICAgICAgICMgdXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgZnJvbSBDSXMgb2YgdGhlIHNlcnZpY2Ugd2l0aCBhbiBlbXB0eSB2YWx1ZQogICAgICAgICMgdGhpcyBpcyBuZWNlc3NhcnkgdG8gZm9yY2UgYSByZWNhbGN1bGF0aW9uIG9uIGEgU2VydmljZUdldCgpCiAgICAgICAgJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJycsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+UmVhZHkuPC9ncmVlbj5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Maint/ITSM/ConfigItem/CreateConditionalTickets.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ0l0ZW06OkNyZWF0ZUNvbmRpdGlvbmFsVGlja2V0czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignQ2hlY2tzIHRoZSBjb25maWd1cmVkIGNvbmZpZyBpdGVtcyBhbmQgY3JlYXRlcyB0aWNrZXRzIGFzIG5vdGlmaWNhdGlvbiBpZiB0aGUgcmVxdWlyZW1lbnRzIGFyZSBmdWxmaWxsZWQuJyk7CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE5vdGlmaWNhdGlvbkNvbmZpZ3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0NNREJOb3RpZmljYXRpb25zOjpSdWxlcycpOwoKICAgIGlmICggISROb3RpZmljYXRpb25Db25maWdzICkgewogICAgICAgICRTZWxmLT5QcmludCgiXG48Z3JlZW4+Tm8gbm90aWZpY2F0aW9ucyBjb25maWd1cmVkLjwvZ3JlZW4+XG4iKTsKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMaW5rT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKICAgIG15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgbXkgJEFydGljbGVPYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIG15ICVDbGFzc0xpc3QgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApCiAgICB9OwogICAgbXkgJURlcGxTdGF0ZUxpc3QgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgKQogICAgfTsKCiAgICAjIGdvIHRocm91Z2ggYWxsIGNvbmZpZ3VyZWQgbm90aWZpY2F0aW9uIHNldHVwcwogICAgQ09ORklHOgogICAgZm9yIG15ICRDb25maWcgKCB2YWx1ZXMgJXskTm90aWZpY2F0aW9uQ29uZmlnc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGFuZCBkZXBsb3ltZW50IHN0YXRlIGlkcwogICAgICAgIG15ICRDbGFzc0lEICAgICAgPSAkQ2xhc3NMaXN0eyAkQ29uZmlnLT57Q2xhc3N9IH07CiAgICAgICAgbXkgJERlcGxTdGF0ZUlEcyA9IFsgbWFwIHsgJERlcGxTdGF0ZUxpc3R7JF99IH0gQHsgJENvbmZpZy0+e0FjdGl2ZURlcGxveW1lbnRTdGF0ZXN9IH0gXTsKCiAgICAgICAgaWYgKCAhJENsYXNzSUQgfHwgIUlzQXJyYXlSZWZXaXRoRGF0YSgkRGVwbFN0YXRlSURzKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIGNsYXNzICckQ29uZmlnLT57Q2xhc3N9Jywgb3IgdmFsaWQgZGVwbG95bWVudCBzdGF0ZXMgY29uZmlndXJlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IENPTkZJRzsKICAgICAgICB9CgogICAgICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbJENsYXNzSURdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUlEcywKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnbyB0aHJvdWdoIGFsbCBjb25maWcgaXRlbXMKICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkTGFzdFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmZpZy0+e1RpbWVDSUtleX0gfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRHluYW1pYyBmaWVsZCAkQ29uZmlnLT57VGltZUNJS2V5fSBvZiBDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCBpcyBlbXB0eSBvciBkb2VzIG5vdCBleGlzdCAtIHNraXAhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkZWZpbmUgdGhlIHRyaWdnZXIgZGF0ZTsKICAgICAgICAgICAgbXkgJFRyaWdnZXJEYXRlT2JqZWN0OwoKICAgICAgICAgICAgIyBkYXRlIGZpZWxkIGZvcm1hdAogICAgICAgICAgICBpZiAoICRMYXN0VmVyc2lvbi0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGltZUNJS2V5fSB9ID1+IC9eKFxkKyktKFxkKyktKFxkKykvICkgewogICAgICAgICAgICAgICAgJFRyaWdnZXJEYXRlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBZZWFyICAgPT4gJDEsCiAgICAgICAgICAgICAgICAgICAgICAgIE1vbnRoICA9PiAkMiwKICAgICAgICAgICAgICAgICAgICAgICAgRGF5ICAgID0+ICQzLAogICAgICAgICAgICAgICAgICAgICAgICBIb3VyICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgTWludXRlID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZCA9PiAwLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljIGZpZWxkICRDb25maWctPntUaW1lQ0lLZXl9IG9mIENvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGhhcyBhbiBpbnZhbGlkIGZvcm1hdCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHByZXBhcmUgdGhlIG1vZGlmaWVyCiAgICAgICAgICAgIG15ICggJFNpZ24sICRTdW1tYW5kLCAkVW5pdCApID0gKCAkQ29uZmlnLT57VGltZU1vZGlmaWVyfSA9fiAvXlxzKihbKy1dPylccyooXGQrKVxzKihbZGhtXT8pLyApOwogICAgICAgICAgICAkU3VtbWFuZCAqPSAoICRTaWduICYmICRTaWduIGVxICctJyApICA/IC0xIDogMTsKICAgICAgICAgICAgJFN1bW1hbmQgKj0gKCAhJFVuaXQgfHwgJFVuaXQgZXEgJ2QnICkgPyA4NjQwMCA6CiAgICAgICAgICAgICAgICAoICRVbml0IGVxICdoJyApID8gMzYwMCA6IDYwOwoKICAgICAgICAgICAgIyBnZXQgbm93CiAgICAgICAgICAgIG15ICROb3dPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb25seSBwcm9jZWVkLCBpZiBub3cgaXMgbGF0ZXIgdGhhbiB0aGVuIG1vZGlmaWVkIHRyaWdnZXIgZGF0ZQogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAoICROb3dPYmplY3QtPlRvRXBvY2goKSA8ICRUcmlnZ2VyRGF0ZU9iamVjdC0+VG9FcG9jaCgpICsgJFN1bW1hbmQgKTsKCiAgICAgICAgICAgICMgY2hlY2sgd2hldGhlciBhIHRpY2tldCB3YXMgZ2VuZXJhdGVkIHByZXZpb3VzbHkgYW5kIGlzIG5vdCBjbG9zZWQKICAgICAgICAgICAgbXkgJUxpbmtMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgICAgICAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgT2JqZWN0MiA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIFN0YXRlICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICgga2V5cyAlTGlua0xpc3QgKSB7CiAgICAgICAgICAgICAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJExpbmtlZFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgU2lsZW50ICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNraXAgY29uZmlnIGl0ZW0sIGlmIGFuIG9wZW4gdGlja2V0IHdhcyBhbHJlYWR5IGNyZWF0ZWQKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGlja2V0fXtEeW5hbWljRmllbGR9IH0KICAgICAgICAgICAgICAgICAgICAmJiAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGlja2V0fXtEeW5hbWljRmllbGR9IH0gPT0gMQogICAgICAgICAgICAgICAgICAgICYmICRUaWNrZXR7U3RhdGVUeXBlfSBuZSAiY2xvc2VkIgogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcmVwYXJlIHN1YnN0aXR1dGlvbnMKICAgICAgICAgICAgbXkgJVN1YnN0aXR1dGlvbnMgPSAoCiAgICAgICAgICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTlVNQkVSPicgPT4gJExhc3RWZXJzaW9uLT57TnVtYmVyfSwKICAgICAgICAgICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9OQU1FPicgICA9PiAkTGFzdFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9EQVRFPicgICA9PiAkTGFzdFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmZpZy0+e1RpbWVDSUtleX0gfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFNVQktFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCAoICRDb25maWctPntUaWNrZXR9e1RpdGxlfSAuICRDb25maWctPntUaWNrZXR9e1RleHR9ICkgPX4gLzxPVE9CT19DT05GSUdJVEVNXyhbXj5dKyk+L2cgKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNVQktFWSBpZiBleGlzdHMgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In07CiAgICAgICAgICAgICAgICBuZXh0IFNVQktFWSBpZiAhJExhc3RWZXJzaW9uLT57JEtleX07CgogICAgICAgICAgICAgICAgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In0gPSAkTGFzdFZlcnNpb24tPnskS2V5fSAvLyAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFRpY2tldFRpdGxlICAgICAgPSAkQ29uZmlnLT57VGlja2V0fXtUaXRsZX07CiAgICAgICAgICAgIG15ICROb3RpZmljYXRpb25UZXh0ID0gJENvbmZpZy0+e1RpY2tldH17VGV4dH07CiAgICAgICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlU3Vic3RpdHV0aW9ucyApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRUaXRsZSAgICAgID1+IHMvJEtleS8kU3Vic3RpdHV0aW9uc3sgJEtleSB9L2c7CiAgICAgICAgICAgICAgICAkTm90aWZpY2F0aW9uVGV4dCA9fiBzLyRLZXkvJFN1YnN0aXR1dGlvbnN7ICRLZXkgfS9nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFsbCBjaGVja3MgZmluaXNoZWQgLT4gY3JlYXRlIGEgdGlja2V0IGFzIG5vdGlmaWNhdGlvbgogICAgICAgICAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCksCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJFRpY2tldFRpdGxlLAogICAgICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICRDb25maWctPntUaWNrZXR9e1F1ZXVlfSwKICAgICAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtMb2NrfSAgICAgICAgIHx8ICd1bmxvY2snLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICRDb25maWctPntUaWNrZXR9e1ByaW9yaXR5fSAgICAgfHwgJzMgbm9ybWFsJywKICAgICAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtTdGF0ZX0gICAgICAgIHx8ICduZXcnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRDb25maWctPntUaWNrZXR9e1R5cGV9ICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICBTZXJ2aWNlICAgICAgPT4gJENvbmZpZy0+e1RpY2tldH17U2VydmljZX0gICAgICB8fCAnJywKICAgICAgICAgICAgICAgIFNMQSAgICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtTTEF9ICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICRDb25maWctPntUaWNrZXR9e0N1c3RvbWVySUR9ICAgfHwgJycsCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJENvbmZpZy0+e1RpY2tldH17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtPd25lcklEfSAgICAgIHx8ICcxJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkVGlja2V0SUQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgY3JlYXRlIGEgdGlja2V0IGZvciBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtSUQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkbyBhcnRpY2xlIGRiIGluc2VydAogICAgICAgICAgICBteSAkSW50ZXJuYWxBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQ2hhbm5lbCggQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJyApOwogICAgICAgICAgICBteSAkQXJ0aWNsZUlEICAgICAgICAgICAgICAgICAgICA9ICRJbnRlcm5hbEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJENvbmZpZy0+e1RpY2tldH17U2VuZGVyVHlwZX0gfHwgJ3N5c3RlbScsCiAgICAgICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAwLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgnLAogICAgICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJE5vdGlmaWNhdGlvblRleHQsCiAgICAgICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAkVGlja2V0VGl0bGUsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ05ld1RpY2tldCcsCiAgICAgICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAiXCVcJUNNREJOb3RpZmljYXRpb24iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjbG9zZSB0aWNrZXQgaWYgYXJ0aWNsZSBjcmVhdGUgZmFpbGVkIQogICAgICAgICAgICBpZiAoICEkQXJ0aWNsZUlEICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0RGVsZXRlKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IHByb2Nlc3MgdGlja2V0ISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbGluayB0aWNrZXQgYW5kIGNvbmZpZyBpdGVtCiAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgIHRvIDEsIHRvIG1hcmsgdGhlIHRpY2tldCBhcyBnZW5lcmF0ZWQgYnkgdGhpcyBzY3JpcHQKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJENvbmZpZy0+e1RpY2tldH17RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5QcmludCgiXG48Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Maint/ITSM/ConfigItem/RebuildLinkTable.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ0l0ZW06OlJlYnVpbGRMaW5rVGFibGU7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKDw8J0VORF9UWFQnKTsKUmVidWlsZCB0aGUgZGF0YWJhc2UgdGFibGUgY29uZmlnaXRlbV9saW5rIGZyb20gdGhlIGR5bmFtaWMgZmllbGRzIG9mIHRoZSB0eXBlIFJlZmVyZW5jZS4gT25seSB0aGUgZmllbGRzIGxpbmtpbmcgY29uZmlnIGl0ZW1zIGFyZQpjb25zaWRlcmVkIGluIHRoaXMgcHJvY2Vzcy4KRU5EX1RYVAoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5SZWJ1aWxkaW5nIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuLi48L3llbGxvdz5cblxuIik7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRSZXN1bHQgICAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJlYnVpbGRMaW5rVGFibGU7CgogICAgJFNlbGYtPlByaW50KCI8JFJlc3VsdC0+e0NvbG9yfT4kUmVzdWx0LT57TWVzc2FnZX08LyRSZXN1bHQtPntDb2xvcn0+XG5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvciB1bmxlc3MgJFJlc3VsdC0+e1N1Y2Nlc3N9OwogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Maint/WebService/TriggerConfigItemFetch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6V2ViU2VydmljZTo6VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGFlbW9uOjpTY2hlZHVsZXJEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoLicpOwogICAgJFNlbGYtPkFkZEFyZ3VtZW50KAogICAgICAgIE5hbWUgICAgICAgID0+ICdXZWJTZXJ2aWNlTmFtZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlNlbGVjdCBuYW1lIG9mIHdlYiBzZXJ2aWNlIHRvIGJlIHRyaWdnZXJlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkQXJndW1lbnQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0ludm9rZXInLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJTZWxlY3QgSW52b2tlciB0byBiZSB0cmlnZ2VyZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRJbnZva2VyICAgICAgICA9ICRTZWxmLT5HZXRBcmd1bWVudCgnSW52b2tlcicpOwogICAgbXkgJFdlYnNlcnZpY2VOYW1lID0gJFNlbGYtPkdldEFyZ3VtZW50KCdXZWJTZXJ2aWNlTmFtZScpOwoKICAgICMgQ2hlY2sgaWYgYWxsIHJlcXVpcmVtZW50cyBhcmUgbWV0ICh3ZWIgc2VydmljZSBleGlzdHMgYW5kIGhhcyBuZWVkZWQgbWV0aG9kKS4KICAgIG15ICRXZWJzZXJ2aWNlCiAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KCBOYW1lID0+ICRXZWJzZXJ2aWNlTmFtZSApOwogICAgZGllICJSZXF1aXJlZCB3ZWIgc2VydmljZSAnJFdlYnNlcnZpY2VOYW1lJyBkb2VzIG5vdCBleGlzdCFcbiIgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlKTsKICAgIGRpZSAiUmVxdWlyZWQgd2ViIHNlcnZpY2UgJyRXZWJzZXJ2aWNlTmFtZScgaXMgaW52YWxpZCFcbiIgICAgIGlmICRXZWJzZXJ2aWNlLT57VmFsaWRJRH0gbmUgMTsKCiAgICBteSAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nCiAgICAgICAgPSAkV2Vic2VydmljZS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9OwogICAgZGllICJXZWIgc2VydmljZSAnJFdlYnNlcnZpY2VOYW1lJyBkb2VzIG5vdCBjb250YWluIHJlcXVpcmVkIFJFU1QgY29udHJvbGxlciBtYXBwaW5nIVxuIgogICAgICAgIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nKTsKICAgIGRpZSAiV2ViIHNlcnZpY2UgJyRXZWJzZXJ2aWNlTmFtZScgZG9lcyBub3QgY29udGFpbiB0aGUgSW52b2tlciAnJEludm9rZXInISIKICAgICAgICBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmctPnskSW52b2tlcn0gKTsKCiAgICAjIFJlbWVtYmVyIGRhdGEgZm9yIHRhc2suCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1GZXRjaFRhc2tEYXRhfSA9IHsKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2UtPntJRH0sCiAgICAgICAgSW52b2tlciAgICAgID0+ICRJbnZva2VyLAogICAgICAgIERhdGEgICAgICAgICA9PiB7IER1bW15ID0+IDEgfSwKICAgIH07CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEludm9rZXIgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ0ludm9rZXInKTsKCiAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgIjx5ZWxsb3c+VHJpZ2dlcmluZyAkSW52b2tlciBmb3IgaW1tZWRpYXRlIChhc3luY2hyb25vdXMpIGV4ZWN1dGlvbi48L3llbGxvdz5cbiIKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyktPlJ1biggJFNlbGYtPntDb25maWdJdGVtRmV0Y2hUYXNrRGF0YX0tPiUqICk7CgogICAgIyBUT0RPOiBUaGluayBhYm91dCBqdXN0IGFkZGluZyBhIHRhc2sKICAgICMgICAgbXkgJFRhc2tJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEYWVtb246OlNjaGVkdWxlckRCJyktPlRhc2tBZGQoCiAgICAjICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ0dlbmVyaWNJbnRlcmZhY2UnLAogICAgIyAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgID0+ICdDb25maWdJdGVtRmV0Y2hfJyAuICRJbnZva2VyLAogICAgIyAgICAgICAgTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzID0+IDEsCiAgICAjICAgICAgICBEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntDb25maWdJdGVtRmV0Y2hUYXNrRGF0YX0sCiAgICAjICAgICk7CiAgICAjCiAgICAjICAgIGlmICggIUlzSW50ZWdlcigkVGFza0lEKSApIHsKICAgICMgICAgICAgICRTZWxmLT5QcmludEVycm9yKCdDb3VsZCBub3QgdHJpZ2dlciBpbnZva2VyJyk7CiAgICAjICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICMgICAgfQogICAgIwogICAgIyAgICBpZiAoICRUYXNrSUQgPT0gLTEgKSB7CiAgICAjICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+QW5vdGhlciAkSW52b2tlciBjb250cm9sbGVyIGlzIGFscmVhZHkgcnVubmluZy4gUGxlYXNlIHRyeSBhZ2FpbiE8L3llbGxvdz5cbiIpOwogICAgIyAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICAjICAgIH0KCiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5Eb25lLjwvZ3JlZW4+XG4iKTsKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/DynamicField/Driver/ConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6Q29uZmlnSXRlbTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBhcmFtT2JqZWN0KQoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6QmFzZVJlZmVyZW5jZSk7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkgZmlyc3QpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtIC0gYmFja2VuZCBmb3IgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCklUU01Db25maWdJdGVtIGJhY2tlbmQgZm9yIHRoZSBSZWZlcmVuY2UgZHluYW1pYyBmaWVsZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCml0IGlzIHVzdWFsbHkgbm90IG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IGNyZWF0ZSBpbnN0YW5jZXMgb2YgZHluYW1pYyBmaWVsZCBkcml2ZXJzLgpJbnN0YW5jZXMgb2YgdGhlIGRyaXZlcnMgYXJlIGNyZWF0ZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZQpkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0IEM8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZD4uCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gYmxlc3Mge30sICRUeXBlOwoKICAgICMgU29tZSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZHMgYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgdGFibGUgYXR0cmlidXRlIGR5bmFtaWNfZmllbGRfdmFsdWUudmFsdWVfaW50LgogICAgJFNlbGYtPntWYWx1ZVR5cGV9ICAgICAgPSAnSW50ZWdlcic7CiAgICAkU2VsZi0+e1ZhbHVlS2V5fSAgICAgICA9ICdWYWx1ZUludCc7CiAgICAkU2VsZi0+e1RhYmxlQXR0cmlidXRlfSA9ICd2YWx1ZV9pbnQnOwoKICAgICMgVXNlZCBmb3IgZGVjbGFyaW5nIENTUyBjbGFzc2VzCiAgICAkU2VsZi0+e0ZpZWxkQ1NTQ2xhc3N9ID0gJ0R5bmFtaWNGaWVsZFJlZmVyZW5jZSc7CgogICAgIyBzZXQgZmllbGQgYmVoYXZpb3JzCiAgICAkU2VsZi0+e0JlaGF2aW9yc30gPSB7CiAgICAgICAgJ0lzQUNMUmVkdWNpYmxlJyAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzTm90aWZpY2F0aW9uRXZlbnRDb25kaXRpb24nID0+IDAsCiAgICAgICAgJ0lzU29ydGFibGUnICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzRmlsdHJhYmxlJyAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU3RhdHNDb25kaXRpb24nICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJyAgID0+IDEsCiAgICAgICAgJ0lzSGlkZGVuSW5UaWNrZXRJbmZvcm1hdGlvbicgID0+IDAsCiAgICAgICAgJ0lzUmVmZXJlbmNlRmllbGQnICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU2V0Q2FwYWJsZScgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ1NldHNEeW5hbWljQ29udGVudCcgICAgICAgICAgID0+IDEsCiAgICB9OwoKICAgICRTZWxmLT57UmVmZXJlbmNlZE9iamVjdFR5cGV9ID0gJ0lUU01Db25maWdJdGVtJzsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBWYWx1ZUdldCgpCgpUaGlzIG1ldGhvZCBjb250YWlucyBzcGVjaWFsIHN1cHBvcnQgZm9yIHRoZSBjYXNlIG9mIExlbnNlcy4gQSBMZW5zIG9wZXJhdGVzIGRpcmVjdGx5IG9uIGR5bmFtaWMgZmllbGQgb2YgYW4gc3BlY2lmaWMgb2JqZWN0LgpUaGUgc3BlY2lmaWMgb2JqZWN0IGlzIHVzdWFsbHkgaWRlbnRpZmllZCBieSB0aGUgdmFsdWUgb2YgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkLiBCdXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHNwZWNpYWwgY2FzZS4KV2hlbiB0aGUgcmVmZXJlbmNlIGlzIHRvIGFuIEM8SVRTTUNvbmZpZ0l0ZW0+IHRoZW4gdGhlIHJlbGV2YW50IElEIGlzIHRoZSBJRCBvZiB0aGUgbGFzdCB2ZXJzaW9uLiBUaGlzIGNhc2UgaXMgaGFuZGxlZAp3aGVuIHRoZSBwYXJhbWV0ZXIgQzxGb3JMZW5zPiBpcyBwYXNzZWQuCgo9Y3V0CgpzdWIgVmFsdWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgcGFyZW50IGNsYXNzCiAgICBteSAkVmFsdWUgPSAkU2VsZi0+U1VQRVI6OlZhbHVlR2V0KCVQYXJhbSk7CgogICAgIyBzcGVjaWFsIGhhbmRsaW5nIG9ubHkgZm9yIExlbnMKICAgIHJldHVybiAkVmFsdWUgdW5sZXNzICRQYXJhbXtGb3JMZW5zfTsKCiAgICAjIGZvciB1c2FnZSBpbiBsZW5zZXMgd2UgbWlnaHQgaGF2ZSB0byBpbnRlcnByZXQgdGhlIHZhbHVlcyB0byBiZSB1c2FibGUgZm9yIHRoZWlyIFZhbHVlR2V0KCkKICAgIHJldHVybiAkU2VsZi0+VmFsdWVGb3JMZW5zKAogICAgICAgICVQYXJhbSwKICAgICAgICBWYWx1ZSA9PiAkVmFsdWUKICAgICk7Cn0KCj1oZWFkMiBWYWx1ZVNldCgpCgpUaGlzIG1ldGhvZCBoYW5kbGVzIENvbmZpZ0l0ZW0tTGluayBzeW5jIGZvciBDPElUU01Db25maWdJdGVtPnMgd2hlbiBEeW5hbWljIEZpZWxkIFJlZmVyZW5jZXMgYmV0d2VlbiAyCkNvbmZpZ0l0ZW0oVmVyc2lvbikgYXJlIHVwZGF0ZWQuCgo9Y3V0CgpzdWIgVmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcmZvcm0gc2VhcmNoIGlmIG5lY2Vzc2FyeQogICAgaWYgKAogICAgICAgIGRlbGV0ZSAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICYmCiAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtJbXBvcnRTZWFyY2hBdHRyaWJ1dGV9ICYmCiAgICAgICAgJFNlbGYtPmNhbignU2VhcmNoT2JqZWN0cycpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggJFBhcmFte1NldH0gKSB7CiAgICAgICAgICAgIG15IEBWYWx1ZXM7CiAgICAgICAgICAgIGZvciBteSAkVmFsdWVJdGVtICggJFBhcmFte1ZhbHVlfS0+QCogKSB7CiAgICAgICAgICAgICAgICBteSAkVHJhbnNmb3JtZWRWYWx1ZSA9ICRTZWxmLT5fVHJhbnNmb3JtRXh0ZXJuYWxTb3VyY2UoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlQXJyYXkgICAgICAgICA9PiAkVmFsdWVJdGVtLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwdXNoIEBWYWx1ZXMsICRUcmFuc2Zvcm1lZFZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRQYXJhbXtWYWx1ZX0gPSBcQFZhbHVlczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQYXJhbXtWYWx1ZX0gPSAkU2VsZi0+X1RyYW5zZm9ybUV4dGVybmFsU291cmNlKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICAgICAgICAgVmFsdWVBcnJheSAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+U1VQRVI6OlZhbHVlU2V0KCVQYXJhbSk7CgogICAgaWYgKCRSZXN1bHQpIHsKCiAgICAgICAgIyBvcHRpb25hbCBjb25maWcgaXRlbSBsaW5rcwogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICAgICAgbXkgJE9iamVjdFR5cGUgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX07CiAgICAgICAgbXkgJEZpZWxkVHlwZSAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfTsKCiAgICAgICAgIyBvbmx5IHByb2NlZWQgaWYgdGhpcyBpcyBhIENJIDwtPiBDSSByZWxhdGlvbnNoaXAKICAgICAgICByZXR1cm4gJFJlc3VsdCB1bmxlc3MgJE9iamVjdFR5cGUgPX4gL15JVFNNQ29uZmlnSXRlbS87CiAgICAgICAgcmV0dXJuICRSZXN1bHQgdW5sZXNzICRGaWVsZFR5cGUgID1+IC9eQ29uZmlnSXRlbS87CgogICAgICAgIG15ICRWYWx1ZVR5cGUgPSByZWYoICRQYXJhbXtWYWx1ZX0gKTsKICAgICAgICBteSBAVmFsdWVzICAgID0gJFZhbHVlVHlwZSAmJiAkVmFsdWVUeXBlIGVxICdBUlJBWScKICAgICAgICAgICAgPyAkUGFyYW17VmFsdWV9LT5AKgogICAgICAgICAgICA6ICRQYXJhbXtWYWx1ZX0gPyAoICRQYXJhbXtWYWx1ZX0gKSA6ICgpOwoKICAgICAgICBpZiAoICRQYXJhbXtTZXR9ICkgewoKICAgICAgICAgICAgIyBpbiBzZXRzIHdlIGV4cGVjdCBlaXRoZXIgYXJyYXkgcmVmZXJlbmNlcyBvciB1bmRlZiBmb3IgdGhlIHNpbmdsZSBzZXQgaW5kaWNlcwogICAgICAgICAgICAjIGZyb20gWyBbVmFsMTEsIFZhbDEyXSwgdW5kZWYsIFtWYWwzMV0gXQogICAgICAgICAgICAjIHZpYSAgKCBbVmFsMTEsIFZhbDEyXSwgdW5kZWYsIFtWYWwzMV0gKQogICAgICAgICAgICAjIHRvICAgKCBWYWwxMSwgVmFsMTIsIFZhbDMxICkKICAgICAgICAgICAgQFZhbHVlcyA9IG1hcCB7ICRfID8gJF8tPkAqIDogKCkgfSBAVmFsdWVzOwogICAgICAgIH0KCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkQ29uZmlnSXRlbSAgICAgICA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBjb25maWdpdGVtX2xpbmsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+U3luY0xpbmtUYWJsZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBDb25maWdJdGVtTGFzdFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICAgICBDb25maWdJdGVtVmVyc2lvbklEICAgICA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgID0+IFxAVmFsdWVzLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRSZXN1bHQ7Cn0KCiMgT3ZlcnJpZGUgZnJvbSBCYXNlUmVmZXJlbmNlIHRvIHByZXZlbnQgTGlua09iamVjdC1BdXRvLUxpbmtpbmcgZm9yIENJIDwtPiBDSSByZWxhdGlvbnMKCnN1YiBfQ3JlYXRlQXV0b0xpbmtPYmplY3RMaW5rIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRQYXJhbXtEeW5hbWljRmllbGR9OwogICAgbXkgJE9iamVjdFR5cGUgICA9ICREeW5hbWljRmllbGQtPntPYmplY3RUeXBlfTsKICAgIG15ICRGaWVsZFR5cGUgICAgPSAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfTsKCiAgICAkRmllbGRUeXBlICA9fiBzL15Db25maWdJdGVtL0lUU01Db25maWdJdGVtLzsKICAgICRGaWVsZFR5cGUgID1+IHMvXklUU01Db25maWdJdGVtVmVyc2lvbi9JVFNNQ29uZmlnSXRlbS87CiAgICAkT2JqZWN0VHlwZSA9fiBzL15JVFNNQ29uZmlnSXRlbVZlcnNpb24vSVRTTUNvbmZpZ0l0ZW0vOwoKICAgIGlmICggJEZpZWxkVHlwZSBlcSAkT2JqZWN0VHlwZSAmJiAkRmllbGRUeXBlID1+IC9eSVRTTUNvbmZpZ0l0ZW0vICkgewoKICAgICAgICAjIHNraXAgZHluYW1pYyBsaW5raW5nIGZvciBDb25maWdJdGVtIDwtPiBDb25maWdJdGVtIGxpbmtzCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+U1VQRVI6Ol9DcmVhdGVBdXRvTGlua09iamVjdExpbmsoJVBhcmFtKTsKICAgIHJldHVybiAkUmVzdWx0Owp9CgpzdWIgRWRpdEZpZWxkVmFsdWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgcGFyZW50IGNsYXNzCiAgICBteSAkVmFsdWUgPSAkU2VsZi0+U1VQRVI6OkVkaXRGaWVsZFZhbHVlR2V0KCVQYXJhbSk7CgogICAgIyBmb3IgdGhpcyBmaWVsZCB0aGUgbm9ybWFsIHJldHVybiBhbiB0aGUgUmV0dXJuVmFsdWVTdHJ1Y3R1cmUgYXJlIHRoZSBzYW1lCiAgICByZXR1cm4gJFZhbHVlIHVubGVzcyAkUGFyYW17Rm9yTGVuc307CgogICAgIyBmb3IgdXNhZ2UgaW4gbGVuc2VzIHdlIG1pZ2h0IGhhdmUgdG8gaW50ZXJwcmV0IHRoZSB2YWx1ZXMgdG8gYmUgdXNhYmxlIGZvciB0aGVpciBWYWx1ZUdldCgpCiAgICByZXR1cm4gJFNlbGYtPlZhbHVlRm9yTGVucyggVmFsdWUgPT4gJFZhbHVlICk7Cn0KCj1oZWFkMiBHZXRGaWVsZFR5cGVTZXR0aW5ncygpCgpHZXQgdGhlIGZpZWxkIHR5cGUgc2V0dGluZ3MgZm9yIHRoZSByZWZlcmVuY2VkIG9iamVjdCB0eXBlIEM8SVRTTUNvbmZpZ0l0ZW0+LgpUaGUgZ2VuZXJpYyBzZXR0aW5ncyBmb3IgYWxsIHJlZmVyZW5jZWQgb2JqZWN0IHR5cGVzIGFyZSBpbmNsdWRlZCBhcyB3ZWxsLgoKPWN1dAoKc3ViIEdldEZpZWxkVHlwZVNldHRpbmdzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlZmVyZW5jaW5nT2JqZWN0VHlwZSA9ICRQYXJhbXtPYmplY3RUeXBlfTsKCiAgICAjIEZpcnN0IGZldGNoIHRoZSBnZW5lcmljIHNldHRpbmdzLgogICAgbXkgQEZpZWxkVHlwZVNldHRpbmdzID0gJFNlbGYtPlNVUEVSOjpHZXRGaWVsZFR5cGVTZXR0aW5ncygKICAgICAgICAlUGFyYW0sCiAgICApOwoKICAgICMgQWRkIHRoZSBzZWxlY3Rpb24gb2YgdGhlIGNvbmZpZyBpdGVtIGNsYXNzLgogICAgewogICAgICAgIG15ICRDbGFzc0lEMk5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnQ2xhc3NJRHMnLAogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nKSwKICAgICAgICAgICAgICAgIEV4cGxhbmF0aW9uICAgICA9PiBUcmFuc2xhdGFibGUoJ1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJyksCiAgICAgICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gJENsYXNzSUQyTmFtZSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgY2xhc3MgaXMgcmVxdWlyZWQKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICAgICA9PiAxLAogICAgICAgICAgICB9OwogICAgfQoKICAgICMgQWRkIHRoZSBzZWxlY3Rpb24gb2YgdGhlIGNvbmZpZyBpdGVtIGRlcGxveW1lbnQgc3RhdGUuCiAgICB7CiAgICAgICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApOwogICAgICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJyksCiAgICAgICAgICAgICAgICBFeHBsYW5hdGlvbiAgICAgPT4gVHJhbnNsYXRhYmxlKCdTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnKSwKICAgICAgICAgICAgICAgIElucHV0VHlwZSAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIFNlbGVjdGlvbkRhdGEgICA9PiAkRGVwbG95bWVudFN0YXRlc0xpc3QsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgICAgPT4gMSwKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICAgICA9PiAxLAogICAgICAgICAgICB9OwogICAgfQoKICAgICMgU2VsZWN0IHRoZSBsaW5rIHJlZmVyZW5jaW5nIHR5cGUKICAgIGlmICggJFJlZmVyZW5jaW5nT2JqZWN0VHlwZSA9fiBtL15JVFNNQ29uZmlnSXRlbS8gKSB7CiAgICAgICAgbXkgQFNlbGVjdGlvbkRhdGEgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdEeW5hbWljJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnRHluYW1pYyAoQ29uZmlnSXRlbSknKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ1N0YXRpYycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1N0YXRpYyAoVmVyc2lvbiknKSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdMaW5rUmVmZXJlbmNpbmdUeXBlJywKICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbmsgUmVmZXJlbmNpbmcgVHlwZScpLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgKICAgICAgICAgICAgICAgICdXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIElucHV0VHlwZSAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25EYXRhID0+IFxAU2VsZWN0aW9uRGF0YSwKICAgICAgICAgICAgICAgIERlZmF1bHRLZXkgICAgPT4gJ0R5bmFtaWMnLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lICA9PiAwLAogICAgICAgICAgICB9OwogICAgfQoKICAgICMgU3VwcG9ydCBjb25maWd1cmFibGUgc2VhcmNoIGtleQogICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgewogICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ1NlYXJjaEF0dHJpYnV0ZScsCiAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0F0dHJpYnV0ZSB3aGljaCB3aWxsIGJlIHNlYXJjaGVkIG9uIGF1dG9jb21wbGV0ZScpLAogICAgICAgICAgICBFeHBsYW5hdGlvbiAgICAgPT4gVHJhbnNsYXRhYmxlKCdTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieScpLAogICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgIFNlbGVjdGlvbkRhdGEgICA9PiB7CiAgICAgICAgICAgICAgICAnTnVtYmVyJyA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICdOYW1lJyAgID0+ICdOYW1lJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZHNMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBSZXN1bHRUeXBlID0+ICdIQVNIJywKICAgICk7CiAgICBteSAlREZTZWxlY3Rpb25EYXRhID0gbWFwIHsgKCAiRHluYW1pY0ZpZWxkXyRfIiA9PiAiRHluYW1pY0ZpZWxkXyRfIiApIH0gdmFsdWVzICREeW5hbWljRmllbGRzTGlzdC0+JSo7CgogICAgIyBTdXBwb3J0IGNvbmZpZ3VyYWJsZSBpbXBvcnQgc2VhcmNoIGF0dHJpYnV0ZQogICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgewogICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ0ltcG9ydFNlYXJjaEF0dHJpYnV0ZScsCiAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0V4dGVybmFsLXNvdXJjZSBrZXknKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnV2hlbiBzZXQgdmlhIGFuIGV4dGVybmFsIHNvdXJjZSAoZS5nLiB3ZWIgc2VydmljZSBvciBpbXBvcnQgLyBleHBvcnQpLCB0aGUgdmFsdWUgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyB0aGlzIGF0dHJpYnV0ZS4nKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgJ05hbWUnICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgJ051bWJlcicgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAlREZTZWxlY3Rpb25EYXRhLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgfTsKCiAgICAjIFN1cHBvcnQgdmFyaW91cyBkaXNwbGF5IG9wdGlvbnMKICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdEaXNwbGF5VHlwZScsCiAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0F0dHJpYnV0ZSB3aGljaCBpcyBkaXNwbGF5ZWQgZm9yIHZhbHVlcycpLAogICAgICAgICAgICBFeHBsYW5hdGlvbiAgICAgPT4gVHJhbnNsYXRhYmxlKCdTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheScpLAogICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgIFNlbGVjdGlvbkRhdGEgICA9PiB7CiAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbU51bWJlcicgICAgICA9PiAnPENvbmZpZyBJdGVtIE51bWJlcj4nLAogICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1OYW1lJyAgICAgICAgPT4gJzxDb25maWcgSXRlbSBOYW1lPicsCiAgICAgICAgICAgICAgICAnQ2xhc3NDb25maWdJdGVtTnVtYmVyJyA9PiAnPENsYXNzIE5hbWU+OiA8Q29uZmlnIEl0ZW0gTnVtYmVyPicsCiAgICAgICAgICAgICAgICAnQ2xhc3NDb25maWdJdGVtTmFtZScgICA9PiAnPENsYXNzIE5hbWU+OiA8Q29uZmlnIEl0ZW0gTmFtZT4nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgfTsKCiAgICAjIFN1cHBvcnQgcmVmZXJlbmNlIGZpbHRlcnMKICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdSZWZlcmVuY2VGaWx0ZXJMaXN0JywKICAgICAgICB9OwoKICAgIHJldHVybiBARmllbGRUeXBlU2V0dGluZ3M7Cn0KCj1oZWFkMiBPYmplY3RQZXJtaXNzaW9uKCkKCmNoZWNrcyByZWFkIHBlcm1pc3Npb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IGFuZCBVc2VySUQuCgogICAgJFBlcm1pc3Npb24gPSAkQmFja2VuZE9iamVjdC0+T2JqZWN0UGVybWlzc2lvbigKICAgICAgICBLZXkgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdFBlcm1pc3Npb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICApOwp9Cgo9aGVhZDIgT2JqZWN0RGVzY3JpcHRpb25HZXQoKQoKcmV0dXJuIGEgaGFzaCBvZiBvYmplY3QgZGVzY3JpcHRpb25zLgoKICAgIG15ICVEZXNjcmlwdGlvbiA9ICRCYWNrZW5kT2JqZWN0LT5PYmplY3REZXNjcmlwdGlvbkdldCgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgKTsKClJldHVybgoKICAgICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gIkNJIyAxMjM0NDU1IiwKICAgICAgICBMb25nICAgPT4gIkNJIyAxMjM0NDU1OiBOZWVkIGEgc2FtcGxlIGNvbmZpZyBpdGVtIHRpdGxlIiwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGVzY3JpcHRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgIFNpbGVudCAgICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkQ29uZmlnSXRlbSApIHsKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBOb3JtYWwgPT4gIiRQYXJhbXtPYmplY3RJRH0gKGRlbGV0ZWQpIiwKICAgICAgICAgICAgTG9uZyAgID0+ICIkUGFyYW17T2JqZWN0SUR9IChkZWxldGVkKSIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHByZXBhcmUgdHJhbnNsYXRpb24gb2YgY2xhc3MgbmFtZSBpZiBwb3NzaWJsZQogICAgbXkgJENsYXNzTmFtZVN0cmcgPSAkQ29uZmlnSXRlbS0+e0NsYXNzfTsKICAgIGlmICggJFBhcmFte0xheW91dE9iamVjdH0gKSB7CiAgICAgICAgJENsYXNzTmFtZVN0cmcgPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ2xhc3NOYW1lU3RyZyk7CiAgICB9CgogICAgbXkgJURlc2NyaXB0aW9uczsKICAgIGlmICggJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30gJiYgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtEaXNwbGF5VHlwZX0gKSB7CgogICAgICAgICMgcHJlcGFyZSBzdHJpbmcgYXMgY29uZmlndXJlZAogICAgICAgIG15ICREaXNwbGF5VHlwZSA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317RGlzcGxheVR5cGV9OwogICAgICAgIGlmICggJERpc3BsYXlUeXBlIGVxICdDb25maWdJdGVtTnVtYmVyJyApIHsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gIiRDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn0iOwogICAgICAgICAgICAkRGVzY3JpcHRpb25ze0xvbmd9ICAgPSAiJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfSI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERpc3BsYXlUeXBlIGVxICdDb25maWdJdGVtTmFtZScgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDb25maWdJdGVtLT57TmFtZX0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ2xhc3NDb25maWdJdGVtTnVtYmVyJyApIHsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e051bWJlcn0iOwogICAgICAgICAgICAkRGVzY3JpcHRpb25ze0xvbmd9ICAgPSAiJENsYXNzTmFtZVN0cmc6ICRDb25maWdJdGVtLT57TnVtYmVyfSI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERpc3BsYXlUeXBlIGVxICdDbGFzc0NvbmZpZ0l0ZW1OYW1lJyApIHsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAiJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgIH0KCiAgICBteSAkTGluazsKICAgIGlmICggJFBhcmFte0xpbmt9ICkgewogICAgICAgIGlmICggJFBhcmFte0xheW91dE9iamVjdH17U2Vzc2lvblNvdXJjZX0gJiYgJFBhcmFte0xheW91dE9iamVjdH17U2Vzc2lvblNvdXJjZX0gZXEgJ0FnZW50SW50ZXJmYWNlJyApIHsKCiAgICAgICAgICAgICMgVE9ETzogb25seSBzaG93IHRoZSBsaW5rIGlmIHRoZSB1c2VyICRQYXJhbXtVc2VySUR9IGhhcyBwZXJtaXNzaW9ucwogICAgICAgICAgICAkTGluayA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e0Jhc2VsaW5rfSAuICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRQYXJhbXtPYmplY3RJRH0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9ICYmICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9IGVxICdDdXN0b21lckludGVyZmFjZScgKSB7CiAgICAgICAgICAgICRMaW5rID0gJFBhcmFte0xheW91dE9iamVjdH17QmFzZWxpbmt9IC4gIkFjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JFBhcmFte09iamVjdElEfSI7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBwdWJsaWMgaW50ZXJmYWNlCiAgICAgICAgIyAgIExheW91dE9iamVjdCBpcyBwcmVzZW50LCBidXQgd2UgZG8gbm90IGhhdmUgYSBzZXNzaW9uIHNvdXJjZQogICAgICAgIGVsc2lmICggcmVmICRQYXJhbXtMYXlvdXRPYmplY3R9IGVxICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyApIHsKICAgICAgICAgICAgJExpbmsgPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtCYXNlbGlua30gLiAiQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JFBhcmFte09iamVjdElEfSI7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGRlc2NyaXB0aW9uCiAgICByZXR1cm4gKAogICAgICAgICVEZXNjcmlwdGlvbnMsCiAgICAgICAgTGluayA9PiAkTGluaywKICAgICk7Cn0KCj1oZWFkMiBTZWFyY2hPYmplY3RzKCkKClRoaXMgaXMgdXNlZCBpbiBhdXRvIGNvbXBsZXRpb24gd2hlbiBzZWFyY2hpbmcgZm9yIHBvc3NpYmxlIG9iamVjdCBJRHMuCgogICAgbXkgQE9iamVjdElEcyA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hPYmplY3RzKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkT2JqZWN0SUQsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSBpZiBnaXZlbiwgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIFRlcm0KICAgICAgICBUZXJtICAgICAgICAgICAgICAgPT4gJFRlcm0sICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkgZGVmYXVsdHMgdG8gd2lsZGNhcmQgc2VhcmNoIHdpdGggZW1wdHkgc3RyaW5nCiAgICAgICAgTWF4UmVzdWx0cyAgICAgICAgID0+ICRNYXhSZXN1bHRzLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgT2JqZWN0ICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgJURhdGEsCiAgICAgICAgfSwKICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hPYmplY3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte1Rlcm19IC8vPSAnJzsKCiAgICBteSAkREZEZXRhaWxzID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfSAvLyB7fTsKCiAgICBteSAlU2VhcmNoUGFyYW1zOwoKICAgIGlmICggJFBhcmFte09iamVjdElEfSApIHsKICAgICAgICAkU2VhcmNoUGFyYW1ze0NvbmZpZ0l0ZW1JRH0gPSAkUGFyYW17T2JqZWN0SUR9OwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICkgewoKICAgICAgICAjIGluY2x1ZGUgY29uZmlndXJlZCBzZWFyY2ggcGFyYW0gaWYgcHJlc2VudAogICAgICAgIG15ICRTZWFyY2hBdHRyaWJ1dGUgPSAkREZEZXRhaWxzLT57SW1wb3J0U2VhcmNoQXR0cmlidXRlfSB8fCAnTmFtZSc7CgogICAgICAgICMgZHluYW1pYyBmaWVsZCBhdHRyaWJ1dGUKICAgICAgICBpZiAoICRTZWFyY2hBdHRyaWJ1dGUgPX4gbXteRHlufWkgKSB7CiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JFNlYXJjaEF0dHJpYnV0ZX0gPSB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFBhcmFte1Rlcm19LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBuYW1lIG9yIG51bWJlcgogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRTZWFyY2hBdHRyaWJ1dGV9ID0gIiRQYXJhbXtUZXJtfSI7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgaW5jbHVkZSBjb25maWd1cmVkIHNlYXJjaCBwYXJhbSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFNlYXJjaEF0dHJpYnV0ZSA9ICRERkRldGFpbHMtPntTZWFyY2hBdHRyaWJ1dGV9IHx8ICdOYW1lJzsKCiAgICAgICAgJFNlYXJjaFBhcmFtc3skU2VhcmNoQXR0cmlidXRlfSA9ICIqJFBhcmFte1Rlcm19KiI7CiAgICB9CgogICAgIyBwcmVwYXJlIG1hcHBpbmcgb2YgZWRpdCBtYXNrIGF0dHJpYnV0ZSBuYW1lcwogICAgbXkgJUF0dHJpYnV0ZU5hbWVNYXBwaW5nID0gKAogICAgICAgIEN1c3RvbWVyVXNlcklEID0+IFsKICAgICAgICAgICAgJ1NlbGVjdGVkQ3VzdG9tZXJVc2VyJywKICAgICAgICBdLAogICAgICAgIFJlc3BvbnNpYmxlSUQgPT4gWwogICAgICAgICAgICAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgXSwKICAgICAgICBPd25lcklEID0+IFsKICAgICAgICAgICAgJ05ld093bmVySUQnLAogICAgICAgICAgICAnTmV3VXNlcklEJywKICAgICAgICBdLAogICAgICAgIFF1ZXVlSUQgPT4gWwogICAgICAgICAgICAnRGVzdCcsCiAgICAgICAgICAgICdOZXdRdWV1ZUlEJywKICAgICAgICBdLAogICAgICAgIFN0YXRlSUQgPT4gWwogICAgICAgICAgICAnTmV3U3RhdGVJRCcsCiAgICAgICAgICAgICdOZXh0U3RhdGVJRCcsCiAgICAgICAgXSwKICAgICAgICBQcmlvcml0eUlEID0+IFsKICAgICAgICAgICAgJ05ld1ByaW9yaXR5SUQnLAogICAgICAgIF0sCiAgICApOwoKICAgICMgaW5jb3Jwb3JhdGUgcmVmZXJlbmNlZmlsdGVybGlzdCBpbnRvIHNlYXJjaCBwYXJhbXMKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkREZEZXRhaWxzLT57UmVmZXJlbmNlRmlsdGVyTGlzdH0gKSAmJiAhJFBhcmFte0V4dGVybmFsU291cmNlfSApIHsKCiAgICAgICAgbXkgJEN1c3RvbWVyVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICAgICAgRklMVEVSSVRFTToKICAgICAgICBmb3IgbXkgJEZpbHRlckl0ZW0gKCAkREZEZXRhaWxzLT57UmVmZXJlbmNlRmlsdGVyTGlzdH0tPkAqICkgewoKICAgICAgICAgICAgIyBjaGVjayBmaWx0ZXIgY29uZmlnCiAgICAgICAgICAgIG5leHQgRklMVEVSSVRFTSB1bmxlc3MgJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9OwogICAgICAgICAgICBuZXh0IEZJTFRFUklURU0gdW5sZXNzICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IHx8ICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSApOwoKICAgICAgICAgICAgIyBtYXAgSUQgdG8gSURzIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICBteSAkQXR0cmlidXRlTmFtZSA9ICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfTsKICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkQXR0cmlidXRlTmFtZSB9IHF3KFF1ZXVlSUQgVHlwZUlEIFN0YXRlSUQgUHJpb3JpdHlJRCBTZXJ2aWNlSUQgU0xBSUQgT3duZXJJRCBSZXNwb25zaWJsZUlEICkgKSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlTmFtZSAuPSAncyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICMgZG9uJ3QgcGVyZm9ybSBzZWFyY2ggaWYgb2JqZWN0IGF0dHJpYnV0ZSB0byBzZWFyY2ggZm9yIGlzIGVtcHR5CiAgICAgICAgICAgICAgICBteSAkRXF1YWxzT2JqZWN0QXR0cmlidXRlOwogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte09iamVjdH0gKSApIHsKICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFBhcmFte09iamVjdH17RHluYW1pY0ZpZWxkfXsgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH0gLy8gJFBhcmFte09iamVjdH17ICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSB9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJVc2VySUQnICYmICEkRXF1YWxzT2JqZWN0QXR0cmlidXRlICYmICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17Q3VzdG9tZXJVc2VySUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJJRCcgJiYgISRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgJiYgJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUN1c3RvbWVyVXNlckRhdGEgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJEN1c3RvbWVyVXNlckRhdGF7Q3VzdG9tZXJJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJhbU9iamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gPX4gL15EeW5hbWljRmllbGRfKD88REZOYW1lPlxTKykvICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkREZOYW1lICAgICAgICAgICAgID0gJCt7REZOYW1lfTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJEZpbHRlckl0ZW1ERkNvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkREZOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUxURVJJVEVNIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRmlsdGVySXRlbURGQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbXtQYXJhbU9iamVjdH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpbHRlckl0ZW1ERkNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybURhdGVzICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJVc2VySUQnICYmICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17Q3VzdG9tZXJVc2VySUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJJRCcgJiYgJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUN1c3RvbWVyVXNlckRhdGEgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJEN1c3RvbWVyVXNlckRhdGF7Q3VzdG9tZXJJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBtYXRjaCBzdGFuZGFyZCB0aWNrZXQgYXR0cmlidXRlIG5hbWVzIHdpdGggZWRpdCBtYXNrIGF0dHJpYnV0ZSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICBteSBAUGFyYW1OYW1lcyA9ICRQYXJhbXtQYXJhbU9iamVjdH0tPkdldFBhcmFtTmFtZXMoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgYXR0cmlidXRlIG5hbWUgaXRzZWxmIGlzIGluIHBhcmFtcwogICAgICAgICAgICAgICAgICAgICAgICAjIE5PVEUgdHJ5aW5nIGF0dHJpYnV0ZSBpdHNlbGYgaXMgY3J1Y2lhbGx5IGltcG9ydGFudCBpbiBjYXNlIG9mIFF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGJlY2F1c2UgQWdlbnRUaWNrZXRQaG9uZSBkb2VzIG5vdCBwcm92aWRlIFF1ZXVlSUQsIGJ1dCBwdXRzIHRoZSBpZCBpbgogICAgICAgICAgICAgICAgICAgICAgICAjICAgRGVzdCwgYW5kIEFnZW50VGlja2V0RW1haWwgbGVhdmVzIERlc3QgYXMgYSBzdHJpbmcgYnV0IHB1dHMgdGhlIGlkIGluIFF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFBhcmFtTmFtZSA9IGZpcnN0IHsgJF8gZXEgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH0gQFBhcmFtTmFtZXM7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGlmIG5vdCwgdHJ5IHRvIGZpbmQgYSBtYXBwZWQgYXR0cmlidXRlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFBhcmFtTmFtZSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIG1hcHBlZCBhdHRyaWJ1dGUgbmFtZXMgZXhpc3QgYXQgYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWFwcGVkQXR0cmlidXRlcyA9ICRBdHRyaWJ1dGVOYW1lTWFwcGluZ3sgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkTWFwcGVkQXR0cmlidXRlcyBlcSAnQVJSQVknICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBQRURBVFRSSUJVVEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRNYXBwZWRBdHRyaWJ1dGUgKCAkTWFwcGVkQXR0cmlidXRlcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbU5hbWUgPSBmaXJzdCB7ICRfIGVxICRNYXBwZWRBdHRyaWJ1dGUgfSBAUGFyYW1OYW1lczsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgTUFQUEVEQVRUUklCVVRFIGlmICRQYXJhbU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJFBhcmFtTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRQYXJhbXtQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aGVuIGNhbGxlZCBieSBBZ2VudFJlZmVyZW5jZVNlYXJjaCwgRGVzdCBpcyBhIHN0cmluZyBhbmQgd2UgbmVlZCB0byBleHRyYWN0IHRoZSBRdWV1ZUlECiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbU5hbWUgZXEgJ0Rlc3QnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRRdWV1ZUlEID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID1+IC9eKFxkezEsMTAwfSlcfFx8Lis/JC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRdWV1ZUlEID0gJDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUXVldWVJRDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJJRCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0cnkgaWYgQ3VzdG9tZXJVc2VyIGlzIG9uIHRoZSBtYXNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkQ3VzdG9tZXJVc2VySUQgPSAkUGFyYW17UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlbGVjdGVkQ3VzdG9tZXJVc2VyJyApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRDdXN0b21lclVzZXJJRCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICVDdXN0b21lclVzZXJEYXRhID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkQ3VzdG9tZXJVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJEN1c3RvbWVyVXNlckRhdGF7Q3VzdG9tZXJJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBuZWl0aGVyIGF0dHJpYnV0ZSBub3IgbWFwcGVkIGFsdGVybmF0aXZlcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBhdHRyaWJ1dGUgJyRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfScgYW5kIGl0cyBhc3NvY2lhdGVkIGFsdGVybmF0aXZlcyBpcyBub3QgYXZhaWxhYmxlIG9uIHRoZSBtYXNrISIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGVuc3VyZSB0aGF0IGZvciBFcXVhbHNPYmplY3RBdHRyaWJ1dGUgVXNlcklEIGFsd2F5cyAkU2VsZi0+e1VzZXJJRH0gaXMgdXNlZCBpbiB0aGUgZW5kCiAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnVXNlcklEJyApIHsKICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFBhcmFte1VzZXJJRH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICgpIHVubGVzcyAkRXF1YWxzT2JqZWN0QXR0cmlidXRlOwogICAgICAgICAgICAgICAgcmV0dXJuICgpIGlmICggcmVmICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgZXEgJ0FSUkFZJyAmJiAhJEVxdWFsc09iamVjdEF0dHJpYnV0ZS0+QCogKTsKCiAgICAgICAgICAgICAgICAjIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteQ29ufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSAkRXF1YWxzT2JqZWN0QXR0cmlidXRlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZHluYW1pYyBmaWVsZCBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9ID1+IG17XkR5bn1pICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JEF0dHJpYnV0ZU5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJEVxdWFsc09iamVjdEF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lclVzZXJJRCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDdXN0b21lclVzZXJMb2dpbn0gPSBbJEVxdWFsc09iamVjdEF0dHJpYnV0ZV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhcnJheSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JEF0dHJpYnV0ZU5hbWV9ID0gWyRFcXVhbHNPYmplY3RBdHRyaWJ1dGVdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNTdHJpbmd9ICkgewoKICAgICAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICAgICAjIFRPRE8gY2hlY2sgaWYgdGhpcyBoYXMgdG8gYmUgYWRhcHRlZCBmb3IgdGlja2V0IHNlYXJjaAogICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteQ29ufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ307CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteRHlufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJVc2VySUQnICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7Q3VzdG9tZXJVc2VyTG9naW59ID0gWyAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30gXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFycmF5IGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSBbICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgU3VwcG9ydCByZXN0cmljdGlvbiBieSBjbGFzcwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntDbGFzc0lEc30gKSAmJiAhJFBhcmFte0V4dGVybmFsU291cmNlfSApIHsKICAgICAgICBpZiAoICRTZWFyY2hQYXJhbXN7Q2xhc3NJRHN9ICkgewogICAgICAgICAgICBteSBAQ2xhc3NJRHM7CiAgICAgICAgICAgIGZvciBteSAkQ2xhc3NJRCAoICRTZWFyY2hQYXJhbXN7Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJENsYXNzSUQgfSAkREZEZXRhaWxzLT57Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGFzc0lEcywgJENsYXNzSUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAoKSB1bmxlc3MgQENsYXNzSURzOwoKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gPSBcQENsYXNzSURzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gPSAkREZEZXRhaWxzLT57Q2xhc3NJRHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIFN1cHBvcnQgcmVzdHJpY3Rpb24gYnkgZGVwbG95bWVudCBzdGF0ZQogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntEZXBsU3RhdGVJRHN9ICkgKSB7CiAgICAgICAgaWYgKCAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gKSB7CiAgICAgICAgICAgIG15IEBEZXBsb3ltZW50U3RhdGVJRHM7CiAgICAgICAgICAgIGZvciBteSAkRGVwbG95bWVudFN0YXRlSUQgKCAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkRGVwbG95bWVudFN0YXRlSUQgfSAkREZEZXRhaWxzLT57RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBARGVwbG95bWVudFN0YXRlSURzLCAkRGVwbG95bWVudFN0YXRlSUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAoKSB1bmxlc3MgQERlcGxveW1lbnRTdGF0ZUlEczsKCiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSA9IFxARGVwbG95bWVudFN0YXRlSURzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tEZXBsU3RhdGVJRHN9ID0gJERGRGV0YWlscy0+e0RlcGxTdGF0ZUlEc307CiAgICAgICAgfQogICAgfQoKICAgICMgcmV0dXJuIGEgbGlzdCBvZiBjb25maWcgaXRlbSBJRHMKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICBMaW1pdCAgID0+ICRQYXJhbXtNYXhSZXN1bHRzfSwKICAgICAgICBSZXN1bHQgID0+ICdBUlJBWScsCiAgICAgICAgU29ydEJ5ICA9PiAnTnVtYmVyJywKICAgICAgICBPcmRlckJ5ID0+ICdEb3duJywKICAgICAgICAlU2VhcmNoUGFyYW1zLAogICAgKTsKfQoKPWhlYWQyIFZhbHVlRm9yTGVucygpCgpyZXR1cm4gdGhlIGN1cnJlbnQgbGFzdCB2ZXJzaW9uIGlkcyB1c2VkIGluIGR5bmFtaWNfZmllbGRfdmFsdWUuClRoZSBwYXNzZWQgaW4gdmFsdWUgaXMgYSBsaXN0IG9mIGNvbmZpZyBpdGVtIElEcy4gVGhlc2UgSURzIGFyZQp0cmFuc2Zvcm1lZCBpbnRvIHRoZSByZXNwZWN0aXZlIGxhc3QgdmVyc2lvbiBJRHMuCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlRm9yTGVucygKICAgICAgICBWYWx1ZSA9PiBbMTcsMTcsMTksMjBdLAogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUZvckxlbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtWYWx1ZX07CgogICAgaWYgKCByZWYgJFBhcmFte1ZhbHVlfSBuZSAnQVJSQVknICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSBbICRQYXJhbXtWYWx1ZX0gXTsKICAgIH0KCiAgICBteSBATGFzdFZlcnNpb25JRHM7CgogICAgdW5sZXNzICggJFBhcmFte1NldH0gKSB7ICAgICMjIG5vIGNyaXRpYyBxdyhDb250cm9sU3RydWN0dXJlczo6UHJvaGliaXRVbmxlc3NCbG9ja3MpCiAgICAgICAgQ09ORklHX0lURU1fSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCAkUGFyYW17VmFsdWV9LT5AKiApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgU2lsZW50ICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgdmFsaWQgSURzCiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRDb25maWdJdGVtOwogICAgICAgICAgICBuZXh0IENPTkZJR19JVEVNX0lEIHVubGVzcyAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9OwoKICAgICAgICAgICAgcHVzaCBATGFzdFZlcnNpb25JRHMsICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXEBMYXN0VmVyc2lvbklEczsKICAgIH0KCiAgICAjIGZvciBzZXRzIHdlIG5lZWQgdG8gdHJhbnNsYXRlIGZvciBldmVyeSBzZXQgdmFsdWUKICAgIGZvciBteSAkU2V0VmFsdWUgKCAkUGFyYW17VmFsdWV9LT5AKiApIHsKICAgICAgICBpZiAoIHJlZiAkU2V0VmFsdWUgbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJFNldFZhbHVlID0gWyRTZXRWYWx1ZV07CiAgICAgICAgfQoKICAgICAgICBteSBAU2V0VmVyc2lvbklEczsKCiAgICAgICAgQ09ORklHX0lURU1fSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCAkU2V0VmFsdWUtPkAqICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgdmFsaWQgSURzCiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRDb25maWdJdGVtOwogICAgICAgICAgICBuZXh0IENPTkZJR19JVEVNX0lEIHVubGVzcyAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9OwoKICAgICAgICAgICAgcHVzaCBAU2V0VmVyc2lvbklEcywgJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQExhc3RWZXJzaW9uSURzLCBcQFNldFZlcnNpb25JRHM7CiAgICB9CgogICAgcmV0dXJuIFxATGFzdFZlcnNpb25JRHM7Cn0KCj1oZWFkMiBJbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnKCkKClRoaXMgc3ViIHBlcmZvcm1zIHRyYW5zbGF0aW9uIGJldHdlZW4gTmFtZSBhbmQgSUQgZm9yIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIHN0b3JlZCB3aXRoIElEIGluIHRoZSBmaWVsZCBjb25maWcuIEZvciBleHBvcnQsIHRoZSBOYW1lIGlzIG5lZWRlZCBiZWNhdXNlIElEcyBvZiBvYmplY3RzIG1heSBkaWZmZXIgYmV0d2VlbiBzeXN0ZW1zLiBEdXJpbmcgaW1wb3J0LCB0aGUgTmFtZSBuZWVkcyB0byBiZSB0cmFuc2xhdGVkIGJhY2sgaW50byB0aGUgSUQgZm9yIHRoZSBmaWVsZCB0byB3b3JrIHByb3Blcmx5LgoKICAgIG15IEBPYmplY3RJRHMgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0RXhwb3J0UHJlcGFyZUNvbmZpZygKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywgICMgcmVxdWlyZWQKICAgICAgICBEaXJlY3Rpb24gICAgICAgICAgPT4gJ0ltcG9ydCcsICAgICAgICAgICAgICMgcmVxdWlyZWQ7IEltcG9ydCBvciBFeHBvcnQKICAgICk7Cgo9Y3V0CgpzdWIgSW1wb3J0RXhwb3J0UHJlcGFyZUNvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRHluYW1pY0ZpZWxkQ29uZmlnIERpcmVjdGlvbikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRDSUNsYXNzSUQyTmFtZSAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CiAgICBteSAkRGVwbFN0YXRlSUQyTmFtZSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgIG15ICVBdHRyaWJ1dGVMb29rdXAgPSAoCiAgICAgICAgQ2xhc3NJRHMgPT4gewogICAgICAgICAgICBFeHBvcnQgPT4gJENJQ2xhc3NJRDJOYW1lLAogICAgICAgICAgICBJbXBvcnQgPT4geyByZXZlcnNlICRDSUNsYXNzSUQyTmFtZS0+JSogfSwKICAgICAgICB9LAogICAgICAgIERlcGxTdGF0ZUlEcyA9PiB7CiAgICAgICAgICAgIEV4cG9ydCA9PiAkRGVwbFN0YXRlSUQyTmFtZSwKICAgICAgICAgICAgSW1wb3J0ID0+IHsgcmV2ZXJzZSAkRGVwbFN0YXRlSUQyTmFtZS0+JSogfSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAlUmV0dXJuOwogICAgQVRUUklCVVRFTkFNRToKICAgIGZvciBteSAkQXR0cmlidXRlTmFtZSAoIGtleXMgJUF0dHJpYnV0ZUxvb2t1cCApIHsKICAgICAgICBuZXh0IEFUVFJJQlVURU5BTUUgdW5sZXNzICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317JEF0dHJpYnV0ZU5hbWV9OwoKICAgICAgICBteSBAVHJhbnNmb3JtZWRDb25maWdWYWx1ZTsKICAgICAgICBmb3IgbXkgJENvbmZpZ1NldHRpbmdWYWx1ZSAoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317JEF0dHJpYnV0ZU5hbWV9LT5AKiApIHsKICAgICAgICAgICAgbXkgJFRyYW5zZm9ybWVkVmFsdWUgPSAkQXR0cmlidXRlTG9va3VweyRBdHRyaWJ1dGVOYW1lfXsgJFBhcmFte0RpcmVjdGlvbn0gfXskQ29uZmlnU2V0dGluZ1ZhbHVlfTsKCiAgICAgICAgICAgIGlmICgkVHJhbnNmb3JtZWRWYWx1ZSkgewogICAgICAgICAgICAgICAgcHVzaCBAVHJhbnNmb3JtZWRDb25maWdWYWx1ZSwgJFRyYW5zZm9ybWVkVmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiRHluYW1pYyBmaWVsZCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSAkUGFyYW17RGlyZWN0aW9ufTogTm8gbWF0Y2hpbmcgJEF0dHJpYnV0ZU5hbWUgZm9yICRDb25maWdTZXR0aW5nVmFsdWUgY291bGQgYmUgZm91bmQgb24gdGhlIHN5c3RlbS4iLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBwdXNoIEBUcmFuc2Zvcm1lZENvbmZpZ1ZhbHVlLCAkQ29uZmlnU2V0dGluZ1ZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRSZXR1cm57JEF0dHJpYnV0ZU5hbWV9ID0gXEBUcmFuc2Zvcm1lZENvbmZpZ1ZhbHVlOwogICAgfQoKICAgIHJldHVybiAlUmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/System/DynamicField/Driver/ConfigItemVersion.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6Q29uZmlnSXRlbVZlcnNpb247Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkNvbmZpZ0l0ZW1WZXJzaW9uIC0gYmFja2VuZCBmb3IgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCklUU01Db25maWdJdGVtVmVyc2lvbiBiYWNrZW5kIGZvciB0aGUgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGQuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgppdCBpcyB1c3VhbGx5IG5vdCBuZWNlc3NhcnkgdG8gZXhwbGljaXRseSBjcmVhdGUgaW5zdGFuY2VzIG9mIGR5bmFtaWMgZmllbGQgZHJpdmVycy4KSW5zdGFuY2VzIG9mIHRoZSBkcml2ZXJzIGFyZSBjcmVhdGVkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUKZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdCBDPEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQ+LgoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoJFR5cGUpID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIFNvbWUgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGRzIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIHRhYmxlIGF0dHJpYnV0ZSBkeW5hbWljX2ZpZWxkX3ZhbHVlLnZhbHVlX2ludC4KICAgICRTZWxmLT57VmFsdWVUeXBlfSAgICAgID0gJ0ludGVnZXInOwogICAgJFNlbGYtPntWYWx1ZUtleX0gICAgICAgPSAnVmFsdWVJbnQnOwogICAgJFNlbGYtPntUYWJsZUF0dHJpYnV0ZX0gPSAndmFsdWVfaW50JzsKCiAgICAjIFVzZWQgZm9yIGRlY2xhcmluZyBDU1MgY2xhc3NlcwogICAgJFNlbGYtPntGaWVsZENTU0NsYXNzfSA9ICdEeW5hbWljRmllbGRSZWZlcmVuY2UnOwoKICAgICMgc2V0IGZpZWxkIGJlaGF2aW9ycwogICAgJFNlbGYtPntCZWhhdmlvcnN9ID0gewogICAgICAgICdJc0FDTFJlZHVjaWJsZScgICAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc05vdGlmaWNhdGlvbkV2ZW50Q29uZGl0aW9uJyA9PiAwLAogICAgICAgICdJc1NvcnRhYmxlJyAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc0ZpbHRyYWJsZScgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc1N0YXRzQ29uZGl0aW9uJyAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScgICA9PiAxLAogICAgICAgICdJc0hpZGRlbkluVGlja2V0SW5mb3JtYXRpb24nICA9PiAwLAogICAgICAgICdJc1JlZmVyZW5jZUZpZWxkJyAgICAgICAgICAgICA9PiAxLAogICAgfTsKCiAgICAkU2VsZi0+e1JlZmVyZW5jZWRPYmplY3RUeXBlfSA9ICdJVFNNQ29uZmlnSXRlbVZlcnNpb24nOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEVkaXRGaWVsZFJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdGFrZSBjb25maWcgZnJvbSBmaWVsZCBjb25maWcKICAgIG15ICRERkRldGFpbHMgICAgICAgICA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ307CiAgICBteSAkRmllbGROYW1lICAgICAgICAgPSAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfTsKICAgIG15ICRGaWVsZExhYmVsICAgICAgICA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TGFiZWx9OwogICAgbXkgJEZpZWxkTGFiZWxFc2NhcGVkID0gJFBhcmFte0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fXtMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmllbGRMYWJlbCksCiAgICApOwoKICAgIG15ICRWYWx1ZSA9ICcnOwoKICAgICMgc2V0IHRoZSBmaWVsZCB2YWx1ZSBvciBkZWZhdWx0CiAgICBpZiAoICRQYXJhbXtVc2VEZWZhdWx0VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRERkRldGFpbHMtPntEZWZhdWx0VmFsdWV9IC8vICcnOwogICAgfQogICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfSAvLyAkVmFsdWU7CgogICAgIyBFeHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0IGFuZCBzZXQgaXQgaWYgcHJlc2VudC4gRG8gdGhpcyBhZnRlcgogICAgIyAgIHN0b3JlZCB2YWx1ZSBpcyByZXRyaWV2ZWQgYW5kIHByb2Nlc3NlZCwgc28gaXQgY2FuIGJlIG92ZXJyaWRkZW4gaWYgZm9ybSBoYXMgcmVmcmVzaGVkIGZvcgogICAgIyAgIHNvbWUgcmVhc29ucyAoaS5lLiBhdHRhY2htZW50IGhhcyBiZWVuIHVwbG9hZGVkKS4gU2VlIGJ1ZyMxMjQ1MyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgIG15ICRGaWVsZFZhbHVlID0gJFNlbGYtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICVQYXJhbSwKICAgICk7CgogICAgIyBzZXQgdmFsdWVzIGZyb20gUGFyYW1PYmplY3QgaWYgcHJlc2VudAogICAgaWYgKCBkZWZpbmVkICRGaWVsZFZhbHVlICYmICRGaWVsZFZhbHVlICYmICRGaWVsZFZhbHVlLT5AKiApIHsKICAgICAgICAkVmFsdWUgPSAkRmllbGRWYWx1ZTsKICAgIH0KCiAgICBpZiAoICFyZWYgJFZhbHVlICkgewogICAgICAgICRWYWx1ZSA9IFskVmFsdWVdOwogICAgfQogICAgZWxzaWYgKCAhJFZhbHVlLT5AKiApIHsKICAgICAgICAkVmFsdWUgPSBbdW5kZWZdOwogICAgfQoKICAgICMgY2hlY2sgYW5kIHNldCBjbGFzcyBpZiBuZWNlc3NhcnkKICAgIG15ICRGaWVsZENsYXNzID0gIiRTZWxmLT57RmllbGRDU1NDbGFzc30gRHluYW1pY0ZpZWxkVGV4dCBNb2Rlcm5pemUiOyAgICAjIGZvciBmaWVsZCBzcGVjaWZpYyBKUwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtDbGFzc30gJiYgJFBhcmFte0NsYXNzfSBuZSAnJyApIHsKICAgICAgICAkRmllbGRDbGFzcyAuPSAnICcgLiAkUGFyYW17Q2xhc3N9OwogICAgfQoKICAgICMgc2V0IGNsYXNzZXMgYWNjb3JkaW5nIHRvIG1hbmRhdG9yeSBhbmQgYWNsIGhpZGRlbiBwYXJhbXMKICAgIGlmICggJFBhcmFte0FDTEhpZGRlbn0gJiYgJFBhcmFte01hbmRhdG9yeX0gKSB7CiAgICAgICAgJEZpZWxkQ2xhc3MgLj0gJyBWYWxpZGF0ZV9SZXF1aXJlZF9JZlZpc2libGUnOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17TWFuZGF0b3J5fSApIHsKICAgICAgICAkRmllbGRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICAjIHNldCBlcnJvciBjc3MgY2xhc3MKICAgIGlmICggJFBhcmFte1NlcnZlckVycm9yfSApIHsKICAgICAgICAkRmllbGRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICBteSAlRmllbGRUZW1wbGF0ZURhdGEgPSAoCiAgICAgICAgRmllbGRDbGFzcyAgICAgID0+ICRGaWVsZENsYXNzLAogICAgICAgIEZpZWxkTGFiZWwgICAgICA9PiAkRmllbGRMYWJlbEVzY2FwZWQsCiAgICAgICAgRm9ybVVwZGF0ZUNsYXNzID0+ICRQYXJhbXtBSkFYVXBkYXRlfSA/ICdGb3JtVXBkYXRlJyA6ICcnLAogICAgICAgIEZpZWxkTmFtZSAgICAgICA9PiAkRmllbGROYW1lLAogICAgICAgIFJlYWRvbmx5ICAgICAgICA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e1JlYWRvbmx5fSwKICAgICk7CgogICAgbXkgJEZpZWxkVGVtcGxhdGVGaWxlID0gJFBhcmFte0N1c3RvbWVySW50ZXJmYWNlfQogICAgICAgID8KICAgICAgICAnRHluYW1pY0ZpZWxkL0N1c3RvbWVyLycKICAgICAgICA6CiAgICAgICAgJ0R5bmFtaWNGaWVsZC9BZ2VudC8nOwoKICAgIG15ICRQb3NzaWJsZVZhbHVlczsKICAgIG15IEBTZWxlY3Rpb25IVE1MOwogICAgaWYgKCAkREZEZXRhaWxzLT57RWRpdEZpZWxkTW9kZX0gZXEgJ0F1dG9Db21wbGV0ZScgKSB7CiAgICAgICAgJEZpZWxkVGVtcGxhdGVGaWxlIC49ICdSZWZlcmVuY2UnOwoKICAgICAgICAjIEdldCBkZWZhdWx0IGFnZW50IGF1dG9jb21wbGV0ZSBjb25maWcuCiAgICAgICAgbXkgJEF1dG9Db21wbGV0ZUNvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCggJ0F1dG9Db21wbGV0ZTo6JyAuICggJFBhcmFte0N1c3RvbWVySW50ZXJmYWNlfSA/ICdDdXN0b21lcicgOiAnQWdlbnQnICkgKS0+eydEZWZhdWx0J307CgogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdBdXRvQ29tcGxldGVBY3RpdmUnLAogICAgICAgICAgICBWYWx1ZSA9PiAkQXV0b0NvbXBsZXRlQ29uZmlnLT57QXV0b0NvbXBsZXRlQWN0aXZlfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZpZWxkVGVtcGxhdGVGaWxlIC49ICdCYXNlU2VsZWN0JzsKCiAgICAgICAgJFBvc3NpYmxlVmFsdWVzID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KCVQYXJhbSk7CgogICAgICAgIGlmICggJERGRGV0YWlscy0+e011bHRpVmFsdWV9ICkgewogICAgICAgICAgICBmb3IgbXkgJFZhbHVlSW5kZXggKCAwIC4uICQjeyRWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICRTZWxmLT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZS0+WyRWYWx1ZUluZGV4XSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSAkRmllbGRJRCA9ICRGaWVsZE5hbWUgLiAnXycgLiAkVmFsdWVJbmRleDsKICAgICAgICAgICAgICAgIHB1c2ggQFNlbGVjdGlvbkhUTUwsICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgIFNvcnQgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgICAgICBEaXNhYmxlZCAgID0+ICRQYXJhbXtSZWFkb25seX0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgPT4gJEZpZWxkSUQsCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkVmFsdWUtPlskVmFsdWVJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAkRmllbGRDbGFzcyAuICggJFBhcmFte0FKQVhVcGRhdGV9ID8gJyBGb3JtVXBkYXRlJyA6ICcnICksCiAgICAgICAgICAgICAgICAgICAgVHJlZVZpZXcgICA9PiAkREZEZXRhaWxzLT57VHJlZVZpZXd9LAogICAgICAgICAgICAgICAgICAgIEhUTUxRdW90ZSAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15IEBTZWxlY3RlZElEcyA9IGdyZXAgeyRffSAkVmFsdWUtPkAqOwogICAgICAgICAgICBteSAkRGF0YVZhbHVlcyAgPSAkU2VsZi0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICRQb3NzaWJsZVZhbHVlcywKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBcQFNlbGVjdGVkSURzLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBTZWxlY3Rpb25IVE1MLCAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgU29ydCAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICAgICAgRGlzYWJsZWQgICA9PiAkUGFyYW17UmVhZG9ubHl9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiBcQFNlbGVjdGVkSURzLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAkRmllbGRDbGFzcyAuICggJFBhcmFte0FKQVhVcGRhdGV9ID8gJyBGb3JtVXBkYXRlJyA6ICcnICksCiAgICAgICAgICAgICAgICBUcmVlVmlldyAgID0+ICRERkRldGFpbHMtPntUcmVlVmlld30sCiAgICAgICAgICAgICAgICBIVE1MUXVvdGUgID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgID0+ICRERkRldGFpbHMtPntNdWx0aXNlbGVjdH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICVFcnJvciA9ICgKICAgICAgICBTZXJ2ZXJFcnJvciA9PiAkUGFyYW17U2VydmVyRXJyb3J9LAogICAgICAgIE1hbmRhdG9yeSAgID0+ICRQYXJhbXtNYW5kYXRvcnl9LAogICAgKTsKICAgIG15IEBSZXN1bHRIVE1MOwogICAgZm9yIG15ICRWYWx1ZUluZGV4ICggMCAuLiAoICRERkRldGFpbHMtPntNdWx0aXNlbGVjdH0gPyAwIDogJCN7JFZhbHVlfSApICkgewogICAgICAgIG15ICRGaWVsZElEID0gJERGRGV0YWlscy0+e011bHRpVmFsdWV9ID8gJEZpZWxkTmFtZSAuICdfJyAuICRWYWx1ZUluZGV4IDogJEZpZWxkTmFtZTsKCiAgICAgICAgaWYgKCAhJFZhbHVlSW5kZXggKSB7CiAgICAgICAgICAgIGlmICggJEVycm9ye1NlcnZlckVycm9yfSApIHsKICAgICAgICAgICAgICAgICRFcnJvcntEaXZJRFNlcnZlckVycm9yfSA9ICIke0ZpZWxkSUR9U2VydmVyRXJyb3IiOwogICAgICAgICAgICAgICAgJEVycm9ye0Vycm9yTWVzc2FnZX0gICAgID0gVHJhbnNsYXRhYmxlKCAkUGFyYW17RXJyb3JNZXNzYWdlfSB8fCAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkRXJyb3J7TWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgICAgICRFcnJvcntEaXZJRE1hbmRhdG9yeX0gICAgICAgPSAiJHtGaWVsZElEfUVycm9yIjsKICAgICAgICAgICAgICAgICRFcnJvcntGaWVsZFJlcXVpcmVkTWVzc2FnZX0gPSBUcmFuc2xhdGFibGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVGhlIGFjdHVhbCB2YWx1ZSBpcyB0aGUgdGVjaG5pY2FsIElEIG9mIHRoZSByZWZlcmVuY2VkIG9iamVjdC4KICAgICAgICAjIFRoaXMgbWlnaHQgYmUgZW1wdHkgZS5nLiBpbiBhIHRpY2tldCBjcmVhdGlvbiBtYXNrLgogICAgICAgIG15ICRWYWx1ZUVzY2FwZWQ7CiAgICAgICAgbXkgJFJlZmVyZW5jZWRPYmplY3RJRCA9ICRWYWx1ZS0+WyRWYWx1ZUluZGV4XTsKICAgICAgICBpZiAoJFJlZmVyZW5jZWRPYmplY3RJRCkgewoKICAgICAgICAgICAgIyBUaGUgdmlzaWJsZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSByZWZlcmVuY2VkIG9iamVjdAogICAgICAgICAgICBteSAlRGVzY3JpcHRpb24gPSAkU2VsZi0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERGRGV0YWlscywKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkUmVmZXJlbmNlZE9iamVjdElELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogd2hhdCBhYm91dCBQZXJtaXNzaW9uIGNoZWNrCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWYWx1ZUVzY2FwZWQgPSAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgIFRleHQgPT4gJERlc2NyaXB0aW9ue0xvbmd9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBAUmVzdWx0SFRNTCwgJFBhcmFte0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICRGaWVsZFRlbXBsYXRlRmlsZSwKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVGaWVsZFRlbXBsYXRlRGF0YSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgICAgIEZpZWxkSUQgICAgICAgPT4gJEZpZWxkSUQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgID0+ICggJFZhbHVlLT5bJFZhbHVlSW5kZXhdIC8vICcnICksCiAgICAgICAgICAgICAgICBWYWx1ZUVzY2FwZWQgID0+ICggJFZhbHVlRXNjYXBlZCAgICAgICAgIC8vICcnICksCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25IVE1MID0+ICggJERGRGV0YWlscy0+e0VkaXRGaWVsZE1vZGV9IG5lICdBdXRvQ29tcGxldGUnID8gJFNlbGVjdGlvbkhUTUxbJFZhbHVlSW5kZXhdIDogdW5kZWYgKSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRUZW1wbGF0ZUhUTUw7CiAgICBpZiAoICRERkRldGFpbHMtPntNdWx0aVZhbHVlfSAmJiAhJFBhcmFte1JlYWRvbmx5fSApIHsKICAgICAgICAkRmllbGRUZW1wbGF0ZURhdGF7RmllbGRJRH0gPSAkRmllbGROYW1lIC4gJ19UZW1wbGF0ZSc7CgogICAgICAgIG15ICRTZWxlY3Rpb25IVE1MID0gJFBhcmFte0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgPT4gJFBvc3NpYmxlVmFsdWVzIHx8IHt9LAogICAgICAgICAgICBTb3J0ICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgRGlzYWJsZWQgID0+ICRQYXJhbXtSZWFkb25seX0sCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkRmllbGROYW1lLAogICAgICAgICAgICBJRCAgICAgICAgPT4gJEZpZWxkVGVtcGxhdGVEYXRhe0ZpZWxkSUR9LAogICAgICAgICAgICBDbGFzcyAgICAgPT4gJEZpZWxkQ2xhc3MgLiAoICRQYXJhbXtBSkFYVXBkYXRlfSA/ICcgRm9ybVVwZGF0ZScgOiAnJyApLAogICAgICAgICAgICBUcmVlVmlldyAgPT4gJERGRGV0YWlscy0+e1RyZWVWaWV3fSwKICAgICAgICAgICAgSFRNTFF1b3RlID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICA9PiAkREZEZXRhaWxzLT57TXVsdGlzZWxlY3R9LAogICAgICAgICk7CiAgICAgICAgJFRlbXBsYXRlSFRNTCA9ICRQYXJhbXtMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAkRmllbGRUZW1wbGF0ZUZpbGUsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlRmllbGRUZW1wbGF0ZURhdGEsCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25IVE1MID0+ICggJERGRGV0YWlscy0+e0VkaXRGaWVsZE1vZGV9IG5lICdBdXRvQ29tcGxldGUnID8gJFNlbGVjdGlvbkhUTUwgOiB1bmRlZiApLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyB3cml0ZSByZW5kZXJlZCB2YWx1ZSB0byBGb3JtQ2FjaGUgZm9yIGxhdGVyIHVzYWdlIGluIEVkaXRGaWVsZFZhbHVlVmFsaWRhdGUKICAgIGlmICggJFZhbHVlICYmICEkUGFyYW17U2VydmVyRXJyb3J9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScpLT5TZXRGb3JtRGF0YSgKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9LAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ1JlbmRlcmVkVmFsdWVfRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICApOwogICAgfQoKICAgICMgY2FsbCBFZGl0TGFiZWxSZW5kZXIgb24gdGhlIGNvbW1vbiBEcml2ZXIKICAgIG15ICRMYWJlbFN0cmluZyA9ICRTZWxmLT5FZGl0TGFiZWxSZW5kZXIoCiAgICAgICAgJVBhcmFtLAogICAgICAgIE1hbmRhdG9yeSA9PiAkUGFyYW17TWFuZGF0b3J5fSB8fCAnMCcsCiAgICAgICAgRmllbGROYW1lID0+ICRERkRldGFpbHMtPntNdWx0aVZhbHVlfSA/ICIke0ZpZWxkTmFtZX1fMCIgOiAkRmllbGROYW1lLAogICAgKTsKCiAgICBteSAlRGF0YSA9ICgKICAgICAgICBMYWJlbCA9PiAkTGFiZWxTdHJpbmcsCiAgICApOwoKICAgICMgZGVjaWRlIHdoaWNoIHN0cnVjdHVyZSB0byByZXR1cm4KICAgIGlmICggJERGRGV0YWlscy0+e011bHRpVmFsdWV9ICkgewogICAgICAgICREYXRhe011bHRpVmFsdWV9ICAgICAgICAgPSBcQFJlc3VsdEhUTUw7CiAgICAgICAgJERhdGF7TXVsdGlWYWx1ZVRlbXBsYXRlfSA9ICRUZW1wbGF0ZUhUTUw7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkRGF0YXtGaWVsZH0gPSAkUmVzdWx0SFRNTFswXTsKICAgIH0KCiAgICByZXR1cm4gXCVEYXRhOwp9CgpzdWIgR2V0RmllbGRUeXBlU2V0dGluZ3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEZpcnN0IGZldGNoIHRoZSBzZXR0aW5ncyBmcm9tIENvbmZpZ0l0ZW0gZHJpdmVyLgogICAgbXkgQEZpZWxkVHlwZVNldHRpbmdzID0gJFNlbGYtPlNVUEVSOjpHZXRGaWVsZFR5cGVTZXR0aW5ncygKICAgICAgICAlUGFyYW0sCiAgICApOwoKICAgICMgY2xlYW4gdXAgc2V0dGluZ3Mgd2hpY2ggd2Ugd2lsbCByZXBsYWNlIGhlcmUKICAgIEBGaWVsZFR5cGVTZXR0aW5ncyA9IGdyZXAgewogICAgICAgICRfLT57Q29uZmlnUGFyYW1OYW1lfSBuZSAnU2VhcmNoQXR0cmlidXRlJwogICAgICAgICAgICAmJiAkXy0+e0NvbmZpZ1BhcmFtTmFtZX0gbmUgJ0ltcG9ydFNlYXJjaEF0dHJpYnV0ZScKICAgICAgICAgICAgJiYgJF8tPntDb25maWdQYXJhbU5hbWV9IG5lICdEaXNwbGF5VHlwZScKICAgIH0gQEZpZWxkVHlwZVNldHRpbmdzOwoKICAgICMgU3VwcG9ydCBjb25maWd1cmFibGUgc2VhcmNoIGtleQogICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgewogICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ1NlYXJjaEF0dHJpYnV0ZScsCiAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0F0dHJpYnV0ZSB3aGljaCB3aWxsIGJlIHNlYXJjaGVkIG9uIGF1dG9jb21wbGV0ZScpLAogICAgICAgICAgICBFeHBsYW5hdGlvbiAgICAgPT4gVHJhbnNsYXRhYmxlKCdTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieScpLAogICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgIFNlbGVjdGlvbkRhdGEgICA9PiB7CiAgICAgICAgICAgICAgICAnTnVtYmVyJyAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAnTmFtZScgICAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgJ1ZlcnNpb25TdHJpbmcnID0+ICdWZXJzaW9uU3RyaW5nJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZHNMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBSZXN1bHRUeXBlID0+ICdIQVNIJywKICAgICk7CiAgICBteSAlREZTZWxlY3Rpb25EYXRhID0gbWFwIHsgKCAiRHluYW1pY0ZpZWxkXyRfIiA9PiAiRHluYW1pY0ZpZWxkXyRfIiApIH0gdmFsdWVzICREeW5hbWljRmllbGRzTGlzdC0+JSo7CgogICAgIyBTdXBwb3J0IGNvbmZpZ3VyYWJsZSBpbXBvcnQgc2VhcmNoIGF0dHJpYnV0ZQogICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgewogICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ0ltcG9ydFNlYXJjaEF0dHJpYnV0ZScsCiAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0V4dGVybmFsLXNvdXJjZSBrZXknKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnV2hlbiBzZXQgdmlhIGFuIGV4dGVybmFsIHNvdXJjZSAoZS5nLiB3ZWIgc2VydmljZSBvciBpbXBvcnQgLyBleHBvcnQpLCB0aGUgdmFsdWUgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyB0aGlzIGF0dHJpYnV0ZS4nKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgJ05hbWUnICAgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICdOdW1iZXInICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICdWZXJzaW9uU3RyaW5nJyA9PiAnVmVyc2lvblN0cmluZycsCiAgICAgICAgICAgICAgICAlREZTZWxlY3Rpb25EYXRhLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgfTsKCiAgICAjIFRyZWVWaWV3IHN1cHBvcnQgKGdyb3VwZWQgYnkgQ29uZmlnSXRlbXMpCiAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnVHJlZVZpZXcnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdUcmVlIFZpZXcnKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgMCA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgICAgICAxID0+IFRyYW5zbGF0YWJsZSgnWWVzJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICB9OwoKICAgICMgU3VwcG9ydCB2YXJpb3VzIGRpc3BsYXkgb3B0aW9ucwogICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgewogICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ0Rpc3BsYXlUeXBlJywKICAgICAgICAgICAgTGFiZWwgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQXR0cmlidXRlIHdoaWNoIGlzIGRpc3BsYXllZCBmb3IgdmFsdWVzJyksCiAgICAgICAgICAgIEV4cGxhbmF0aW9uICAgICA9PiBUcmFuc2xhdGFibGUoJ1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5LicpLAogICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgIFNlbGVjdGlvbkRhdGEgICA9PiB7CiAgICAgICAgICAgICAgICAnVmVyc2lvblN0cmluZycgICAgICAgICAgICAgICAgID0+ICc8VmVyc2lvbiBTdHJpbmc+JywKICAgICAgICAgICAgICAgICdDb25maWdJdGVtTnVtYmVyVmVyc2lvblN0cmluZycgPT4gJzxDb25maWcgSXRlbSBOdW1iZXI+OiA8VmVyc2lvbiBOYW1lPicsCiAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbU5hbWVWZXJzaW9uU3RyaW5nJyAgID0+ICc8Q29uZmlnIEl0ZW0gTmFtZT46IDxWZXJzaW9uIE5hbWU+JywKICAgICAgICAgICAgICAgICdWZXJzaW9uU3RyaW5nQ29uZmlnSXRlbU51bWJlcicgPT4gJzxWZXJzaW9uIE5hbWU+OiA8Q29uZmlnIEl0ZW0gTnVtYmVyPicsCiAgICAgICAgICAgICAgICAnVmVyc2lvblN0cmluZ0NvbmZpZ0l0ZW1OYW1lJyAgID0+ICc8VmVyc2lvbiBOYW1lPjogPENvbmZpZyBJdGVtIE5hbWU+JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgcmV0dXJuIEBGaWVsZFR5cGVTZXR0aW5nczsKfQoKPWhlYWQyIE9iamVjdERlc2NyaXB0aW9uR2V0KCkKCnJldHVybiBhIGhhc2ggb2Ygb2JqZWN0IGRlc2NyaXB0aW9ucy4KCiAgICBteSAlRGVzY3JpcHRpb24gPSAkQmFja2VuZE9iamVjdC0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm4KCiAgICAlRGVzY3JpcHRpb24gPSAoCiAgICAgICAgTm9ybWFsID0+ICJDSSMgMTIzNDQ1NSIsCiAgICAgICAgTG9uZyAgID0+ICJDSSMgMTIzNDQ1NTogTmVlZCBhIHNhbXBsZSBjb25maWcgaXRlbSB0aXRsZSIsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdERlc2NyaXB0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdElEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBTaWxlbnQgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgTm9ybWFsID0+ICIkUGFyYW17T2JqZWN0SUR9IChkZWxldGVkKSIsCiAgICAgICAgICAgIExvbmcgICA9PiAiJFBhcmFte09iamVjdElEfSAoZGVsZXRlZCkiLAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIFRyZWVWaWV3IHByZWZpeCBpZiBuZWVkZWQKICAgIG15ICRUcmVlVmlld1ByZWZpeCA9ICcnOwogICAgaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1RyZWVWaWV3fSApIHsKICAgICAgICAkVHJlZVZpZXdQcmVmaXggPSAiJENvbmZpZ0l0ZW0tPntOYW1lfTo6IjsKICAgIH0KCiAgICBteSAlRGVzY3JpcHRpb25zOwogICAgaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSAmJiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0Rpc3BsYXlUeXBlfSApIHsKCiAgICAgICAgIyBwcmVwYXJlIHN0cmluZyBhcyBjb25maWd1cmVkCiAgICAgICAgbXkgJERpc3BsYXlUeXBlID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtEaXNwbGF5VHlwZX07CiAgICAgICAgaWYgKCAkRGlzcGxheVR5cGUgZXEgJ1ZlcnNpb25TdHJpbmcnICkgewogICAgICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAkVHJlZVZpZXdQcmVmaXggLiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9OwogICAgICAgICAgICAkRGVzY3JpcHRpb25ze0xvbmd9ICAgPSAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9OwogICAgICAgIH0KICAgICAgICBpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU51bWJlclZlcnNpb25TdHJpbmcnICkgewogICAgICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAkVHJlZVZpZXdQcmVmaXggLiAiJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDb25maWdJdGVtLT57TnVtYmVyfTogJENvbmZpZ0l0ZW0tPntWZXJzaW9uU3RyaW5nfSI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERpc3BsYXlUeXBlIGVxICdDb25maWdJdGVtTmFtZVZlcnNpb25TdHJpbmcnICkgewogICAgICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAkVHJlZVZpZXdQcmVmaXggLiAiJENvbmZpZ0l0ZW0tPntOYW1lfTogJENvbmZpZ0l0ZW0tPntWZXJzaW9uU3RyaW5nfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ29uZmlnSXRlbS0+e05hbWV9OiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9IjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGlzcGxheVR5cGUgZXEgJ1ZlcnNpb25TdHJpbmdDb25maWdJdGVtTnVtYmVyJyApIHsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gJFRyZWVWaWV3UHJlZml4IC4gIiRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ306ICRDb25maWdJdGVtLT57TnVtYmVyfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9OiAkQ29uZmlnSXRlbS0+e051bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnVmVyc2lvblN0cmluZ0NvbmZpZ0l0ZW1OYW1lJyApIHsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gJFRyZWVWaWV3UHJlZml4IC4gIiRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ306ICRDb25maWdJdGVtLT57TmFtZX0iOwogICAgICAgICAgICAkRGVzY3JpcHRpb25ze0xvbmd9ICAgPSAiJENvbmZpZ0l0ZW0tPntWZXJzaW9uU3RyaW5nfTogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gJFRyZWVWaWV3UHJlZml4IC4gIiRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ30iOwogICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ29uZmlnSXRlbS0+e05hbWV9OiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9IjsKICAgIH0KCiAgICBteSAkTGluazsKICAgIGlmICggJFBhcmFte0xpbmt9ICYmICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9ICkgewogICAgICAgIGlmICggJFBhcmFte0xheW91dE9iamVjdH17U2Vzc2lvblNvdXJjZX0gZXEgJ0FnZW50SW50ZXJmYWNlJyApIHsKCiAgICAgICAgICAgICMgVE9ETzogb25seSBzaG93IHRoZSBsaW5rIGlmIHRoZSB1c2VyICRQYXJhbXtVc2VySUR9IGhhcyBwZXJtaXNzaW9ucwogICAgICAgICAgICAkTGluayA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e0Jhc2VsaW5rfSAuICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTtWZXJzaW9uSUQ9JFBhcmFte09iamVjdElEfSI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte0xheW91dE9iamVjdH17U2Vzc2lvblNvdXJjZX0gZXEgJ0N1c3RvbWVySW50ZXJmYWNlJyApIHsKICAgICAgICAgICAgJExpbmsgPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtCYXNlbGlua30gLiAiQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07VmVyc2lvbklEPSRQYXJhbXtPYmplY3RJRH0iOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgcmV0dXJuICgKICAgICAgICAlRGVzY3JpcHRpb25zLAogICAgICAgIExpbmsgPT4gJExpbmssCiAgICApOwp9Cgo9aGVhZDIgU2VhcmNoT2JqZWN0cygpCgpUaGlzIGlzIHVzZWQgaW4gYXV0byBjb21wbGV0aW9uIHdoZW4gc2VhcmNoaW5nIGZvciBwb3NzaWJsZSBvYmplY3QgSURzLgoKICAgIG15IEBPYmplY3RJRHMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoT2JqZWN0cygKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJE9iamVjdElELCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkgaWYgZ2l2ZW4sIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBUZXJtCiAgICAgICAgVGVybSAgICAgICAgICAgICAgID0+ICRUZXJtLCAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHRzIHRvIHdpbGRjYXJkIHNlYXJjaCB3aXRoIGVtcHR5IHN0cmluZwogICAgICAgIE1heFJlc3VsdHMgICAgICAgICA9PiAkTWF4UmVzdWx0cywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICBPYmplY3QgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAlRGF0YSwKICAgICAgICB9LAogICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaE9iamVjdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17VGVybX0gLy89ICcnOwoKICAgIG15ICRERkRldGFpbHMgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9IC8vIHt9OwoKICAgIG15ICVTZWFyY2hQYXJhbXM7CgogICAgaWYgKCAkUGFyYW17T2JqZWN0SUR9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbUlEfSA9ICRQYXJhbXtPYmplY3RJRH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gKSB7CgogICAgICAgICMgaW5jbHVkZSBjb25maWd1cmVkIHNlYXJjaCBwYXJhbSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFNlYXJjaEF0dHJpYnV0ZSA9ICRERkRldGFpbHMtPntJbXBvcnRTZWFyY2hBdHRyaWJ1dGV9IHx8ICdOYW1lJzsKCiAgICAgICAgJFNlYXJjaFBhcmFtc3skU2VhcmNoQXR0cmlidXRlfSA9ICIkUGFyYW17VGVybX0iOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgaW5jbHVkZSBjb25maWd1cmVkIHNlYXJjaCBwYXJhbSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFNlYXJjaEF0dHJpYnV0ZSA9ICRERkRldGFpbHMtPntTZWFyY2hBdHRyaWJ1dGV9IHx8ICdOYW1lJzsKCiAgICAgICAgJFNlYXJjaFBhcmFtc3skU2VhcmNoQXR0cmlidXRlfSA9ICIqJFBhcmFte1Rlcm19KiI7CiAgICB9CgogICAgIyBwcmVwYXJlIG1hcHBpbmcgb2YgZWRpdCBtYXNrIGF0dHJpYnV0ZSBuYW1lcwogICAgbXkgJUF0dHJpYnV0ZU5hbWVNYXBwaW5nID0gKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiBbCgogICAgICAgICAgICAjIEFnZW50VGlja2V0RW1haWwKICAgICAgICAgICAgJ0Zyb20nLAoKICAgICAgICAgICAgIyBBZ2VudFRpY2tldFBob25lCiAgICAgICAgICAgICdTZWxlY3RlZEN1c3RvbWVyVXNlcicsCiAgICAgICAgXSwKICAgICAgICBSZXNwb25zaWJsZUlEID0+IFsKICAgICAgICAgICAgJ05ld1Jlc3BvbnNpYmxlSUQnLAogICAgICAgIF0sCiAgICAgICAgT3duZXJJRCA9PiBbCiAgICAgICAgICAgICdOZXdPd25lcklEJywKICAgICAgICAgICAgJ05ld1VzZXJJRCcsCiAgICAgICAgXSwKICAgICAgICBRdWV1ZUlEID0+IFsKICAgICAgICAgICAgJ0Rlc3QnLAogICAgICAgICAgICAnTmV3UXVldWVJRCcsCiAgICAgICAgXSwKICAgICAgICBTdGF0ZUlEID0+IFsKICAgICAgICAgICAgJ05ld1N0YXRlSUQnLAogICAgICAgICAgICAnTmV4dFN0YXRlSUQnLAogICAgICAgIF0sCiAgICAgICAgUHJpb3JpdHlJRCA9PiBbCiAgICAgICAgICAgICdOZXdQcmlvcml0eUlEJywKICAgICAgICBdLAogICAgKTsKCiAgICAjIGluY29ycG9yYXRlIHJlZmVyZW5jZWZpbHRlcmxpc3QgaW50byBzZWFyY2ggcGFyYW1zCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERGRGV0YWlscy0+e1JlZmVyZW5jZUZpbHRlckxpc3R9ICkgJiYgISRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gKSB7CiAgICAgICAgRklMVEVSSVRFTToKICAgICAgICBmb3IgbXkgJEZpbHRlckl0ZW0gKCAkREZEZXRhaWxzLT57UmVmZXJlbmNlRmlsdGVyTGlzdH0tPkAqICkgewoKICAgICAgICAgICAgIyBtYXAgSUQgdG8gSURzIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICBteSAkQXR0cmlidXRlTmFtZSA9ICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfTsKICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkQXR0cmlidXRlTmFtZSB9IHF3KFF1ZXVlSUQgVHlwZUlEIFN0YXRlSUQgUHJpb3JpdHlJRCBTZXJ2aWNlSUQgU0xBSUQgT3duZXJJRCBSZXNwb25zaWJsZUlEICkgKSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlTmFtZSAuPSAncyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgZmlsdGVyIGNvbmZpZwogICAgICAgICAgICBuZXh0IEZJTFRFUklURU0gdW5sZXNzICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfTsKICAgICAgICAgICAgbmV4dCBGSUxURVJJVEVNIHVubGVzcyAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSB8fCAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30gKTsKCiAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICMgZG9uJ3QgcGVyZm9ybSBzZWFyY2ggaWYgb2JqZWN0IGF0dHJpYnV0ZSB0byBzZWFyY2ggZm9yIGlzIGVtcHR5CiAgICAgICAgICAgICAgICBteSAkRXF1YWxzT2JqZWN0QXR0cmlidXRlOwogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte09iamVjdH0gKSApIHsKICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFBhcmFte09iamVjdH17RHluYW1pY0ZpZWxkfXsgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH0gLy8gJFBhcmFte09iamVjdH17ICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJhbU9iamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gPX4gL15EeW5hbWljRmllbGRfKD88REZOYW1lPlxTKykvICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkRmlsdGVySXRlbURGQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICQre0RGTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRklMVEVSSVRFTSB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEZpbHRlckl0ZW1ERkNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbXtQYXJhbU9iamVjdH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpbHRlckl0ZW1ERkNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybURhdGVzICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbWF0Y2ggc3RhbmRhcmQgdGlja2V0IGF0dHJpYnV0ZSBuYW1lcyB3aXRoIGVkaXQgbWFzayBhdHRyaWJ1dGUgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQFBhcmFtTmFtZXMgPSAkUGFyYW17UGFyYW1PYmplY3R9LT5HZXRQYXJhbU5hbWVzOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBhdHRyaWJ1dGUgbmFtZSBpdHNlbGYgaXMgaW4gcGFyYW1zCiAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URSB0cnlpbmcgYXR0cmlidXRlIGl0c2VsZiBpcyBjcnVjaWFsbHkgaW1wb3J0YW50IGluIGNhc2Ugb2YgUXVldWVJRAogICAgICAgICAgICAgICAgICAgICAgICAjICAgYmVjYXVzZSBBZ2VudFRpY2tldFBob25lIGRvZXMgbm90IHByb3ZpZGUgUXVldWVJRCwgYnV0IHB1dHMgdGhlIGlkIGluCiAgICAgICAgICAgICAgICAgICAgICAgICMgICBEZXN0LCBhbmQgQWdlbnRUaWNrZXRFbWFpbCBsZWF2ZXMgRGVzdCBhcyBhIHN0cmluZyBidXQgcHV0cyB0aGUgaWQgaW4gUXVldWVJRAogICAgICAgICAgICAgICAgICAgICAgICBteSAoJFBhcmFtTmFtZSkgPSBncmVwIHsgJF8gZXEgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH0gQFBhcmFtTmFtZXM7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGlmIG5vdCwgdHJ5IHRvIGZpbmQgYSBtYXBwZWQgYXR0cmlidXRlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFBhcmFtTmFtZSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIG1hcHBlZCBhdHRyaWJ1dGUgbmFtZXMgZXhpc3QgYXQgYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWFwcGVkQXR0cmlidXRlcyA9ICRBdHRyaWJ1dGVOYW1lTWFwcGluZ3sgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkTWFwcGVkQXR0cmlidXRlcyBlcSAnQVJSQVknICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBQRURBVFRSSUJVVEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRNYXBwZWRBdHRyaWJ1dGUgKCAkTWFwcGVkQXR0cmlidXRlcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkUGFyYW1OYW1lKSA9IGdyZXAgeyAkXyBlcSAkTWFwcGVkQXR0cmlidXRlIH0gQFBhcmFtTmFtZXM7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IE1BUFBFREFUVFJJQlVURSBpZiAkUGFyYW1OYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAkUGFyYW1OYW1lOwoKICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRQYXJhbXtQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHdoZW4gY2FsbGVkIGJ5IEFnZW50UmVmZXJlbmNlU2VhcmNoLCBEZXN0IGlzIGEgc3RyaW5nIGFuZCB3ZSBuZWVkIHRvIGV4dHJhY3QgdGhlIFF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW1OYW1lIGVxICdEZXN0JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRRdWV1ZUlEID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPX4gL14oXGR7MSwxMDB9KVx8XHwuKz8kLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUXVldWVJRCA9ICQxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRRdWV1ZUlEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZW5zdXJlIHRoYXQgZm9yIEVxdWFsc09iamVjdEF0dHJpYnV0ZSBVc2VySUQgYWx3YXlzICRTZWxmLT57VXNlcklEfSBpcyB1c2VkIGluIHRoZSBlbmQKICAgICAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdVc2VySUQnICkgewogICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17VXNlcklEfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gdW5sZXNzICRFcXVhbHNPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICByZXR1cm4gaWYgKCByZWYgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSBlcSAnQVJSQVknICYmICEkRXF1YWxzT2JqZWN0QXR0cmlidXRlLT5AKiApOwoKICAgICAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSA9fiBte15Db259aSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9ICRFcXVhbHNPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteRHlufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkRXF1YWxzT2JqZWN0QXR0cmlidXRlLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhcnJheSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JEF0dHJpYnV0ZU5hbWV9ID0gWyRFcXVhbHNPYmplY3RBdHRyaWJ1dGVdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNTdHJpbmd9ICkgewoKICAgICAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICAgICAjIFRPRE8gY2hlY2sgaWYgdGhpcyBoYXMgdG8gYmUgYWRhcHRlZCBmb3IgdGlja2V0IHNlYXJjaAogICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteQ29ufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ307CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteRHlufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFycmF5IGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSBbICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgU3VwcG9ydCByZXN0cmljdGlvbiBieSBjbGFzcwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntDbGFzc0lEc30gKSAmJiAhJFBhcmFte0V4dGVybmFsU291cmNlfSApIHsKICAgICAgICBpZiAoICRTZWFyY2hQYXJhbXN7Q2xhc3NJRHN9ICkgewogICAgICAgICAgICBteSBAQ2xhc3NJRHM7CiAgICAgICAgICAgIGZvciBteSAkQ2xhc3NJRCAoICRTZWFyY2hQYXJhbXN7Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJENsYXNzSUQgfSAkREZEZXRhaWxzLT57Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGFzc0lEcywgJENsYXNzSUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB1bmxlc3MgQENsYXNzSURzOwoKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gPSBcQENsYXNzSURzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gPSAkREZEZXRhaWxzLT57Q2xhc3NJRHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIFN1cHBvcnQgcmVzdHJpY3Rpb24gYnkgZGVwbG95bWVudCBzdGF0ZQogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntEZXBsU3RhdGVJRHN9ICkgKSB7CiAgICAgICAgaWYgKCAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gKSB7CiAgICAgICAgICAgIG15IEBEZXBsb3ltZW50U3RhdGVJRHM7CiAgICAgICAgICAgIGZvciBteSAkRGVwbG95bWVudFN0YXRlSUQgKCAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkRGVwbG95bWVudFN0YXRlSUQgfSAkREZEZXRhaWxzLT57RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBARGVwbG95bWVudFN0YXRlSURzLCAkRGVwbG95bWVudFN0YXRlSUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB1bmxlc3MgQERlcGxveW1lbnRTdGF0ZUlEczsKCiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSA9IFxARGVwbG95bWVudFN0YXRlSURzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tEZXBsU3RhdGVJRHN9ID0gJERGRGV0YWlscy0+e0RlcGxTdGF0ZUlEc307CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGEgbGlzdCBvZiBjb25maWcgaXRlbSBJRHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkQ29uZmlnSXRlbUlEcyAgICA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uU2VhcmNoKAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFBhcmFte01heFJlc3VsdHN9LAogICAgICAgIFJlc3VsdCAgICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFsnTnVtYmVyJ10sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ0Rvd24nXSwKICAgICAgICAlU2VhcmNoUGFyYW1zLAogICAgKTsKICAgIHJldHVybiB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRDb25maWdJdGVtSURzKTsKCiAgICAjIGFjdHVhbGx5IHN0b3JlIGxhdGVzdCB2ZXJzaW9uIElECiAgICBteSBAVmVyc2lvbklEczsKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggJENvbmZpZ0l0ZW1JRHMtPkAqICkgewogICAgICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFZlcnNpb25MaXN0KSApIHsKICAgICAgICAgICAgcHVzaCBAVmVyc2lvbklEcywgJFZlcnNpb25MaXN0LT5AKjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEBWZXJzaW9uSURzOwp9Cgo9aGVhZDIgVmFsdWVGb3JMZW5zKCkKCnRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHBhc3NlZCB2YWx1ZSB1bmNoYW5nZWQuIEl0IGlzIG9ubHkgaW1wbGVtZW50ZWQgc28gdGhhdAp0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgcGFyZW50IGNsYXNzIEM8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpJVFNNQ29uZmlnSXRlbVJlZmVyZW5jZT4gaXMgbm90IHVzZWQuCgo9Y3V0CgpzdWIgVmFsdWVGb3JMZW5zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/DynamicField/Event/ITSMConfigItemDefinitionSync.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbURlZmluaXRpb25TeW5jOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoYW55KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KERhdGEgRXZlbnQgQ29uZmlnIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAkUGFyYW17RGF0YX17TmV3RGF0YX17T2JqZWN0VHlwZX0gbmUgJ0lUU01Db25maWdJdGVtJzsKICAgIHJldHVybiB1bmxlc3MgYW55IHsgJF8gZXEgJFBhcmFte0V2ZW50fSB9IHF3KER5bmFtaWNGaWVsZEFkZCBEeW5hbWljRmllbGRVcGRhdGUgRHluYW1pY0ZpZWxkRGVsZXRlKTsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZDsKCiAgICAjIGlmIHRoZSBfb2xkXyBkeW5hbWljIGZpZWxkIHdhcyBwYXJ0IG9mIGEgc2V0LCBhbnkgY2hhbmdlIHRvIGl0IHdpbGwgYWZmZWN0IHRoZSBleGlzdGluZyBzZXQKICAgICMgYW5kIHRodXMgdGhlIENJCiAgICBpZiAoICRQYXJhbXtEYXRhfXtPbGREYXRhfXtDb25maWd9e1BhcnRPZlNldH0gKSB7CiAgICAgICAgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBJRCA9PiAkUGFyYW17RGF0YX17T2xkRGF0YX17Q29uZmlnfXtQYXJ0T2ZTZXR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmb3IgdGhlIHN0YW5kYXJkIGNhc2UsIHRoZSBmaWVsZCBpcyBkaXJlY3RseSBpbnRlZ3JhdGVkLCB3ZSB0YWtlIHRoZSBfbmV3XyBkYXRhCiAgICAjIC0+IGluIGNhc2Ugb2YgYSBuYW1lIGNoYW5nZSB3ZSBkbyBub3Qgc2V0IGNsYXNzZXMgb3V0IG9mIHN5bmMsIGFzIHdlIHdpbGwgbm90CiAgICAjIGF1dG9tYXRpY2FsbHkgdXBkYXRlIGRlZmluaXRpb24gc3RyaW5ncwogICAgIyBhIG5ldyBmaWVsZCBuYW1lIGhhcyB0byBiZSB1cGRhdGVkIG1hbnVhbGx5IGluIHRoZSBkZWZpbml0aW9uCiAgICBlbHNlIHsKICAgICAgICAkRHluYW1pY0ZpZWxkID0gJFBhcmFte0RhdGF9e05ld0RhdGF9OwogICAgfQoKICAgIG15ICVPdXRPZlN5bmNEZWZpbml0aW9uczsKCiAgICAjIExvb3Agb3ZlciBhbGwgY2xhc3NlcyBhbmQgY2hlY2sgd2hldGhlciB0aGV5IGluY2x1ZGUgdGhlIGNoYW5nZWQgZHluYW1pYyBmaWVsZAogICAgZm9yIG15ICRDbGFzc0lEICgga2V5cyAkQ2xhc3NMaXN0LT4lKiApIHsKICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgdXNlIE9sZERhdGEgdG8gYWNjb3VudCBmb3IgbmFtZSBjaGFuZ2VzCiAgICAgICAgIyAgIGluIGNhc2Ugb2YgRHluYW1pY0ZpZWxkQWRkLCBvbGQgZGF0YSBpcyBub3QgcHJlc2VudCAtIHVzZSBuZXcgZGF0YSBhcyBmYWxsYmFjawogICAgICAgIGlmICggJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyAkUGFyYW17RGF0YX17T2xkRGF0YX17TmFtZX0gLy8gJFBhcmFte0RhdGF9e05ld0RhdGF9e05hbWV9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQHsgJE91dE9mU3luY0RlZmluaXRpb25zeyRDbGFzc0lEfSB9LCAkRHluYW1pY0ZpZWxkLT57SUR9OwogICAgICAgIH0KCiAgICAgICAgIyBzZXQtaW5uZXIgZmllbGRzIGFyZSBub3Qgc3RvcmVkIGluIGRlZmluaXRpb24gZHluYW1pYyBmaWVsZCByZWYKICAgICAgICBlbHNpZiAoICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfXsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQHsgJE91dE9mU3luY0RlZmluaXRpb25zeyRDbGFzc0lEfSB9LCAkRHluYW1pY0ZpZWxkLT57SUR9OwogICAgICAgIH0KICAgIH0KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldE91dE9mU3luYygKICAgICAgICBDbGFzc2VzID0+IFwlT3V0T2ZTeW5jRGVmaW5pdGlvbnMsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/System/DynamicField/ObjectType/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGFyYW1PYmplY3QpCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbSAtIHN1cHBvcnQgZm9yIElUU01Db25maWdJdGVtIGFzIGFuIG9iamVjdCB0eXBlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkF0dGFjaCBkeW5hbWljIGZpZWxkcyB0byBhbiBJVFNNQ29uZmlnSXRlbS4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKClVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzCmJ5IHVzaW5nIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtLT5uZXcoKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBQcmVWYWx1ZVNldCgpCgpQZXJmb3JtIHNwZWNpZmljIGZ1bmN0aW9ucyBiZWZvcmUgdGhlIHZhbHVlIGlzIHNldCBmb3IgYSBkeW5hbWljIGZpZWxkIGZvciB0aGlzIG9iamVjdCB0eXBlLgoKICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZElUU01Db25maWdJdGVtSGFuZGxlck9iamVjdC0+UHJlVmFsdWVTZXQoCiAgICAgICAgUGFyYW0gICAgICAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwoKVGhpcyBoYW5kbGVyIGNhbiBiZSBza2lwcGVkIGJ5IHBhc3NpbmcgdGhlIGF0dHJpYnV0ZSBDPENvbmZpZ0l0ZW1IYW5kbGVkPiBpbiBDPFBhcmFtPi4KCj1jdXQKCnN1YiBQcmVWYWx1ZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsIG5lZWRlZCBwYXJhbXMgYXJlIGNoZWNrZWQgYnkgdGhlIGJhY2tlbmQgYmVmb3JlCiAgICBpZiAoICEkUGFyYW17UGFyYW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBQYXJhbSBvZiBiYWNrZW5kISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaWYgd2UgYXJlIGNvbWluZyBmcm9tIFZlcnNpb24ucG0gbm90aGluZyBoYXMgdG8gYmUgY2hhbmdlZAogICAgcmV0dXJuIDEgaWYgJFBhcmFte1BhcmFtfXtDb25maWdJdGVtSGFuZGxlZH07CgogICAgIyB1cGdyYWRlIHZlcnNpb24gb2Ygc3Vic2VxdWVudCBkeW5hbWljIGZpZWxkIGNoYW5nZXMgaWYgYSB2ZXJzaW9uIHdhcyBhZGRlZCBpbiB0aGlzIHJlcXVlc3QKICAgIGlmICggJFNlbGYtPntWZXJzaW9uVXBncmFkZX0gJiYgJFNlbGYtPntWZXJzaW9uVXBncmFkZX17ICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9IH0gKSB7CiAgICAgICAgJFBhcmFte1BhcmFtfXtPYmplY3RJRH0gPSAkU2VsZi0+e1ZlcnNpb25VcGdyYWRlfXsgJFBhcmFte1BhcmFtfXtPYmplY3RJRH0gfTsKCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgcmV0dXJuIDEgaWYgISRQYXJhbXtQYXJhbX17RHluYW1pY0ZpZWxkQ29uZmlnfXtDSUNsYXNzfTsKCiAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGNoYW5nZWQgZmllbGQgdHJpZ2dlcnMgYSBuZXcgY29uZmlnaXRlbSB2ZXJzaW9uIGFuZCBpZiBzbywgYWRkIGEgbmV3IG9uZQogICAgbXkgJENsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtQYXJhbX17RHluYW1pY0ZpZWxkQ29uZmlnfXtDSUNsYXNzfSwKICAgICk7CiAgICBteSAlVmVyc2lvblRyaWdnZXIgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJENsYXNzUHJlZmVyZW5jZXMtPntWZXJzaW9uVHJpZ2dlcn0gLy8gW10gfTsKCiAgICBpZiAoICRWZXJzaW9uVHJpZ2dlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte1BhcmFtfXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9IH0gKSB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAgICAgbXkgJE5ld1ZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICBMYXN0VmVyc2lvbklEID0+ICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRQYXJhbXtQYXJhbX17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkTmV3VmVyc2lvbklEICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGNyZWF0ZSBuZXcgdmVyc2lvbiBmb3IgTGFzdFZlcnNpb25JRCAkUGFyYW17UGFyYW19e09iamVjdElEfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgb2xkIGFuZCBuZXcgdmVyc2lvbiB0byBuZXcgb25lIHRvIG1ha2Ugc3VyZSwgdGhhdCBsZW5zZXMgY2FuIHdvcmsgd2l0aCBlaXRoZXIKICAgICAgICAkU2VsZi0+e1ZlcnNpb25VcGdyYWRlfXsgJFBhcmFte1BhcmFtfXtPYmplY3RJRH0gfSA9ICROZXdWZXJzaW9uSUQ7CiAgICAgICAgJFNlbGYtPntWZXJzaW9uVXBncmFkZX17JE5ld1ZlcnNpb25JRH0gICAgICAgICAgICAgPSAkTmV3VmVyc2lvbklEOwogICAgICAgICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJE5ld1ZlcnNpb25JRDsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFBvc3RWYWx1ZVNldCgpCgpQZXJmb3JtIHNwZWNpZmljIGZ1bmN0aW9ucyBhZnRlciB0aGUgdmFsdWUgaGFzIGJlZW4gc2V0IGZvciBhIGR5bmFtaWMgZmllbGQgZm9yIHRoaXMgb2JqZWN0IHR5cGUuCgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1IYW5kbGVyT2JqZWN0LT5Qb3N0VmFsdWVTZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsICAgICAgIyBjb21wbGV0ZSBjb25maWcgb2YgdGhlIER5bmFtaWNGaWVsZAogICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkT2JqZWN0SUQsICAgICAgICAgICAgICAgICMgSUQgb2YgdGhlIGN1cnJlbnQgb2JqZWN0IHRoYXQgdGhlIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtdXN0IGJlIGxpbmtlZCB0bywgZS4gZy4gSVRTTUNvbmZpZ0l0ZW1JRAogICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsICAgICAgICAgICAgICAgICAgICMgVmFsdWUgdG8gc3RvcmUsIGRlcGVuZHMgb24gYmFja2VuZCB0eXBlCiAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEyMywKICAgICAgICBDb25maWdJdGVtSGFuZGxlZCAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCBza2lwcyB0aGlzIGlmIGhhbmRsZWQgZWxzZXdoZXJlCiAgICApOwoKVGhpcyBoYW5kbGVyIGNhbiBiZSBza2lwcGVkIGJ5IHBhc3NpbmcgdGhlIGF0dHJpYnV0ZSBDPENvbmZpZ0l0ZW1IYW5kbGVkPiBpbiBDPFBhcmFtPi4KCj1jdXQKCnN1YiBQb3N0VmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHdlIGFyZSBjb21pbmcgZnJvbSBWZXJzaW9uLnBtIG5vdGhpbmcgaGFzIHRvIGJlIGNoYW5nZWQKICAgIHJldHVybiAxIGlmICRQYXJhbXtDb25maWdJdGVtSGFuZGxlZH07CgogICAgIyBhbGwgbmVlZGVkIHBhcmFtcyBhcmUgY2hlY2tlZCBieSB0aGUgYmFja2VuZCBiZWZvcmUKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkQ2FjaGVPYmplY3QgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQ29uZmlnSXRlbUlER2V0KCBWZXJzaW9uSUQgPT4gJFBhcmFte09iamVjdElEfSApOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRDb25maWdJdGVtT2JqZWN0LT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICdDb25maWdJdGVtR2V0OjpWZXJzaW9uSUQ6OicgLiAkUGFyYW17T2JqZWN0SUR9IC4gJzo6REZEYXRhOjoxJywKICAgICk7CiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRDb25maWdJdGVtT2JqZWN0LT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICdDb25maWdJdGVtR2V0OjpDb25maWdJdGVtSUQ6OicgLiAkQ29uZmlnSXRlbUlEIC4gJzo6REZEYXRhOjoxJywKICAgICk7CgogICAgIyBwcmVwYXJlIHJlYWRhYmxlIHZhbHVlcyBmb3IgdGhlIGhpc3RvcnksCiAgICAjIHRoZSByZXN1bHQgaXMgYSBoYXNocmVmIHdpdGggdGhlIGtleXMgVmFsdWUgYW5kIExhYmVsCiAgICBteSAkUmVhZGFibGVWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfQogICAgKTsKICAgIG15ICRSZWFkYWJsZU9sZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlJlYWRhYmxlVmFsdWVSZW5kZXIoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17T2xkVmFsdWV9LAogICAgKTsKCiAgICAjIHRyaWdnZXIgZXZlbnQKICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXIoCiAgICAgICAgRXZlbnQgPT4gJ0NvbmZpZ0l0ZW1EeW5hbWljRmllbGRVcGRhdGVfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgRmllbGROYW1lICAgICAgICA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgICAgICBPbGRWYWx1ZSAgICAgICAgID0+ICRQYXJhbXtPbGRWYWx1ZX0sCiAgICAgICAgICAgIFJlYWRhYmxlVmFsdWUgICAgPT4gJFJlYWRhYmxlVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgIFJlYWRhYmxlT2xkVmFsdWUgPT4gJFJlYWRhYmxlT2xkVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBPYmplY3REYXRhR2V0KCkKCnJldHJpZXZlcyB0aGUgZGF0YSBvZiB0aGUgY3VycmVudCBvYmplY3QuCgogICAgbXkgJU9iamVjdERhdGEgPSAkRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1IYW5kbGVyT2JqZWN0LT5PYmplY3REYXRhR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLCAgICAgICMgY29tcGxldGUgY29uZmlnIG9mIHRoZSBEeW5hbWljRmllbGQKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMTIzLAogICAgKTsKCnJldHVybnM6CgogICAgJU9iamVjdERhdGEgPSAoCiAgICAgICAgT2JqZWN0SUQgPT4gMTIzLAogICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiAxMjMsCiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJzIwMTAxMDI3MDAwMDAxJywKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAxNywKICAgICAgICAgICAgLi4uCiAgICAgICAgfQogICAgKTsKCj1jdXQKCnN1YiBPYmplY3REYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRHluYW1pY0ZpZWxkQ29uZmlnIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIER5bmFtaWNGaWVsZENvbmZpZyAoZ2VuZXJhbCkuCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBmaWVsZCBjb25maWd1cmF0aW9uIGlzIGludmFsaWQiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgQ2hlY2sgRHluYW1pY0ZpZWxkQ29uZmlnIChpbnRlcm5hbGx5KS4KICAgIGZvciBteSAkTmVlZGVkIChxdyhJRCBGaWVsZFR5cGUgT2JqZWN0VHlwZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIGluIER5bmFtaWNGaWVsZENvbmZpZyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgVE9ETzogd2h5IGRvZXMgdGhpcyBtZXRob2QgZGVwZW5kIG9uIHRoZSBwYXJhbSBvYmplY3Q/CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSgKICAgICAgICBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJywKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkQ29uZmlnSXRlbUlEOwoKICAgIG15ICVDb25maWdJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIHJldHVybiAoCiAgICAgICAgT2JqZWN0SUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBEYXRhICAgICA9PiBcJUNvbmZpZ0l0ZW0sCiAgICApOwp9Cgo9aGVhZDIgR2V0RW50aXR5SURmb3JMaW5raW5nKCkKCnJldHJpZXZlcyBDb25maWdJdGVtSUQgZm9yIGdpdmVuIFZlcnNpb25JRAoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1IYW5kbGVyT2JqZWN0LT5HZXRFbnRpdHlJRGZvckxpbmtpbmcoCiAgICAgICAgVmVyc2lvbklEID0+IDEyMywKICAgICAgICBMaW5rS2V5ID0+ICdTb3VyY2UnLCAgICAgICMgb3IgJ1RhcmdldCcKICAgICAgICBUeXBlTmFtZSA9PiAnQ29uZmlnSXRlbScsICMgb3IgJ0NvbmZpZ0l0ZW1WZXJzaW9uJwogICAgKTsKCj1jdXQKCnN1YiBHZXRFbnRpdHlJRGZvckxpbmtpbmcgewoKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJElEICAgICAgID0gJFBhcmFte0lEfTsKICAgIG15ICRMaW5rS2V5ICA9ICRQYXJhbXtMaW5rS2V5fTsKICAgIG15ICRUeXBlTmFtZSA9ICRQYXJhbXtUeXBlTmFtZX07CgogICAgIyBpZiB0aGUga2V5IGlzIGEgJ1RhcmdldCcga2V5IC4uLgogICAgaWYgKCAkTGlua0tleSBlcSAnVGFyZ2V0JyApIHsKCiAgICAgICAgIyAuLi50aGVuIG9ubHkgQ29uZmlnSXRlbVZlcnNpb24gaXRlbXMgd2lsbCBuZWVkIFZlcnNpb25JRCByZXNvbHV0aW9uCiAgICAgICAgaWYgKCAkVHlwZU5hbWUgZXEgJ0NvbmZpZ0l0ZW0nICkgewogICAgICAgICAgICByZXR1cm4gJElEOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgVmVyc2lvbklEICAgICA9PiAkSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9Owp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKdXNlIHBhcmVudCBxdygKICAgIEtlcm5lbDo6U3lzdGVtOjpFdmVudEhhbmRsZXIKICAgIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUFDTAogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkRlZmluaXRpb24KICAgIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6SGlzdG9yeQogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpMaW5rCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcgogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb24KKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBTdG9yYWJsZSAgICAgICBxdyhkY2xvbmUpOwp1c2UgTGlzdDo6QWxsVXRpbHMgcXcoZmlyc3QgdHJ1ZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlhNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtIC0gbGlicmFyeSBmb3IgSVRTTSBjb25maWcgaXRlbXMuCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBjb25maWcgaXRlbSBmdW5jdGlvbnMuIE5vdGUgdGhhdCBhZGRpdGlvbmFsIHBhcmVudCBtb2R1bGVzIGFyZSBsb2FkZWQKd2hpY2ggZWZmZWN0aXZlbHkgYWRkIG1vcmUgbWV0aG9kcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoJFR5cGUpID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgICMgaW5pdCBvZiBldmVudCBoYW5kbGVyCiAgICAkU2VsZi0+RXZlbnRIYW5kbGVySW5pdCgKICAgICAgICBDb25maWcgPT4gJ0lUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QnLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBDb25maWdJdGVtQ291bnQoKQoKY291bnQgYWxsIHByb2R1Y3RpdmUgY29uZmlnIGl0ZW1zIG9mIGEgY29uZmlnIGl0ZW0gY2xhc3MKCiAgICBteSAkQ291bnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUNvdW50KAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQ291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NsYXNzSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc0lEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxpc3Qgb2YgcHJvZHVjdGl2ZSBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAncHJlcHJvZHVjdGl2ZScsICdwcm9kdWN0aXZlJyBdLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAwIGlmICEleyRTdGF0ZUxpc3R9OwoKICAgICMgY3JlYXRlIHN0YXRlIHN0cmluZwogICAgbXkgJERlcGxTdGF0ZVN0cmluZyA9IGpvaW4gcXssIH0sIGtleXMgJXskU3RhdGVMaXN0fTsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgbXkgKCRDb3VudCkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICJTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbSBXSEVSRSBjbGFzc19pZCA9ID8gQU5EICIKICAgICAgICAgICAgLiAiY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkiLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQ7Cn0KCj1oZWFkMiBDb25maWdJdGVtUmVzdWx0TGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBsaXN0IGFzIGFycmF5IGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJENvbmZpZ0l0ZW1MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1SZXN1bHRMaXN0KAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgICAgIFN0YXJ0ICAgPT4gMTAwLAogICAgICAgIExpbWl0ICAgPT4gNTAsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1SZXN1bHRMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2xhc3NJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHN0YXRlIGxpc3QKICAgIG15ICRTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ3ByZXByb2R1Y3RpdmUnLCAncHJvZHVjdGl2ZScgXSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBzdGF0ZSBzdHJpbmcKICAgIG15ICREZXBsU3RhdGVTdHJpbmcgPSBqb2luIHF7LCB9LCBrZXlzICV7JFN0YXRlTGlzdH07CgogICAgIyBhc2sgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbSAiCiAgICAgICAgICAgIC4gIldIRVJFIGNsYXNzX2lkID0gPyBBTkQgY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkgIgogICAgICAgICAgICAuICJPUkRFUiBCWSBjaGFuZ2VfdGltZSBERVNDIiwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Q2xhc3NJRH0gXSwKICAgICAgICBTdGFydCA9PiAkUGFyYW17U3RhcnR9LAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQENvbmZpZ0l0ZW1JRExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRExpc3QsICRSb3dbMF07CiAgICB9CgogICAgIyBnZXQgbGFzdCB2ZXJzaW9ucyBkYXRhCiAgICBteSBAQ29uZmlnSXRlbUxpc3Q7CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRExpc3QpIHsKCiAgICAgICAgIyBnZXQgdmVyc2lvbiBkYXRhCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUxpc3QsICRDb25maWdJdGVtOwogICAgfQoKICAgIHJldHVybiBcQENvbmZpZ0l0ZW1MaXN0Owp9Cgo9aGVhZDIgQ29uZmlnSXRlbUdldCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBhcyBhIGhhc2ggcmVmZXJlbmNlLiBUaGUgbGF0ZXN0IHZlcnNpb24gaXMgcmV0cmlldmVkIHdoZW4gQzxDb25maWdJdGVtSUQ+IGlzIHBhc3NlZCBhcyBwYXJhbWV0ZXIuCgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMywKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICk7CgpBIHNwZWNpZmljIHZlcnNpb24gaXMgcmV0dXJuZWQgd2hlbiB0aGUgQzxWZXJzaW9uSUQ+IGlzIHBhc3NlZC4KCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gMjQzLAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCldoZW4gYm90aCBDPENvbmZpZ0l0ZW1JRD4gYW5kIEM8VmVyc2lvbklEPiBhcmUgcGFzc2VkLCB0aGVuIGEgY29uc2lzdGVuY3kgY2hlY2sgaXMgcGVyZm9ybWVkCmFuZCB0aGUgZGF0YSBmb3IgdGhlIHNwZWNpZmljIHZlcnNpb24gaXMgcmV0dXJuZWQuCgpFcnJvciBtZXNzYWdlcyBhcmUgc3VwcHJlc3NlZCBpZiB0aGUgcGFyYW1ldGVyIEM8U2lsZW50PiBpcyBwYXNzZWQuCgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+IDI0MywKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICAgICBTaWxlbnQgICAgICAgID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICk7CgpBIGhhc2hyZWYgd2l0aCB0aGUgZm9sbG93aW5nIGtleXMgaXMgcmV0dXJuZWQ6Cgo9b3ZlciA0Cgo9aXRlbSBDb25maWdJdGVtSUQKCj1pdGVtIE51bWJlcgoKPWl0ZW0gQ2xhc3NJRAoKPWl0ZW0gQ2xhc3MKCj1pdGVtIExhc3RWZXJzaW9uSUQKCj1pdGVtIEN1ckRlcGxTdGF0ZUlECgo9aXRlbSBDdXJEZXBsU3RhdGUKCj1pdGVtIEN1ckRlcGxTdGF0ZVR5cGUKCj1pdGVtIEN1ckluY2lTdGF0ZUlECgo9aXRlbSBDdXJJbmNpU3RhdGUKCj1pdGVtIEN1ckluY2lTdGF0ZVR5cGUKCj1pdGVtIFZlcnNpb25JRAoKPWl0ZW0gTmFtZQoKPWl0ZW0gVmVyc2lvblN0cmluZwoKPWl0ZW0gRGVzY3JpcHRpb24KCj1pdGVtIERlZmluaXRpb25JRAoKPWl0ZW0gRGVwbFN0YXRlSUQKCj1pdGVtIERlcGxTdGF0ZQoKPWl0ZW0gRGVwbFN0YXRlVHlwZQoKPWl0ZW0gSW5jaVN0YXRlSUQKCj1pdGVtIEluY2lTdGF0ZQoKPWl0ZW0gSW5jaVN0YXRlVHlwZQoKPWl0ZW0gQ3JlYXRlVGltZQoKPWl0ZW0gQ3JlYXRlQnkKCj1pdGVtIENoYW5nZVRpbWUKCj1pdGVtIENoYW5nZUJ5Cgo9YmFjawoKQ2FjaGluZyBjYW4ndCBiZSB0dXJuZWQgb2ZmLgoKV2hlbiB0aGUgcGFyYW1ldGVyIEM8RHluYW1pY0ZpZWxkcz4gaXMgcGFzc2VkIHRoZW4gdGhlIGR5bmFtaWMgZmllbGRzIGFyZSByZXR1cm5lZCBhZGRpdGlvbmFsbHkuCkR5bmFtaWNGaWVsZHMgYXJlIG5vdCBjYWNoZWQgaW4gdGhlIGJhY2tlbmQgdG8gcHJldmVudCBzdGFsZSBsZW5zIHZhbHVlcyBmb3IgcmVmZXJlbmNlZCBpdGVtcy4KCj1jdXQKCnN1YiBDb25maWdJdGVtR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyB3aGV0aGVyIHRvIHN1cHByZXNzIGVycm9yIG1lc3NhZ2VzCiAgICBteSAkU2lsZW50ID0gJFBhcmFte1NpbGVudH0gPyAxIDogMDsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gJiYgISRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgIGlmICggISRTaWxlbnQgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGlnbm9yZSBEeW5hbWljRmllbGRzIHBlciBkZWZhdWx0LAogICAgbXkgJERGRGF0YSA9ICRQYXJhbXtEeW5hbWljRmllbGRzfSA/IDEgOiAwOwoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15IEBDYWNoZUtleUlEID0gJFBhcmFte1ZlcnNpb25JRH0KICAgICAgICA/ICggVmVyc2lvbklEID0+ICRQYXJhbXtWZXJzaW9uSUR9ICkKICAgICAgICA6ICggQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9ICk7CgogICAgbXkgJENhY2hlS2V5QmFzZSAgICA9IGpvaW4gJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLCBAQ2FjaGVLZXlJRDsKICAgIG15ICRDYWNoZUtleUN1cnJlbnQgPSBqb2luICc6OicsICRDYWNoZUtleUJhc2UsIERGRGF0YSA9PiAkREZEYXRhOwoKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgIG15ICRDYWNoZUN1cnJlbnQgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleUN1cnJlbnQsCiAgICApOwoKICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGNhY2hlZAogICAgaWYgKCByZWYgJENhY2hlQ3VycmVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSBuZSAkQ2FjaGVDdXJyZW50LT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgaWYgKCAhJFNpbGVudCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlZlcnNpb25JRCAkUGFyYW17VmVyc2lvbklEfSBpcyBub3QgYSB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW1JRCAkUGFyYW17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGRjbG9uZSgkQ2FjaGVDdXJyZW50KTsKICAgIH0KCiAgICBteSAlQ29uZmlnSXRlbTsKCiAgICBteSAkQ2FjaGUgPSAkREZEYXRhID09IDEgPyAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleUJhc2UgLiAnREZEYXRhOjowJywKICAgICkgOiB1bmRlZjsKCiAgICBpZiAoIHJlZiAkQ2FjaGUgZXEgJ0hBU0gnICkgewogICAgICAgIGlmICggJFBhcmFte1ZlcnNpb25JRH0gJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gbmUgJENhY2hlLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgaWYgKCAhJFNpbGVudCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlZlcnNpb25JRCAkUGFyYW17VmVyc2lvbklEfSBpcyBub3QgYSB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW1JRCAkUGFyYW17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJUNvbmZpZ0l0ZW0gPSAleyRDYWNoZX07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIGdldCBzcGVjaWZpYyBDb25maWdJdGVtVmVyc2lvbgogICAgICAgICMgVGhlIHBhcmFtZXRlciBWZXJzaW9uSUQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIENvbmZpZ0l0ZW1JRAogICAgICAgIG15IEBSb3c7CiAgICAgICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSApIHsKCiAgICAgICAgICAgIEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBjaS5pZCwgY2kuY29uZmlnaXRlbV9udW1iZXIsIGNpLmNsYXNzX2lkLCBjaS5sYXN0X3ZlcnNpb25faWQsCiAgICBjaS5jdXJfZGVwbF9zdGF0ZV9pZCwgY2kuY3VyX2luY2lfc3RhdGVfaWQsCiAgICB2LmlkLCB2Lm5hbWUsIHYudmVyc2lvbl9zdHJpbmcsIHYuZGVmaW5pdGlvbl9pZCwgdi5kZXBsX3N0YXRlX2lkLCB2LmluY2lfc3RhdGVfaWQsIHYuZGVzY3JpcHRpb24sCiAgICB2LmNyZWF0ZV90aW1lLCB2LmNyZWF0ZV9ieSwgdi5jaGFuZ2VfdGltZSwgdi5jaGFuZ2VfYnkKICBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiB2CiAgSU5ORVIgSk9JTiBjb25maWdpdGVtIGNpCiAgICBPTiB2LmNvbmZpZ2l0ZW1faWQgPSBjaS5pZAogIFdIRVJFIHYuaWQgPSA/CkVORF9TUUwKICAgICAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtWZXJzaW9uSUR9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbGF0ZXN0IENvbmZpZ0l0ZW1WZXJzaW9uCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApTRUxFQ1QgY2kuaWQsIGNpLmNvbmZpZ2l0ZW1fbnVtYmVyLCBjaS5jbGFzc19pZCwgY2kubGFzdF92ZXJzaW9uX2lkLAogICAgY2kuY3VyX2RlcGxfc3RhdGVfaWQsIGNpLmN1cl9pbmNpX3N0YXRlX2lkLAogICAgdi5pZCwgdi5uYW1lLCB2LnZlcnNpb25fc3RyaW5nLCB2LmRlZmluaXRpb25faWQsIHYuZGVwbF9zdGF0ZV9pZCwgdi5pbmNpX3N0YXRlX2lkLCB2LmRlc2NyaXB0aW9uLAogICAgY2kuY3JlYXRlX3RpbWUsIGNpLmNyZWF0ZV9ieSwgY2kuY2hhbmdlX3RpbWUsIGNpLmNoYW5nZV9ieQogIEZST00gY29uZmlnaXRlbSBjaQogIExFRlQgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdgogICAgT04gY2kubGFzdF92ZXJzaW9uX2lkID0gdi5pZAogIFdIRVJFIGNpLmlkID0gPwpFTkRfU1FMCiAgICAgICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgICAgICRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0gICA9ICRSb3dbMF07CiAgICAgICAgJENvbmZpZ0l0ZW17TnVtYmVyfSAgICAgICAgID0gJFJvd1sxXTsKICAgICAgICAkQ29uZmlnSXRlbXtDbGFzc0lEfSAgICAgICAgPSAkUm93WzJdOwogICAgICAgICRDb25maWdJdGVte0xhc3RWZXJzaW9uSUR9ICA9ICRSb3dbM107CiAgICAgICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFN0YXRlSUR9ID0gJFJvd1s0XTsKICAgICAgICAkQ29uZmlnSXRlbXtDdXJJbmNpU3RhdGVJRH0gPSAkUm93WzVdOwogICAgICAgICRDb25maWdJdGVte1ZlcnNpb25JRH0gICAgICA9ICRSb3dbNl07CiAgICAgICAgJENvbmZpZ0l0ZW17TmFtZX0gICAgICAgICAgID0gJFJvd1s3XTsKICAgICAgICAkQ29uZmlnSXRlbXtWZXJzaW9uU3RyaW5nfSAgPSAkUm93WzhdOwogICAgICAgICRDb25maWdJdGVte0RlZmluaXRpb25JRH0gICA9ICRSb3dbOV07CiAgICAgICAgJENvbmZpZ0l0ZW17RGVwbFN0YXRlSUR9ICAgID0gJFJvd1sxMF07CiAgICAgICAgJENvbmZpZ0l0ZW17SW5jaVN0YXRlSUR9ICAgID0gJFJvd1sxMV07CiAgICAgICAgJENvbmZpZ0l0ZW17RGVzY3JpcHRpb259ICAgID0gJFJvd1sxMl07CiAgICAgICAgJENvbmZpZ0l0ZW17Q3JlYXRlVGltZX0gICAgID0gJFJvd1sxM107CiAgICAgICAgJENvbmZpZ0l0ZW17Q3JlYXRlQnl9ICAgICAgID0gJFJvd1sxNF07CiAgICAgICAgJENvbmZpZ0l0ZW17Q2hhbmdlVGltZX0gICAgID0gJFJvd1sxNV07CiAgICAgICAgJENvbmZpZ0l0ZW17Q2hhbmdlQnl9ICAgICAgID0gJFJvd1sxNl07CgogICAgICAgICMgY2hlY2sgY29uZmlnIGl0ZW0KICAgICAgICBpZiAoICEkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICAgICBpZiAoICEkU2lsZW50ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBDb25maWdJdGVtSUQgKCRQYXJhbXtDb25maWdJdGVtSUR9KSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICYmICRQYXJhbXtDb25maWdJdGVtSUR9ICYmICRQYXJhbXtDb25maWdJdGVtSUR9IG5lICRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgICAgIGlmICggISRTaWxlbnQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJWZXJzaW9uSUQgJFBhcmFte1ZlcnNpb25JRH0gaXMgbm90IGEgdmVyc2lvbiBvZiBDb25maWdJdGVtSUQgJFBhcmFte0NvbmZpZ0l0ZW1JRH0hIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcmV0cmlldmUgYWRkaXRpb25hbCBiYXNlIGF0dHJpYnV0ZXMgZnJvbSBnZW5lcmFsIGNhdGFsb2cKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAgICAgIyBhZGQgdGhlIENsYXNzLCBiYXNlZCBvbiB0aGUgQ2xhc3NJRAogICAgICAgIHsKICAgICAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q2xhc3N9ID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbXtDbGFzc0lEfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBBZGQgbW9yZSByZWFkYWJsZSBuYW1lcyBmb3IgdGhlIHZhcmlvdXMgc3RhdGVzLgogICAgICAgICMgQWRkIHRoZSBzdGF0ZSB0eXBlcy4KICAgICAgICBTVEFURToKICAgICAgICBmb3IgbXkgJFN0YXRlIChxdy9EZXBsU3RhdGUgQ3VyRGVwbFN0YXRlIEluY2lTdGF0ZSBDdXJJbmNpU3RhdGUvKSB7CiAgICAgICAgICAgIG5leHQgU1RBVEUgdW5sZXNzICRDb25maWdJdGVteyAkU3RhdGUgLiAnSUQnIH07CgogICAgICAgICAgICBteSAkSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbXsgJFN0YXRlIC4gJ0lEJyB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvbmZpZ0l0ZW17JFN0YXRlfSA9ICRJdGVtLT57TmFtZX07CiAgICAgICAgICAgICRDb25maWdJdGVteyAkU3RhdGUgLiAnVHlwZScgfSA9ICRJdGVtLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CiAgICAgICAgfQoKICAgICAgICAjIGNhY2hlCiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleUJhc2UgLiAnREZEYXRhOjowJywKICAgICAgICAgICAgVmFsdWUgPT4gZGNsb25lKCBcJUNvbmZpZ0l0ZW0gKSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgaWYgbmVlZCB0byByZXR1cm4gRHluYW1pY0ZpZWxkcwogICAgaWYgKCAkREZEYXRhICYmICRDb25maWdJdGVte0RlZmluaXRpb25JRH0gKSB7CgogICAgICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgb2JqZWN0cwogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW17RGVmaW5pdGlvbklEfSwKICAgICAgICApOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKCiAgICAgICAgICAgICMgdmFsaWRhdGUgZWFjaCBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAjIGdldCB0aGUgY3VycmVudCB2YWx1ZSBmb3IgZWFjaCBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCB0aGUgZHluYW1pYyBmaWVsZCBuYW1lIGFuZCB2YWx1ZSBpbnRvIHRoZSBjb25maWcgaXRlbSBoYXNoCiAgICAgICAgICAgICRDb25maWdJdGVteyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRWYWx1ZTsKICAgICAgICB9CgogICAgICAgICMgY2FjaGUgdGhlIGZ1bGwgcmVzdWx0IGluIG1lbW9yeSBvbmx5CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgICAgICAgICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgICAgICAgICAgID0+ICRDYWNoZUtleUJhc2UgLiAnREZEYXRhOjoxJywKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgPT4gZGNsb25lKCBcJUNvbmZpZ0l0ZW0gKSwKICAgICAgICAgICAgQ2FjaGVJbk1lbW9yeSAgPT4gMSwKICAgICAgICAgICAgQ2FjaGVJbkJhY2tlbmQgPT4gMCwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBcJUNvbmZpZ0l0ZW07Cn0KCj1oZWFkMiBDb25maWdJdGVtQWRkKCkKCmFkZCBhIG5ldyBjb25maWcgaXRlbS4gVGhpcyBpbXBsaWVzIHRoYXQgYW4gaW5pdGlhbCB2ZXJzaW9uIGlzIGNyZWF0ZWQgYXMgd2VsbC4KCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCAgICAgICAgPT4gMTIzLAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdOYW1lJywgICAgIyBvcHRpb25hbCB3aGVuIGEgbmFtZSBtb2R1bGUgaXMgY29uZmlndXJlZCBmb3IgdGhlIGNsYXNzCiAgICAgICAgVmVyc2lvblN0cmluZyAgPT4gJ1ZlcnNpb24nLCAjIG9wdGlvbmFsIHdoZW4gYSB2ZXJzaW9uIG51bWJlciBtb2R1bGUgaXMgY29uZmlndXJlZCBmb3IgdGhlIGNsYXNzCiAgICAgICAgRGVwbFN0YXRlSUQgICAgPT4gMywKICAgICAgICBJbmNpU3RhdGVJRCAgICA9PiAyLAogICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdBQkNEJywKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgIE51bWJlciAgICAgICAgID0+ICcxMTEnLCAgICAjIG9wdGlvbmFsLCBhIG51bWJlciB3aWxsIGdlbmVyYXRlZCB3aGVuIG5vIG51bWJlciBpcyBwYXNzZWQKICAgICAgICBEeW5hbWljRmllbGRfWCA9PiAkVmFsdWUsICAgIyBvcHRpb25hbAogICAgKTsKCk5vIGNvbmZpZyBpdGVtIHdpbGwgYmUgY3JlYXRlZCB3aGVuIGFuIGFscmVhZHkgZXhpc3RpbmcgTnVtYmVyIGlzIHBhc3NlZC4KCj1jdXQKCnN1YiBDb25maWdJdGVtQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENsYXNzSUQgVXNlcklEIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkQ2xhc3NMaXN0OwogICAgcmV0dXJuIHVubGVzcyByZWYgJENsYXNzTGlzdCBlcSAnSEFTSCc7CgogICAgIyBjaGVjayB0aGUgY2xhc3MgaWQKICAgIGlmICggISRDbGFzc0xpc3QtPnsgJFBhcmFte0NsYXNzSUR9IH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdObyB2YWxpZCBjbGFzcyBpZCBnaXZlbiEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkRGVwbFN0YXRlTGlzdDsKICAgIHJldHVybiB1bmxlc3MgcmVmICREZXBsU3RhdGVMaXN0IGVxICdIQVNIJzsKCiAgICAjIGNoZWNrIHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICBpZiAoICEkRGVwbFN0YXRlTGlzdC0+eyAkUGFyYW17RGVwbFN0YXRlSUR9IH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdObyB2YWxpZCBkZXBsb3ltZW50IHN0YXRlIGlkIGdpdmVuIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJEluY2lTdGF0ZUxpc3Q7CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkSW5jaVN0YXRlTGlzdCBlcSAnSEFTSCc7CgogICAgIyBjaGVjayB0aGUgaW5jaWRlbnQgc3RhdGUgaWQKICAgIGlmICggISRJbmNpU3RhdGVMaXN0LT57ICRQYXJhbXtJbmNpU3RhdGVJRH0gfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05vIHZhbGlkIGluY2lkZW50IHN0YXRlIGlkIGdpdmVuIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICApOwoKICAgICMgY3JlYXRlIGNvbmZpZyBpdGVtIG51bWJlcgogICAgaWYgKCAkUGFyYW17TnVtYmVyfSApIHsKCiAgICAgICAgIyBmaW5kIGV4aXN0aW5nIGNvbmZpZyBpdGVtIG51bWJlcgogICAgICAgIG15ICRFeGlzdHMgPSAkU2VsZi0+Q29uZmlnSXRlbU51bWJlckxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkUGFyYW17TnVtYmVyfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEV4aXN0cykgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnIGl0ZW0gbnVtYmVyIGFscmVhZHkgZXhpc3RzIScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgIG15ICROdW1iZXJNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOdW1iZXJNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TnVtYmVyTW9kdWxlfVswXSA6ICdBdXRvSW5jcmVtZW50JzsKCiAgICAgICAgIyBjcmVhdGUgY29uZmlnIGl0ZW0gbnVtYmVyCiAgICAgICAgJFBhcmFte051bWJlcn0gPSAkU2VsZi0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgVHlwZSAgICA9PiAiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OiROdW1iZXJNb2R1bGUiLAogICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICROYW1lTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX0gPyAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfVswXSA6ICcnOwogICAgaWYgKCROYW1lTW9kdWxlKSB7CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBtb2R1bGUgZXhpc3RzCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOYW1lOjokTmFtZU1vZHVsZSIpICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCBuYW1lIG1vZHVsZSBmb3IgY2xhc3MgJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGNoZWNrLCB3aGV0aGVyIHRoZSBmZWF0dXJlIHRvIGNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIGlzIGVuYWJsZWQKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVW5pcXVlQ0lOYW1lOjpFbmFibGVVbmlxdWVuZXNzQ2hlY2snKSApIHsKCiAgICAgICAgICAgIG15ICROYW1lRHVwbGljYXRlcyA9ICRTZWxmLT5VbmlxdWVOYW1lQ2hlY2soCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05FVycsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RvcCBwcm9jZXNzaW5nIGlmIHRoZSBuYW1lIGlzIG5vdCB1bmlxdWUKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICBteSAkRHVwbGljYXRlcyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgICAgICMgd3JpdGUgYW4gZXJyb3IgbG9nIG1lc3NhZ2UgY29udGFpbmluZyBhbGwgdGhlIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBuYW1lICRQYXJhbXtOYW1lfSBpcyBhbHJlYWR5IGluIHVzZSAoQ29uZmlnSXRlbUlEczogJER1cGxpY2F0ZXMpISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZiBJSQogICAgaWYgKCAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBOYW1lISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaW5zZXJ0IG5ldyBjb25maWcgaXRlbQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbSAoJwogICAgICAgICAgICAuICdjb25maWdpdGVtX251bWJlciwgY3VyX2RlcGxfc3RhdGVfaWQsIGN1cl9pbmNpX3N0YXRlX2lkJwogICAgICAgICAgICAuICcsIGNsYXNzX2lkLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5JwogICAgICAgICAgICAuICcpIFZBTFVFUyAoPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TnVtYmVyfSwgXCRQYXJhbXtEZXBsU3RhdGVJRH0sIFwkUGFyYW17SW5jaVN0YXRlSUR9LCBcJFBhcmFte0NsYXNzSUR9LCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSBdLAogICAgKTsKCiAgICAjIGZpbmQgaWQgb2YgbmV3IGl0ZW0KICAgICMgVE9ETzogd2hhdCBhYm91dCBjb25jdXJyZW50IElOU0VSVHMgPz8/CiAgICBteSAoJENvbmZpZ0l0ZW1JRCkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApTRUxFQ1QgaWQKICBGUk9NIGNvbmZpZ2l0ZW0KICBXSEVSRSBjb25maWdpdGVtX251bWJlciA9ID8KICAgIEFORCBjbGFzc19pZCA9ID8KICBPUkRFUiBCWSBpZCBERVNDCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOdW1iZXJ9LCBcJFBhcmFte0NsYXNzSUR9IF0sCiAgICApOwoKICAgICMgdHJpZ2dlciBDb25maWdJdGVtQ3JlYXRlCiAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJENvbmZpZ0l0ZW1JRCAuICclJScgLiAkUGFyYW17TnVtYmVyfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBhZGQgdGhlIGZpcnN0IHZlcnNpb24KICAgIG15ICRWZXJzaW9uSUQgPSAkU2VsZi0+VmVyc2lvbkFkZCgKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnJywKICAgICAgICAlUGFyYW0sCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICdORVcnLAogICAgICAgIH0sCiAgICApOwoKICAgIGlmICggISRWZXJzaW9uSUQgKSB7CgogICAgICAgICMgZGVsZXRlIGhpc3RvcnkgZW50cmllcwogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9oaXN0b3J5IFdIRVJFIGNvbmZpZ2l0ZW1faWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkQ29uZmlnSXRlbUlEIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgY29uZmlnIGl0ZW0gaWYgbm8gdmVyc2lvbiBjb3VsZCBiZSBjcmVhdGVkCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENvbmZpZ0l0ZW1JRCBdLAogICAgICAgICk7CgogICAgICAgICMgd3JpdGUgYW4gZXJyb3IgbG9nIG1lc3NhZ2UgY29udGFpbmluZyBhbGwgdGhlIGR1cGxpY2F0ZSBJRHMKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBjcmVhdGUgdmVyc2lvbiEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRDsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1EZWxldGUoKQoKZGVsZXRlIGFuIGV4aXN0aW5nIGNvbmZpZyBpdGVtCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENvbmZpZ0l0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHJlbWVtYmVyIGNvbmZpZyBpdGVtIGRhdGEgYmVmb3JlIGRlbGV0ZQogICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgICMgZGVsZXRlIGFsbCBsaW5rcyB0byB0aGlzIGNvbmZpZyBpdGVtIGJlZm9yZSBkZWxldGluZyB0aGUgdmVyc2lvbnMuCiAgICAjIExpbmtEZWxldGVBbGwoKSBjYWxscyBMaW5rRGVsZXRlKCkgaW50ZXJuYWxseS4gVGhpcyBtZWFucyB0aGF0CiAgICAjIHRoZSBldmVudCBoYW5kbGVycyBhcmUgaG9ub3JlZC4gVGhpcyBtZWFucyB0aGF0IHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsKICAgICMgaXMgYWxzbyBwdXJnZWQuCiAgICByZXR1cm4gdW5sZXNzICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtEZWxldGVBbGwoCiAgICAgICAgT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBkZWxldGUgZHluYW1pYyBsaW5rIHRhYmxlIGVudHJpZXMsIGlmIGFueQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgc291cmNlX2NvbmZpZ2l0ZW1faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICApOwogICAgJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICApOwoKICAgICMgaWYgdGhlcmUgYXJlIHN0YXRpYyAodmVyc2lvbmVkKSBsaW5rcywgZGVsZXRlIGFsbCBvZiB0aGVtCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkU2VsZi0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKCiAgICBmb3IgbXkgJFZlcnNpb25JRCAoQCRWZXJzaW9uTGlzdFJlZikgewogICAgICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluayBXSEVSRSBzb3VyY2VfY29uZmlnaXRlbV92ZXJzaW9uX2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFZlcnNpb25JRCBdLAogICAgICAgICk7CiAgICAgICAgJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9saW5rIFdIRVJFIHRhcmdldF9jb25maWdpdGVtX3ZlcnNpb25faWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkVmVyc2lvbklEIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBleGlzdGluZyB2ZXJzaW9ucwogICAgJFNlbGYtPlZlcnNpb25EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgYSBsaXN0IG9mIGFsbCBhdHRhY2htZW50cwogICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkU2VsZi0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIEZJTEVOQU1FOgogICAgZm9yIG15ICRGaWxlbmFtZSAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIGF0dGFjaG1lbnQKICAgICAgICBteSAkRGVsZXRpb25TdWNjZXNzID0gJFNlbGYtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRGVsZXRpb25TdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVW5rbm93biBwcm9ibGVtIHdoZW4gZGVsZXRpbmcgYXR0YWNobWVudCAkRmlsZW5hbWUgb2YgQ29uZmlnSXRlbSAiCiAgICAgICAgICAgICAgICAgICAgLiAiJFBhcmFte0NvbmZpZ0l0ZW1JRH0uIFBsZWFzZSBjaGVjayB0aGUgVmlydHVhbEZTIGJhY2tlbmQgZm9yIHN0YWxlICIKICAgICAgICAgICAgICAgICAgICAuICJmaWxlcyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlQ2xhc3NQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbURhdGEtPntDbGFzc0lEfSwKICAgICk7CiAgICBteSAkTmFtZU1vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkTmFtZU1vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOYW1lOjokTmFtZU1vZHVsZSIpICkgewoKICAgICAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICAgICBteSAkTmFtZU1vZHVsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJE5hbWVNb2R1bGUpOwoKICAgICAgICAgICAgaWYgKCAkTmFtZU1vZHVsZU9iamVjdC0+Y2FuKCdDb25maWdJdGVtTmFtZURlbGV0ZScpICkgewogICAgICAgICAgICAgICAgJE5hbWVNb2R1bGVPYmplY3QtPkNvbmZpZ0l0ZW1OYW1lRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJENvbmZpZ0l0ZW1EYXRhLT57TmFtZX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCBuYW1lIG1vZHVsZSBmb3IgY2xhc3MgJENvbmZpZ0l0ZW1EYXRhLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdHJpZ2dlciBDb25maWdJdGVtRGVsZXRlIGV2ZW50CiAgICAjIHRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBkZWxldGluZyB0aGUgY29uZmlnIGl0ZW0gZnJvbSB0aGUgZGF0YWJhc2UsCiAgICAjIGJlY2F1c2Ugb2YgYSBmb3JlaWduIGtleSBjb25zdHJhaW50IGluIHRoZSBjb25maWdpdGVtX2hpc3RvcnkgdGFibGUKICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgRXZlbnQgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbURhdGEtPntOdW1iZXJ9LAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLT57Q2xhc3N9LAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gJENvbmZpZ0l0ZW1EYXRhLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGRlbGV0ZSBjb25maWcgaXRlbQogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW0gV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICApOwoKICAgICMgZGVsZXRlIHRoZSBjYWNoZQogICAgZm9yIG15ICRERkRhdGEgKCAwLCAxICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5EZWxldGUoCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBERkRhdGEgICAgICAgPT4gJERGRGF0YQogICAgICAgICAgICApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbVVwZGF0ZSgpCgp1cGRhdGUgYSBjb25maWcgaXRlbS4gQSBuZXcgdmVyc2lvbiB3aWxsIGJlIGNyZWF0ZWQgb25seSB3aGVuIGEgdmVyc2lvbiB0cmlnZ2VyIGFwcGxpZXMuCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICBDb25maWdJdGVtSUQgICA9PiAyNywKICAgICAgICBOdW1iZXIgICAgICAgICA9PiAnMTExJywgICAgIyBJRCBvciBOdW1iZXIgaXMgcmVxdWlyZWQKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdOYW1lJywgICAjIG9wdGlvbmFsCiAgICAgICAgRGVmaW5pdGlvbklEICAgPT4gMTIzLCAgICAgICMgb3B0aW9uYWwKICAgICAgICBEZXBsU3RhdGVJRCAgICA9PiAzLCAgICAgICAgIyBvcHRpb25hbAogICAgICAgIEluY2lTdGF0ZUlEICAgID0+IDIsICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJ0FCQ0QnLCAgICMgb3B0aW9uYWwKICAgICAgICBEeW5hbWljRmllbGRfWCA9PiAkVmFsdWUsICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBsb29rdXAKICAgICRQYXJhbXtDb25maWdJdGVtSUR9IC8vPSAkU2VsZi0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRQYXJhbXtOdW1iZXJ9LAogICAgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJEtleSAocXcvQ29uZmlnSXRlbUlEIFVzZXJJRC8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICIgLiAoICRLZXkgZXEgJ0NvbmZpZ0l0ZW1JRCcgPyAnQ29uZmlnSXRlbUlEIG9yIE51bWJlcicgOiAkS2V5ICksCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2F0aGVyIGR5bmFtaWMgZmllbGQga2V5cwogICAgbXkgQER5bmFtaWNGaWVsZE5hbWVzID0gbWFwCiAgICAgICAge20vXkR5bmFtaWNGaWVsZF8oLispL30KICAgICAgICBzb3J0IGtleXMgJVBhcmFtOwoKICAgICMgZ2V0IGN1cnJlbnQgY29uZmlnIGl0ZW0sIGluY2x1ZGluZyBpbmZvIGZyb20gdGhlIGxhc3QgdmVyc2lvbgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKICAgIG15ICRDbGFzcyA9ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSB9OwoKICAgIGlmICggISRDbGFzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIGNsYXNzIGZvdW5kIGZvciBpZCAnJENvbmZpZ0l0ZW0tPntDbGFzc0lEfScgKENvbmZpZ0l0ZW0jJENvbmZpZ0l0ZW0tPntOdW1iZXJ9KSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGlnbm9yZSB0aGUgcGFzc2VkIGluIG5hbWUgd2hlbiBhIG5hbWUgbW9kdWxlIGlzIGFjdGl2ZQogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwKICAgICk7CgogICAgIyBleGVjdXRlIG5hbWUgY2hlY2sgb25seSBpZiBuYW1lIGhhcyBjaGFuZ2VkCiAgICBteSAkTmFtZU1vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkTmFtZU1vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoJE5hbWVNb2R1bGUpICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCBuYW1lIG1vZHVsZSBmb3IgY2xhc3MgJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlICRQYXJhbXtOYW1lfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte05hbWV9ICYmICRQYXJhbXtOYW1lfSBuZSAkQ29uZmlnSXRlbS0+e05hbWV9ICkgewoKICAgICAgICAjIGNoZWNrLCB3aGV0aGVyIHRoZSBmZWF0dXJlIHRvIGNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIGlzIGVuYWJsZWQKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVW5pcXVlQ0lOYW1lOjpFbmFibGVVbmlxdWVuZXNzQ2hlY2snKSApIHsKCiAgICAgICAgICAgIG15ICROYW1lRHVwbGljYXRlcyA9ICRTZWxmLT5VbmlxdWVOYW1lQ2hlY2soCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RvcCBwcm9jZXNzaW5nIGlmIHRoZSBuYW1lIGlzIG5vdCB1bmlxdWUKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICBteSAkRHVwbGljYXRlcyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgICAgICMgd3JpdGUgYW4gZXJyb3IgbG9nIG1lc3NhZ2UgY29udGFpbmluZyBhbGwgdGhlIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBuYW1lICRQYXJhbXtOYW1lfSBpcyBhbHJlYWR5IGluIHVzZSAoQ29uZmlnSXRlbUlEczogJER1cGxpY2F0ZXMpISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAlVmVyc2lvblRyaWdnZXIgPSBtYXAKICAgICAgICB7ICRfID0+IDEgfQogICAgICAgICggJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblRyaWdnZXJ9IC8vIFtdICktPkAqOwoKICAgIG15ICVDaGFuZ2VkOyAgICAgICAgICAgICAgIyB0cmFjayBjaGFuZ2VkIHZhbHVlcyBmb3IgdGhlIEV2ZW50IGhhbmRsZXIsIGUuZy4gZm9yIHdyaXRpbmcgaGlzdG9yeQogICAgbXkgJEFkZFZlcnNpb24gICAgPSAwOyAgICAjIGZsYWcgZm9yIGRlY2lkaW5nIHdoZXRoZXIgYSBuZXcgdmVyc2lvbiBpcyBjcmVhdGVkCiAgICBteSAkVXBkYXRlVmVyc2lvbiA9IDA7ICAgICMgZmxhZyBmb3IgZGVjaWRpbmcgd2hldGhlciB0aGUgY3VycmVudCB2ZXJzaW9uIG5lZWRzIGFuIHVwZGF0ZQoKICAgICMgY2hlY2sgbmFtZSwgZGVwbG95bWVudCBhbmQgaW5jaWRlbnQgc3RhdGUsIGFzIHdlbGwgYXMgRGVzY3JpcHRpb24KICAgIEFUVFI6CiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcvTmFtZSBEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbi8pIHsKICAgICAgICBuZXh0IEFUVFIgdW5sZXNzIGRlZmluZWQgJFBhcmFteyRBdHRyaWJ1dGV9OwogICAgICAgIG5leHQgQVRUUiBpZiAkUGFyYW17JEF0dHJpYnV0ZX0gZXEgJENvbmZpZ0l0ZW0tPnskQXR0cmlidXRlfTsKCiAgICAgICAgJENoYW5nZWR7JEF0dHJpYnV0ZX0gPSB7CiAgICAgICAgICAgIE9sZCA9PiAkQ29uZmlnSXRlbS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICBOZXcgPT4gJFBhcmFteyRBdHRyaWJ1dGV9LAogICAgICAgIH07CgogICAgICAgICRVcGRhdGVWZXJzaW9uID0gMTsKCiAgICAgICAgaWYgKCAkVmVyc2lvblRyaWdnZXJ7JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRBZGRWZXJzaW9uID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbGF0ZXN0IGRlZmluaXRpb24gZm9yIHRoZSBjbGFzcwogICAgbXkgJERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgIG15ICVTa2lwRm9yVXBkYXRlREZzOwoKICAgICMgY2hlY2sgZm9yIGNoYW5nZWQgZHluYW1pYyBmaWVsZHMgdG8gdHJpZ2dlciB2ZXJzaW9ucyBhbmQgZmlsdGVyIGhpc3RvcnkgZW50cmllcwogICAgaWYgKEBEeW5hbWljRmllbGROYW1lcykgewogICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIGR5bmFtaWMgZmllbGRzCiAgICAgICAgTkFNRToKICAgICAgICBmb3IgbXkgJE5hbWUgKEBEeW5hbWljRmllbGROYW1lcykgewogICAgICAgICAgICBuZXh0IE5BTUUgdW5sZXNzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX07CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgTmFtZSA9PiAkTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICEkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVJc0RpZmZlcmVudCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICBWYWx1ZTEgICAgICAgICAgICAgPT4gJFBhcmFteyJEeW5hbWljRmllbGRfJE5hbWUifSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZTIgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyROYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+ICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0sCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICMgZG8gbm90IHBhc3MgdW5jaGFuZ2VkIGR5bmFtaWMgZmllbGRzIHRvIFZlcnNpb25VcGRhdGUoKQogICAgICAgICAgICAgICAgIyBzdG9yZSB0aGVtIGZvciBWZXJzaW9uQWRkKCkgYmVjYXVzZSBvZiBwb3RlbnRpYWwgZGlmZmVyZW5jZSBmcm9tIEV4dGVybmFsU291cmNlCiAgICAgICAgICAgICAgICAkU2tpcEZvclVwZGF0ZURGc3siRHluYW1pY0ZpZWxkXyROYW1lIn0gPSBkZWxldGUgJFBhcmFteyJEeW5hbWljRmllbGRfJE5hbWUifTsKCiAgICAgICAgICAgICAgICBuZXh0IE5BTUU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRVcGRhdGVWZXJzaW9uID0gMTsKCiAgICAgICAgICAgIGlmICggJFZlcnNpb25UcmlnZ2VyeyJEeW5hbWljRmllbGRfJE5hbWUifSApIHsKICAgICAgICAgICAgICAgICRBZGRWZXJzaW9uID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEFkZFZlcnNpb24pIHsKICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5WZXJzaW9uQWRkKAogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAkQ29uZmlnSXRlbS0+e0Rlc2NyaXB0aW9ufSAvLyAnJywKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlU2tpcEZvclVwZGF0ZURGcywKICAgICAgICAgICAgTGFzdFZlcnNpb24gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gdW5sZXNzICRTdWNjZXNzOwogICAgfQogICAgZWxzaWYgKCRVcGRhdGVWZXJzaW9uKSB7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+VmVyc2lvblVwZGF0ZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBWZXJzaW9uID0+ICRDb25maWdJdGVtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuIHVubGVzcyAkU3VjY2VzczsKICAgIH0KCiAgICBteSAlRXZlbnRzID0gKAogICAgICAgIE5hbWUgICAgICAgID0+ICdOYW1lVXBkYXRlJywKICAgICAgICBEZXBsU3RhdGVJRCA9PiAnRGVwbG95bWVudFN0YXRlVXBkYXRlJywKICAgICAgICBJbmNpU3RhdGVJRCA9PiAnSW5jaWRlbnRTdGF0ZVVwZGF0ZScsCiAgICApOwoKICAgIENIQU5HRToKICAgIGZvciBteSAkS2V5ICgga2V5cyAlQ2hhbmdlZCApIHsKICAgICAgICBuZXh0IENIQU5HRSBpZiAhJEV2ZW50c3skS2V5fTsKCiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJEV2ZW50c3skS2V5fSwKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkQ2hhbmdlZHskS2V5fXtOZXd9IC4gJyUlJyAuICRDaGFuZ2VkeyRLZXl9e09sZH0sCiAgICAgICAgICAgICAgICBPbGQgICAgICAgICAgPT4gJENoYW5nZWR7JEtleX17T2xkfSwKICAgICAgICAgICAgICAgIE5ldyAgICAgICAgICA9PiAkQ2hhbmdlZHskS2V5fXtOZXd9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRyaWdnZXIgQ29uZmlnSXRlbVVwZGF0ZSBidXQgb25seSBpZiB0aGVyZSB3ZXJlIHVwZGF0ZXMKICAgIGlmICggJEFkZFZlcnNpb24gfHwgJFVwZGF0ZVZlcnNpb24gfHwgJUNoYW5nZWQgKSB7CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAuICclJScgLiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICBPbGREZXBsU3RhdGUgPT4gJENoYW5nZWR7RGVwbFN0YXRlSUR9e09sZH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUF0dGFjaG1lbnRBZGQoKQoKYWRkcyBhbiBhdHRhY2htZW50IHRvIGEgY29uZmlnIGl0ZW0KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gMSwKICAgICAgICBGaWxlbmFtZSAgICAgICAgPT4gJ2ZpbGVuYW1lJywKICAgICAgICBDb250ZW50ICAgICAgICAgPT4gJ2NvbnRlbnQnLAogICAgICAgIENvbnRlbnRUeXBlICAgICA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgRmlsZW5hbWUgQ29udGVudCBDb250ZW50VHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgd3JpdGUgdG8gdmlydHVhbCBmcwogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPldyaXRlKAogICAgICAgIEZpbGVuYW1lICAgID0+ICJDb25maWdJdGVtLyRQYXJhbXtDb25maWdJdGVtSUR9LyRQYXJhbXtGaWxlbmFtZX0iLAogICAgICAgIE1vZGUgICAgICAgID0+ICdiaW5hcnknLAogICAgICAgIENvbnRlbnQgICAgID0+IFwkUGFyYW17Q29udGVudH0sCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBDb250ZW50SUQgICAgPT4gJFBhcmFte0NvbnRlbnRJRH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlICA9PiAkUGFyYW17Q29udGVudFR5cGV9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBlcnJvcgogICAgaWYgKCRTdWNjZXNzKSB7CgogICAgICAgICMgdHJpZ2dlciBBdHRhY2htZW50QWRkLUV2ZW50CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0F0dGFjaG1lbnRBZGRQb3N0JywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRQYXJhbXtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0F0dGFjaG1lbnRBZGQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGFkZCBhdHRhY2htZW50IGZvciBjb25maWcgaXRlbSAkUGFyYW17Q29uZmlnSXRlbUlEfSIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoKQoKRGVsZXRlIHRoZSBnaXZlbiBmaWxlIGZyb20gdGhlIHZpcnR1YWwgZmlsZXN5c3RlbS4KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLCAgICAgICAgICAgICAgICMgdXNlZCBpbiBldmVudCBoYW5kbGluZywgZS5nLiBmb3IgbG9nZ2luZyB0aGUgaGlzdG9yeQogICAgICAgIEZpbGVuYW1lICAgICA9PiAnUHJvamVjdHBsYW4ucGRmJywgIyBpZGVudGlmaWVzIHRoZSBhdHRhY2htZW50ICh0b2dldGhlciB3aXRoIHRoZSBDb25maWdJdGVtSUQpCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgRmlsZW5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCBwcmVmaXgKICAgIG15ICRGaWxlbmFtZSA9ICdDb25maWdJdGVtLycgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICcvJyAuICRQYXJhbXtGaWxlbmFtZX07CgogICAgIyBkZWxldGUgZmlsZQogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPkRlbGV0ZSgKICAgICAgICBGaWxlbmFtZSA9PiAkRmlsZW5hbWUsCiAgICApOwoKICAgICMgY2hlY2sgZm9yIGVycm9yCiAgICBpZiAoJFN1Y2Nlc3MpIHsKCiAgICAgICAgIyB0cmlnZ2VyIEF0dGFjaG1lbnREZWxldGVQb3N0LUV2ZW50CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0F0dGFjaG1lbnREZWxldGVQb3N0JywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRQYXJhbXtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0F0dGFjaG1lbnREZWxldGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGRlbGV0ZSBhdHRhY2htZW50ICRGaWxlbmFtZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBDb25maWdJdGVtQXR0YWNobWVudEdldCgpCgpUaGlzIG1ldGhvZCByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IG9uZSBzcGVjaWZpYyBhdHRhY2htZW50LgoKICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiA0LAogICAgICAgIEZpbGVuYW1lICAgICA9PiAndGVzdC50eHQnLAogICAgKTsKCnJldHVybnMKCiAgICB7CiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBBbGxQcmVmZXJlbmNlcyA9PiAndGVzdCcsCiAgICAgICAgfSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAndGVzdC50eHQnLAogICAgICAgIENvbnRlbnQgICAgID0+ICdjb250ZW50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgRmlsZXNpemUgICAgPT4gMTIzNDg0MDksCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgfQoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BdHRhY2htZW50R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENvbmZpZ0l0ZW1JRCBGaWxlbmFtZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbS8nIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gLiAnLycgLiAkUGFyYW17RmlsZW5hbWV9OwoKICAgICMgZmluZCBhbGwgYXR0YWNobWVudHMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgbXkgQEF0dGFjaG1lbnRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5GaW5kKAogICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSwKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHJldHVybiBlcnJvciBpZiBmaWxlIGRvZXMgbm90IGV4aXN0CiAgICBpZiAoICFAQXR0YWNobWVudHMgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkhIiwKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICBteSAlQXR0YWNobWVudERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPlJlYWQoCiAgICAgICAgRmlsZW5hbWUgPT4gJEZpbGVuYW1lLAogICAgICAgIE1vZGUgICAgID0+ICdiaW5hcnknLAogICAgKTsKCiAgICBteSAkQXR0YWNobWVudEluZm8gPSB7CiAgICAgICAgJUF0dGFjaG1lbnREYXRhLAogICAgICAgIEZpbGVuYW1lICAgID0+ICRQYXJhbXtGaWxlbmFtZX0sCiAgICAgICAgQ29udGVudCAgICAgPT4gJHsgJEF0dGFjaG1lbnREYXRhe0NvbnRlbnR9IH0sCiAgICAgICAgQ29udGVudFR5cGUgPT4gJEF0dGFjaG1lbnREYXRhe1ByZWZlcmVuY2VzfXtDb250ZW50VHlwZX0sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgIEZpbGVzaXplICAgID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc317RmlsZXNpemVSYXd9LAogICAgfTsKCiAgICByZXR1cm4gJEF0dGFjaG1lbnRJbmZvOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KCkKClJldHVybnMgYW4gYXJyYXkgd2l0aCBhbGwgYXR0YWNobWVudHMgb2YgdGhlIGdpdmVuIGNvbmZpZyBpdGVtLgoKICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7CgpyZXR1cm5zCgogICAgQEF0dGFjaG1lbnRzID0gKAogICAgICAgICdmaWxlbmFtZS50eHQnLAogICAgICAgICdvdGhlcl9maWxlLnBkZicsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29uZmlnSXRlbUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZmluZCBhbGwgYXR0YWNobWVudHMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgbXkgQEF0dGFjaG1lbnRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5GaW5kKAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIH0sCiAgICApOwoKICAgIGZvciBteSAkRmlsZW5hbWUgKEBBdHRhY2htZW50cykgewoKICAgICAgICAjIHJlbW92ZSBleHRyYSBpbmZvcm1hdGlvbiBmcm9tIGZpbGVuYW1lCiAgICAgICAgJEZpbGVuYW1lID1+IHN7IFxBIENvbmZpZ0l0ZW0gLyBcZCsgLyB9e314bXM7CiAgICB9CgogICAgcmV0dXJuIEBBdHRhY2htZW50czsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50RXhpc3RzKCkKCkNoZWNrcyBpZiBhIGZpbGUgd2l0aCBhIGdpdmVuIGZpbGVuYW1lIGV4aXN0cy4KCiAgICBteSAkRXhpc3RzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RXhpc3RzKAogICAgICAgIEZpbGVuYW1lID0+ICd0ZXN0LnR4dCcsCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRmlsZW5hbWUgQ29uZmlnSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPkZpbmQoCiAgICAgICAgRmlsZW5hbWUgPT4gJ0NvbmZpZ0l0ZW0vJyAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb25maWdJdGVtTG9va3VwKCkKClRoaXMgbWV0aG9kIGRvZXMgYSBsb29rdXAgZm9yIGEgY29uZmlnLWl0ZW0uIElmIGEgY29uZmlnLWl0ZW0gaWQgaXMgZ2l2ZW4sCml0IHJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgY29uZmlnLWl0ZW0uIElmIGEgY29uZmlnLWl0ZW0gbnVtYmVyIGlzIGdpdmVuLAp0aGUgYXBwcm9wcmlhdGUgaWQgaXMgcmV0dXJuZWQuCgogICAgbXkgJE51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjM0LAogICAgKTsKCm9yCgogICAgbXkgJElEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAxMDAwMDAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgKCRLZXkpID0gZmlyc3QgeyAkUGFyYW17JF99IH0gcXcoQ29uZmlnSXRlbUlEIENvbmZpZ0l0ZW1OdW1iZXIpOwoKICAgICMgY2hlY2sgZm9yIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEtleSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29uZmlnSXRlbUlEIG9yIENvbmZpZ0l0ZW1OdW1iZXIhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBpZiByZXN1bHQgaXMgY2FjaGVkIHJldHVybiB0aGF0IHJlc3VsdAogICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9e0NvbmZpZ0l0ZW1Mb29rdXB9eyRLZXl9eyAkUGFyYW17JEtleX0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9e0NvbmZpZ0l0ZW1Mb29rdXB9eyRLZXl9eyAkUGFyYW17JEtleX0gfTsKCiAgICAjIHNldCB0aGUgYXBwcm9wcmlhdGUgU1FMIHN0YXRlbWVudAogICAgbXkgJFNRTCA9ICRLZXkgZXEgJ0NvbmZpZ0l0ZW1OdW1iZXInCiAgICAgICAgPwogICAgICAgICdTRUxFQ1QgaWQgICAgICAgICAgICAgICAgRlJPTSBjb25maWdpdGVtIFdIRVJFIGNvbmZpZ2l0ZW1fbnVtYmVyID0gPycKICAgICAgICA6CiAgICAgICAgJ1NFTEVDVCBjb25maWdpdGVtX251bWJlciBGUk9NIGNvbmZpZ2l0ZW0gV0hFUkUgaWQgPSA/JzsKCiAgICAjIGZldGNoIHRoZSByZXF1ZXN0ZWQgdmFsdWUKICAgIHJldHVybiB1bmxlc3MgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17JEtleX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkVmFsdWU7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRWYWx1ZSA9ICRSb3dbMF07CiAgICB9CgogICAgJFNlbGYtPntDYWNoZX17Q29uZmlnSXRlbUxvb2t1cH17JEtleX17ICRQYXJhbXskS2V5fSB9ID0gJFZhbHVlOwoKICAgIHJldHVybiAkVmFsdWU7Cn0KCj1oZWFkMiBVbmlxdWVOYW1lQ2hlY2soKQoKVGhpcyBtZXRob2QgY2hlY2tzIGFsbCBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcywgd2hldGhlciB0aGUgZ2l2ZW4gbmFtZSBkb2VzIGFscmVhZHkgZXhpc3QKd2l0aGluIHRoZSBzYW1lIGNvbmZpZyBpdGVtIGNsYXNzIG9yIGFtb25nIGFsbCBjbGFzc2VzLCBkZXBlbmRpbmcgb24gdGhlIFN5c0NvbmZpZyB2YWx1ZSBvZgpVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlIChDbGFzcyBvciBHbG9iYWwpLgoKVGhpcyBtZXRob2QgcmVxdWlyZXMgMyBwYXJhbWV0ZXJzOiBDb25maWdJdGVtSUQsIE5hbWUgYW5kIENsYXNzCiJDb25maWdJdGVtSUQiICBpcyB0aGUgSUQgb2YgdGhlIENvbmZpZ0l0ZW0sIHdoaWNoIGlzIHRvIGJlIGNoZWNrZWQgZm9yIHVuaXF1ZW5lc3MKIk5hbWUiICAgICAgICAgIGlzIHRoZSBjb25maWcgaXRlbSBuYW1lIHRvIGJlIGNoZWNrZWQgZm9yIHVuaXF1ZW5lc3MKIkNsYXNzSUQiICAgICAgIGlzIHRoZSBJRCBvZiB0aGUgY29uZmlnIGl0ZW0ncyBjbGFzcwoKQWxsIHBhcmFtZXRlcnMgYXJlIG1hbmRhdG9yeS4KCiAgICBteSAkRHVwbGljYXRlTmFtZXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAnNzMnCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdQQyMwMDUnLAogICAgICAgIENsYXNzSUQgICAgICA9PiAnMzInLAogICAgKTsKClRoZSBnaXZlbiBuYW1lIGlzIG5vdCB1bmlxdWUKCiAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSBbIDUsIDM1LCA0OCwgXTsgICAgIyBJRHMgb2YgQ29uZmlnSXRlbXMgd2l0aCB0aGUgc2FtZSBuYW1lCgpUaGUgZ2l2ZW4gbmFtZSBpcyB1bmlxdWUKCiAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSBbXTsKCj1jdXQKCnN1YiBVbmlxdWVOYW1lQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGZvciBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgTmFtZSBDbGFzc0lEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk1pc3NpbmcgcGFyYW1ldGVyICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIENvbmZpZ0l0ZW1JRCBwYXJhbSBmb3IgdmFsaWQgZm9ybWF0CiAgICBpZiAoCiAgICAgICAgIUlzSW50ZWdlciggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKQogICAgICAgICYmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSBuZSAnTkVXJyApCiAgICAgICAgKQogICAgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIENvbmZpZ0l0ZW1JRCBwYXJhbWV0ZXIgbmVlZHMgdG8gYmUgYW4gaW50ZWdlciBvciAnTkVXJyIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBOYW1lIHBhcmFtIGZvciB2YWxpZCBmb3JtYXQKICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtOYW1lfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIE5hbWUgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGEgc3RyaW5nISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBDbGFzc0lEIHBhcmFtIGZvciB2YWxpZCBmb3JtYXQKICAgIGlmICggIUlzSW50ZWdlciggJFBhcmFte0NsYXNzSUR9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgQ2xhc3NJRCBwYXJhbWV0ZXIgbmVlZHMgdG8gYmUgYW4gaW50ZWdlciIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGNsYXNzIGxpc3QgZm9yIHZhbGlkaXR5CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkQ2xhc3NMaXN0KSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlVuYWJsZSB0byByZXRyaWV2ZSBhIHZhbGlkIGNsYXNzIGxpc3QhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCB0aGUgY2xhc3MgbmFtZSBmcm9tIHRoZSBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3MgPSAkQ2xhc3NMaXN0LT57ICRQYXJhbXtDbGFzc0lEfSB9OwoKICAgICMgY2hlY2sgY2xhc3MgZm9yIHZhbGlkaXR5CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCRDbGFzcykgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJVbmFibGUgdG8gZGV0ZXJtaW5lIGEgY29uZmlnIGl0ZW0gY2xhc3MgdXNpbmcgdGhlIGdpdmVuIENsYXNzSUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGVsc2lmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJSZXNvbHZlZCBDbGFzc0lEICRQYXJhbXtDbGFzc0lEfSB0byBjbGFzcyAkQ2xhc3MiLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdGhlIHVuaXF1ZW5lc3Mgc2NvcGUgZnJvbSBTeXNDb25maWcKICAgIG15ICRTY29wZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZScpOwoKICAgICMgY2hlY2sgc2NvcGUgZm9yIHZhbGlkaXR5CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCRTY29wZSkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgY29uZmlndXJhdGlvbiBvZiBVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlIGlzIGludmFsaWQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkU2NvcGUgbmUgJ2dsb2JhbCcgJiYgJFNjb3BlIG5lICdjbGFzcycgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlIGlzICRTY29wZSwgYnV0IG11c3QgYmUgZWl0aGVyICIKICAgICAgICAgICAgICAgIC4gIidnbG9iYWwnIG9yICdjbGFzcychIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT57RGVidWd9ID4gMCApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBzY29wZSBmb3IgY2hlY2tpbmcgdGhlIHVuaXF1ZW5lc3MgaXMgJFNjb3BlIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICVTZWFyY2hDcml0ZXJpYTsKCiAgICAjIGFkZCB0aGUgY29uZmlnIGl0ZW0gY2xhc3MgdG8gdGhlIHNlYXJjaCBjcml0ZXJpYSBpZiB0aGUgdW5pcXVlbmVzcyBzY29wZSBpcyBub3QgZ2xvYmFsCiAgICBpZiAoICRTY29wZSBuZSAnZ2xvYmFsJyApIHsKICAgICAgICAkU2VhcmNoQ3JpdGVyaWF7Q2xhc3NJRHN9ID0gWyAkUGFyYW17Q2xhc3NJRH0gXTsKICAgIH0KCiAgICAkU2VhcmNoQ3JpdGVyaWF7TmFtZX0gPSAkUGFyYW17TmFtZX07CgogICAgIyBzZWFyY2ggZm9yIGEgY29uZmlnIGl0ZW0gbWF0Y2hpbmcgdGhlIGdpdmVuIG5hbWUKICAgIG15IEBDb25maWdJdGVtSURzID0gJFNlbGYtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgJVNlYXJjaENyaXRlcmlhLAogICAgICAgIFJlc3VsdCA9PiAnQVJSQVknCiAgICApOwoKICAgICMgcmVtb3ZlIHRoZSBwcm92aWRlZCBDb25maWdJdGVtSUQgZnJvbSB0aGUgcmVzdWx0cywgb3RoZXJ3aXNlIHRoZSBkdXBsaWNhdGUgY2hlY2sgd291bGQgZmFpbAogICAgIyBiZWNhdXNlIHRoZSBDb25maWdJdGVtIGl0c2VsZiBpcyBmb3VuZCBhcyBkdXBsaWNhdGUKICAgIG15IEBEdXBsaWNhdGVzID0gZ3JlcCB7ICRfIG5lICRQYXJhbXtDb25maWdJdGVtSUR9IH0gQENvbmZpZ0l0ZW1JRHM7CgogICAgIyBpZiBhIGNvbmZpZyBpdGVtIHdhcyBmb3VuZCwgdGhlIGdpdmVuIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgIyBpZiBubyBjb25maWcgaXRlbSB3YXMgZm91bmQsIHRoZSBnaXZlbiBuYW1lIGlzIHVuaXF1ZQoKICAgICMgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBmb3IgZHVwbGljYXRlcwogICAgcmV0dXJuIFxARHVwbGljYXRlczsKfQoKPWhlYWQyIEN1ckluY2lTdGF0ZVJlY2FsYygpCgpyZWNhbGN1bGF0ZXMgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSBhbmQgb2YgY29uZmlnIGl0ZW1zCnRoYXQgYXJlIGxpbmtlZCB0byBpdC4gT25seSBsaW5rcyBiZXR3ZWVuIGNvbmZpZyBpdGVtcyBhcmUgY29uc2lkZXJlZCBoZXJlLiBMaW5rcyB0bwpvciBmcm9tIGNvbmZpZyBpdGVtIHZlcnNpb25zIGFyZSBpZ25vcmVkLgoKVGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgZGVwZW5kcyBvbiB0aGUgaW5jaWRlbnQgc3RhdGVzIHRoYXQgdGhpcyBjb25maWcgaXRlbSBkZXBlbmRzIG9uLgpBIGNoYW5nZSBvZiB0aGUgaW5jaWRlbnQgc3RhdGUgbWlnaHQgaGF2ZSByZXBlcmN1c3Npb25zIG9uIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlCm9mIHRoZSBjb25maWcgaXRlbXMgdGhhdCBkZXBlbmQgb24gdGhpcyBjb25maWcgaXRlbS4KCkl0IGlzIGEgY29tbW9uIHVzZSBjYXNlIHRoYXQgQzxDdXJJbmNpU3RhdGVSZWNhbGMoKT4gaXMgY2FsbGVkIGluIGEgbG9vcCBvdmVyIGEgbGlzdCBvZiBjb25maWcgaXRlbXMuCkV4YW1wbGVzIGFyZSB0aGUgY29uc29sZSBjb21tYW5kIEM8QWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlPiBvciB3aGVuIHRoZSBsaW5raW5nCm9mIHRoZSBjb25maWcgaXRlbXMgaGFzIGNoYW5nZWQuIEZvciBvcHRpbWl6aW5nIHRoYXQgY2FzZSB0aGVyZSBhcmUgdGhlIHBhcmFtZXRlcnMKQzxOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZT4gYW5kIEM8U2Nhbm5lZENvbmZpZ0l0ZW1JRHM+IHdoaWNoIGNhcnJ5IHN0YXRlIGJldHdlZW4KaW52b2NhdGlvbnMgb2YgdGhpcyBtZXRob2QuIFRoZXkgcHJvdmlkZSBjYWNoaW5nIGFuZCBwcmV2ZW50IGluZmluaXRlIGxvb3BzLgoKQ2hhbmdpbmcgdGhlIGluY2lkZW50IHN0YXRlIG9mIGNvbmZpZyBpdGVtcyBoYXMgcmVwZXJjdXNzaW9ucyBvbiBzZXJ2aWNlcy4gVGhlc2UgZWZmZWN0cwphcmUgaGFuZGxlZCBpbiB0aGlzIG1ldGhvZCBhcyB3ZWxsLgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1ckluY2lTdGF0ZVJlY2FsYygKICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUgPT4gJE5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLCAgIyBvcHRpb25hbCwgaW5jaWRlbnQgc3RhdGVzIG9mIGFscmVhZHkgY2hlY2tlZCBDSXMKICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyAgICAgICA9PiAkU2Nhbm5lZENvbmZpZ0l0ZW1JRHMsICAgICAgICAjIG9wdGlvbmFsLCBJRHMgYW5kIGluY2lkZW50IHN0YXRlcyBvZiBhbHJlYWR5IGNoZWNrZWQgQ0lzCiAgICApOwoKRm9yIGFzeW5jaHJvbm91cyBleGVjdXRpb24gaXQgaXMgY29udmVuaWVudCB0byBwYXNzIGEgbGlzdCBvZiBjb25maWcgaXRlbXMgdG8gQzxDdXJJbmNpU3RhdGVSZWNhbGMoKT4uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgIENvbmZpZ0l0ZW1JRHMgICAgICAgICAgICAgID0+IFsgMTIzLCAxMjQsIDEyNSBdLAogICAgKTsKCkluIHRoYXQgY2FzZSB0aGUgbG9vcCBpcyBkaXNjb250aW51ZWQgd2hlbiBhbiBpdGVyYXRpb24gcmVwb3J0ZWQgYSBmYWlsdXJlLgoKPWN1dAoKc3ViIEN1ckluY2lTdGF0ZVJlY2FsYyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdXNlZnVsIGZvciBhc3luYyBleGVjdXRpb24KICAgICMgYWxsIG90aGVyIHBhcmFtZXRlcnMgd2lsbCBiZSBpZ25vcmVkCiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSURzfSApIHsKCiAgICAgICAgIyB0aGVzZSBoYXNoZXMgd2lsbCBiZSBmaWxsZWQgaW4gdGhlIGNhbGxzIHRvIEN1ckluY2lTdGF0ZVJlY2FsYwogICAgICAgIG15ICggJU5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLCAlU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgKTsKCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCAkUGFyYW17Q29uZmlnSXRlbUlEc30tPkAqICkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUgPT4gXCVOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzICAgICAgID0+IFwlU2Nhbm5lZENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gdW5sZXNzICRTdWNjZXNzOwogICAgICAgIH0KCiAgICAgICAgIyBhbGwgZmluZQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29uZmlnSXRlbUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCByZWYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdUaGUgcGFyYW1ldGVyIENvbmZpZ0l0ZW1JRCBtdXN0IGJlIGEgcGxhaW4gc2NhbGFyIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGluY2lkZW50IGxpbmsgdHlwZXMgYW5kIGRpcmVjdGlvbnMgZnJvbSBjb25maWcuIEUuZy4KICAgICMgeyBEZXBlbmRzT24gPT4gJ0JvdGgnLCBMb2NhdGlvbk9mID0+ICdTb3VyY2UnIH0KICAgIG15ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJyk7CgogICAgIyAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9IGhvbGRzIHRoZSBkZXRlcm1pbmVkIGluY2lkZW50IHN0YXRlcyBvZiB0aGUgY29uc2lkZXJlZCBjb25maWcgaXRlbXMuCiAgICAjIEl0IG1heSBjb250YWluIGNvbnRhaW4gY29udGVudCBmcm9tIHByZXZpb3VzIGNhbGxzIG9mIEN1ckluY2lTdGF0ZVJlY2FsYygpIHNvIHRoYXQgdW5uZWNlc3Nhcnkgd29yawogICAgIyBjYW4gYmUgc2tpcHBlZC4KICAgICMgTmV3IGluY2lkZW50IHN0YXRlcyBhcmUgY2FsY3VsYXRlZCBmcm9tIGFsbCBpbmNpZGVudCBsaW5rIHR5cGVzLgogICAgIyBUaGUgbmV3bHkgZGV0ZXJtaW5lZCBpbmNpZGVudCBzdGF0ZXMgYXJlIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgogICAgIyBjYW4gcGFzcyBpdCB0byB0aGUgbmV4dCBpdGVyYXRpb24uCiAgICAjIEluY29ycG9yYXRlIGRhdGEgZnJvbSBwcmV2aW91cyBydW4ocykgYW5kIHJlbWVtYmVyIGtub3duIGRhdGEuCiAgICAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9IC8vPSB7fTsKICAgIG15ICRLbm93bk5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlID0gZGNsb25lKCAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9ICk7CgogICAgIyBSZW1lbWJlciB0aGUgc2Nhbm5lZCBjb25maWcgaXRlbXMKICAgICMgSW5jb3Jwb3JhdGUgZGF0YSBmcm9tIHByZXZpb3VzIHJ1bihzKSBhbmQgcmVtZW1iZXIga25vd24gZGF0YS4KICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30gLy89IHt9OwogICAgbXkgJEtub3duU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPSBkY2xvbmUoICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30gKTsKCiAgICAjIEZpbmQgZGVlcGx5IGNvbm5lY3RlZCBjb25maWcgaXRlbXMgd2l0aCBhbiBpbmNpZGVudCBzdGF0ZS4KICAgICMgVGhlIGRpcmVjdGlvbiBpbiAkSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbiBpcyBpZ25vcmVkIGhlcmUgYmVjYXVzZSBkZXBlbmRlZCBvbiBpdGVtcyBjb3VsZCBjaGFuZ2UKICAgICMgdGhlIGluY2lkZW50IHN0YXRlIG9mIHRoZSBjdXJyZW50IGNvbmZpZyBpdGVtLiBPciBjaGFuZ2VzIGluCiAgICAjIHRoZSBjdXJyZW50IGNvbmZpZyBpdGVtIGNvdWxkIGNoYW5nZSBkb3duc3RyZWFtIGNvbmZpZyBpdGVtcy4KICAgICRTZWxmLT5fRmluZEluY2lDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBJbmNpZGVudExpbmtUeXBlcyAgICA9PiBbIGtleXMgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqIF0sCiAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgcmVsYXRpb24gYmV0d2VlbiBzZXJ2aWNlcyBhbmQgbGlua2VkIENJcwogICAgIyBUaGUgaW5mbyB3aWxsIGJlIHVzZWQgZm9yIHVwZGF0aW5nIHRoZSBzZXJ2aWNlcy4KICAgIG15ICVTZXJ2aWNlQ0lSZWxhdGlvbjsKCiAgICAjIGNhbGN1bGF0ZSB0aGUgbmV3IENJIGluY2lkZW50IHN0YXRlIGZvciBlYWNoIGNvbmZpZ3VyZWQgbGlua3R5cGUKICAgIExJTktUWVBFOgogICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAkSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbi0+JSogKSB7CgogICAgICAgICMgZ2V0IHRoZSBkaXJlY3Rpb24KICAgICAgICBteSAkTGlua0RpcmVjdGlvbiA9ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT57JExpbmtUeXBlfTsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBhbGwgY29uZmlnIGl0ZW1zIHdpdGggYSB3YXJuaW5nIHN0YXRlCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30gfSApIHsKCiAgICAgICAgICAgICMgU2tpcCBjb25maWcgaXRlbXMga25vd24gZnJvbSBwcmV2aW91cyBleGVjdXRpb24ocykuCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoICRLbm93blNjYW5uZWRDb25maWdJdGVtSURzLT57JENvbmZpZ0l0ZW1JRH17VHlwZX0gKQogICAgICAgICAgICAgICAgJiYKICAgICAgICAgICAgICAgICRLbm93blNjYW5uZWRDb25maWdJdGVtSURzLT57JENvbmZpZ0l0ZW1JRH17VHlwZX0gZXEgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpbnZlc3RpZ2F0ZSBvbmx5IGNvbmZpZyBpdGVtcyB3aXRoIGFuIGluY2lkZW50IHN0YXRlCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIHVubGVzcyAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRDb25maWdJdGVtSUR9e1R5cGV9IGVxICdpbmNpZGVudCc7CgogICAgICAgICAgICAjIGFubm90YXRlIGxpbmtlZCBjb25maWcgaXRlbXMgd2l0aCBhIHdhcm5pbmcKICAgICAgICAgICAgJFNlbGYtPl9GaW5kV2FybkNvbmZpZ0l0ZW1zKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICAgICAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICAgICAgICAgID0+ICRMaW5rRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgTnVtYmVyT2ZMaW5rVHlwZXMgICAgPT4gc2NhbGFyIGtleXMgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqLAogICAgICAgICAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9IH0gKSB7CgogICAgICAgICAgICAjIFNraXAgY29uZmlnIGl0ZW1zIGtub3duIGZyb20gcHJldmlvdXMgZXhlY3V0aW9uKHMpLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9e1R5cGV9ICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9e1R5cGV9IGVxICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZXh0cmFjdCBpbmNpZGVudCBzdGF0ZSB0eXBlCiAgICAgICAgICAgIG15ICRJbmNpU3RhdGVUeXBlID0gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfTsKCiAgICAgICAgICAgICMgRmluZCBhbGwgbGlua2VkIHNlcnZpY2VzIG9mIHRoaXMgY29uZmlnIGl0ZW0uCiAgICAgICAgICAgICMgVGhlc2Uga2luZCBvZiBsaW5rcyBhcmUgbm90IGF2YWlsYWJsZSBmcm9tIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsKICAgICAgICAgICAgbXkgJUxpbmtlZFNlcnZpY2VJRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rS2V5TGlzdCgKICAgICAgICAgICAgICAgIE9iamVjdDEgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgS2V5MSAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBPYmplY3QyICAgPT4gJ1NlcnZpY2UnLAogICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgRGlyZWN0aW9uID0+ICRMaW5rRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBTRVJWSUNFSUQ6CiAgICAgICAgICAgIGZvciBteSAkU2VydmljZUlEICggc29ydCBrZXlzICVMaW5rZWRTZXJ2aWNlSURzICkgewoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgdGhlIENJcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGlzIHNlcnZpY2UKICAgICAgICAgICAgICAgICRTZXJ2aWNlQ0lSZWxhdGlvbnskU2VydmljZUlEfSAvLz0gW107CiAgICAgICAgICAgICAgICBwdXNoICRTZXJ2aWNlQ0lSZWxhdGlvbnskU2VydmljZUlEfS0+QCosICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRJbmNpU3RhdGVUeXBlIGVxICdpbmNpZGVudCc7CgogICAgICAgICAgICAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9eyRDb25maWdJdGVtSUR9ID0gJEluY2lTdGF0ZVR5cGU7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBsaXN0IG9mIHdhcm5pbmdzCiAgICBteSAkV2FyblN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+ICd3YXJuaW5nJywKICAgICAgICB9LAogICAgKTsKCiAgICBpZiAoICFkZWZpbmVkICRXYXJuU3RhdGVMaXN0ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZSBXYXJuaW5nIGNhbm5vdCBiZSBpbnZhbGlkLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlUmV2ZXJzZVdhcm5TdGF0ZUxpc3QgPSByZXZlcnNlICV7JFdhcm5TdGF0ZUxpc3R9OwogICAgbXkgQFNvcnRlZFdhcm5MaXN0ICAgICAgID0gc29ydCBrZXlzICVSZXZlcnNlV2FyblN0YXRlTGlzdDsKICAgIG15ICRXYXJuaW5nU3RhdGVJRCAgICAgICA9ICRSZXZlcnNlV2FyblN0YXRlTGlzdHtXYXJuaW5nfSB8fCAkUmV2ZXJzZVdhcm5TdGF0ZUxpc3R7ICRTb3J0ZWRXYXJuTGlzdFswXSB9OwogICAgbXkgJENhY2hlT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyBzZXQgdGhlIG5ldyBjdXJyZW50IGluY2lkZW50IHN0YXRlIGZvciBDSXMKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICRQYXJhbXtOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZX0tPiUqICkgewoKICAgICAgICAjIFNraXAgY29uZmlnIGl0ZW1zIGtub3duIGZyb20gcHJldmlvdXMgZXhlY3V0aW9uKHMpLgogICAgICAgIGlmICgKICAgICAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJEtub3duTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUtPnskQ29uZmlnSXRlbUlEfSApCiAgICAgICAgICAgICYmICRLbm93bk5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLT57JENvbmZpZ0l0ZW1JRH0gZXEgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfXskQ29uZmlnSXRlbUlEfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICB9CgogICAgICAgICMgZ2V0IG5ldyBpbmNpZGVudCBzdGF0ZSB0eXBlIChjYW4gb25seSBiZSAnb3BlcmF0aW9uYWwnIG9yICd3YXJuaW5nJykKICAgICAgICBteSAkSW5jaVN0YXRlVHlwZSA9ICRQYXJhbXtOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZX17JENvbmZpZ0l0ZW1JRH07CgogICAgICAgICMgZ2V0IGxhc3QgdmVyc2lvbgogICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICApOwoKICAgICAgICBteSAkQ3VySW5jaVN0YXRlSUQ7CiAgICAgICAgaWYgKCAkSW5jaVN0YXRlVHlwZSBlcSAnd2FybmluZycgKSB7CgogICAgICAgICAgICAjIGNoZWNrIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgaXMgaW4gJ2luY2lkZW50JwogICAgICAgICAgICAjIHRoZW4gd2UgZG8gbm90IHdhbnQgdG8gY2hhbmdlIGl0IHRvIHdhcm5pbmcKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJExhc3RWZXJzaW9uLT57SW5jaVN0YXRlVHlwZX0gZXEgJ2luY2lkZW50JzsKCiAgICAgICAgICAgICRDdXJJbmNpU3RhdGVJRCA9ICRXYXJuaW5nU3RhdGVJRDsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkSW5jaVN0YXRlVHlwZSBlcSAnb3BlcmF0aW9uYWwnICkgewogICAgICAgICAgICAkQ3VySW5jaVN0YXRlSUQgPSAkTGFzdFZlcnNpb24tPntJbmNpU3RhdGVJRH07CiAgICAgICAgfQoKICAgICAgICAjIE5vIHVwZGF0ZSBuZWNlc3NhcnkgaWYgaW5jaWRlbnQgc3RhdGUgaWQgb2YgdmVyc2lvbiBhbmQgY29uZmlnIGl0ZW0gbWF0Y2guCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJExhc3RWZXJzaW9uLT57Q3VySW5jaVN0YXRlSUR9IGVxICRDdXJJbmNpU3RhdGVJRDsKCiAgICAgICAgIyB1cGRhdGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZQogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgU1FMICA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW0gU0VUIGN1cl9pbmNpX3N0YXRlX2lkID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDdXJJbmNpU3RhdGVJRCwgXCRDb25maWdJdGVtSUQgXSwKICAgICAgICApOwoKICAgICAgICAjIFRPRE86IEFsc28gdGhlIFZlcnNpb25JRC1jYWNoZXMgaGF2ZSB0byBiZSBjb25zaWRlcmVkLCB0aGV5IGFsc28gY29udGFpbiBDdXJJbmNpU3RhdGUKICAgICAgICAjIGRlbGV0ZSB0aGUgY2FjaGUKICAgICAgICBmb3IgbXkgJERGRGF0YSAoIDAsIDEgKSB7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAkREZEYXRhCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB0eXBlIGZvciBlYWNoIHNlcnZpY2UgKGluZmx1ZW5jZWQgYnkgbGlua2VkIENJcykKICAgIFNFUlZJQ0VJRDoKICAgIGZvciBteSAkU2VydmljZUlEICggc29ydCBrZXlzICVTZXJ2aWNlQ0lSZWxhdGlvbiApIHsKCiAgICAgICAgIyBzZXQgZGVmYXVsdCBpbmNpZGVudCBzdGF0ZSB0eXBlCiAgICAgICAgbXkgJEN1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzID0gJ29wZXJhdGlvbmFsJzsKCiAgICAgICAgIyBnZXQgdGhlIHVuaXF1ZSBjb25maWcgaXRlbSBpZHMgd2hpY2ggYXJlIGRpcmVjdGx5IGxpbmtlZCB0byB0aGlzIHNlcnZpY2UKICAgICAgICBteSAlVW5pcXVlQ29uZmlnSXRlbUlEcyA9IG1hcCB7ICRfID0+IDEgfSAkU2VydmljZUNJUmVsYXRpb257JFNlcnZpY2VJRH0tPkAqOwoKICAgICAgICAjIGludmVzdGlnYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIGVhY2ggY29uZmlnIGl0ZW0KICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJVVuaXF1ZUNvbmZpZ0l0ZW1JRHMgKSB7CgogICAgICAgICAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBDYWNoZSAgICAgICAgPT4gMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRDb25maWdJdGVtRGF0YS0+e0N1ckRlcGxTdGF0ZVR5cGV9IG5lICdwcm9kdWN0aXZlJzsKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJENvbmZpZ0l0ZW1EYXRhLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ29wZXJhdGlvbmFsJzsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgc2VydmljZSBtdXN0IGJlIHNldCB0byAnd2FybmluZycKICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbURhdGEtPntDdXJJbmNpU3RhdGVUeXBlfSBlcSAnd2FybmluZycgKSB7CiAgICAgICAgICAgICAgICAkQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMgPSAnd2FybmluZyc7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgaWYgc2VydmljZSBtdXN0IGJlIHNldCB0byAnaW5jaWRlbnQnCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1EYXRhLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ2luY2lkZW50JyApIHsKICAgICAgICAgICAgICAgICRDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcyA9ICdpbmNpZGVudCc7CgogICAgICAgICAgICAgICAgbGFzdCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgZnJvbSBDSXMgb2YgdGhlIHNlcnZpY2UKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZUlELAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcywKICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIE9iamVjdEF0dHJpYnV0ZXNHZXQoKQoKcmV0dXJucyB0aGUgYXR0cmlidXRlcyBhIGNvbmZpZyBpdGVtIGNhbiBoYXZlIG9uIHRoZSBzeXN0ZW0uCgogICAgbXkgJUF0dHJpYnV0ZXMgPSAkVGlja2V0T2JqZWN0LT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gKDB8MSksICAgICAgICAgIyAob3B0aW9uYWwpIGlmIGR5bmFtaWMgZmllbGQgbmFtZXMgYXJlIGluY2x1ZGVkLCBkZWZhdWx0IDAKICAgICAgICBWZXJzaW9uICAgICAgID0+ICgwfDEpLCAgICAgICAgICMgKG9wdGlvbmFsKSBpZiB2ZXJzaW9uIGluZm9ybWF0aW9uIGlzIGluY2x1ZGVkLCBkZWZhdWx0IDEKICAgICAgICBFZGl0TWFzayAgICAgID0+ICgwfDEpLCAgICAgICAgICMgKG9wdGlvbmFsKSBpZiBlZGl0IG1hc2sgYXR0cmlidXRlcyBhcmUgcmV0dXJuZWQgaW5zdGVhZCBvZiBiYWNrZW5kIGF0dHJpYnV0ZXMsIGRlZmF1bHQgMAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RBdHRyaWJ1dGVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte1ZlcnNpb259IC8vPSAxOwoKICAgIG15ICVDb25maWdJdGVtQXR0cmlidXRlczsKCiAgICBpZiAoICRQYXJhbXtFZGl0TWFza30gKSB7CiAgICAgICAgJUNvbmZpZ0l0ZW1BdHRyaWJ1dGVzID0gKAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+IDEsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgPT4gMSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAxLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICVDb25maWdJdGVtQXR0cmlidXRlcyA9ICgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gMSwKICAgICAgICAgICAgTnVtYmVyICAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ2xhc3NlcyAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgQ3VyRGVwbFN0YXRlcyAgPT4gMSwKICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgQ3VySW5jaVN0YXRlcyAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGlmIHJlcXVlc3RlZCwgc2V0IHZlcnNpb24gYXR0cmlidXRlcwogICAgICAgIGlmICggJFBhcmFte1ZlcnNpb259ICkgewogICAgICAgICAgICAlQ29uZmlnSXRlbUF0dHJpYnV0ZXMgPSAoCiAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbUF0dHJpYnV0ZXMsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+IDEsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+IDEsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgID0+IDEsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+IDEsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZHluYW1pYyBmaWVsZHMgbmVlZCB0byBiZSBhZGRlZAogICAgaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkc30gKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBSZXN1bHRUeXBlID0+ICdIQVNIJywKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEZpZWxkTmFtZSAoIHZhbHVlcyAkRHluYW1pY0ZpZWxkcy0+JSogKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtQXR0cmlidXRlc3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlQ29uZmlnSXRlbUF0dHJpYnV0ZXM7Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfRmluZEluY2lDb25maWdJdGVtcygpCgpmaW5kIGNvbm5lY3RlZCBjb25maWcgaXRlbXMgd2l0aCBhbiBpbmNpZGVudCBzdGF0ZS4KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+X0ZpbmRJbmNpQ29uZmlnSXRlbXMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBJbmNpZGVudExpbmtUeXBlcyAgICA9PiBbIGtleXMgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqIF0sCiAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gXCVTY2FubmVkQ29uZmlnSXRlbUlEcywKICAgICk7CgpUaGUgc2Nhbm5lZCBjb25maWcgaXRlbXMgd2lsbCBiZSBlbnRlcmVkIGluIHRoZSBDPFNjYW5uZWRDb25maWdJdGVtSURzPiBoYXNocmVmLiBFYWNoIGNvbmZpZyBpdGVtIHdpbGwgYmUgc2Nhbm5lZCBvbmx5IG9uY2UuClRoZSBhdHRyaWJ1dGUgQzxUeXBlPiB3aWxsIGJlIGVpdGhlciAnb3BlcmF0aW9uYWwnIG9yICdpbmNpZGVudCcuCgpUaGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgd2l0aCBpbmNpZGVudHMgcmVjdXJzZXMgaW50byB0aGUgZ3JhcGggb2YgbGlua2VkIGNvbmZpZyBpdGVtcy4gVGhlIGRpcmVjdGx5CmxpbmtlZCBpdGVtcyB3aWxsIGFsd2F5cyBiZSBjaGVja2VkLiBSZWN1cnNpb24gc3RvcHMgb25jZSBhbiBpbmNpZGVudCBoYXMgYmVlbiBmb3VuZC4KClRoaXMgbWV0aG9kIG9ubHkgY29sbGVjdHMgZGF0YSwgbm8gY3VycmVudCBpbmNpZGVudCBzdGF0ZXMgd2lsbCBiZSBhbHRlcmVkLgoKPWN1dAoKc3ViIF9GaW5kSW5jaUNvbmZpZ0l0ZW1zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiB1bmxlc3MgJFBhcmFte0NvbmZpZ0l0ZW1JRH07CgogICAgIyBpZ25vcmUgYWxyZWFkeSBzY2FubmVkIGlkcyAoaW5maW5pdGUgbG9vcCBwcm90ZWN0aW9uKQogICAgcmV0dXJuIGlmIGRlZmluZWQgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfTsKCiAgICAjIHNldCBhIGRlZmF1bHQgc28gdGhlIENvbmZpZ0l0ZW0gd29uJ3QgYmUgc2Nhbm5lZCBhZ2FpbgogICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfSA9IHt9OwogICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfS0+e1R5cGV9ID0gJ29wZXJhdGlvbmFsJzsKCiAgICAjIGFkZCBvd24gY29uZmlnIGl0ZW0gaWQgdG8gbGlzdCBvZiBsaW5rZWQgY29uZmlnIGl0ZW1zCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgICMgZmluZCB0aGUgZGlyZWN0bHkgbGlua2VkIGNvbmZpZyBpdGVtcwogICAgewogICAgICAgICMgRGlyZWN0aW9uIG11c3QgQUxXQVlTIGJlICdCb3RoJyBoZXJlIGFzIHdlIG5lZWQgdG8gaW5jbHVkZQogICAgICAgICMgYWxsIGxpbmtlZCBDSXMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhpcyBvbmUhCiAgICAgICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJFNlbGYtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFR5cGVzICAgICAgICA9PiAkUGFyYW17SW5jaWRlbnRMaW5rVHlwZXN9LAogICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ0JvdGgnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHJlbWVtYmVyIG9ubHkgdGhlIGxpbmtlZCBjb25maWcgaXRlbSBpZHMsIGlnbm9yZSB0aGUgY29uZmlnIGl0ZW0gdmVyc2lvbnMKICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLAogICAgICAgICAgICBncmVwIHtkZWZpbmVkfQogICAgICAgICAgICBtYXAgIHsgJF8tPntDb25maWdJdGVtSUR9IH0KICAgICAgICAgICAgJExpbmtlZENvbmZpZ0l0ZW1zLT5AKjsKICAgIH0KCiAgICAjIExvb3Agb3ZlciB0aGUgcmVxdWVzdGVkIGNvbmZpZyBpdGVtIGFuZCB0aGUgZGlyZWN0bHkgbGlua2VkIGNvbmZpZyBpdGVtcwogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IEBDb25maWdJdGVtSURzICkgewoKICAgICAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENhY2hlICAgICAgICA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgV2hlbiBhbiBpbmNpZGVudCB3YXMgZm91bmQsIG1hcmsgdGhlIGNvbmZpZyBpdGVtIGFuZCBzdG9wIHJlY3Vyc2luZwogICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfSBlcSAnaW5jaWRlbnQnICkgewogICAgICAgICAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRDb25maWdJdGVtSUR9e1R5cGV9ID0gJ2luY2lkZW50JzsKCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgIH0KCiAgICAgICAgIyBubyBpbmNpZGVudCB3YXMgZW5jb3VudGVyZWQsIGNvbnRpbnVlIHdpdGggcmVjdXJzaW9uCiAgICAgICAgIyBfRmluZEluY2lDb25maWdJdGVtcygpIG1pZ2h0IGJlIGNhbGxlZCB3aXRoIHRoZSBjdXJyZW50ICRQYXJhbXtDb25maWdJdGVtSUR9LgogICAgICAgICMgQnV0IHRoYXQgY2FsbCB3aWxsIGRvIG5vdGhpbmcuCiAgICAgICAgJFNlbGYtPl9GaW5kSW5jaUNvbmZpZ0l0ZW1zKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBJbmNpZGVudExpbmtUeXBlcyAgICA9PiAkUGFyYW17SW5jaWRlbnRMaW5rVHlwZXN9LAogICAgICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9Cgo9aGVhZDIgX0ZpbmRXYXJuQ29uZmlnSXRlbXMoKQoKVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZvciBjb25maWcgaXRlbSB0aGF0IGFyZSBpbiBhIGluY2lkZW50IG9yIHdhcm5pbmcgc3RhdGUuCkZpbmQgY29ubmVjdGVkIGNvbmZpZyBpdGVtcyBhbmQgYW5ub3RhdGUgdGhlbSB3aXRoIGEgd2FybmluZyBpbiBDPFNjYW5uZWRDb25maWdJdGVtSURzPi4gUHJvcGFnYXRlIHRoZSB3YXJuaW5nLgoKICAgICRDb25maWdJdGVtT2JqZWN0LT5fRmluZFdhcm5Db25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIExpbmtUeXBlICAgICAgICAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICBEaXJlY3Rpb24gICAgICAgICAgICA9PiAkTGlua0RpcmVjdGlvbiwKICAgICAgICBOdW1iZXJPZkxpbmtUeXBlcyAgICA9PiAyLCAgICAgICAgICAgICAgICAgICAgICMganVzdCBmb3IgaW5maW5pdGUgbG9vcCBwcm90ZWN0aW9uCiAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFNjYW5uZWRDb25maWdJdGVtSURzLAogICAgKTsKCj1jdXQKCnN1YiBfRmluZFdhcm5Db25maWdJdGVtcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgICMgSW5maW5pdGUgbG9vcCBwcm90ZWN0aW9uLgogICAgIyBJZ25vcmUgYWxyZWFkeSBzY2FubmVkIGlkcy4KICAgICMgSXQgaXMgb2sgdGhhdCBhIGNvbmZpZyBpdGVtIGlzIGludmVzdGlnYXRlZCBhcyBtYW55IHRpbWVzIGFzIHRoZXJlIGFyZSBjb25maWd1cmVkIGxpbmsgdHlwZXMgKiBudW1iZXIgb2YgaW5jaWRlbnQgY29uZmlnIGl0ZWVtcwogICAgbXkgJEluY2lkZW50Q291bnQgPSB0cnVlIHsgKCAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRffXtUeXBlfSB8fCAnJyApIGVxICdpbmNpZGVudCcgfQogICAga2V5cyAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9LT4lKjsKICAgIGlmICgKICAgICAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9LT57RmluZFdhcm59CiAgICAgICAgJiYKICAgICAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9LT57RmluZFdhcm59ID49ICggJFBhcmFte051bWJlck9mTGlua1R5cGVzfSAqICRJbmNpZGVudENvdW50ICkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaW5jcmVhc2UgdGhlIHZpc2l0IGNvdW50ZXIKICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317ICRQYXJhbXtDb25maWdJdGVtSUR9IH0tPntGaW5kV2Fybn0rKzsKCiAgICAjIGZpbmQgY29uZmlnIGl0ZW1zIHRvIHdoaWNoIHRoZSBpbmNpZGVudCBvciB3YXJuaW5nIG11c3QgYmUgcHJvcGFnYXRlZAogICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJFNlbGYtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBUeXBlcyAgICAgICAgPT4gWyAkUGFyYW17TGlua1R5cGV9IF0sCiAgICAgICAgRGlyZWN0aW9uICAgID0+ICRQYXJhbXtEaXJlY3Rpb259LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgIG15IEBMaW5rZWRDb25maWdJdGVtSURzID0gbWFwIHsgJF8tPntDb25maWdJdGVtSUR9IH0gJExpbmtlZENvbmZpZ0l0ZW1zLT5AKjsKCiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQgQExpbmtlZENvbmZpZ0l0ZW1JRHMgKSB7CgogICAgICAgICMgc3RhcnQgcmVjdXJzaW9uCiAgICAgICAgJFNlbGYtPl9GaW5kV2FybkNvbmZpZ0l0ZW1zKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICA9PiAkUGFyYW17TGlua1R5cGV9LAogICAgICAgICAgICBEaXJlY3Rpb24gICAgICAgICAgICA9PiAkUGFyYW17RGlyZWN0aW9ufSwKICAgICAgICAgICAgTnVtYmVyT2ZMaW5rVHlwZXMgICAgPT4gJFBhcmFte051bWJlck9mTGlua1R5cGVzfSwKICAgICAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAoICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX0gfHwgJycgKSBlcSAnaW5jaWRlbnQnOwoKICAgICAgICAjIHNldCB3YXJuaW5nIHN0YXRlCiAgICAgICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfSA9ICd3YXJuaW5nJzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9QcmVwYXJlTGlrZVN0cmluZygpCgppbnRlcm5hbCBmdW5jdGlvbiB0byBwcmVwYXJlIGxpa2Ugc3RyaW5ncwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5fUHJlcGFyZUxpa2VTdHJpbmcoICRTdHJpbmdSZWYgKTsKCj1jdXQKCnN1YiBfUHJlcGFyZUxpa2VTdHJpbmcgewogICAgbXkgKCAkU2VsZiwgJFZhbHVlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRWYWx1ZTsKICAgIHJldHVybiBpZiByZWYgJFZhbHVlIG5lICdTQ0FMQVInOwoKICAgICMgUXVvdGUKICAgICR7JFZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdW90ZSggJHskVmFsdWV9LCAnTGlrZScgKTsKCiAgICAjIHJlcGxhY2UgKiB3aXRoICUKICAgICR7JFZhbHVlfSA9fiBzeyBcKisgfXslfXhtc2c7CgogICAgcmV0dXJuOwp9Cgo9aGVhZDEgSVRTTSBDb25maWcgSXRlbSBldmVudHM6CgpDb25maWdJdGVtQ3JlYXRlLCBDb25maWdJdGVtVXBkYXRlLCBWZXJzaW9uQ3JlYXRlLCBWZXJzaW9uVXBkYXRlLCBEZXBsb3ltZW50U3RhdGVVcGRhdGUsIEluY2lkZW50U3RhdGVVcGRhdGUsCkNvbmZpZ0l0ZW1EZWxldGUsIExpbmtBZGQsIExpbmtEZWxldGUsIERlZmluaXRpb25VcGRhdGUsIE5hbWVVcGRhdGUsIERlZmluaXRpb25DcmVhdGUsIFZlcnNpb25EZWxldGUKCj1jdXQKCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/ColumnFilter.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlciAtIENvbHVtbiBGaWx0ZXIgbGlicmFyeQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgZnVuY3Rpb25zIGZvciBDb2x1bW4gRmlsdGVycy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCkRvbid0IHVzZSB0aGUgY29uc3RydWN0b3IgZGlyZWN0bHksIHVzZSB0aGUgT2JqZWN0TWFuYWdlciBpbnN0ZWFkOgoKICAgIG15ICRJVFNNQ29uZmlnSXRlbUNvbHVtbkZpbHRlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIENsYXNzRmlsdGVyVmFsdWVzR2V0KCkKCmdldCBhIGxpc3Qgb2YgYWxsIGNvbmZpZyBpdGVtIGNsYXNzZXMKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+Q2xhc3NGaWx0ZXJWYWx1ZXNHZXQoKTsKCiAgICByZXR1cm5zCgogICAgJFZhbHVlcyA9IHsKICAgICAgICAyMiA9PiAnQ29tcHV0ZXInLAogICAgICAgIDIzID0+ICdIYXJkd2FyZScsCiAgICAgICAgMjQgPT4gJ0xvY2F0aW9uJywKICAgICAgICAyNSA9PiAnTmV0d29yaycsCiAgICAgICAgMjYgPT4gJ1NvZnR3YXJlJywKICAgIH07Cgo9Y3V0CgpzdWIgQ2xhc3NGaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7Cn0KCj1oZWFkMiBEZXBsU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKQoKZ2V0IGEgbGlzdCBvZiBhbGwgZGVwbG95bWVudCBzdGF0ZXMKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+RGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCk7CgogICAgcmV0dXJucwoKICAgICRWYWx1ZXMgPSB7CiAgICAgICAgMjcgPT4gIkV4cGlyZWQiLAogICAgICAgIDI4ID0+ICJJbmFjdGl2ZSIsCiAgICAgICAgMjkgPT4gIk1haW50ZW5hbmNlIiwKICAgICAgICAzMCA9PiAiUGlsb3QiLAogICAgICAgIDMxID0+ICJQbGFubmVkIiwKICAgICAgICAzMiA9PiAiUHJvZHVjdGlvbiIsCiAgICAgICAgMzMgPT4gIlJlcGFpciIsCiAgICAgICAgMzQgPT4gIlJldGlyZWQiLAogICAgICAgIDM1ID0+ICJSZXZpZXciLAogICAgICAgIDM2ID0+ICJUZXN0L1FBIiwKICAgIH07Cgo9Y3V0CgpzdWIgRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKfQoKPWhlYWQyIEN1ckRlcGxTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGFsbCBjdXJyZW50IGRlcGxveW1lbnQgc3RhdGVzIC0gd3JhcHMgZm9yIERlcGxTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgogICAgbXkgJFZhbHVlcyA9ICRDb2x1bW5GaWx0ZXJPYmplY3QtPkN1ckRlcGxTdGF0ZUZpbHRlclZhbHVlc0dldCgpOwoKICAgIHJldHVybnMKCiAgICAkVmFsdWVzID0gewogICAgICAgIDI3ID0+ICJFeHBpcmVkIiwKICAgICAgICAyOCA9PiAiSW5hY3RpdmUiLAogICAgICAgIDI5ID0+ICJNYWludGVuYW5jZSIsCiAgICAgICAgMzAgPT4gIlBpbG90IiwKICAgICAgICAzMSA9PiAiUGxhbm5lZCIsCiAgICAgICAgMzIgPT4gIlByb2R1Y3Rpb24iLAogICAgICAgIDMzID0+ICJSZXBhaXIiLAogICAgICAgIDM0ID0+ICJSZXRpcmVkIiwKICAgICAgICAzNSA9PiAiUmV2aWV3IiwKICAgICAgICAzNiA9PiAiVGVzdC9RQSIsCiAgICB9OwoKPWN1dAoKc3ViIEN1ckRlcGxTdGF0ZUZpbHRlclZhbHVlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+RGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCVQYXJhbSk7Cn0KCj1oZWFkMiBJbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKQoKZ2V0IGEgbGlzdCBvZiBhbGwgaW5jaWRlbnQgc3RhdGVzCgogICAgbXkgJFZhbHVlcyA9ICRDb2x1bW5GaWx0ZXJPYmplY3QtPkluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpOwoKICAgIHJldHVybnMKCiAgICAkVmFsdWVzID0gewogICAgICAgIDEgPT4gIk9wZXJhdGlvbmFsIiwKICAgICAgICAyID0+ICJXYXJuaW5nIiwKICAgICAgICAzID0+ICJJbmNpZGVudCIKICAgIH07Cgo9Y3V0CgpzdWIgSW5jaVN0YXRlRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7Cn0KCj1oZWFkMiBDdXJJbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKQoKZ2V0IGEgbGlzdCBvZiBhbGwgY3VycmVudCBpbmNpZGVudCBzdGF0ZXMgLSB3cmFwcyBJbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKQoKICAgIG15ICRWYWx1ZXMgPSAkQ29sdW1uRmlsdGVyT2JqZWN0LT5DdXJJbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKTsKCiAgICByZXR1cm5zCgogICAgJFZhbHVlcyA9IHsKICAgICAgICAxID0+ICJPcGVyYXRpb25hbCIsCiAgICAgICAgMiA9PiAiV2FybmluZyIsCiAgICAgICAgMyA9PiAiSW5jaWRlbnQiCiAgICB9OwoKPWN1dAoKc3ViIEN1ckluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+SW5jaVN0YXRlRmlsdGVyVmFsdWVzR2V0KCVQYXJhbSk7Cn0KCj1oZWFkMiBEeW5hbWljRmllbGRGaWx0ZXJWYWx1ZXNHZXQoKQoKZ2V0IGEgbGlzdCBvZiBhIHNwZWNpZmljIGNvbmZpZyBpdGVtIGR5bmFtaWMgZmllbGQgdmFsdWVzIHdpdGhpbiB0aGUgZ2l2ZW4gY29uZmlnIGl0ZW1zIGxpc3QKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+RHluYW1pY0ZpZWxkRmlsdGVyVmFsdWVzR2V0KAogICAgICAgIElUU01Db25maWdJdGVtSURzID0+IFsyMywgMSwgNTYsIDc0XSwgICAgIyBhcnJheSByZWYgbGlzdCBvZiBjb25maWcgaXRlbSBJRHMKICAgICAgICBWYWx1ZVR5cGUgPT4gJ1RleHQnLCAgICAgICAgICAgICAjIFRleHQgfCBJbnRlZ2VyIHwgRGF0ZQogICAgICAgIEZpZWxkSUQgICA9PiAkRmllbGRJRCwgICAgICAgICAgICMgSUQgb2YgdGhlIGR5bmFtaWMgZmllbGQKICAgICk7CgogICAgcmV0dXJucwoKICAgICRWYWx1ZXMgPSB7CiAgICAgICAgVmFsdWVBID0+ICdWYWx1ZUEnLAogICAgICAgIFZhbHVlQiA9PiAnVmFsdWVCJywKICAgICAgICBWYWx1ZUMgPT4gJ1ZhbHVlQycKICAgIH07Cgo9Y3V0CgpzdWIgRHluYW1pY0ZpZWxkRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhJVFNNQ29uZmlnSXRlbUlEcyBWYWx1ZVR5cGUgRmllbGRJRCkpIHsKCiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJElUU01Db25maWdJdGVtSURTdHJpbmcgPSAkU2VsZi0+X0lUU01Db25maWdJdGVtSURTdHJpbmdHZXQoCiAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte0lUU01Db25maWdJdGVtSURzfSwKICAgICAgICBDb2x1bW5OYW1lICAgICAgICA9PiAnb2JqZWN0X2lkJywKICAgICk7CgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17SVRTTUNvbmZpZ0l0ZW1JRHN9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJVFNNQ29uZmlnSXRlbUlEcyBtdXN0IGJlIGFuIGFycmF5IHJlZiEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWx1ZVR5cGUgPSAndmFsdWVfdGV4dCc7CiAgICBpZiAoICRQYXJhbXtWYWx1ZVR5cGV9ICYmICRQYXJhbXtWYWx1ZVR5cGV9IGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgJFZhbHVlVHlwZSA9ICd2YWx1ZV9kYXRlJzsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1ZhbHVlVHlwZX0gJiYgJFBhcmFte1ZhbHVlVHlwZX0gZXEgJ0ludGVnZXInICkgewogICAgICAgICRWYWx1ZVR5cGUgPSAndmFsdWVfaW50JzsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PgogICAgICAgICAgICAiU0VMRUNUIERJU1RJTkNUKCRWYWx1ZVR5cGUpIgogICAgICAgICAgICAuICcgRlJPTSBkeW5hbWljX2ZpZWxkX3ZhbHVlJwogICAgICAgICAgICAuICcgV0hFUkUgZmllbGRfaWQgPSA/JwogICAgICAgICAgICAuICRJVFNNQ29uZmlnSXRlbUlEU3RyaW5nCiAgICAgICAgICAgIC4gIiBPUkRFUiBCWSAkVmFsdWVUeXBlIERFU0MiLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0ZpZWxkSUR9IF0sCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgICMgY2hlY2sgaWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgc3RvcmVkCiAgICAgICAgaWYgKAogICAgICAgICAgICBkZWZpbmVkICRSb3dbMF0KICAgICAgICAgICAgJiYgJFJvd1swXSBuZSAnJwogICAgICAgICAgICAmJiAhJERhdGF7ICRSb3dbMF0gfQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgaWYgKCAkVmFsdWVUeXBlIGVxICdEYXRlJyApIHsKCiAgICAgICAgICAgICAgICAjIGNsZWFudXAgdGltZSBzdGFtcHMgKHNvbWUgZGF0YWJhc2VzIGFyZSB1c2luZyBlLiBnLiAyMDA4LTAyLTI1IDIyOjAzOjAwLjAwMDAwMAogICAgICAgICAgICAgICAgIyBhbmQgMDAwMC0wMC0wMCAwMDowMDowMCB0aW1lIHN0YW1wcykKICAgICAgICAgICAgICAgIGlmICggJFJvd1swXSBlcSAnMDAwMC0wMC0wMCAwMDowMDowMCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFJvd1swXSA9IHVuZGVmOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFJvd1swXSA9fiBzL14oXGRcZFxkXGQtXGRcZC1cZFxkXHNcZFxkOlxkXGQ6XGRcZClcLi4rPyQvJDEvOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHN0b3JlIHRoZSByZXN1bHRzCiAgICAgICAgICAgICREYXRheyAkUm93WzBdIH0gPSAkUm93WzBdOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVEYXRhOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/ConfigItemACL.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUFDTDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcobm9uZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1BQ0wgLSBjb25maWcgaXRlbSBBQ0wgbGliCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBjb25maWcgaXRlbSBBQ0wgZnVuY3Rpb25zLgoKCj1oZWFkMiBDb25maWdJdGVtQWNsKCkKClJlc3RyaWN0cyB0aGUgRGF0YSBwYXJhbWV0ZXIgc2VudCB0byBhIHN1YnNldCBvZiBpdCwgZGVwZW5kaW5nIG9uIGEgZ3JvdXAgb2YgdXNlciBkZWZpZWQgcnVsZXMKY2FsbGVkIEFDTHMuIFRoZSByZWR1Y2VkIHN1YnNldCBjYW4gYmUgYWNjZXNzIGZyb20gQ29uZmlnSXRlbUFDTERhdGEoKSBpZiBSZXR1cm5UeXBlIHBhcmFtZXRlciBpcyBzZXQKdG86IENvbmZpZ0l0ZW0sIG9yIGluIENvbmZpZ0l0ZW1BQ0xBY3Rpb25EYXRhKCksIGlmIFJldHVyblR5cGUgQWN0aW9uIGlzIHVzZWQuCgpFYWNoIEFDTCBjYW4gY29udGFpbiBkaWZmZXJlbnQgcmVzdHJpY3Rpb25zIGZvciBkaWZmZXJlbnQgb2JqZWN0cyB0aGUgUmV0dXJuVHlwZSBwYXJhbWV0ZXIgZGVmaW5lcwp3aGljaCBvYmplY3QgaXMgY29uc2lkZXJlZCBmb3IgdGhpcyByZXN0cmljdGlvbnMsIGluIHRoZSBjYXNlIG9mIHRoZSBDb25maWcgSXRlbSBvYmplY3QgYSBzZWNvbmQKcGFyYW1ldGVyIGNhbGxlZCBSZXR1cm5TdWJ0eXBlIGlzIG5lZWRlZCwgdG8gc3BlY2lmeSB0aGUgY29uZmlnIGl0ZW0gYXR0cmlidXRlIHRvIGJlIHJlc3RyaWN0ZWQsIGxpa2U6CkM8IlRCRCI+LCBldGMuIFdoaWxlIGZvciB0aGUgcmVzdCBvZiB0aGUgb2JqZWN0cyBhICItIiB2YWx1ZSBtdXN0IGJlIHNldC4gVGhlIFJldHVyblR5cGUKYW5kIFJldHVyblN1YlR5cGUgbXVzdCBiZSBzZXQgYWNjb3JkaW5nIHRvIHRoZSBEYXRhIHBhcmFtZXRlciBzZW50LgoKVGhlIHJlc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgZGVmaW5lIHRoZSBtYXRjaGluZyBvcHRpb25zIGZvciB0aGUgQUNMIHJ1bGVzLgoKRXhhbXBsZSB0byByZXN0cmljdCBjb25maWcgaXRlbSBhY3Rpb25zOgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgRGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVmFsdWVzIHRvIHJlc3RyaWN0CiAgICAgICAgICAgIDEgPT4gQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQsCiAgICAgICAgICAgICMgLi4uCiAgICAgICAgfSwKCiAgICAgICAgQWN0aW9uICAgICAgICA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQnLCAgICMgT3B0aW9uYWwKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMywgICAgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbAogICAgICAgIER5bmFtaWNGaWVsZCAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9OYW1lWCA9PiAxMjMsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9OYW1lWiA9PiAnc29tZSB2YWx1ZScsCiAgICAgICAgfSwKCiAgICAgICAgUmV0dXJuVHlwZSAgICAgPT4gJ0FjdGlvbicsICAgICAgICAgICAgICAgICAgICMgVG8gbWF0Y2ggUG9zc2libGUsIFBvc3NpYmxlQWRkIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBQb3NzaWJsZU5vdCBrZXkgaW4gQUNMCiAgICAgICAgUmV0dXJuU3ViVHlwZSAgPT4gJy0nLCAgICAgICAgICAgICAgICAgICAgICAgICMgVG8gbWF0Y2ggUG9zc2libGUsIFBvc3NpYmxlQWRkIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBQb3NzaWJsZU5vdCBzdWIta2V5IGluIEFDTAoKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VySUQgPT4gMSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBmdW5jdGlvbgogICAgKTsKCm9yIHRvIHJlc3RyaWN0IGNvbmZpZyBpdGVtIHN0YXRlczoKCiAgICAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAxID0+ICduZXcnLAogICAgICAgICAgICAyID0+ICdvcGVuJywKICAgICAgICAgICAgIyAuLi4KICAgICAgICB9LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ1N0YXRlJywKICAgICAgICBVc2VySUQgICAgICAgID0+IDEyMywKICAgICk7CgpyZXR1cm5zOgogICAgJFN1Y2Nlc3MgPSAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGFuIEFDTCBtYXRjaGVzLCBvciBmYWxzZSBvdGhlcndpc2UuCgpJZiBBQ0wgbW9kdWxlcyBhcmUgY29uZmlndXJlZCBpbiB0aGUgQzxJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGU+IGNvbmZpZyBrZXksIHRoZXkgYXJlIGludm9rZWQKZHVyaW5nIHRoZSBjYWxsIHRvIEM8Q29uZmlnSXRlbUFjbD4uIFRoZSBjb25maWd1cmF0aW9uIG9mIGEgbW9kdWxlIGxvb2tzIGxpa2UgdGhpczoKCiAgICAgJENvbmZpZ09iamVjdC0+eydJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGUnfS0+eydUaGVOYW1lJ30gPSB7CiAgICAgICAgIE1vZHVsZSA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpBY2w6OlRoZUFjbE1vZHVsZScsCiAgICAgICAgIENoZWNrcyA9PiBbJ1RCRCddLAogICAgICAgICBSZXR1cm5UeXBlID0+ICdDb25maWdJdGVtJywKICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiBbJ1RCRCddLAogICAgIH07CgpFYWNoIHRpbWUgdGhlIEM8UmV0dXJuVHlwZT4gYW5kIG9uZSBvZiB0aGUgQzxSZXR1cm5TdWJUeXBlPiBlbnRyaWVzIGlzIGlkZW50aWNhbCB0byB0aGUgc2FtZQphcmd1bWVudHMgcGFzc2VkIHRvIEM8Q29uZmlnSXRlbUFjbD4sIHRoZSBtb2R1bGUgb2YgdGhlIG5hbWUgaW4gQzxNb2R1bGU+IGlzIGxvYWRlZCwgdGhlIEM8bmV3PiBtZXRob2QKaXMgY2FsbGVkIG9uIGl0LCBhbmQgdGhlbiB0aGUgQzxSdW4+IG1ldGhvZCBpcyBjYWxsZWQuCgpUaGUgQzxDaGVja3M+IGFycmF5IHJlZmVyZW5jZSBpbiB0aGUgY29uZmlndXJhdGlvbiBjb250cm9scyB3aGF0IGFyZ3VtZW50cyBhcmUgcGFzc2VkLiB0byB0aGUKQzxSdW4+IG1ldGhvZC4KVmFsaWQga2V5cyBhcmUgQzxGcm9udGVuZD4gYW5kIEM8Q29uZmlnSXRlbT4uCklmIGFueSBvZiB0aG9zZSBhcmUgcHJlc2VudCwgdGhlIEM8Q2hlY2tzPiBhcmd1bWVudCBwYXNzZWQgdG8gQzxSdW4+IGNvbnRhaW5zIGFuIGVudHJ5IHdpdGggdGhlIHNhbWUKbmFtZSwgYW5kIGFzIGEgdmFsdWUgdGhlIGFzc29jaWF0ZWQgZGF0YS4KClRoZSBDPFJ1bj4gbWV0aG9kIGNhbiBhZGQgZW50cmllcyB0byB0aGUgQzxBY2w+IHBhcmFtIGhhc2gsIHdoaWNoIGFyZSB0aGVuIGV2YWx1YXRlZCBhbG9uZyB3aXRoIGFsbApvdGhlciBBQ0wuIEl0IHNob3VsZCBvbmx5IGFkZCBlbnRyaWVzIHdob3NlIGNvbmRpdGlvbmFscyBjYW4gYmUgY2hlY2tlZCB3aXRoIHRoZSBkYXRhIHNwZWNpZmllZCBpbgp0aGUgQzxDaGVja3M+IGNvbmZpZ3VyYXRpb24gZW50cnkuCgpUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBDPFJ1bj4gbWV0aG9kIGlzIGlnbm9yZWQuCgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUFjbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSAmJiAhJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIG9yIEN1c3RvbWVyVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhSZXR1cm5TdWJUeXBlIFJldHVyblR5cGUgRGF0YSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRvIG5vdCBleGVjdXRlIEFDTHMgaWYgVXNlcklEIDEgaXMgdXNlZAogICAgcmV0dXJuIGlmICRQYXJhbXtVc2VySUR9ICYmICRQYXJhbXtVc2VySUR9ID09IDE7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJEFDTHMgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0NvbmZpZ0l0ZW1BY2wnKTsKICAgIG15ICRBY2xNb2R1bGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGUnKTsKCiAgICAjIGRvIG5vdCBleGVjdXRlIEFDTHMgaWYgbmVpdGhlciBDb25maWdJdGVtQWNsIG5vciBJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGUgaXMgY29uZmlndXJlZAogICAgaWYgKCAhJEFDTHMgJiYgISRBY2xNb2R1bGVzICkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGZpbmQgb3V0IHdoaWNoIGRhdGEgd2UgYWN0dWFsbHkgbmVlZAogICAgbXkgJUFwcGxpY2FibGVBY2xNb2R1bGVzOwogICAgbXkgJVJlcXVpcmVkQ2hlY2tzOwogICAgbXkgJENoZWNrQWxsID0gMDsKCiAgICBNT0RVTEVOQU1FOgogICAgZm9yIG15ICRNb2R1bGVOYW1lICggc29ydCBrZXlzICV7ICRBY2xNb2R1bGVzIC8vIHt9IH0gKSB7CiAgICAgICAgbXkgJE1vZHVsZSA9ICRBY2xNb2R1bGVzLT57JE1vZHVsZU5hbWV9OwoKICAgICAgICBpZiAoICRNb2R1bGUtPntSZXR1cm5UeXBlfSAmJiAkTW9kdWxlLT57UmV0dXJuVHlwZX0gbmUgJFBhcmFte1JldHVyblR5cGV9ICkgewogICAgICAgICAgICBuZXh0IE1PRFVMRU5BTUU7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRNb2R1bGUtPntSZXR1cm5TdWJUeXBlfSApIHsKCiAgICAgICAgICAgICMgVE9ETzogdGhpcyBsb29rcyBicm9rZW4uICRNb2R1bGUtPntSZXR1cm5TdWJUeXBlfSBpcyBhIGhhc2hyZWYsIHlldCB0aGUgdmFsdWUgaXMgZGVyZWZlcmVuY2VkIGFzIGFuIGFycmF5CiAgICAgICAgICAgIGlmICggcmVmKCAkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBuZXh0IE1PRFVMRU5BTUUgaWYgbm9uZSB7ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSBlcSAkXyB9CiAgICAgICAgICAgICAgICAgICAgQHsgJE1vZHVsZS0+e1JldHVyblN1YlR5cGV9IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBhIHNjYWxhciwgd2UgaG9wZSwgYnV0IGl0IGNvdWxkIGFsc28gYmUgYW4gYXJyYXkKICAgICAgICAgICAgICAgICMgVE9ETzogdGhpcyBmaWx0ZXIgbG9va3MgYnJva2VuCiAgICAgICAgICAgICAgICAjICEkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gaXMgZWl0aGVyIHF7fSBvciAxLCAob3IgISEwLCBhbmQgISExKQogICAgICAgICAgICAgICAgIyBzbyBpdCBpcyB1bmxpa2VseSB0aGF0IGEgc3RyaW5nIGNvbXBhcmlzb24gd291bGQgZ2l2ZSBhIHRydWUgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTU9EVUxFTkFNRSBpZiAoICEkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gKSBlcSAkUGFyYW17UmV0dXJuU3ViVHlwZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaGVyZSBvbmx5IG1vZHVsZXMgYXBwbGljYWJsZSB0byB0aGlzIEFDTCBpbnZvY2F0aW9uIHJlbWFpbgogICAgICAgICRBcHBsaWNhYmxlQWNsTW9kdWxlc3skTW9kdWxlTmFtZX0gPSAkTW9kdWxlOwoKICAgICAgICBpZiAoICRNb2R1bGUtPntDaGVja3N9ICYmIHJlZiggJE1vZHVsZS0+e0NoZWNrc30gKSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkUmVxdWlyZWRDaGVja3N7JF99ID0gMSBmb3IgQHsgJE1vZHVsZS0+e0NoZWNrc30gfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTW9kdWxlLT57Q2hlY2tzfSApIHsKICAgICAgICAgICAgJFJlcXVpcmVkQ2hlY2tzeyAkTW9kdWxlLT57Q2hlY2tzfSB9ID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRDaGVja0FsbCA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJUFwcGxpY2FibGVBY2xNb2R1bGVzICYmICEkQUNMcyAmJiAhJENoZWNrQWxsOwoKICAgIGZvciBteSAkQUNMICggdmFsdWVzICV7ICRBQ0xzIC8vIHt9IH0gKSB7CiAgICAgICAgZm9yIG15ICRTb3VyY2UgKHF3LyBQcm9wZXJ0aWVzIFByb3BlcnRpZXNEYXRhYmFzZS8pIHsKICAgICAgICAgICAgZm9yIG15ICRDaGVjayAoIHNvcnQga2V5cyAleyAkQUNMLT57JFNvdXJjZX0gfSApIHsKICAgICAgICAgICAgICAgIG15ICRDbGVhbmVkVXAgPSAkQ2hlY2s7CiAgICAgICAgICAgICAgICAkQ2xlYW5lZFVwID1+IHMvKD86SUR8TmFtZXxMb2dpbikkLy87CiAgICAgICAgICAgICAgICAkQ2xlYW5lZFVwID1+IHMvXig/Ok5leHR8TmV3fE9sZCkvLzsKICAgICAgICAgICAgICAgICRSZXF1aXJlZENoZWNrc3skQ2xlYW5lZFVwfSA9IDE7CiAgICAgICAgICAgICAgICBpZiAoICRDaGVjayBlcSAnQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYoICRBQ0wtPntQcm9wZXJ0aWVzfXskQ2hlY2t9ICkgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyQ2hlY2sgKCBzb3J0IGtleXMgJXsgJEFDTC0+eyRTb3VyY2V9eyRDaGVja30gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJbm5lckNoZWNrID1+IHMvKD86SUR8TmFtZXxMb2dpbikkLy87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5uZXJDaGVjayA9fiBzL14oPzpOZXh0fE5ld3xPbGQpLy87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUmVxdWlyZWRDaGVja3N7JElubmVyQ2hlY2t9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdhdGhlciBhbGwgcmVxdWlyZWQgZGF0YSB0byBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBBQ0xzCiAgICBteSAkQ2hlY2tSZXN1bHQgPSAkU2VsZi0+X0dldENoZWNrcygKICAgICAgICAlUGFyYW0sCiAgICAgICAgQ2hlY2tBbGwgICAgICAgPT4gJENoZWNrQWxsLAogICAgICAgIFJlcXVpcmVkQ2hlY2tzID0+IFwlUmVxdWlyZWRDaGVja3MsCiAgICApOwogICAgbXkgJUNoZWNrcyAgICAgICAgID0gJXsgJENoZWNrUmVzdWx0LT57Q2hlY2tzfSAgICAgICAgIHx8IHt9IH07CiAgICBteSAlQ2hlY2tzRGF0YWJhc2UgPSAleyAkQ2hlY2tSZXN1bHQtPntDaGVja3NEYXRhYmFzZX0gfHwge30gfTsKCiAgICAjIG5vdGUgdGhhdCAlQWNscyBpcyBqdXN0IHRoZSBkZXJlZmVyZW5jZWQgJEFDTHMKICAgIG15ICVBY2xzOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0NvbmZpZ0l0ZW1BY2wnKSApIHsKICAgICAgICAlQWNscyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnQ29uZmlnSXRlbUFjbCcpIH07CiAgICB9CgogICAgIyBjaGVjayBBQ0wgbW9kdWxlCiAgICBNT0RVTEU6CiAgICBmb3IgbXkgJE1vZHVsZU5hbWUgKCBzb3J0IGtleXMgJUFwcGxpY2FibGVBY2xNb2R1bGVzICkgewoKICAgICAgICBteSAkTW9kdWxlID0gJEFwcGxpY2FibGVBY2xNb2R1bGVzeyRNb2R1bGVOYW1lfTsKCiAgICAgICAgbmV4dCBNT0RVTEUgaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRNb2R1bGUtPntNb2R1bGV9ICk7CgogICAgICAgIG15ICRHZW5lcmljID0gJE1vZHVsZS0+e01vZHVsZX0tPm5ldygpOwoKICAgICAgICAkR2VuZXJpYy0+UnVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjbCAgICA9PiBcJUFjbHMsCiAgICAgICAgICAgIENoZWNrcyA9PiBcJUNoZWNrcywKICAgICAgICAgICAgQ29uZmlnID0+ICRNb2R1bGUsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VkIGRhdGEKICAgIG15ICVEYXRhOwogICAgaWYgKCByZWYgJFBhcmFte0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJFBhcmFte0RhdGF9IH07CiAgICB9CgogICAgbXkgJU5ld0RhdGE7CiAgICBteSAkVXNlTmV3TWFzdGVyUGFyYW1zID0gMDsKCiAgICBpZiAoICRQYXJhbXtSZXR1cm5UeXBlfSBlcSAnQWN0aW9uJyApIHsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfSApICkgewoKICAgICAgICAgICAgIyB1c2UgRGF0YSBpZiBpcyBhIHN0cmluZyBhbmQgaXQgaXMgbm90ICctJwogICAgICAgICAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtEYXRhfSApICYmICRQYXJhbXtEYXRhfSBuZSAnLScgKSB7CiAgICAgICAgICAgICAgICAlRGF0YSA9ICggMSA9PiAkUGFyYW17RGF0YX0gKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgdXNlIHRoZSBwYXJhbSBBY3Rpb24KICAgICAgICAgICAgZWxzaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17QWN0aW9ufSApICkgewogICAgICAgICAgICAgICAgJURhdGEgPSAoIDEgPT4gJFBhcmFte0FjdGlvbn0gKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJU5ld0FjdGlvbkRhdGEgPSAlRGF0YTsKCiAgICAgICAgIyBjYWxjdWxhdGUgZGVmYXVsdCBjb25maWcgaXRlbSBhY3Rpb24gQUNMIGRhdGEKICAgICAgICBteSBAQWN0aW9uc1RvRGVsZXRlOwogICAgICAgIG15ICREZWZhdWx0QWN0aW9uRGF0YSA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW1BQ0w6OkRlZmF1bHQ6OkFjdGlvbicpIHx8IHt9OwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREZWZhdWx0QWN0aW9uRGF0YSkgKSB7CgogICAgICAgICAgICBmb3IgbXkgJEluZGV4ICggc29ydCBrZXlzICVOZXdBY3Rpb25EYXRhICkgewoKICAgICAgICAgICAgICAgIG15ICRBY3Rpb24gPSAkTmV3QWN0aW9uRGF0YXskSW5kZXh9OwogICAgICAgICAgICAgICAgaWYgKCAhJERlZmF1bHRBY3Rpb25EYXRhLT57JEluZGV4fSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBBY3Rpb25zVG9EZWxldGUsICRBY3Rpb247CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT57RGVmYXVsdENvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhfSA9IFwlTmV3QWN0aW9uRGF0YTsKCiAgICAgICAgZm9yIG15ICRBY3Rpb24gKEBBY3Rpb25zVG9EZWxldGUpIHsKICAgICAgICAgICAgZGVsZXRlICRTZWxmLT57RGVmYXVsdENvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhfS0+eyRBY3Rpb259OwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBOZXdUbXBEYXRhIGFmdGVyIFBvc3NpYmxlIERhdGEgcmVjYWxjdWxhdGlvbiBvbiBSZXR1cm5UeXBlIEFjdGlvbgogICAgbXkgJU5ld1RtcERhdGEgPSAlRGF0YTsKCiAgICAjIGdldCB0aGUgZGVidWcgcGFyYW1ldGVycwogICAgJFNlbGYtPntBQ0xEZWJ1Z30gICAgICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW1BQ0w6OkRlYnVnOjpFbmFibGVkJykgICAgIHx8IDA7CiAgICAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbUFDTDo6RGVidWc6OkxvZ1ByaW9yaXR5JykgfHwgJ2RlYnVnJzsKCiAgICBteSAkQUNMRGVidWdDb25maWdGaWx0ZXJzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbUFDTDo6RGVidWc6OkZpbHRlcicpIHx8IHt9OwogICAgZm9yIG15ICRGaWx0ZXJOYW1lICggc29ydCBrZXlzICV7JEFDTERlYnVnQ29uZmlnRmlsdGVyc30gKSB7CiAgICAgICAgbXkgJUZpbHRlciA9ICV7ICRBQ0xEZWJ1Z0NvbmZpZ0ZpbHRlcnMtPnskRmlsdGVyTmFtZX0gfTsKICAgICAgICBmb3IgbXkgJEZpbHRlckl0ZW0gKCBzb3J0IGtleXMgJUZpbHRlciApIHsKICAgICAgICAgICAgJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9LT57JEZpbHRlckl0ZW19ID0gJEZpbHRlcnskRmlsdGVySXRlbX07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZGVidWcgZmlsdGVycyBhcHBseSAoY29uZmlnIGl0ZW0pCiAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewoKICAgICAgICBERUJVR0ZJTFRFUjoKICAgICAgICBmb3IgbXkgJERlYnVnRmlsdGVyICggc29ydCBrZXlzICV7ICRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfSB9ICkgewogICAgICAgICAgICBuZXh0IERFQlVHRklMVEVSIGlmICREZWJ1Z0ZpbHRlciBlcSAnQUNMTmFtZSc7CiAgICAgICAgICAgIG5leHQgREVCVUdGSUxURVIgaWYgISRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfS0+eyREZWJ1Z0ZpbHRlcn07CgogICAgICAgICAgICBpZiAoICREZWJ1Z0ZpbHRlciA9fiBtezxPVE9CT19JVFNNQ09ORklHSVRFTV8oW14+XSspPn1tc3ggKSB7CiAgICAgICAgICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1QYXJhbSA9ICQxOwoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRJVFNNQ29uZmlnSXRlbVBhcmFtfQogICAgICAgICAgICAgICAgICAgICYmICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRJVFNNQ29uZmlnSXRlbVBhcmFtfQogICAgICAgICAgICAgICAgICAgICYmICRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfS0+eyREZWJ1Z0ZpbHRlcn0gbmUKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0tPnskSVRTTUNvbmZpZ0l0ZW1QYXJhbX0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntBQ0xEZWJ1Z30gPSAwOwogICAgICAgICAgICAgICAgICAgIGxhc3QgREVCVUdGSUxURVI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyByZW1lbWJlciBsYXN0IEFDTERlYnVnIHN0YXRlIChiZWZvcmUgQUNMcyBsb29wKQogICAgJFNlbGYtPntBQ0xEZWJ1Z1JlY292ZXJ5fSA9ICRTZWxmLT57QUNMRGVidWd9OwoKICAgIEFDTFJVTEVTOgogICAgZm9yIG15ICRBY2wgKCBzb3J0IGtleXMgJUFjbHMgKSB7CgogICAgICAgICMgY2hlY2sgaWYgZGVidWcgZmlsdGVycyBhcHBseSAoQUNMKSAob25seSBpZiBBQ0xEZWJ1ZyBpcyBhY3RpdmUpCiAgICAgICAgaWYgKAogICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnUmVjb3Zlcnl9CiAgICAgICAgICAgICYmIGRlZmluZWQgJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9LT57J0FDTE5hbWUnfQogICAgICAgICAgICAmJiAkU2VsZi0+e0FDTERlYnVnRmlsdGVyc30tPnsnQUNMTmFtZSd9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICMgaWYgbm90IG1hdGNoIGN1cnJlbnQgQUNMIGRpc2FibGUgQUNMRGVidWcKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnRmlsdGVyc30tPnsnQUNMTmFtZSd9IG5lICRBY2wgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnfSA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVlbmFibGUgb3RoZXJ3aXNlICh3ZSBhcmUgc3VyZSBpdCB3YXMgZW5hYmxlZCBiZWZvcmUpCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntBQ0xEZWJ1Z30gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlU3RlcCA9ICV7ICRBY2xzeyRBY2x9IH07CgogICAgICAgICMgY2hlY2sgZm9yY2UgbWF0Y2gKICAgICAgICBteSAkRm9yY2VNYXRjaDsKICAgICAgICBpZiAoCiAgICAgICAgICAgICFJc0hhc2hSZWZXaXRoRGF0YSggJFN0ZXB7UHJvcGVydGllc30gKQogICAgICAgICAgICAmJiAhSXNIYXNoUmVmV2l0aERhdGEoICRTdGVwe1Byb3BlcnRpZXNEYXRhYmFzZX0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRm9yY2VNYXRjaCA9IDE7CiAgICAgICAgfQoKICAgICAgICBteSAkUHJvcGVydGllc01hdGNoOwogICAgICAgIG15ICRQcm9wZXJ0aWVzTWF0Y2hUcnk7CiAgICAgICAgbXkgJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoOwogICAgICAgIG15ICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaFRyeTsKICAgICAgICBteSAkVXNlTmV3UGFyYW1zID0gMDsKCiAgICAgICAgZm9yIG15ICRQcm9wZXJ0aWVzSGFzaCAocXcoUHJvcGVydGllcyBQcm9wZXJ0aWVzRGF0YWJhc2UpKSB7CgogICAgICAgICAgICBteSAlVXNlZENoZWNrcyA9ICVDaGVja3M7CiAgICAgICAgICAgIGlmICggJFByb3BlcnRpZXNIYXNoIGVxICdQcm9wZXJ0aWVzRGF0YWJhc2UnICkgewogICAgICAgICAgICAgICAgJVVzZWRDaGVja3MgPSAlQ2hlY2tzRGF0YWJhc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IG1hdGNoIHBhcmFtcwogICAgICAgICAgICBteSAkTWF0Y2ggICAgPSAxOwogICAgICAgICAgICBteSAkTWF0Y2hUcnkgPSAwOwogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkU3RlcHskUHJvcGVydGllc0hhc2h9IH0gKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJERhdGEgKCBzb3J0IGtleXMgJXsgJFN0ZXB7JFByb3BlcnRpZXNIYXNofS0+eyRLZXl9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUHJvcGVydHkgPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIEB7ICRTdGVweyRQcm9wZXJ0aWVzSGFzaH0tPnskS2V5fS0+eyREYXRhfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkVXNlZENoZWNrc3skS2V5fS0+eyREYXRhfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoSXRlbSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHN1YnN0ciggJEl0ZW0sIDAsIGxlbmd0aCAnW05vdCcgKSBlcSAnW05vdCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoSXRlbSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hlZEFycmF5RGF0YUl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUlJBWURBVEFJVEVNOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBcnJheURhdGFJdGVtICggQHsgJFVzZWRDaGVja3N7JEtleX0tPnskRGF0YX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2hlZEFycmF5RGF0YUl0ZW0gPSAkQXJyYXlEYXRhSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTG9vcE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkQXJyYXlEYXRhSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJExvb3BNYXRjaFJlc3VsdC0+e1NraXB9ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaEl0ZW0gPSAkTG9vcE1hdGNoUmVzdWx0LT57TWF0Y2h9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IEFSUkFZREFUQUlURU07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRNYXRjaEl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2hQcm9wZXJ0eSA9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgJFByb3BlcnRpZXNIYXNoOickS2V5LT4kRGF0YScgTWF0Y2hlZEFSUkFZICgkSXRlbSBlcSAkTWF0Y2hlZEFycmF5RGF0YUl0ZW0pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRVc2VkQ2hlY2tzeyRLZXl9LT57JERhdGF9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICREYXRhSXRlbSAgICA9ICRVc2VkQ2hlY2tzeyRLZXl9LT57JERhdGF9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICRJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGFJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2hQcm9wZXJ0eSA9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVidWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyAkUHJvcGVydGllc0hhc2g6JyRLZXktPiREYXRhJyBNYXRjaGVkICgkSXRlbSBlcSAkVXNlZENoZWNrc3skS2V5fS0+eyREYXRhfSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICEkTWF0Y2hQcm9wZXJ0eSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoID0gMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJE1hdGNoVHJ5ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBmb3JjZSBvcHRpb24KICAgICAgICAgICAgaWYgKCRGb3JjZU1hdGNoKSB7CiAgICAgICAgICAgICAgICAkTWF0Y2ggICAgPSAxOwogICAgICAgICAgICAgICAgJE1hdGNoVHJ5ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUHJvcGVydGllc0hhc2ggZXEgJ1Byb3BlcnRpZXMnICkgewogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNNYXRjaCAgICA9ICRNYXRjaDsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzTWF0Y2hUcnkgPSAkTWF0Y2hUcnk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2ggICAgPSAkTWF0Y2g7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2hUcnkgPSAkTWF0Y2hUcnk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgaWYgcHJvcGVydGllcyBpcyBtaXNzaW5nCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkU3RlcHtQcm9wZXJ0aWVzfSApICkgewogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNNYXRjaCAgICA9ICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaDsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzTWF0Y2hUcnkgPSAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2hUcnk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgaWYgcHJvcGVydGllcyBkYXRhYmFzZSBpcyBtaXNzaW5nCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkU3RlcHtQcm9wZXJ0aWVzRGF0YWJhc2V9ICkgKSB7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2ggICAgPSAkUHJvcGVydGllc01hdGNoOwogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoVHJ5ID0gJFByb3BlcnRpZXNNYXRjaFRyeTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB0aGUgZm9sbG93aW5nIGxvZ2ljIHNob3VsZCBiZSBhcHBsaWVkIHRvIGNhbGN1bGF0ZSBpZiBhbiBBQ0wgbWF0Y2hlczoKICAgICAgICAjIGlmIGJvdGggUHJvcGVydGllcyBhbmQgUHJvcGVydGllc0RhdGFiYXNlIG1hdGNoID0+IG1hdGNoCiAgICAgICAgIyBpZiBQcm9wZXJ0aWVzIG1hdGNoZXMsIGFuZCBQcm9wZXJ0aWVzRGF0YWJhc2UgZG9lcyBub3QgbWF0Y2ggPT4gbm8gbWF0Y2gKICAgICAgICAjIGlmIFByb3BlcnRpZXNEYXRhYmFzZSBtYXRjaGVzLCBidXQgUHJvcGVydGllcyBkb2VzIG5vdCBtYXRjaCA9PiBubyBtYXRjaAogICAgICAgICMgaWYgUHJvcGVydGllc0RhdGFiYXNlIG1hdGNoZXMsIGFuZCBQcm9wZXJ0aWVzIGlzIG1pc3NpbmcgPT4gbWF0Y2gKICAgICAgICAjIGlmIFByb3BlcnRpZXMgbWF0Y2hlcywgYW5kIFByb3BlcnRpZXNEYXRhYmFzZSBpcyBtaXNzaW5nID0+IG1hdGNoLgogICAgICAgIG15ICRNYXRjaDsKICAgICAgICBpZiAoICRQcm9wZXJ0aWVzTWF0Y2ggJiYgJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoICkgewogICAgICAgICAgICAkTWF0Y2ggPSAxOwogICAgICAgIH0KCiAgICAgICAgbXkgJE1hdGNoVHJ5OwogICAgICAgIGlmICggJFByb3BlcnRpZXNNYXRjaFRyeSAmJiAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2hUcnkgKSB7CiAgICAgICAgICAgICRNYXRjaFRyeSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGRlYnVnIGxvZwogICAgICAgIGlmICggJE1hdGNoICYmICRNYXRjaFRyeSApIHsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIE1hdGNoZWQgZm9yIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlU3BlY2lhbFJldHVyblR5cGVzID0gKAogICAgICAgICAgICBBY3Rpb24gICAgICAgICA9PiAxLAogICAgICAgICAgICBQcm9jZXNzICAgICAgICA9PiAxLAogICAgICAgICAgICBBY3Rpdml0eURpYWxvZyA9PiAxLAogICAgICAgICAgICBGb3JtICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBGb3JtU3RkICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggJFNwZWNpYWxSZXR1cm5UeXBlc3sgJFBhcmFte1JldHVyblR5cGV9IH0gKSB7CgogICAgICAgICAgICAjIGJ1aWxkIG5ldyBTcGVjaWFsIFJldHVyblR5cGUgZGF0YSBoYXNoIChQcm9jZXNzTWFuYWdlbWVudCkKICAgICAgICAgICAgIyBmb3IgU3BlY2lhbCBSZXR1cm5UeXBlIFN0ZXB7UG9zc2libGV9CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJUNoZWNrcyB8fCAlQ2hlY2tzRGF0YWJhc2UgKQogICAgICAgICAgICAgICAgJiYgJE1hdGNoCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2hUcnkKICAgICAgICAgICAgICAgICYmICRTdGVwe1Bvc3NpYmxlfS0+eyAkUGFyYW17UmV0dXJuVHlwZX0gfQogICAgICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU3RlcHtQb3NzaWJsZX0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkVXNlTmV3UGFyYW1zID0gMTsKCiAgICAgICAgICAgICAgICAjIHJlc2V0IHJldHVybiBkYXRhIGFzIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGgganVzdCB0aGUgUG9zc2libGUgSXRlbXMgZXhjbHVkZWQgdGhlCiAgICAgICAgICAgICAgICAjICAgIG9uZXMgdGhhdCBhcmUgbm90IGluIHRoZSBwb3NzaWJsZSBzZWN0aW9uLCB0aGlzIGlzIHRoZSBzYW1lIGFzIHJlbW92ZSBhbGwKICAgICAgICAgICAgICAgICMgICAgbWlzc2luZyBpdGVtcyBmcm9tIHRoZSBvcmlnaW5hbCBkYXRhCiAgICAgICAgICAgICAgICAlTmV3VG1wRGF0YSA9ICgpOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUmVzZXQgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nJyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIGxpc3QKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGV9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXRjaFJlc3VsdCA9ICRTZWxmLT5fQ29tcGFyZU1hdGNoV2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICROZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRheyRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDEKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWF0Y2hSZXN1bHQtPntNYXRjaH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3VG1wRGF0YXskSUR9ID0gJERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGUgcGFyYW0gJyREYXRheyRJRH0nIGFkZGVkIHRvIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGUgcGFyYW0gJyREYXRheyRJRH0nIHNraXBwZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZm9yIFNwZWNpYWwgUmV0dXJuVHlwZSBTdGVwe1Bvc3NpYmxlQWRkfQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZUFkZH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0KICAgICAgICAgICAgICAgICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJFN0ZXB7UG9zc2libGVBZGR9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZUFkZDonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBwb3NzaWJsZSBhZGQgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXcgKCBAeyAkU3RlcHtQb3NzaWJsZUFkZH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJE5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGF7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdUbXBEYXRheyRJRH0gPSAkRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZUFkZCBwYXJhbSAnJERhdGF7JElEfScgYWRkZWQgdG8gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZUFkZCBwYXJhbSAnJERhdGF7JElEfScgc2tpcHBlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBmb3IgU3BlY2lhbCBTdGVwe1Bvc3NpYmxlTm90fQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZU5vdH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0KICAgICAgICAgICAgICAgICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJFN0ZXB7UG9zc2libGVOb3R9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZU5vdDonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBub3QgcG9zc2libGUgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2ggPSAxOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGVOb3R9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMb29wTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YXskSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJExvb3BNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJE1hdGNoICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVOb3QgcGFyYW0gJyREYXRheyRJRH0nIHJlbW92ZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICROZXdUbXBEYXRheyRJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE5ld1RtcERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlTm90IHBhcmFtICckRGF0YXskSUR9JyBsZWF2ZWQgZm9yIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNpZiAoICRQYXJhbXtSZXR1cm5UeXBlfSBlcSAnQ29uZmlnSXRlbScgKSB7CgogICAgICAgICAgICAjIGJ1aWxkIG5ldyBjb25maWcgaXRlbSBkYXRhIGhhc2gKICAgICAgICAgICAgIyBTdGVwIENvbmZpZ0l0ZW0gUG9zc2libGUgKFJlc2V0cyBXaGl0ZSBsaXN0KQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZX0tPntDb25maWdJdGVtfS0+eyAkUGFyYW17UmV0dXJuU3ViVHlwZX0gfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkVXNlTmV3UGFyYW1zID0gMTsKCiAgICAgICAgICAgICAgICAjIHJlc2V0IHJldHVybiBkYXRhIGFzIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGgganVzdCB0aGUgUG9zc2libGUgSXRlbXMgZXhjbHVkZWQgdGhlIG9uZXMKICAgICAgICAgICAgICAgICMgdGhhdCBhcmUgbm90IGluIHRoZSBwb3NzaWJsZSBzZWN0aW9uLCB0aGlzIGlzIHRoZSBzYW1lIGFzIHJlbW92ZSBhbGwgbWlzc2luZyBpdGVtcyBmcm9tCiAgICAgICAgICAgICAgICAjIHRoZSBvcmlnaW5hbCBkYXRhCiAgICAgICAgICAgICAgICAlTmV3VG1wRGF0YSA9ICgpOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUmVzZXQgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nJyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIGxpc3QKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGV9LT57Q29uZmlnSXRlbX0tPnsgJFBhcmFte1JldHVyblN1YlR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJE5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGF7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdUbXBEYXRheyRJRH0gPSAkRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZSBwYXJhbSAnJERhdGF7JElEfScgYWRkZWQgdG8gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZSBwYXJhbSAnJERhdGF7JElEfScgc2tpcHBlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTdGVwIENvbmZpZ0l0ZW0gUG9zc2libGVBZGQgKEFkZCBuZXcgb3B0aW9ucyB0byB0aGUgd2hpdGUgbGlzdCkKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKCAlQ2hlY2tzIHx8ICVDaGVja3NEYXRhYmFzZSApCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2gKICAgICAgICAgICAgICAgICYmICRNYXRjaFRyeQogICAgICAgICAgICAgICAgJiYgJFN0ZXB7UG9zc2libGVBZGR9LT57Q29uZmlnSXRlbX0tPnsgJFBhcmFte1JldHVyblN1YlR5cGV9IH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJFVzZU5ld1BhcmFtcyA9IDE7CgogICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgVXNlZCB3aXRoIFBvc3NpYmxlQWRkOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggc29ydCBrZXlzICVEYXRhICkgewoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE5ldyAoIEB7ICRTdGVwe1Bvc3NpYmxlQWRkfS0+e0NvbmZpZ0l0ZW19LT57ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXRjaFJlc3VsdCA9ICRTZWxmLT5fQ29tcGFyZU1hdGNoV2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICROZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRheyRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDEKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWF0Y2hSZXN1bHQtPntNYXRjaH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3VG1wRGF0YXskSUR9ID0gJERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVBZGQgcGFyYW0gJyREYXRheyRJRH0nIGFkZGVkIHRvIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVBZGQgcGFyYW0gJyREYXRheyRJRH0nIHNraXBwZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU3RlcCBDb25maWdJdGVtIFBvc3NpYmxlTm90IChyZW1vdmVzIG9wdGlvbnMgZnJvbSB3aGl0ZSBsaXN0KQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZU5vdH0tPntDb25maWdJdGVtfS0+eyAkUGFyYW17UmV0dXJuU3ViVHlwZX0gfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkVXNlTmV3UGFyYW1zID0gMTsKCiAgICAgICAgICAgICAgICAjIGRlYnVnIGxvZwogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBVc2VkIHdpdGggUG9zc2libGVOb3Q6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgbm90IHBvc3NpYmxlIGxpc3QKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoID0gMTsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE5ldyAoIEB7ICRTdGVwe1Bvc3NpYmxlTm90fS0+e0NvbmZpZ0l0ZW19LT57ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMb29wTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YXskSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJExvb3BNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJE1hdGNoICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVOb3QgcGFyYW0gJyREYXRheyRJRH0nIHJlbW92ZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICROZXdUbXBEYXRheyRJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE5ld1RtcERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlTm90IHBhcmFtICckRGF0YXskSUR9JyBsZWF2ZWQgZm9yIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHRvIG5ldyBwYXJhbXMgaWYgZ2l2ZW4KICAgICAgICBpZiAoJFVzZU5ld1BhcmFtcykgewogICAgICAgICAgICAlTmV3RGF0YSAgICAgICAgICAgID0gJU5ld1RtcERhdGE7CiAgICAgICAgICAgICRVc2VOZXdNYXN0ZXJQYXJhbXMgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyByZXR1cm4gbmV3IHBhcmFtcyBpZiBzdG9wIGFmdGVyIHRoaXMgc3RlcAogICAgICAgIGlmICggJFVzZU5ld1BhcmFtcyAmJiAkU3RlcHtTdG9wQWZ0ZXJNYXRjaH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57Q29uZmlnSXRlbUFjbERhdGF9ID0gXCVOZXdEYXRhOwoKICAgICAgICAgICAgIyBpZiB3ZSBzdG9wIGFmdGVyIHRoZSBmaXJzdCBtYXRjaAogICAgICAgICAgICAjIGV4aXQgdGhlIEFDTFJVTEVTIGxvb3AKICAgICAgICAgICAgbGFzdCBBQ0xSVUxFUzsKICAgICAgICB9CiAgICB9CgogICAgIyByZXR1cm4gaWYgbm8gbmV3IHBhcmFtIGV4aXN0cwogICAgcmV0dXJuIGlmICEkVXNlTmV3TWFzdGVyUGFyYW1zOwoKICAgICRTZWxmLT57Q29uZmlnSXRlbUFjbERhdGF9ID0gXCVOZXdEYXRhOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUFjbERhdGEoKQoKcmV0dXJuIHRoZSBjdXJyZW50IEFDTCBkYXRhIGhhc2ggYWZ0ZXIgQ29uZmlnSXRlbUFjbCgpCgogICAgbXkgJUFjbCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BY2xEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICV7ICRTZWxmLT57Q29uZmlnSXRlbUFjbERhdGF9IHx8IHt9IH07Cn0KCj1oZWFkMiBDb25maWdJdGVtQWNsQWN0aW9uRGF0YSgpCgpyZXR1cm4gdGhlIGN1cnJlbnQgQUNMIGFjdGlvbiBkYXRhIGhhc2ggYWZ0ZXIgQ29uZmlnSXRlbUFjbCgpCgogICAgbXkgJUFjbEFjdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsQWN0aW9uRGF0YSgpOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ0l0ZW1BY2xEYXRhfSApIHsKICAgICAgICByZXR1cm4gJXsgJFNlbGYtPntDb25maWdJdGVtQWNsRGF0YX0gfTsKICAgIH0KICAgIHJldHVybiAleyAkU2VsZi0+e0RlZmF1bHRDb25maWdJdGVtQWN0aW9uRGF0YX0gfHwge30gfTsKfQoKPWJlZ2luIEludGVybmFsOgoKPWN1dAoKPWhlYWQyIF9HZXRDaGVja3MoKQoKY3JlYXRlcyB0d28gY2hlY2sgaGFzaGVzIChvbmUgZm9yIGN1cnJlbnQgZGF0YSB1cGRhdGFibGUgdmlhIEFKQVggcmVmcmVzaGVzIGFuZCBhbm90aGVyIGZvcgpzdGF0aWMgY29uZmlnIGl0ZW0gZGF0YSBzdG9yZWQgaW4gdGhlIERCKSB3aXRoIHRoZSByZXF1aXJlZCBkYXRhIHRvIHVzZSBhcyBhIGJhc2lzIHRvIG1hdGNoIHRoZSBBQ0xzCgogICAgbXkgJENoZWNrUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9HZXRDaGVja3MoCiAgICAgICAgQ2hlY2tBbGwgPT4gJzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICBSZXF1aXJlZENoZWNrcyA9PiAkUmVxdWlyZWRDaGVja0hhc2hSZWYsICAgICAgIyBPcHRpb25hbCBhIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgYXR0cmlidXRlcyB0byBnYXRoZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgZS4gZy4gVXNlciA9PiAxLCB3aWxsIGZldGNoIGFsbCB1c2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UsIHRoaXMgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgIHdpbGwgYmUgdHJpZWQgdG8gbWF0Y2ggd2l0aCBjdXJyZW50IEFDTHMKICAgICAgICBBY3Rpb24gICAgICAgID0+ICdBZ2VudElUU01Db25maWdJdGVtWm9vbScsICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+IDEyMywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVaID0+ICdzb21lIHZhbHVlJywKICAgICAgICB9LAoKICAgICAgICBSZXNwb25zaWJsZUlEICAgID0+IDEyMywgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbAogICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsLCBSZXNwb25zaWJsZUlEIG9yIE5ld1Jlc3BvbnNpYmxlSUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGNhbiBiZSB1c2VkIGFuZCB0aGV5IGJvdGggcmVmZXJzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgIFJlc3BvbnNpYmxlSUQKICAgICAgICBSZXNwb25zaWJsZSAgICAgID0+ICdzb21lIHVzZXIgbG9naW4nICAgICAgICAgIyBPcHRpb25hbAoKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VySUQgPT4gMSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBmdW5jdGlvbgogICAgKTsKCnJldHVybnM6CiAgICAkQ2hlY2tzUmVzdWx0ID0gewogICAgICAgIENoZWNrcyA9PiB7CiAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICMgLi4uCiAgICAgICAgfSwKICAgICAgICBDaGVja3NEYXRhYmFzZSA9PgogICAgICAgICAgICAjIC4uLgogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgICAgICAgICAjIC4uLgogICAgICAgICAgICB9LAogICAgICAgICAgICAjIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIF9HZXRDaGVja3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2hlY2tBbGwgICAgICAgPSAkUGFyYW17Q2hlY2tBbGx9OwogICAgbXkgJVJlcXVpcmVkQ2hlY2tzID0gJXsgJFBhcmFte1JlcXVpcmVkQ2hlY2tzfSB9OwoKICAgICMgZ2V0IHVzZWQgaW50ZXJmYWNlIGZvciBwcm9jZXNzIG1hbmFnZW1lbnQgY2hlY2tzCiAgICBteSAkSW50ZXJmYWNlID0gJ0FnZW50SW50ZXJmYWNlJzsKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRJbnRlcmZhY2UgPSAnQ3VzdG9tZXJJbnRlcmZhY2UnOwogICAgfQoKICAgIG15ICVDaGVja3M7CiAgICBteSAlQ2hlY2tzRGF0YWJhc2U7CgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSApIHsKICAgICAgICAkQ2hlY2tze0Zyb250ZW5kfSA9IHsKICAgICAgICAgICAgQWN0aW9uID0+ICRQYXJhbXtBY3Rpb259LAogICAgICAgIH07CiAgICAgICAgJENoZWNrc0RhdGFiYXNle0Zyb250ZW5kfSA9IHsKICAgICAgICAgICAgQWN0aW9uID0+ICRQYXJhbXtBY3Rpb259LAogICAgICAgIH07CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyB1c2UgY29uZmlnIGl0ZW0gZGF0YSBpZiBjb25maWcgaXRlbSBpZCBpcyBnaXZlbgogICAgIyBkbyB0aGF0IGFsd2F5cywgZXZlbiBpZiAkUmVxdWlyZWRDaGVja3N7Q29uZmlnSXRlbX0gaXMgbm90IHRoYXQKICAgICMgKGJlY2F1c2UgdG9vIG11Y2ggc3R1ZmYgZGVwZW5kcyBvbiBpdCkKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0gPSAkQ29uZmlnSXRlbTsKCiAgICAgICAgIyBrZWVwIGRhdGFiYXNlIGNvbmZpZyBpdGVtIGRhdGEgc2VwYXJhdGVkIHNpbmNlIHRoZSByZWZlcmVuY2UgaXMgYWZmZWN0ZWQgYmVsb3cKICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0gPSBcJXskQ29uZmlnSXRlbX07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBtYWtlIGEgcmVhc29uYWJsZSBhdHRlbXB0IHRvIGZpbGwgQ2xhc3MgYmFzZWQgb24gQ2xhc3NJRAogICAgICAgIGlmICggJFBhcmFte0NsYXNzfSAmJiAkUGFyYW17Q2xhc3NJRH0gKSB7CiAgICAgICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0gPSB7CiAgICAgICAgICAgICAgICBDbGFzcyAgID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUGFyYW17Q2xhc3NJRH0gKSB7CiAgICAgICAgICAgIG15ICRDbGFzc0RhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19ID0gewogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAkQ2xhc3NEYXRhLT57TmFtZX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBhZGRpdGlvbmFsIGRhdGEgZm9yIHN0YW5kYXJkIGF0dHJpYnV0ZXMgbmVlZHMgdG8gYmUgZmV0Y2hlZCBhbmQgaWYsIGRvIHNvCiAgICBpZiAoICRQYXJhbXtEZXBsU3RhdGVJRH0gKSB7CiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17RGVwbFN0YXRlSUR9LAogICAgICAgICk7CiAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfXtEZXBsU3RhdGV9ICAgPSAkRGVwbFN0YXRlRGF0YS0+e05hbWV9OwogICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX17RGVwbFN0YXRlSUR9ID0gJFBhcmFte0RlcGxTdGF0ZUlEfTsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgbXkgJEluY2lTdGF0ZURhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SW5jaVN0YXRlSUR9LAogICAgICAgICk7CiAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfXtJbmNpU3RhdGV9ICAgPSAkSW5jaVN0YXRlRGF0YS0+e05hbWV9OwogICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX17SW5jaVN0YXRlSUR9ID0gJFBhcmFte0luY2lTdGF0ZUlEfTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBkeW5hbWljIGZpZWxkcwogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0R5bmFtaWNGaWVsZH0gKSApIHsKICAgICAgICAkQ2hlY2tze0R5bmFtaWNGaWVsZH0gPSAkUGFyYW17RHluYW1pY0ZpZWxkfTsKCiAgICAgICAgIyB1cGRhdGUgb3IgYWRkIGR5bmFtaWMgZmllbGRzIGluZm9ybWF0aW9uIHRvIHRoZSBjb25maWcgaXRlbSBjaGVjawogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIHNvcnQga2V5cyAleyAkUGFyYW17RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JER5bmFtaWNGaWVsZE5hbWV9ID0gJFBhcmFte0R5bmFtaWNGaWVsZH0tPnskRHluYW1pY0ZpZWxkTmFtZX07CiAgICAgICAgfQogICAgfQoKICAgICMgYWx3YXlzIGdldCBpbmZvIGZyb20gY29uZmlnIGl0ZW0gdG9vIGFuZCBzZXQgaXQgdG8gdGhlIER5bmFtaWMgRmllbGQgY2hlY2sgaGFzaCBpZiB0aGUgaW5mbyBpcwogICAgIyBkaWZmZXJlbnQuIHRoaXMgY2FuIGJlIGRvbmUgYmVjYXVzZSBpbiB0aGUgcHJldmlvdXMgc3RlcCBjb25maWcgaXRlbSBpbmZvIHdhcyB1cGRhdGVkLiBidXQgbWF5YmUKICAgICMgY29uZmlnIGl0ZW0gaGFzIG1vcmUgaW5mb3JtYXRpb24gc3RvcmVkIHRoYW4gaW4gdGhlIER5bmFtaWNGaWVsZCBwYXJhbWV0ZXIuCiAgICBJVFNNQ09ORklHSVRFTUFUVFJJQlVURToKICAgIGZvciBteSAkQ29uZmlnSXRlbUF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkQ2hlY2tze0NvbmZpZ0l0ZW19IC8vIHt9IH0gKSB7CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhJENvbmZpZ0l0ZW1BdHRyaWJ1dGU7CgogICAgICAgICMgY2hlY2sgaWYgaXMgYSBkeW5hbWljIGZpZWxkIHdpdGggZGF0YQogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgJENvbmZpZ0l0ZW1BdHRyaWJ1dGUgIX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9c214OwogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgIWRlZmluZWQgJENoZWNrc3tDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfTsKICAgICAgICBuZXh0IElUU01DT05GSUdJVEVNQVRUUklCVVRFIGlmICFsZW5ndGggJENoZWNrc3tDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICByZWYgJENoZWNrc3tDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSBlcSAnQVJSQVknCiAgICAgICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRDaGVja3N7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBuZXh0IElUU01DT05GSUdJVEVNQVRUUklCVVRFOwogICAgICAgIH0KCiAgICAgICAgIyBjb21wYXJlIGlmIGRhdGEgaXMgZGlmZmVyZW50IGFuZCBza2lwIG9uIHNhbWUgZGF0YQogICAgICAgIGlmICgKICAgICAgICAgICAgJENoZWNrc3tEeW5hbWljRmllbGR9LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9CiAgICAgICAgICAgICYmICFEYXRhSXNEaWZmZXJlbnQoCiAgICAgICAgICAgICAgICBEYXRhMSA9PiAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgRGF0YTIgPT4gJENoZWNrc3tEeW5hbWljRmllbGR9LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9LAogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEU7CiAgICAgICAgfQoKICAgICAgICAkQ2hlY2tze0R5bmFtaWNGaWVsZH0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0gPSAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwogICAgfQoKICAgICMgYWxzbyBjb3B5IHRoZSBkYXRhYmFzZSBpbmZvcm1hdGlvbiB0byB0aGUgYXBwcm9wcmlhdGUgaGFzaAogICAgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEU6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1BdHRyaWJ1dGUgKCBzb3J0IGtleXMgJXsgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19IH0gKSB7CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhJENvbmZpZ0l0ZW1BdHRyaWJ1dGU7CgogICAgICAgICMgY2hlY2sgaWYgaXMgYSBkeW5hbWljIGZpZWxkIHdpdGggZGF0YQogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgJENvbmZpZ0l0ZW1BdHRyaWJ1dGUgIX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9c214OwogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgIWRlZmluZWQgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgIWxlbmd0aCAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX07CgogICAgICAgIGlmICgKICAgICAgICAgICAgcmVmICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSBlcSAnQVJSQVknCiAgICAgICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEU7CiAgICAgICAgfQoKICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7RHluYW1pY0ZpZWxkfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSA9ICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfTsKICAgIH0KCiAgICAjIHVzZSB1c2VyIGRhdGEKICAgIGlmICggKCAkQ2hlY2tBbGwgfHwgJFJlcXVpcmVkQ2hlY2tze1VzZXJ9ICkgJiYgJFBhcmFte1VzZXJJRH0gKSB7CgogICAgICAgIG15ICVVc2VyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBncm91cCBvYmplY3QKICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgZm9yIG15ICRUeXBlICggQHsgJENvbmZpZ09iamVjdC0+R2V0KCdTeXN0ZW06OlBlcm1pc3Npb24nKSB9ICkgewoKICAgICAgICAgICAgbXkgJUdyb3VwcyA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFR5cGUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAR3JvdXBOYW1lcyA9IHNvcnQgdmFsdWVzICVHcm91cHM7CgogICAgICAgICAgICAkVXNlcnsiR3JvdXBfJFR5cGUifSA9IFxAR3JvdXBOYW1lczsKICAgICAgICB9CgogICAgICAgIG15ICVSb2xlSURzID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uVXNlclJvbGVHZXQoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBteSBAUm9sZU5hbWVzID0gc29ydCB2YWx1ZXMgJVJvbGVJRHM7CgogICAgICAgICRVc2Vye1JvbGV9ICAgICAgICAgICA9IFxAUm9sZU5hbWVzOwogICAgICAgICRDaGVja3N7VXNlcn0gICAgICAgICA9IFwlVXNlcjsKICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7VXNlcn0gPSBcJVVzZXI7CiAgICB9CgogICAgIyB1c2UgdHlwZSBkYXRhIChpZiBnaXZlbikKICAgIGlmICggJENoZWNrQWxsIHx8ICRSZXF1aXJlZENoZWNrc3tUeXBlfSApIHsKCiAgICAgICAgIyBnZXQgdHlwZSBvYmplY3QKICAgICAgICBteSAkVHlwZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyk7CgogICAgICAgIGlmICggJFBhcmFte1R5cGVJRH0gKSB7CiAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJFBhcmFte1R5cGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENoZWNrc3tUeXBlfSA9IFwlVHlwZTsKCiAgICAgICAgICAgICMgdXBkYXRlIG9yIGFkZCBjb25maWcgaXRlbSB0eXBlIGluZm9ybWF0aW9uIHRvIHRoZSBjb25maWcgaXRlbSBjaGVjawogICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZX0gICA9ICRDaGVja3N7VHlwZX0tPntOYW1lfTsKICAgICAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfS0+e1R5cGVJRH0gPSAkQ2hlY2tze1R5cGV9LT57SUR9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtUeXBlfSApIHsKCiAgICAgICAgICAgICMgVE9ETyBBdHRlbnRpb24hCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBUaGUgcGFyYW1ldGVyIHR5cGUgY2FuIGNvbnRhaW4gbm90IG9ubHkgdGhlIHdhbnRlZCBjb25maWcgaXRlbSB0eXBlLCBiZWNhdXNlIGFsc28KICAgICAgICAgICAgIyBzb21lIG90aGVyIGZ1bmN0aW9ucyBpbiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtLnBtIHVzZSBhIHR5cGUgcGFyYW1ldGVyLCBmb3IgZXhhbXBsZQogICAgICAgICAgICAjIE1vdmVMaXN0KCkgZXRjLi4uIFRoZXNlIGZ1bmN0aW9ucyBjb3VsZCBiZSByZXdyaXR0ZW4gdG8gbm90CiAgICAgICAgICAgICMgdXNlIGEgVHlwZSBwYXJhbWV0ZXIsIG9yIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIENvbmZpZ0l0ZW1BY2woKSBjb3VsZCBiZSBtb2RpZmllZCB0bwogICAgICAgICAgICAjIG5vdCBqdXN0IHBhc3MgdGhlIGNvbXBsZXRlIFBhcmFtLUhhc2gsIGJ1dCBpbnN0ZWFkIGEgbmV3IHBhcmFtZXRlciwgbGlrZSBGcm9udEVuZFBhcmFtZXRlci4KICAgICAgICAgICAgIwogICAgICAgICAgICAjIEFzIGEgd29ya2Fyb3VuZCB3ZSBsb29rdXAgdGhlIFR5cGVMaXN0IGZpcnN0LCBhbmQgY29tcGFyZSBpZiB0aGUgdHlwZSBwYXJhbWV0ZXIKICAgICAgICAgICAgIyBpcyBmb3VuZCBpbiB0aGUgbGlzdCwgc28gd2UgY2FuIGJlIG1vcmUgc3VyZSB0aGF0IGl0IGlzIHRoZSB0eXBlIHRoYXQgd2Ugd2FudCBoZXJlLgoKICAgICAgICAgICAgIyBsb29rdXAgdGhlIHR5cGUgbGlzdCAod29ya2Fyb3VuZCBmb3IgZGVzY3JpYmVkIHByb2JsZW0pCiAgICAgICAgICAgIG15ICVUeXBlTGlzdCA9IHJldmVyc2UgJFR5cGVPYmplY3QtPlR5cGVMaXN0KCk7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHR5cGUgaXMgaW4gdGhlIHR5cGUgbGlzdCAod29ya2Fyb3VuZCBmb3IgZGVzY3JpYmVkIHByb2JsZW0pCiAgICAgICAgICAgIGlmICggJFR5cGVMaXN0eyAkUGFyYW17VHlwZX0gfSApIHsKICAgICAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkQ2hlY2tze1R5cGV9ID0gXCVUeXBlOwoKICAgICAgICAgICAgICAgICMgdXBkYXRlIG9yIGFkZCBjb25maWcgaXRlbSB0eXBlIGluZm9ybWF0aW9uIHRvIHRoZSBjb25maWcgaXRlbSBjaGVjawogICAgICAgICAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfS0+e1R5cGV9ICAgPSAkQ2hlY2tze1R5cGV9LT57TmFtZX07CiAgICAgICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZUlEfSA9ICRDaGVja3N7VHlwZX0tPntJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAhJFBhcmFte1R5cGVJRH0gJiYgISRQYXJhbXtUeXBlfSApIHsKICAgICAgICAgICAgaWYgKCBJc1Bvc2l0aXZlSW50ZWdlciggJENoZWNrc3tDb25maWdJdGVtfS0+e1R5cGVJRH0gKSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0eXBlIGRhdGEgZnJvbSB0aGUgY29uZmlnIGl0ZW0KICAgICAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICAgICAgSUQgICAgID0+ICRDaGVja3N7Q29uZmlnSXRlbX0tPntUeXBlSUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRDaGVja3N7VHlwZX0gPSBcJVR5cGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGhhc2ggd2l0aCB0aGUgY29uZmlnIGl0ZW0gaW5mb3JtYXRpb24gc3RvcmVkIGluIHRoZSBkYXRhYmFzZQogICAgICAgIGlmICggSXNQb3NpdGl2ZUludGVnZXIoICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+e1R5cGVJRH0gKSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgZGF0YWJhc2UgZGF0YSBtYXRjaGVzIGN1cnJlbnQgZGF0YSAocGVyZm9ybWFuY2UpCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIGRlZmluZWQgJENoZWNrc3tUeXBlfS0+e0lEfQogICAgICAgICAgICAgICAgJiYgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57VHlwZUlEfSBlcSAkQ2hlY2tze1R5cGV9LT57SUR9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRDaGVja3NEYXRhYmFzZXtUeXBlfSA9ICRDaGVja3N7VHlwZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIGNvbXBsZXRlIHRoZSBkYXRhIHF1ZXJ5aW5nIHRoZSBkYXRhYmFzZSBhZ2FpbgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICAgICAgSUQgICAgID0+ICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+e1R5cGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJENoZWNrc0RhdGFiYXNle1R5cGV9ID0gXCVUeXBlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgd2l0aGluIHRoaXMgZnVuY3Rpb24gJVBhcmFtIGlzIG1vZGlmaWVkIGJ5IHJlcGxhY2VtZW50cyBsaWtlOgogICAgIyAgICAkUGFyYW17UHJpb3JpdHlJRH0gPSAkUGFyYW17TmV3UHJpb3JpdHlJRH0KICAgICMgICAgYXBwYXJlbnRseSB0aGlzIGNoYW5nZXMgYXJlIG5vdCBsb25nZXIgbmVlZGVkIG91dHNpZGUgdGhpcyBmdW5jdGlvbiBhbmQgaXQgaXMgbm90IG5lY2Vzc2FyeQogICAgIyAgICB0byByZXR1cm4gc3VjaCByZXBsYWNlbWVudHMKCiAgICByZXR1cm4gewogICAgICAgIENoZWNrcyAgICAgICAgID0+IFwlQ2hlY2tzLAogICAgICAgIENoZWNrc0RhdGFiYXNlID0+IFwlQ2hlY2tzRGF0YWJhc2UsCiAgICB9Owp9Cgo9aGVhZDIgX0NvbXBhcmVNYXRjaFdpdGhEYXRhKCkKCkNvbXBhcmVzIGEgcHJvcGVydGllcyBlbGVtZW50IHdpdGggdGhlIGRhdGEgc2VudCB0byB0aGUgQUNMLCB0aGUgY29tcGFyZSByZXN1bHRzIHZhcmllcyBvbiBob3cgdGhlCkFDTCBwcm9wZXJ0aWVzIHdoZXJlIGRlZmluZWQgaW5jbHVkaW5nIG5vcm1hbCwgbmVnYXRlZCwgcmVndWxhciBleHByZXNzaW9uIGFuZCBuZWdhdGVkIHJlZ3VsYXIKZXhwcmVzc2lvbiBjb21wYXJpc29ucy4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICBNYXRjaCA9PiAnYSB2YWx1ZScsICAgICAgICAgIyBvciAnW05vdF1hIHZhbHVlJywgb3IgJ1tSZWdFeHBddmFsJyBvciAnW05vdFJlZ0V4cF12YWwnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgb3IgJ1tOb3RyZWdleHBddmFsJyBvciAnW05vdHJlZ2V4cF0nCiAgICAgICAgRGF0YSA9PiAnYSB2YWx1ZScsCiAgICAgICAgU2luZ2xlSXRlbSA9PiAxLCAgICAgICAgICAgICMgb3IgMCwgb3B0aW9uYWwsIGRlZmF1bHQgMAogICAgKTsKClJldHVybnM6CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsICAgICAgICAgICAgICAgIyBvciBmYWxzZQogICAgICAgIE1hdGNoICAgPT4gMSwgICAgICAgICAgICAgICAjIG9yIGZhbHNlCiAgICAgICAgU2tpcCAgICA9PiAxLCAgICAgICAgICAgICAgICMgb3IgZmFsc2UgKGluIGNlcnRhaW4gY2FzZXMgd2hlcmUgU2luZ2xlSXRlbSBpcyBzZXQpCiAgICB9OwoKPWN1dAoKc3ViIF9Db21wYXJlTWF0Y2hXaXRoRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTWF0Y2ggRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICBteSAkTWF0Y2ggPSAkUGFyYW17TWF0Y2h9OwogICAgbXkgJERhdGEgID0gJFBhcmFte0RhdGF9OwoKICAgICMgTmVnYXRlZCBtYXRjaGVzIHJlcXVpcmVzIGEgZGlmZmVyZW50IGxvZ2ljLgogICAgaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbTm90JyApIGVxICdbTm90JyApIHsKCiAgICAgICAgIyBOb3QgZXF1YWwgbWF0Y2gKICAgICAgICBpZiAoIHN1YnN0ciggJE1hdGNoLCAwLCBsZW5ndGggJ1tOb3RdJyApIGVxICdbTm90XScgKSB7CiAgICAgICAgICAgIG15ICROb3RWYWx1ZSA9IHN1YnN0ciAkTWF0Y2gsIGxlbmd0aCAnW05vdF0nOwogICAgICAgICAgICBpZiAoICROb3RWYWx1ZSBlcSAkRGF0YSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgTm90IHJlZy1leHAgbWF0Y2ggY2FzZS1zZW5zaXRpdmUuCiAgICAgICAgZWxzaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbTm90UmVnRXhwXScgKSBlcSAnW05vdFJlZ0V4cF0nICkgewogICAgICAgICAgICBteSAkUmVnRXhwID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbTm90UmVnRXhwXSc7CiAgICAgICAgICAgIGlmICggJERhdGEgPX4gLyRSZWdFeHAvICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAwLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBOb3QgcmVnLWV4cCBtYXRjaCBjYXNlLWluc2Vuc2l0aXZlLgogICAgICAgIGVsc2lmICggc3Vic3RyKCAkTWF0Y2gsIDAsIGxlbmd0aCAnW05vdHJlZ2V4cF0nICkgZXEgJ1tOb3RyZWdleHBdJyApIHsKICAgICAgICAgICAgbXkgJFJlZ0V4cCA9IHN1YnN0ciAkTWF0Y2gsIGxlbmd0aCAnW05vdHJlZ2V4cF0nOwogICAgICAgICAgICBpZiAoICREYXRhID1+IC8kUmVnRXhwL2kgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDAsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRQYXJhbXtTaW5nbGVJdGVtfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMSwKICAgICAgICAgICAgICAgIFNraXAgICAgPT4gMCwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDEsCiAgICAgICAgICAgICAgICBTa2lwICAgID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgRXF1YWwgbWF0Y2guCiAgICAgICAgaWYgKCAkTWF0Y2ggZXEgJERhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIFJlZy1leHAgbWF0Y2ggY2FzZS1zZW5zaXRpdmUuCiAgICAgICAgZWxzaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbUmVnRXhwXScgKSBlcSAnW1JlZ0V4cF0nICkgewogICAgICAgICAgICBteSAkUmVnRXhwID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbUmVnRXhwXSc7CiAgICAgICAgICAgIGlmICggJERhdGEgPX4gLyRSZWdFeHAvICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAxLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBSZWctZXhwIG1hdGNoIGNhc2UtaW5zZW5zaXRpdmUuCiAgICAgICAgZWxzaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbcmVnZXhwXScgKSBlcSAnW3JlZ2V4cF0nICkgewogICAgICAgICAgICBteSAkUmVnRXhwID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbcmVnZXhwXSc7CiAgICAgICAgICAgIGlmICggJERhdGEgPX4gLyRSZWdFeHAvaSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte1NpbmdsZUl0ZW19ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAwLAogICAgICAgICAgICAgICAgU2tpcCAgICA9PiAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMCwKICAgICAgICAgICAgICAgIFNraXAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9Cn0KCj1lbmQgSW50ZXJuYWw6Cgo9Y3V0CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/ConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2g7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0gZm9yIGNvbmZpZyBpdGVtIHNlYXJjaAoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgY29uZmlnIGl0ZW0gc2VhcmNoIGZ1bmN0aW9ucy4gVGhlIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHZpYSB0aGUgQzxLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0+IG9iamVjdC4KCj1oZWFkMiBDb25maWdJdGVtU2VhcmNoKCkKClRvIGZpbmQgY29uZmlnIGl0ZW1zIGluIHlvdXIgc3lzdGVtLgoKICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgIyByZXN1bHQgKG9wdGlvbmFsLCBkZWZhdWx0IGlzICdIQVNIJykKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJyB8fCAnSEFTSCcgfHwgJ0NPVU5UJywKCiAgICAgICAgIyBsaW1pdCB0aGUgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyAob3B0aW9uYWwsIGRlZmF1bHQgaXMgMTAwMDApCiAgICAgICAgTGltaXQgPT4gMTAwLAoKICAgICAgICAjIFVzZSBDb25maWdJdGVtU2VhcmNoIGFzIGEgY29uZmlnIGl0ZW0gZmlsdGVyIG9uIGEgc2luZ2xlIGNvbmZpZyBpdGVtLAogICAgICAgICMgb3IgYSBwcmVkZWZpbmVkIGNvbmZpZyBpdGVtIGxpc3QKICAgICAgICBDb25maWdJdGVtSUQgICAgID0+IDEyMzQsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiBbMTIzNCwgMTIzNV0sCgogICAgICAgICMgY29uZmlnIGl0ZW0gbnVtYmVyIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgTnVtYmVyID0+ICclMTIzNTQ2JScsCiAgICAgICAgTnVtYmVyID0+IFsnJTEyMzU0NiUnLCAnJTEyMzY2NiUnXSwKCiAgICAgICAgIyBjb25maWcgaXRlbSBuYW1lIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgIyBXaGVuIENvbmRpdGlvbklubGluZSBpcyBzZXQgdGhlbiByZW1haW5pbmcgd2hpdGVzcGFjZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYSAmJiBjb25kaXRpb24gYW5kCiAgICAgICAgIyBhbmQgdGhlIHNldHRpbmdzIG9mIENvbnRlbnRTZWFyY2hQcmVmaXggYW5kIENvbnRlbnRTZWFyY2hTdWZmaXggd2lsbCBiZSBob25vcmVkLgogICAgICAgIE5hbWUgPT4gJyVTb21lVGV4dCUnLAogICAgICAgIE5hbWUgPT4gWyclU29tZVRlc3QxJScsICclU29tZVRlc3QyJSddLAoKICAgICAgICBDbGFzc2VzICAgICAgICAgPT4gWydDb21wdXRlcicsICdOZXR3b3JrJ10gICAjIChvcHRpb25hbCkKICAgICAgICBDbGFzc0lEcyAgICAgICAgPT4gWzksIDgsIDcsIDZdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgRGVwbFN0YXRlcyAgICAgID0+IFsnUHJvZHVjdGlvbiddICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzICAgID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIEN1ckRlcGxTdGF0ZXMgICA9PiBbJ1Byb2R1Y3Rpb24nXSAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEN1ckRlcGxTdGF0ZUlEcyA9PiBbMSwgMiwgMywgNF0sICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBJbmNpU3RhdGVzICAgICAgPT4gWydXYXJuaW5nJ10gICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJbmNpU3RhdGVJRHMgICAgPT4gWzEsIDIsIDMsIDRdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgQ3VySW5jaVN0YXRlcyAgID0+IFsnV2FybmluZyddICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ3VySW5jaVN0YXRlSURzID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIENyZWF0ZUJ5ICAgICAgICA9PiBbMSwgMiwgM10sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIENoYW5nZUJ5ICAgICAgICA9PiBbMywgMiwgMV0sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAjIER5bmFtaWNGaWVsZHMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWyd2YWx1ZTEnLCAndmFsdWUyJ10KICAgICAgICBEeW5hbWljRmllbGRfRmllbGROYW1lWCA9PiB7CiAgICAgICAgICAgIEVtcHR5ICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAjIHdpbGwgcmV0dXJuIGR5bmFtaWMgZmllbGRzIHdpdGhvdXQgYSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZXQgdG8gMCB0byBzZWFyY2ggZmllbGRzIHdpdGggYSB2YWx1ZSBwcmVzZW50CiAgICAgICAgICAgIEVxdWFscyAgICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgTGlrZSAgICAgICAgICAgICAgPT4gJ3ZhbHVlKicsICAgICAgICAgICAgICAgICMgImVxdWFscyIgb3BlcmF0b3Igd2l0aCB3aWxkY2FyZCBzdXBwb3J0CiAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+ICcyMDAxLTAxLTAxIDAxOjAxOjAxJywKICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJzIwMDEtMDEtMDEgMDE6MDE6MDEnLAogICAgICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnMjAwMi0wMi0wMiAwMjowMjowMicsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+ICcyMDAyLTAyLTAyIDAyOjAyOjAyJywKICAgICAgICB9CgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBvbGRlciB0aGFuIDYwIG1pbnV0ZXMpICAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY3JlYXRlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBuZXdlciB0aGFuIDEyMCBtaW51dGVzKSAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNyZWF0ZSB0aW1lIGFmdGVyIC4uLiAoY29uZmlnIGl0ZW0gbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBjb25maWcgaXRlbXMgd2l0aCBjcmVhdGVkIHRpbWUgYmVmb3JlIC4uLiAoY29uZmlnIGl0ZW0gb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY2hhbmdlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNoYW5nZWQgdGltZSBhZnRlciAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLAogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY2hhbmdlZCB0aW1lIGJlZm9yZSAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICAjIE9yZGVyQnkgKG9wdGlvbmFsLCBkZWZhdWx0IGlzICdEb3duJykKICAgICAgICBPcmRlckJ5ID0+ICdEb3duJywgICMgRG93bnxVcAoKICAgICAgICAjIFNvcnRCeSAob3B0aW9uYWwsIGRlZmF1bHQgaXMgJ051bWJlcicpCiAgICAgICAgU29ydEJ5ICA9PiAnTmFtZScsCgogICAgICAgICMgT3JkZXJCeSBhbmQgU29ydEJ5IGFzIEFSUkFZIGZvciBzdWIgc29ydGluZyAob3B0aW9uYWwpCiAgICAgICAgT3JkZXJCeSA9PiBbJ0Rvd24nLCAnVXAnXSwKICAgICAgICBTb3J0QnkgID0+IFsnQ29uZmlnSXRlbUlEJywgJ051bWJlciddLAoKICAgICAgICAjIHVzZXIgc2VhcmNoCiAgICAgICAgVXNlcklEICAgICA9PiAxMjMsICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBQZXJtaXNzaW9uID0+ICdybycgfHwgJ3J3JywgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAncm8nCgogICAgICAgICMgQ2FjaGVUVEwsIGNhY2hlIHNlYXJjaCByZXN1bHQgaW4gc2Vjb25kcyAob3B0aW9uYWwsIHRoZSBkZWZhdWx0IGlzIGZvdXIgbWludXRlcykKICAgICAgICBDYWNoZVRUTCA9PiA2MCAqIDE1LAoKICAgICAgICAjIEVuLSBvciBkaXNhYmxlIHVzYWdlIG9mIFF1ZXJ5Q29uZGl0aW9uOyBjb250cm9sbGluZyB0aGUgZXZhbHVhdGlvbiBvZiBzb21lIHNwZWNpYWwgY2hhcmFjdGVycywgZS5nLiAnKycsIGFzIHNlYXJjaCBvcGVyYXRvcnMKICAgICAgICAjIGRlZmF1bHQgMQogICAgICAgIFF1ZXJ5Q29uZGl0aW9uID0+ICgxfDApLAogICAgKTsKClJldHVybnMgZm9yIEM8UmVzdWx0ID0+ICdBUlJBWSc+OgoKICAgIEBDb25maWdJdGVtSURzID0gKCAxLCAyLCAzICk7CgpSZXR1cm5zIGZvciBDPFJlc3VsdCA9PiAnSEFTSCc+IG9yIHdoZW4gbm8gcmVzdWx0IHR5cGUgaXMgc3BlY2lmaWVkOgoKICAgICVDb25maWdJdGVtSURzID0gKAogICAgICAgIDEgPT4gJzIwMTAxMDI3MDAwMDEnLAogICAgICAgIDIgPT4gJzIwMTAxMDI3MDAwMDInLAogICAgICAgIDMgPT4gJzIwMTAxMDI3MDAwMDMnLAogICAgKTsKClJldHVybnMgZm9yIEM8UmVzdWx0ID0+ICdDT1VOVCc+OgoKICAgICROdW1Db25maWdJdGVtSURzID0gMzsgIyB0aHJlZSByZXN1bHRzCgo9Y3V0CgojIFRPRE86IENoZWNrIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhpcyBpcyBjYWxsZWQuIENoYW5nZSBEeW5hbWljRmllbGRzLCBPcmRlckJ5IC0+IFNvcnRCeSwgT3JkZXJCeURpcmVjdGlvbiAtPiBPcmRlckJ5LCBSZXR1cm4gPT4gQVJSQVkgcmV0dXJucyBub3QgYSByZWYKc3ViIENvbmZpZ0l0ZW1TZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlZmF1bHQgdmFsdWVzCiAgICBteSAkUmVzdWx0ICAgICAgICAgPSAkUGFyYW17UmVzdWx0fSAgfHwgJ0hBU0gnOwogICAgbXkgJE9yZGVyQnkgICAgICAgID0gJFBhcmFte09yZGVyQnl9IHx8ICdEb3duJzsKICAgIG15ICRTb3J0QnkgICAgICAgICA9ICRQYXJhbXtTb3J0Qnl9ICB8fCAnTnVtYmVyJzsKICAgIG15ICRMaW1pdCAgICAgICAgICA9ICRQYXJhbXtMaW1pdH0gICB8fCAxMDAwMDsKICAgIG15ICRRdWVyeUNvbmRpdGlvbiA9ICRQYXJhbXtRdWVyeUNvbmRpdGlvbn0gLy8gMTsKCiAgICBteSAlU29ydE9wdGlvbnMgPSAoCiAgICAgICAgQ29uZmlnSXRlbSAgID0+ICdjaS5jb25maWdpdGVtX251bWJlcicsCiAgICAgICAgTnVtYmVyICAgICAgID0+ICdjaS5jb25maWdpdGVtX251bWJlcicsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICd2Lm5hbWUnLAogICAgICAgIERlcGxTdGF0ZSAgICA9PiAnZ2NfZGVwbC5uYW1lJywKICAgICAgICBJbmNpU3RhdGUgICAgPT4gJ2djX2luY2kubmFtZScsCiAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdnY19jZGVwbC5uYW1lJywKICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ2djX2NpbmNpLm5hbWUnLAogICAgICAgIEFnZSAgICAgICAgICA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgICAgIENyZWF0ZWQgICAgICA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgICAgIENoYW5nZWQgICAgICA9PiAnY2kuY2hhbmdlX3RpbWUnLAogICAgKTsKCiAgICAjIGNoZWNrIHR5cGVzIG9mIGdpdmVuIGFyZ3VtZW50cwogICAgS0VZOgogICAgZm9yIG15ICRLZXkgKAogICAgICAgIHF3KAogICAgICAgICAgICBDbGFzc0lEcyBEZXBsU3RhdGVJRHMgQ3VyRGVwbFN0YXRlSURzIEluY2lTdGF0ZUlEcyBDdXJJbmNpU3RhdGVJRHMgQ3JlYXRlQnkgQ2hhbmdlQnkKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgIG5leHQgS0VZIGlmICEkUGFyYW17JEtleX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoeSBubyBzZWFyY2ggZm9yICcwJyA/Pz8KICAgICAgICBuZXh0IEtFWSBpZiByZWYgJFBhcmFteyRLZXl9IGVxICdBUlJBWScgJiYgQHsgJFBhcmFteyRLZXl9IH07CgogICAgICAgICMgbG9nIGVycm9yCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZ2l2ZW4gcGFyYW0gJyRLZXknIGlzIGludmFsaWQgb3IgYW4gZW1wdHkgYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IG9iamVjdHMKICAgIG15ICREQk9iamVjdCAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBxdW90ZSBpZCBhcnJheSBlbGVtZW50cwogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEtleSAoCiAgICAgICAgcXcoCiAgICAgICAgICAgIENsYXNzSURzIERlcGxTdGF0ZUlEcyBDdXJEZXBsU3RhdGVJRHMgSW5jaVN0YXRlSURzIEN1ckluY2lTdGF0ZUlEcyBDcmVhdGVCeSBDaGFuZ2VCeQogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAhJFBhcmFteyRLZXl9OwoKICAgICAgICAjIHF1b3RlIGVsZW1lbnRzCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggQHsgJFBhcmFteyRLZXl9IH0gKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJERCT2JqZWN0LT5RdW90ZSggJEVsZW1lbnQsICdJbnRlZ2VyJyApICkgewoKICAgICAgICAgICAgICAgICMgbG9nIGVycm9yCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZ2l2ZW4gcGFyYW0gJyRFbGVtZW50JyBpbiAnJEtleScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHNvcnQvb3JkZXIgYnkgb3B0aW9ucwogICAgbXkgQFNvcnRCeUFycmF5ICA9IHJlZiAkU29ydEJ5IGVxICdBUlJBWScgID8gJFNvcnRCeS0+QCogIDogJFNvcnRCeTsKICAgIG15IEBPcmRlckJ5QXJyYXkgPSByZWYgJE9yZGVyQnkgZXEgJ0FSUkFZJyA/ICRPcmRlckJ5LT5AKiA6ICRPcmRlckJ5OwoKICAgIGZvciBteSAkQ291bnQgKCAwIC4uICQjU29ydEJ5QXJyYXkgKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAhJFNvcnRPcHRpb25zeyAkU29ydEJ5QXJyYXlbJENvdW50XSB9CiAgICAgICAgICAgICYmICRTb3J0QnlBcnJheVskQ291bnRdICF+IC9eRHluYW1pY0ZpZWxkXy8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdmFsaWQgU29ydEJ5ICgnIC4gJFNvcnRCeUFycmF5WyRDb3VudF0gLiAnKSEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBUT0RPOiBmYWxsIGJhY2sgdG8gYSBkZWZhdWx0IG9mICdVcCcKICAgICAgICBpZiAoICRPcmRlckJ5QXJyYXlbJENvdW50XSBuZSAnRG93bicgJiYgJE9yZGVyQnlBcnJheVskQ291bnRdIG5lICdVcCcgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIHZhbGlkIE9yZGVyQnkgKCcgLiAkT3JkZXJCeUFycmF5WyRDb3VudF0gLiAnKSEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBzcWwKICAgIG15ICRTUUxTZWxlY3Q7CgogICAgIyBUT0RPOiBhZGQgdmVyc2lvbiBzZWFyY2gKICAgIGlmICggJFJlc3VsdCBlcSAnQ09VTlQnICkgewogICAgICAgICRTUUxTZWxlY3QgPSAnU0VMRUNUIENPVU5UKERJU1RJTkNUKGNpLmlkKSknOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNRTFNlbGVjdCA9ICdTRUxFQ1QgRElTVElOQ1QgY2kuaWQsIGNpLmNvbmZpZ2l0ZW1fbnVtYmVyJzsKICAgIH0KCiAgICBteSAkU1FMRnJvbSA9ICcgRlJPTSBjb25maWdpdGVtIGNpJzsKCiAgICAjIGNoZWNrIGZvciBuZWVkZWQgdmVyc2lvbiBzZWFyY2ggaW5kZXggdGFibGUgam9pbgogICAgbXkgJFZlcnNpb25UYWJsZUpvaW5lZDsKICAgIGlmICggJFNlbGYtPl9WZXJzaW9uU2VhcmNoSW5kZXhTUUxKb2luTmVlZGVkKCBTZWFyY2hQYXJhbXMgPT4gXCVQYXJhbSApICkgewogICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdiBPTiBjaS5sYXN0X3ZlcnNpb25faWQgPSB2LmlkJzsKICAgICAgICAkVmVyc2lvblRhYmxlSm9pbmVkID0gMTsKICAgIH0KCiAgICBteSAkU1FMRXh0ID0gJyBXSEVSRSAxID0gMSc7CgogICAgIyBMaW1pdCB0aGUgc2VhcmNoIHRvIGp1c3Qgb25lIChvciBhIGxpc3QpIENvbmZpZ0l0ZW1JRAogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHx8IElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSApIHsKCiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdjaS5pZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICA9PiByZWYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gZXEgJ0FSUkFZJyA/ICRQYXJhbXtDb25maWdJdGVtSUR9IDogWyAkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBjbGFzc2VzCiAgICBpZiAoICRQYXJhbXtDbGFzc2VzfSApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICVDbGFzc0xvb2t1cCA9IHJldmVyc2UgJXsKICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICkgLy8ge30KICAgICAgICB9OwoKICAgICAgICBmb3IgbXkgJENsYXNzICggQHsgJFBhcmFte0NsYXNzZXN9IH0gKSB7CgogICAgICAgICAgICBpZiAoICEkQ2xhc3NMb29rdXB7JENsYXNzfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIElEIGZvciAkQ2xhc3MgZm91bmQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtDbGFzc0lEc30gfSwgJENsYXNzTG9va3VweyRDbGFzc307CiAgICAgICAgfQogICAgfQoKICAgICMgcGVybWlzc2lvbnMgYXJlIGhhbmRsZWQgdmlhIGNsYXNzZXMKICAgIGlmICggJFBhcmFte1VzZXJJRH0gJiYgJFBhcmFte1VzZXJJRH0gIT0gMSApIHsKCiAgICAgICAgbXkgQENsYXNzSURzID0gJFBhcmFte0NsYXNzSURzfSA/ICRQYXJhbXtDbGFzc0lEc30tPkAqIDoKICAgICAgICAgICAga2V5cyAlewogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgKSAvLyB7fQogICAgICAgICAgICB9OwoKICAgICAgICBteSBAQWxsb3dlZENsYXNzSURzOwoKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKEBDbGFzc0lEcykgewogICAgICAgICAgICBteSAkSGFzQWNjZXNzID0gJFNlbGYtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJFBhcmFte1Blcm1pc3Npb259IC8vICdybycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJEhhc0FjY2VzcykgewogICAgICAgICAgICAgICAgcHVzaCBAQWxsb3dlZENsYXNzSURzLCAkQ2xhc3NJRDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGlmICFAQWxsb3dlZENsYXNzSURzOwoKICAgICAgICAkUGFyYW17Q2xhc3NJRHN9ID0gXEBBbGxvd2VkQ2xhc3NJRHM7CiAgICB9CgogICAgIyBjbGFzcyBpZHMKICAgIGlmICggJFBhcmFte0NsYXNzSURzfSApIHsKICAgICAgICBteSAkU1FMUXVlcnlJbkNvbmRpdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ2NpLmNsYXNzX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtDbGFzc0lEc30sCiAgICAgICAgICAgIFF1b3RlVHlwZSA9PiAnSW50ZWdlcicsCiAgICAgICAgICAgIEJpbmRNb2RlICA9PiAwLAogICAgICAgICk7CiAgICAgICAgJFNRTEV4dCAuPSAnIEFORCAoICcgLiAkU1FMUXVlcnlJbkNvbmRpdGlvbiAuICcgKSAnOwogICAgfQoKICAgICMgbG9va3VwIGRlcGxveW1lbnQgc3RhdGVzCiAgICBpZiAoICRQYXJhbXtEZXBsU3RhdGVzfSApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICVEZXBsU3RhdGVMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgKSAvLyB7fQogICAgICAgIH07CgogICAgICAgIGZvciBteSAkRGVwbFN0YXRlICggQHsgJFBhcmFte0RlcGxTdGF0ZXN9IH0gKSB7CgogICAgICAgICAgICBpZiAoICEkRGVwbFN0YXRlTG9va3VweyREZXBsU3RhdGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gSUQgZm9yICREZXBsU3RhdGUgZm91bmQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtEZXBsU3RhdGVJRHN9IH0sICREZXBsU3RhdGVMb29rdXB7JERlcGxTdGF0ZX07CiAgICAgICAgfQogICAgfQoKICAgICMgZGVwbG95bWVudCBzdGF0ZSBpZHMKICAgIGlmICggJFBhcmFte0RlcGxTdGF0ZUlEc30gKSB7CiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICd2LmRlcGxfc3RhdGVfaWQnLAogICAgICAgICAgICBWYWx1ZXMgICAgPT4gJFBhcmFte0RlcGxTdGF0ZUlEc30sCiAgICAgICAgICAgIFF1b3RlVHlwZSA9PiAnSW50ZWdlcicsCiAgICAgICAgICAgIEJpbmRNb2RlICA9PiAwLAogICAgICAgICk7CiAgICAgICAgJFNRTEV4dCAuPSAnIEFORCAoICcgLiAkU1FMUXVlcnlJbkNvbmRpdGlvbiAuICcgKSAnOwogICAgfQoKICAgICMgbG9va3VwIGN1cnJlbnQgZGVwbG95bWVudCBzdGF0ZXMKICAgIGlmICggJFBhcmFte0N1ckRlcGxTdGF0ZXN9ICkgewoKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJUN1ckRlcGxTdGF0ZUxvb2t1cCA9IHJldmVyc2UgJXsKICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICApIC8vIHt9CiAgICAgICAgfTsKCiAgICAgICAgZm9yIG15ICRDdXJEZXBsU3RhdGUgKCBAeyAkUGFyYW17Q3VyRGVwbFN0YXRlc30gfSApIHsKCiAgICAgICAgICAgIGlmICggISRDdXJEZXBsU3RhdGVMb29rdXB7JEN1ckRlcGxTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBJRCBmb3IgJEN1ckRlcGxTdGF0ZSBmb3VuZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte0N1ckRlcGxTdGF0ZUlEc30gfSwgJEN1ckRlcGxTdGF0ZUxvb2t1cHskQ3VyRGVwbFN0YXRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBjdXJyZW50IGRlcGxveW1lbnQgc3RhdGUgaWRzCiAgICBpZiAoICRQYXJhbXtDdXJEZXBsU3RhdGVJRHN9ICkgewogICAgICAgIG15ICRTUUxRdWVyeUluQ29uZGl0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnY2kuY3VyX2RlcGxfc3RhdGVfaWQnLAogICAgICAgICAgICBWYWx1ZXMgICAgPT4gJFBhcmFte0N1ckRlcGxTdGF0ZUlEc30sCiAgICAgICAgICAgIFF1b3RlVHlwZSA9PiAnSW50ZWdlcicsCiAgICAgICAgICAgIEJpbmRNb2RlICA9PiAwLAogICAgICAgICk7CiAgICAgICAgJFNRTEV4dCAuPSAnIEFORCAoICcgLiAkU1FMUXVlcnlJbkNvbmRpdGlvbiAuICcgKSAnOwogICAgfQoKICAgICMgbG9va3VwIGluY2lkZW50IHN0YXRlcwogICAgaWYgKCAkUGFyYW17SW5jaVN0YXRlc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAlSW5jaVN0YXRlTG9va3VwID0gcmV2ZXJzZSAlewogICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICApIC8vIHt9CiAgICAgICAgfTsKCiAgICAgICAgZm9yIG15ICRJbmNpU3RhdGUgKCBAeyAkUGFyYW17SW5jaVN0YXRlc30gfSApIHsKCiAgICAgICAgICAgIGlmICggISRJbmNpU3RhdGVMb29rdXB7JEluY2lTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBJRCBmb3IgJEluY2lTdGF0ZSBmb3VuZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte0luY2lTdGF0ZUlEc30gfSwgJEluY2lTdGF0ZUxvb2t1cHskSW5jaVN0YXRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBpbmNpZGVudCBzdGF0ZSBpZHMKICAgIGlmICggJFBhcmFte0luY2lTdGF0ZUlEc30gKSB7CiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICd2LmluY2lfc3RhdGVfaWQnLAogICAgICAgICAgICBWYWx1ZXMgICAgPT4gJFBhcmFte0luY2lTdGF0ZUlEc30sCiAgICAgICAgICAgIFF1b3RlVHlwZSA9PiAnSW50ZWdlcicsCiAgICAgICAgICAgIEJpbmRNb2RlICA9PiAwLAogICAgICAgICk7CiAgICAgICAgJFNRTEV4dCAuPSAnIEFORCAoICcgLiAkU1FMUXVlcnlJbkNvbmRpdGlvbiAuICcgKSAnOwogICAgfQoKICAgICMgbG9va3VwIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGVzCiAgICBpZiAoICRQYXJhbXtDdXJJbmNpU3RhdGVzfSApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICVDdXJJbmNpU3RhdGVMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgICAgICkgLy8ge30KICAgICAgICB9OwoKICAgICAgICBmb3IgbXkgJEN1ckluY2lTdGF0ZSAoIEB7ICRQYXJhbXtDdXJJbmNpU3RhdGVzfSB9ICkgewoKICAgICAgICAgICAgaWYgKCAhJEN1ckluY2lTdGF0ZUxvb2t1cHskQ3VySW5jaVN0YXRlfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIElEIGZvciAkQ3VySW5jaVN0YXRlIGZvdW5kISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAeyAkUGFyYW17Q3VySW5jaVN0YXRlSURzfSB9LCAkQ3VySW5jaVN0YXRlTG9va3VweyRDdXJJbmNpU3RhdGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGluY2lkZW50IHN0YXRlIGlkcwogICAgaWYgKCAkUGFyYW17Q3VySW5jaVN0YXRlSURzfSApIHsKICAgICAgICBteSAkU1FMUXVlcnlJbkNvbmRpdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ2NpLmN1cl9pbmNpX3N0YXRlX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtDdXJJbmNpU3RhdGVJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIG90aGVyIGNvbmZpZyBpdGVtIHN0dWZmCiAgICBteSAlRmllbGRTUUxNYXAgPSAoCiAgICAgICAgTnVtYmVyICAgPT4gJ2NpLmNvbmZpZ2l0ZW1fbnVtYmVyJywKICAgICAgICBOYW1lICAgICA9PiAndi5uYW1lJywKICAgICAgICBDcmVhdGVCeSA9PiAnY2kuY3JlYXRlX2J5JywKICAgICAgICBDaGFuZ2VCeSA9PiAnY2kuY2hhbmdlX2J5JywKICAgICk7CgogICAgQVRUUklCVVRFOgogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUZpZWxkU1FMTWFwICkgewogICAgICAgIG5leHQgQVRUUklCVVRFIGlmICFkZWZpbmVkICRQYXJhbXskS2V5fTsKCiAgICAgICAgIyBpZiBpdCdzIG5vIHJlZiwgcHV0IGl0IHRvIGFycmF5IHJlZgogICAgICAgIGlmICggcmVmICRQYXJhbXskS2V5fSBlcSAnJyApIHsKICAgICAgICAgICAgJFBhcmFteyRLZXl9ID0gWyAkUGFyYW17JEtleX0gXTsKICAgICAgICB9CgogICAgICAgICMgcHJvY2VzcyBhcnJheSByZWYKICAgICAgICBteSAkVXNlZCA9IDA7CgogICAgICAgIFZBTFVFOgogICAgICAgIGZvciBteSAkVmFsdWUgKCBAeyAkUGFyYW17JEtleX0gfSApIHsKICAgICAgICAgICAgbmV4dCBWQUxVRSBpZiAhZGVmaW5lZCAkVmFsdWUgfHwgIWxlbmd0aCAkVmFsdWU7CgogICAgICAgICAgICAkVmFsdWUgPX4gcy9cKi8lL2dpOwoKICAgICAgICAgICAgIyBjaGVjayBzZWFyY2ggYXR0cmlidXRlLCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZm9yICoKICAgICAgICAgICAgbmV4dCBWQUxVRSBpZiAkVmFsdWUgPX4gL15cJXsxLDN9JC87CgogICAgICAgICAgICBpZiAoICEkVXNlZCApIHsKICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCc7CiAgICAgICAgICAgICAgICAkVXNlZCA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICcgT1IgJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRRdWVyeUNvbmRpdGlvbikgewoKICAgICAgICAgICAgICAgICMgdXNlIHNlYXJjaCBjb25kaXRpb24gZXh0ZW5zaW9uCiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICREQk9iamVjdC0+UXVlcnlDb25kaXRpb24oCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJEZpZWxkU1FMTWFweyRLZXl9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICRGaWVsZFNRTE1hcHskS2V5fSAuICIgPSAnIiAuICREQk9iamVjdC0+UXVvdGUoJFZhbHVlKSAuICInIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRVc2VkKSB7CiAgICAgICAgICAgICRTUUxFeHQgLj0gJyknOwogICAgICAgIH0KICAgIH0KCiAgICAjIFJlbWVtYmVyIGFscmVhZHkgam9pbmVkIHRhYmxlcyBmb3Igc29ydGluZy4KICAgIG15ICVEeW5hbWljRmllbGRKb2luVGFibGVzOwogICAgbXkgJER5bmFtaWNGaWVsZEpvaW5Db3VudGVyID0gMTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIG9iamVjdHMKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICRQYXJhbU5hbWUgKCBrZXlzICVQYXJhbSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBhcmFtTmFtZSA9fiBtL15EeW5hbWljRmllbGRfKC4rKS87CgogICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZC0+JSogKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IHFxW05vIHN1Y2ggZHluYW1pYyBmaWVsZCAiJDEiIChvciBpdCBpcyBpbmFjdGl2ZSldLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNlYXJjaFBhcmFtID0gZGVsZXRlICRQYXJhbXsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGQtPntOYW1lfSJ9OwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlYXJjaFBhcmFtOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyByZWYgJFNlYXJjaFBhcmFtIGVxICdIQVNIJzsKCiAgICAgICAgbXkgJE5lZWRKb2luOwogICAgICAgIG15ICRRdWVyeUZvckVtcHR5VmFsdWVzID0gMDsKCiAgICAgICAgZm9yIG15ICRPcGVyYXRvciAoIHNvcnQga2V5cyAkU2VhcmNoUGFyYW0tPiUqICkgewoKICAgICAgICAgICAgbXkgQFNlYXJjaFBhcmFtcyA9ICggcmVmICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gZXEgJ0FSUkFZJyApCiAgICAgICAgICAgICAgICA/IEB7ICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gfQogICAgICAgICAgICAgICAgOiAoICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gKTsKCiAgICAgICAgICAgIG15ICRTUUxFeHRTdWIgPSAnIEFORCAoJzsKICAgICAgICAgICAgbXkgJENvdW50ZXIgICA9IDA7CiAgICAgICAgICAgIFRFWFQ6CiAgICAgICAgICAgIGZvciBteSAkVGV4dCAoQFNlYXJjaFBhcmFtcykgewogICAgICAgICAgICAgICAgbmV4dCBURVhUIHVubGVzcyBkZWZpbmVkICRUZXh0OwogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICRUZXh0IGVxICcnOwoKICAgICAgICAgICAgICAgICRUZXh0ID1+IHMvXCovJS9naTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHNlYXJjaCBhdHRyaWJ1dGUsIHdlIGRvIG5vdCBuZWVkIHRvIHNlYXJjaCBmb3IgKgogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICRUZXh0ID1+IC9eXCV7MSwzfSQvOwoKICAgICAgICAgICAgICAgICMgc2tpcCB2YWxpZGF0aW9uIGZvciBlbXB0eSB2YWx1ZXMKICAgICAgICAgICAgICAgIGlmICggJE9wZXJhdG9yIG5lICdFbXB0eScgKSB7CgogICAgICAgICAgICAgICAgICAgICMgdmFsaWRhdGUgZGF0YSB0eXBlCiAgICAgICAgICAgICAgICAgICAgbXkgJFZhbGlkYXRlU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRUZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBOb1ZhbGlkYXRlUmVnZXggICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9IHx8IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkVmFsaWRhdGVTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHZhbHVlICciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkVGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIicgb24gZmllbGQgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGQtPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIichIiwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJENvdW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICcgT1IgJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIEVtcHR5ID0+IDEgcmVxdWlyZXMgYSBMRUZUIEpPSU4uCiAgICAgICAgICAgICAgICBpZiAoICRPcGVyYXRvciBlcSAnRW1wdHknICYmICRUZXh0ICkgewogICAgICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaFNRTEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAiZGZ2RW1wdHkkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBPcGVyYXRvciAgICAgICAgICAgPT4gJE9wZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICBTZWFyY2hUZXJtICAgICAgICAgPT4gJFRleHQsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkUXVlcnlGb3JFbXB0eVZhbHVlcyA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hTUUxHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICBUYWJsZUFsaWFzICAgICAgICAgPT4gImRmdiREeW5hbWljRmllbGRKb2luQ291bnRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9yICAgICAgICAgICA9PiAkT3BlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFRlcm0gICAgICAgICA9PiAkVGV4dCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnKSc7CiAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgJFNRTEV4dCAuPSAkU1FMRXh0U3ViOwogICAgICAgICAgICAgICAgJE5lZWRKb2luID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCROZWVkSm9pbikgewoKICAgICAgICAgICAgaWYgKCAhJFZlcnNpb25UYWJsZUpvaW5lZCApIHsKICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdiBPTiBjaS5sYXN0X3ZlcnNpb25faWQgPSB2LmlkJzsKICAgICAgICAgICAgICAgICRWZXJzaW9uVGFibGVKb2luZWQgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJFF1ZXJ5Rm9yRW1wdHlWYWx1ZXMpIHsKCiAgICAgICAgICAgICAgICAjIFVzZSBMRUZUIEpPSU4gdG8gYWxsb3cgZm9yIG51bGwgdmFsdWVzLgogICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gIiBMRUZUIEpPSU4gZHluYW1pY19maWVsZF92YWx1ZSBkZnZFbXB0eSREeW5hbWljRmllbGRKb2luQ291bnRlcgogICAgICAgICAgICAgICAgICAgIE9OICh2LmlkID0gZGZ2RW1wdHkkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIub2JqZWN0X2lkCiAgICAgICAgICAgICAgICAgICAgICAgIEFORCBkZnZFbXB0eSREeW5hbWljRmllbGRKb2luQ291bnRlci5maWVsZF9pZCA9ICIgLgogICAgICAgICAgICAgICAgICAgICREQk9iamVjdC0+UXVvdGUoICREeW5hbWljRmllbGQtPntJRH0sICdJbnRlZ2VyJyApIC4gIikgIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICIgSU5ORVIgSk9JTiBkeW5hbWljX2ZpZWxkX3ZhbHVlIGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlcgogICAgICAgICAgICAgICAgICAgIE9OICh2LmlkID0gZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLm9iamVjdF9pZAogICAgICAgICAgICAgICAgICAgICAgICBBTkQgZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLmZpZWxkX2lkID0gIiAuCiAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5RdW90ZSggJER5bmFtaWNGaWVsZC0+e0lEfSwgJ0ludGVnZXInICkgLiAiKSAiOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIjsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRKb2luQ291bnRlcisrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aW1lIG9iamVjdAogICAgIyByZW1lbWJlciBjdXJyZW50IHRpbWUgdG8gcHJldmVudCBzZWFyY2hlcyBmb3IgZnV0dXJlIHRpbWVzdGFtcHMKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwoKICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG9sZGVyL25ld2VyIHRoYW4geCBtaW51dGVzCiAgICBteSAlQ29uZmlnSXRlbVRpbWUgPSAoCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWUgPT4gJ2NpLmNyZWF0ZV90aW1lJywKICAgICk7CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbVRpbWUgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG9sZGVyIHRoYW4geCBtaW51dGVzCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXsgJEtleSAuICdPbGRlck1pbnV0ZXMnIH0gKSB7CgogICAgICAgICAgICAkUGFyYW17ICRLZXkgLiAnT2xkZXJNaW51dGVzJyB9IHx8PSAwOwoKICAgICAgICAgICAgbXkgJFRpbWUgPSAkRGF0ZVRpbWVPYmplY3QtPkNsb25lKCk7CiAgICAgICAgICAgICRUaW1lLT5TdWJ0cmFjdCggTWludXRlcyA9PiAkUGFyYW17ICRLZXkgLiAnT2xkZXJNaW51dGVzJyB9ICk7CgogICAgICAgICAgICBteSAkVGFyZ2V0VGltZSA9ICRLZXkgZXEgJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lJyA/ICRUaW1lLT5Ub1N0cmluZygpIDogJFRpbWUtPlRvRXBvY2goKTsKCiAgICAgICAgICAgICRTUUxFeHQgLj0gc3ByaW50ZiggIiBBTkQgKCAlcyA8PSAnJXMnICkiLCAkQ29uZmlnSXRlbVRpbWV7JEtleX0sICRUYXJnZXRUaW1lICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBjb25maWcgaXRlbXMgY3JlYXRlZCBuZXdlciB0aGFuIHggbWludXRlcwogICAgICAgIGlmICggZGVmaW5lZCAkUGFyYW17ICRLZXkgLiAnTmV3ZXJNaW51dGVzJyB9ICkgewoKICAgICAgICAgICAgJFBhcmFteyAkS2V5IC4gJ05ld2VyTWludXRlcycgfSB8fD0gMDsKCiAgICAgICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CiAgICAgICAgICAgICRUaW1lLT5TdWJ0cmFjdCggTWludXRlcyA9PiAkUGFyYW17ICRLZXkgLiAnTmV3ZXJNaW51dGVzJyB9ICk7CgogICAgICAgICAgICBteSAkVGFyZ2V0VGltZSA9ICRLZXkgZXEgJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lJyA/ICRUaW1lLT5Ub1N0cmluZygpIDogJFRpbWUtPlRvRXBvY2goKTsKCiAgICAgICAgICAgICRTUUxFeHQgLj0gc3ByaW50ZiggIiBBTkQgKCAlcyA+PSAnJXMnICkiLCAkQ29uZmlnSXRlbVRpbWV7JEtleX0sICRUYXJnZXRUaW1lICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG9sZGVyL25ld2VyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbVRpbWUgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG9sZGVyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICAgICAgbXkgJENvbXBhcmVPbGRlck5ld2VyRGF0ZTsKICAgICAgICBpZiAoICRQYXJhbXsgJEtleSAuICdPbGRlckRhdGUnIH0gKSB7CgogICAgICAgICAgICAjIGNoZWNrIHRpbWUgZm9ybWF0CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRQYXJhbXsgJEtleSAuICdPbGRlckRhdGUnIH0KICAgICAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICciIC4gJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfSAuICInISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXsgJEtleSAuICdPbGRlckRhdGUnIH0sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRUaW1lICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfSAuICInISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDb21wYXJlT2xkZXJOZXdlckRhdGUgPSAkVGltZTsKCiAgICAgICAgICAgIG15ICRUYXJnZXRUaW1lID0gJEtleSBlcSAnQ29uZmlnSXRlbUNyZWF0ZVRpbWUnID8gJFRpbWUtPlRvU3RyaW5nKCkgOiAkVGltZS0+VG9FcG9jaCgpOwoKICAgICAgICAgICAgJFNRTEV4dCAuPSBzcHJpbnRmKCAiIEFORCAoICVzIDw9ICclcycgKSIsICRDb25maWdJdGVtVGltZXskS2V5fSwgJFRhcmdldFRpbWUgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG5ld2VyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICAgICAgaWYgKCAkUGFyYW17ICRLZXkgLiAnTmV3ZXJEYXRlJyB9ICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17ICRLZXkgLiAnTmV3ZXJEYXRlJyB9CiAgICAgICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnIiAuICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0gLiAiJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17ICRLZXkgLiAnTmV3ZXJEYXRlJyB9LAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0gLiAiJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgbmV3ZXIgZGF0ZSBpcyBhZnRlciBjdXJyZW50IGRhdGUKICAgICAgICAgICAgcmV0dXJuIGlmICRUaW1lID4gJERhdGVUaW1lT2JqZWN0OwoKICAgICAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgb2xkZXIvbmV3ZXIgZGF0ZSByZXN0cmljdGlvbiBzaG93IG5vdyB2YWxpZCB0aW1lZnJhbWUKICAgICAgICAgICAgcmV0dXJuIGlmICRDb21wYXJlT2xkZXJOZXdlckRhdGUgJiYgJFRpbWUgPiAkQ29tcGFyZU9sZGVyTmV3ZXJEYXRlOwoKICAgICAgICAgICAgbXkgJFRhcmdldFRpbWUgPSAkS2V5IGVxICdDb25maWdJdGVtQ3JlYXRlVGltZScgPyAkVGltZS0+VG9TdHJpbmcoKSA6ICRUaW1lLT5Ub0Vwb2NoKCk7CgogICAgICAgICAgICAkU1FMRXh0IC49IHNwcmludGYoICIgQU5EICggJXMgPj0gJyVzJyApIiwgJENvbmZpZ0l0ZW1UaW1leyRLZXl9LCAkVGFyZ2V0VGltZSApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbXMgY2hhbmdlZCBvbGRlciB0aGFuIHggbWludXRlcwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXN9ICkgewoKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lT2xkZXJNaW51dGVzfSB8fD0gMDsKCiAgICAgICAgbXkgJFRpbWVTdGFtcCA9ICREYXRlVGltZU9iamVjdC0+Q2xvbmUoKTsKICAgICAgICAkVGltZVN0YW1wLT5TdWJ0cmFjdCggTWludXRlcyA9PiAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lT2xkZXJNaW51dGVzfSApOwoKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lT2xkZXJEYXRlfSA9ICRUaW1lU3RhbXAtPlRvU3RyaW5nKCk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4IG1pbnV0ZXMKICAgIGlmICggZGVmaW5lZCAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJNaW51dGVzfSApIHsKCiAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyTWludXRlc30gfHw9IDA7CgogICAgICAgIG15ICRUaW1lU3RhbXAgPSAkRGF0ZVRpbWVPYmplY3QtPkNsb25lKCk7CiAgICAgICAgJFRpbWVTdGFtcC0+U3VidHJhY3QoIE1pbnV0ZXMgPT4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyTWludXRlc30gKTsKCiAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0gPSAkVGltZVN0YW1wLT5Ub1N0cmluZygpOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjaGFuZ2VkIG9sZGVyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBteSAkQ29tcGFyZUxhc3RDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGU7CiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9ICkgewoKICAgICAgICAjIGNoZWNrIHRpbWUgZm9ybWF0CiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lT2xkZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9JyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAkVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9LAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgIC4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRDb21wYXJlTGFzdENoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZSA9ICRUaW1lOwoKICAgICAgICAkU1FMRXh0IC49ICIgQU5EIGNpLmNoYW5nZV90aW1lIDw9ICciIC4gJFRpbWUtPlRvU3RyaW5nKCkgLiAiJyI7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0gKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGV9JyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAkVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGV9LAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgIC4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBuZXdlciBkYXRlIGlzIGFmdGVyIGN1cnJlbnQgZGF0ZQogICAgICAgIHJldHVybiBpZiAkVGltZSA+ICREYXRlVGltZU9iamVjdDsKCiAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgb2xkZXIvbmV3ZXIgZGF0ZSByZXN0cmljdGlvbiBzaG93IG5vdyB2YWxpZCB0aW1lZnJhbWUKICAgICAgICByZXR1cm4KICAgICAgICAgICAgaWYgJENvbXBhcmVMYXN0Q2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlICYmICRUaW1lID4gJENvbXBhcmVMYXN0Q2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlOwoKICAgICAgICAkU1FMRXh0IC49ICIgQU5EIGNpLmNoYW5nZV90aW1lID49ICciIC4gJFRpbWUtPlRvU3RyaW5nKCkgLiAiJyI7CiAgICB9CgogICAgIyBkYXRhYmFzZSBxdWVyeSBmb3Igc29ydC9vcmRlciBieSBvcHRpb24KICAgIGlmICggJFJlc3VsdCBuZSAnQ09VTlQnICkgewogICAgICAgICRTUUxFeHQgLj0gJyBPUkRFUiBCWSc7CgogICAgICAgIG15ICVKb2luZWRUYWJsZXM7CiAgICAgICAgZm9yIG15ICRDb3VudCAoIDAgLi4gJCNTb3J0QnlBcnJheSApIHsKICAgICAgICAgICAgaWYgKCAkQ291bnQgPiAwICkgewogICAgICAgICAgICAgICAgJFNRTEV4dCAuPSAnLCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc29ydCBieSBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgIGlmICggJFNvcnRCeUFycmF5WyRDb3VudF0gPX4gL15EeW5hbWljRmllbGRfKC4qKS8gKSB7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZSA9ICQxOwogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCAgICAgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZCApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdmFsaWQgU29ydEJ5ICgnIC4gJFNvcnRCeUFycmF5WyRDb3VudF0gLiAnKSEnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIElmIHRoZSB0YWJsZSB3YXMgYWxyZWFkeSBqb2luZWQgZm9yIHNlYXJjaGluZywgd2UgcmV1c2UgaXQuCiAgICAgICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3skRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggISRWZXJzaW9uVGFibGVKb2luZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdiBPTiBjaS5sYXN0X3ZlcnNpb25faWQgPSB2LmlkJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFZlcnNpb25UYWJsZUpvaW5lZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkU1FMRnJvbQogICAgICAgICAgICAgICAgICAgICAgICAuPSAiIExFRlQgT1VURVIgSk9JTiBkeW5hbWljX2ZpZWxkX3ZhbHVlIGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlcgogICAgICAgICAgICAgICAgICAgICAgICBPTiAodi5pZCA9IGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlci5vYmplY3RfaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFORCBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIuZmllbGRfaWQgPSAiIC4KICAgICAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5RdW90ZSggJER5bmFtaWNGaWVsZC0+e0lEfSwgJ0ludGVnZXInICkgLiAiKSAiOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIjsKCiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEpvaW5Db3VudGVyKys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJFNRTE9yZGVyRmllbGQgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoU1FMT3JkZXJGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICBUYWJsZUFsaWFzICAgICAgICAgPT4gJER5bmFtaWNGaWVsZEpvaW5UYWJsZXN7JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkU1FMU2VsZWN0IC49ICIsICRTUUxPcmRlckZpZWxkICI7CiAgICAgICAgICAgICAgICAkU1FMRXh0ICAgIC49ICIgJFNRTE9yZGVyRmllbGQgIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGpvaW4gdGhlIGdlbmVyYWwgY2F0YWxvZyBmb3Igc29ydGluZwogICAgICAgICAgICAgICAgaWYgKCAkU29ydEJ5QXJyYXlbJENvdW50XSBlcSAnRGVwbFN0YXRlJyAmJiAhJEpvaW5lZFRhYmxlc3tEZXBsU3RhdGV9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGdlbmVyYWxfY2F0YWxvZyBnY19kZXBsIE9OICh2LmRlcGxfc3RhdGVfaWQgPSBnY19kZXBsLmlkKSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRTb3J0QnlBcnJheVskQ291bnRdIGVxICdJbmNpU3RhdGUnICYmICEkSm9pbmVkVGFibGVze0luY2lTdGF0ZX0rKyApIHsKICAgICAgICAgICAgICAgICAgICAkU1FMRnJvbSAuPSAnIElOTkVSIEpPSU4gZ2VuZXJhbF9jYXRhbG9nIGdjX2luY2kgT04gKHYuaW5jaV9zdGF0ZV9pZCA9IGdjX2luY2kuaWQpJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFNvcnRCeUFycmF5WyRDb3VudF0gZXEgJ0N1ckRlcGxTdGF0ZScgJiYgISRKb2luZWRUYWJsZXN7Q3VyRGVwbFN0YXRlfSsrICkgewogICAgICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBnZW5lcmFsX2NhdGFsb2cgZ2NfY2RlcGwgT04gKGNpLmN1cl9kZXBsX3N0YXRlX2lkID0gZ2NfY2RlcGwuaWQpJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFNvcnRCeUFycmF5WyRDb3VudF0gZXEgJ0N1ckluY2lTdGF0ZScgJiYgISRKb2luZWRUYWJsZXN7Q3VySW5jaVN0YXRlfSsrICkgewogICAgICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBnZW5lcmFsX2NhdGFsb2cgZ2NfY2luY2kgT04gKGNpLmN1cl9pbmNpX3N0YXRlX2lkID0gZ2NfY2luY2kuaWQpJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFJlZ3VsYXIgc29ydC4KICAgICAgICAgICAgICAgICRTUUxTZWxlY3QgLj0gJywgJyAuICRTb3J0T3B0aW9uc3sgJFNvcnRCeUFycmF5WyRDb3VudF0gfTsKICAgICAgICAgICAgICAgICRTUUxFeHQgICAgLj0gJyAnIC4gJFNvcnRPcHRpb25zeyAkU29ydEJ5QXJyYXlbJENvdW50XSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRPcmRlckJ5QXJyYXlbJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgJFNRTEV4dCAuPSAnIEFTQyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICcgREVTQyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlT2JqZWN0OwoKICAgIGlmICggJFBhcmFte0NhY2hlVFRMfSApIHsKICAgICAgICAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgICAgICBteSAkQ2FjaGVEYXRhID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBLZXkgID0+ICRTUUxTZWxlY3QgLiAkU1FMRnJvbSAuICRTUUxFeHQgLiAkUmVzdWx0IC4gJExpbWl0LAogICAgICAgICk7CgogICAgICAgIGlmICggZGVmaW5lZCAkQ2FjaGVEYXRhICkgewogICAgICAgICAgICBpZiAoIHJlZiAkQ2FjaGVEYXRhIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAleyRDYWNoZURhdGF9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggcmVmICRDYWNoZURhdGEgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiBAeyRDYWNoZURhdGF9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggcmVmICRDYWNoZURhdGEgZXEgJycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJENhY2hlRGF0YTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnSW52YWxpZCByZWYgJyAuIHJlZigkQ2FjaGVEYXRhKSAuICchJwogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGF0YWJhc2UgcXVlcnkKICAgIG15ICVDb25maWdJdGVtczsKICAgIG15IEBDb25maWdJdGVtSURzOwogICAgbXkgJENvdW50OwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUxTZWxlY3QgLiAkU1FMRnJvbSAuICRTUUxFeHQsCiAgICAgICAgTGltaXQgPT4gJExpbWl0CiAgICApOwoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDb3VudCA9ICRSb3dbMF07CiAgICAgICAgJENvbmZpZ0l0ZW1zeyAkUm93WzBdIH0gPSAkUm93WzFdOwogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRSb3dbMF07CiAgICB9CgogICAgIyByZXR1cm4gQ09VTlQKICAgIGlmICggJFJlc3VsdCBlcSAnQ09VTlQnICkgewogICAgICAgIGlmICgkQ2FjaGVPYmplY3QpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkU1FMU2VsZWN0IC4gJFNRTEZyb20gLiAkU1FMRXh0IC4gJFJlc3VsdCAuICRMaW1pdCwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRDb3VudCwKICAgICAgICAgICAgICAgIFRUTCAgID0+ICRQYXJhbXtDYWNoZVRUTH0gfHwgNjAgKiA0LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJENvdW50OwogICAgfQoKICAgICMgcmV0dXJuIEhBU0gKICAgIGVsc2lmICggJFJlc3VsdCBlcSAnSEFTSCcgKSB7CiAgICAgICAgaWYgKCRDYWNoZU9iamVjdCkgewogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgICAgIEtleSAgID0+ICRTUUxTZWxlY3QgLiAkU1FMRnJvbSAuICRTUUxFeHQgLiAkUmVzdWx0IC4gJExpbWl0LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gXCVDb25maWdJdGVtcywKICAgICAgICAgICAgICAgIFRUTCAgID0+ICRQYXJhbXtDYWNoZVRUTH0gfHwgNjAgKiA0LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJUNvbmZpZ0l0ZW1zOwogICAgfQoKICAgICMgcmV0dXJuIEFSUkFZCiAgICBlbHNlIHsKICAgICAgICBpZiAoJENhY2hlT2JqZWN0KSB7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFNRTFNlbGVjdCAuICRTUUxGcm9tIC4gJFNRTEV4dCAuICRSZXN1bHQgLiAkTGltaXQsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBcQENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICAgICBUVEwgICA9PiAkUGFyYW17Q2FjaGVUVEx9IHx8IDYwICogNCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIEBDb25maWdJdGVtSURzOwogICAgfQp9CgpzdWIgX1ZlcnNpb25TZWFyY2hJbmRleFNRTEpvaW5OZWVkZWQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcvTmFtZSBEZXBsU3RhdGVzIEluY2lTdGF0ZXMgRGVwbFN0YXRlSURzIEluY2lTdGF0ZUlEcy8pIHsKICAgICAgICByZXR1cm4gMSBpZiAkUGFyYW17U2VhcmNoUGFyYW1zfXskQXR0cmlidXRlfTsKICAgIH0KCiAgICBmb3IgbXkgJEtleSAoIGtleXMgJFBhcmFte1NlYXJjaFBhcmFtc30tPiUqICkgewogICAgICAgIHJldHVybiAxIGlmICRLZXkgPX4gL15EeW5hbWljRmllbGRfLzsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Definition.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RGVmaW5pdGlvbjsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkRlZmluaXRpb24gLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGRlZmluaXRpb24gb2YgY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgcm9sZXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkgbm9uZSB1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMiBEZWZpbml0aW9uTGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBkZWZpbml0aW9uIGxpc3QgZm9yIGEgY2xhc3MgYXMgYW4gYXJyYXktaGFzaCByZWZlcmVuY2UuIFRoZSBsaXN0CmlzIHNvcnRlZCBieSB2ZXJzaW9uLgoKICAgIG15ICREZWZpbml0aW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICk7CgpyZXR1cm5zCgogICAgbXkgJERlZmluaXRpb25MaXN0UmVmID0gWwogICAgICAgICAgewogICAgICAgICAgICAnVmVyc2lvbicgICAgICA9PiAnMScsCiAgICAgICAgICAgICdDcmVhdGVUaW1lJyAgID0+ICcyMDEyLTA2LTEyIDE0OjA5OjQzJywKICAgICAgICAgICAgJ0RlZmluaXRpb25JRCcgPT4gJzEnLAogICAgICAgICAgICAnQ3JlYXRlQnknICAgICA9PiAnMTIzJywKICAgICAgICAgICAgJ0RlZmluaXRpb24nICAgPT4gJy0tLQotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogIC0gVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKCi0gS2V5OiBEZXNjcmlwdGlvbgogIE5hbWU6IERlc2NyaXB0aW9uCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogIC0gVHlwZTogVGV4dEFyZWEKCi0gS2V5OiBUeXBlCiAgTmFtZTogVHlwZQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAtIFR5cGU6IFRleHRBcmVhCiAgLSBUeXBlOiBHZW5lcmFsQ2F0YWxvZ1wKICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpDb21wdXRlcjo6VHlwZQogICAgVHJhbnNsYXRpb246IDEKIyAuLi4gZXRjIC4uLgonLAogICAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NsYXNzSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc0lEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNrIGRhdGFiYXNlCiAgICBteSAkUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RBbGwoCiAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApTRUxFQ1QgaWQsIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwgdmVyc2lvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieQogIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgV0hFUkUgY2xhc3NfaWQgPSA/CiAgT1JERVIgQlkgdmVyc2lvbgpFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2xhc3NJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkICRSb3dzOwoKICAgIG15IEBEZWZpbml0aW9uTGlzdDsKICAgIGZvciBteSAkUm93ICggJFJvd3MtPkAqICkgewogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb25JRH0gPSAkUm93LT5bMF07CiAgICAgICAgJERlZmluaXRpb257RGVmaW5pdGlvbn0gICA9ICRSb3ctPlsxXSB8fCAiLS0tIHt9IjsKICAgICAgICAkRGVmaW5pdGlvbntWZXJzaW9ufSAgICAgID0gJFJvdy0+WzJdOwogICAgICAgICREZWZpbml0aW9ue0NyZWF0ZVRpbWV9ICAgPSAkUm93LT5bM107CiAgICAgICAgJERlZmluaXRpb257Q3JlYXRlQnl9ICAgICA9ICRSb3ctPls0XTsKCiAgICAgICAgIyBDaGVjayBpZiBkZWZpbml0aW9uIGNvZGUgaXMgbm90IGEgWUFNTCBzdHJpbmcuCiAgICAgICAgaWYgKCBzdWJzdHIoICREZWZpbml0aW9ue0RlZmluaXRpb259LCAwLCAzICkgbmUgJy0tLScgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkRlZmluaXRpb25JRDogJERlZmluaXRpb257RGVmaW5pdGlvbklEfSIKICAgICAgICAgICAgICAgICAgICAuICIgQ2xhc3NJRDogJFBhcmFte0NsYXNzSUR9IgogICAgICAgICAgICAgICAgICAgIC4gIiBmb3VuZCBpbiBsZWdhY3kgUGVybCBjb2RlIGZvcm1hdCwgY2FuIG5vdCBjb250aW51ZSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkRGVmaW5pdGlvbntEZWZpbml0aW9ufSA9ICItLS0ge30iOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBARGVmaW5pdGlvbkxpc3QsIFwlRGVmaW5pdGlvbjsKICAgIH0KCiAgICByZXR1cm4gXEBEZWZpbml0aW9uTGlzdDsKfQoKPWhlYWQyIFJvbGVEZWZpbml0aW9uTGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBkZWZpbml0aW9uIGxpc3QgZm9yIGEgcm9sZSBhcyBhbiBhcnJheS1oYXNoIHJlZmVyZW5jZS4gVGhlIGxpc3QKaXMgc29ydGVkIGJ5IHZlcnNpb24uIFRoaXMgdGhlIHNhbWUgYXMgQzxEZWZpbml0aW9uTGlzdD4sIGJ1dCB0aGUgcGFyYW1ldGVyIEM8Um9sZUlEPiBpcwp1c2VkIGluc3RlYWQgb2YgQzxDbGFzc0lEPi4KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJlbmFtZSB0aGUgcGFyYW1ldGVyCiAgICAkUGFyYW17Q2xhc3NJRH0gPSBkZWxldGUgJFBhcmFte1JvbGVJRH07CgogICAgcmV0dXJuICRTZWxmLT5EZWZpbml0aW9uTGlzdCglUGFyYW0pOwp9Cgo9aGVhZDIgRGVmaW5pdGlvbkdldCgpCgpyZXR1cm5zIGEgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+IDEyMywKICAgICk7CgpvcgoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICApOwoKUmV0dXJuczoKCiAgICAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0KICAgICREZWZpbml0aW9uLT57Q2xhc3NJRH0KICAgICREZWZpbml0aW9uLT57Q2xhc3N9ICAgICAgICAgICAgICAgIyBOYW1lIG9mIHRoZSBjbGFzcwogICAgJERlZmluaXRpb24tPntEZWZpbml0aW9ufQogICAgJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfQogICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9CiAgICAkRGVmaW5pdGlvbi0+e1ZlcnNpb259CiAgICAkRGVmaW5pdGlvbi0+e0NyZWF0ZVRpbWV9CiAgICAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fQoKPWN1dAoKc3ViIERlZmluaXRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0RlZmluaXRpb25JRH0gJiYgISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvbklEIG9yIENsYXNzSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgQFJvdzsKICAgIGlmICggJFBhcmFte0RlZmluaXRpb25JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57RGVmaW5pdGlvbkdldH0tPnsgJFBhcmFte0RlZmluaXRpb25JRH0gfQogICAgICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfS0+e0RlZmluaXRpb25HZXR9LT57ICRQYXJhbXtEZWZpbml0aW9uSUR9IH07CgogICAgICAgICMgYXNrIGRhdGFiYXNlIGZvciB0aGUgc3BlY2lmaWVkIGRlZmluaXRpb24gdmVyc2lvbgogICAgICAgIEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCBkeW5hbWljZmllbGRfZGVmaW5pdGlvbiwgdmVyc2lvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtEZWZpbml0aW9uSUR9IF0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGFzayBkYXRhYmFzZSBmb3IgdGhlIG5ld2VzdCB2ZXJzaW9uIGZvciB0aGUgY2xhc3MKICAgICAgICBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgY2xhc3NfaWQsIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwgZHluYW1pY2ZpZWxkX2RlZmluaXRpb24sIHZlcnNpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkgJwogICAgICAgICAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24gJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgY2xhc3NfaWQgPSA/IE9SREVSIEJZIHZlcnNpb24gREVTQycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NsYXNzSUR9IF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEZWZpbml0aW9uOwogICAgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSA9ICRSb3dbMF07CiAgICAkRGVmaW5pdGlvbntDbGFzc0lEfSAgICAgID0gJFJvd1sxXTsKICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ICAgPSAkUm93WzJdIHx8ICctLS0ge30nOyAgICAjIGEgWUFNTCBzdHJpbmcKICAgIG15ICREeW5hbWljRmllbGRzID0gJFJvd1szXSB8fCAnLS0tIHt9JzsgICAgICAgICAgICAjIGEgWUFNTCBzdHJpbmcKICAgICREZWZpbml0aW9ue1ZlcnNpb259ICAgID0gJFJvd1s0XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZVRpbWV9ID0gJFJvd1s1XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZUJ5fSAgID0gJFJvd1s2XTsKCiAgICByZXR1cm4ge30gdW5sZXNzICREZWZpbml0aW9ue0RlZmluaXRpb25JRH07CgogICAgIyBDaGVjayBpZiBkZWZpbml0aW9uIGNvZGUgaXMgbm90IGEgWUFNTCBzdHJpbmcuCiAgICBpZiAoIHN1YnN0ciggJERlZmluaXRpb257RGVmaW5pdGlvbn0sIDAsIDMgKSBuZSAnLS0tJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEZWZpbml0aW9uSUQ6ICREZWZpbml0aW9ue0RlZmluaXRpb25JRH0iCiAgICAgICAgICAgICAgICAuICIgQ2xhc3NJRDogJERlZmluaXRpb257Q2xhc3NJRH0iCiAgICAgICAgICAgICAgICAuICIgZm91bmQgaW4gbGVnYWN5IFBlcmwgY29kZSBmb3JtYXQsIGNhbiBub3QgY29udGludWUiLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ID0gIi0tLSB7fSI7CiAgICB9CgogICAgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgdGhpcyBjYW4gYmUgY2hhbmdlcyB0byBwcm9kdWNlIGFuIGVycm9yIHNvbWV3aGVuCiAgICAjIGN1cnJlbnRseSAoMTEuMCkgd2Ugd2lsbCBoYXZlIHRvIGRlYWwgd2l0aCBsZWdhY3kgZGVmaW5pdGlvbnMgaW4gdGhlIHN5c3RlbQogICAgaWYgKCByZWYgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gbmUgJ0hBU0gnICkgewogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ID0ge307CiAgICB9CgogICAgJERlZmluaXRpb257RHluYW1pY0ZpZWxkUmVmfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkRHluYW1pY0ZpZWxkcywKICAgICk7CgogICAgIyBtZXJnZSB0aGUgcm9sZXMgaW50byB0aGUgRGVmaW5pdGlvblJlZiwgdGhlIHBhc3NlZCBpbiByZWZlcmVuY2UgaXMgbW9kaWZpZWQgaW4gcGxhY2UKICAgICRTZWxmLT5fUHJvY2Vzc1JvbGVzKAogICAgICAgIERlZmluaXRpb25SZWYgPT4gJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0sCiAgICApOwoKICAgICMgcHJlcGFyZSBkZWZpbml0aW9uCiAgICAjIFRPRE86IFJld29yaz8KICAgICNpZiAoICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ICYmIHJlZiAkRGVmaW5pdGlvbntEZWZpbml0aW9uUmVmfSBlcSAnQVJSQVknICkgewogICAgIyAgICAkU2VsZi0+X0RlZmluaXRpb25QcmVwYXJlKAogICAgIyAgICAgICAgRGVmaW5pdGlvblJlZiA9PiAkRGVmaW5pdGlvbntEZWZpbml0aW9uUmVmfSwKICAgICMgICAgKTsKICAgICN9CiAgICAjZWxzZSB7CiAgICAjICAgICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ID0gJyc7CiAgICAjfQoKICAgICMgYWRkIHRoZSBuYW1lIG9mIHRoZSBjb25maWcgaXRlbSBjbGFzcyB0byB0aGUgcm9sZSBkZWZpbml0aW9uCiAgICB7CiAgICAgICAgbXkgJElEMk5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgJERlZmluaXRpb257Q2xhc3N9ID0gJElEMk5hbWUtPnsgJERlZmluaXRpb257Q2xhc3NJRH0gfTsKICAgIH0KCiAgICAjIGNhY2hlIHRoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGV9LT57RGVmaW5pdGlvbkdldH0tPnsgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSB9ID0gXCVEZWZpbml0aW9uOwoKICAgIHJldHVybiBcJURlZmluaXRpb247Cn0KCj1oZWFkMiBSb2xlRGVmaW5pdGlvbkdldCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSByb2xlIGRlZmluaXRpb24gYXMgaGFzaCByZWZlcmVuY2UuIFRoZSByb2xlIGRlZmluaXRpb25zIGFyZSBzdG9yZWQgaW4gdGhlCnRhYmxlIEk8Y29uZmlnaXRlbV9kZWZpbml0aW9uPiwganVzdCBsaWtlIHRoZSBjb25maWcgaXRlbSBkZWZpbml0aW9ucy4KCkdldCBhIHNwZWNpZmljIHZlcnNpb24gd2hlbiB0aGUgdGVjaG5pY2FsIElEIGlzIGtub3duOgoKICAgIG15ICRSb2xlRGVmaW5pdGlvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Sb2xlRGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gMTIsCiAgICApOwoKT3IgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbjoKCiAgICBteSAkUm9sZURlZmluaXRpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25HZXQoCiAgICAgICAgUm9sZUlEID0+IDEyMywgIyBhbmFsb2dvdXMgdG8gQ2xhc3NJRCBpbiBEZWZpbml0aW9uR2V0KCkKICAgICk7CgpPciBnZXQgYSBzcGVjaWZpYyB2ZXJzaW9uIHdoZW4gdGhlIHZlcnNpb24gaXMga25vd24uCgogICAgbXkgJFJvbGVEZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uR2V0KAogICAgICAgIFJvbGVJRCAgPT4gMTIzLAogICAgICAgIFZlcnNpb24gPT4gMiwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfQogICAgJERlZmluaXRpb24tPntSb2xlSUR9ICAgICAgICAgICAgICAgICAjIGFuYWxvZ291cyB0byBDbGFzc0lEIGluIERlZmluaXRpb25HZXQoKQogICAgJERlZmluaXRpb24tPntSb2xlfSAgICAgICAgICAgICAgICAgICAjIG5hbWUgb2YgdGhlIHJvbGUsIGFuYWxvZ291cyB0byBDbGFzcyBpbiBEZWZpbml0aW9uR2V0KCkKICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0KICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0KICAgICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfQogICAgJERlZmluaXRpb24tPntWZXJzaW9ufQogICAgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfQogICAgJERlZmluaXRpb24tPntDcmVhdGVCeX0KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17RGVmaW5pdGlvbklEfSAmJiAhJFBhcmFte1JvbGVJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb25JRCBvciBSb2xlSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNyZWF0ZSBTUUwKICAgIG15ICggQFdoZXJlLCBAQmluZHMgKTsKICAgIGlmICggJFBhcmFte0RlZmluaXRpb25JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Um9sZURlZmluaXRpb25HZXR9LT57ICRQYXJhbXtEZWZpbml0aW9uSUR9IH0KICAgICAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntSb2xlRGVmaW5pdGlvbkdldH0tPnsgJFBhcmFte0RlZmluaXRpb25JRH0gfTsKCiAgICAgICAgcHVzaCBAV2hlcmUsICdpZCA9ID8nOwogICAgICAgIHB1c2ggQEJpbmRzLCBcJFBhcmFte0RlZmluaXRpb25JRH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIGFzayBkYXRhYmFzZSBmb3IgdGhlIG5ld2VzdCB2ZXJzaW9uIGZvciB0aGUgY2xhc3MKICAgICAgICBwdXNoIEBXaGVyZSwgJ2NsYXNzX2lkID0gPyc7CiAgICAgICAgcHVzaCBAQmluZHMsIFwkUGFyYW17Um9sZUlEfTsKCiAgICAgICAgIyBvciByZXF1ZXN0IGEgc3BlY2lmaWMgdmVyc2lvbgogICAgICAgIGlmICggJFBhcmFte1ZlcnNpb259ICkgewogICAgICAgICAgICBwdXNoIEBXaGVyZSwgJ3ZlcnNpb24gPSA/JzsKICAgICAgICAgICAgcHVzaCBAQmluZHMsIFwkUGFyYW17VmVyc2lvbn07CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTUUwgPSBzcHJpbnRmIDw8J0VORF9TUUwnLCBqb2luKCAnIEFORCAnLCBAV2hlcmUgKTsKU0VMRUNUIGlkLCBjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5CiAgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24KICBXSEVSRSAlcwogIE9SREVSIEJZIHZlcnNpb24gREVTQwpFTkRfU1FMCgogICAgbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgQmluZCA9PiBcQEJpbmRzLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEZWZpbml0aW9uOwogICAgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSA9ICRSb3dbMF07CiAgICAkRGVmaW5pdGlvbntSb2xlSUR9ICAgICAgID0gJFJvd1sxXTsKICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ICAgPSAkUm93WzJdIHx8ICItLS0ge30iOwogICAgJERlZmluaXRpb257VmVyc2lvbn0gICAgICA9ICRSb3dbM107CiAgICAkRGVmaW5pdGlvbntDcmVhdGVUaW1lfSAgID0gJFJvd1s0XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZUJ5fSAgICAgPSAkUm93WzVdOwoKICAgIHJldHVybiB7fSB1bmxlc3MgJERlZmluaXRpb257RGVmaW5pdGlvbklEfTsKCiAgICAjIENoZWNrIGlmIGRlZmluaXRpb24gY29kZSBpcyBub3QgYSBZQU1MIHN0cmluZy4KICAgIGlmICggc3Vic3RyKCAkRGVmaW5pdGlvbntEZWZpbml0aW9ufSwgMCwgMyApIG5lICctLS0nICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkRlZmluaXRpb25JRDogJERlZmluaXRpb257RGVmaW5pdGlvbklEfSIKICAgICAgICAgICAgICAgIC4gIiBSb2xlSUQ6ICREZWZpbml0aW9ue1JvbGVJRH0iCiAgICAgICAgICAgICAgICAuICIgZm91bmQgaW4gbGVnYWN5IFBlcmwgY29kZSBmb3JtYXQsIGNhbiBub3QgY29udGludWUiLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ID0gIi0tLSB7fSI7CiAgICB9CgogICAgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgYWRkIHRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIHRoZSByb2xlIGRlZmluaXRpb24KICAgIHsKICAgICAgICBteSAkSUQyTmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue1JvbGV9ID0gJElEMk5hbWUtPnsgJERlZmluaXRpb257Um9sZUlEfSB9OwogICAgfQoKICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZX0tPntSb2xlRGVmaW5pdGlvbkdldH0tPnsgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSB9ID0gXCVEZWZpbml0aW9uOwoKICAgIHJldHVybiBcJURlZmluaXRpb247Cn0KCj1oZWFkMiBEZWZpbml0aW9uQWRkKCkKCmFkZHMgYSBuZXcgY29uZmlnIGl0ZW0gY2xhc3MgZGVmaW5pdGlvbi4gVGhpcyBjYW4gYmUgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiBhIGNsYXNzIGRlZmluaXRpb24gb3IgYQpjaGFuZ2Ugb2YgYW4gZXhpc3RpbmcgY2xhc3MgZGVmaW5pdGlvbi4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAxMjMsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAndGhlIGRlZmluaXRpb24gY29kZScsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgIEZvcmNlICAgICAgPT4gMSwgICAgIyBvcHRpb25hbCwgZm9yIGludGVybmFsIHVzZSwgZm9yY2UgYWRkIGV2ZW4gaWYgZGVmaW5pdGlvbiBpcyB1bmNoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKHVzZWQgaWYgZHluYW1pYyBmaWVsZHMgY2hhbmdlZCwgb3IgYSBkeW5hbWljIHJvbGUgY2hhbmdlZCkKICAgICk7CgpSZXR1cm5zIGluIHRoZSBjYXNlIG9mIHN1Y2Nlc3M6CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gMTIzLAogICAgfTsKClJldHVybnMgYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgY2FzZSBvZiBmYWlsdXJlOgoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgID0+IDAsCiAgICAgICAgRXJyb3IgICAgID0+ICJOZWVkICVzISIsCiAgICAgICAgRXJyb3JBcmdzID0+IFsgJ0RlZmluaXRpb24nIF0sCiAgICB9OwoKT25seSB0d28gYXJndW1lbnRzIG9mIHRoZSBlcnJvciBtZXNzYWdlIGFyZSBzdXBwb3J0ZWQuCgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIERlZmluaXRpb24gVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICBteSAkTWVzc2FnZSA9ICJOZWVkICVzISI7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IHNwcmludGYoICRNZXNzYWdlLCAkQXJndW1lbnQgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yICAgICA9PiAkTWVzc2FnZSwKICAgICAgICAgICAgICAgIEVycm9yQXJncyA9PiBbJEFyZ3VtZW50XSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBzYW5pdHkgb2YgdGhlIGRlZmluaXRpb24KICAgIHsKICAgICAgICBteSAkQ2hlY2tSZXN1bHQgPSAkU2VsZi0+RGVmaW5pdGlvbkNoZWNrKAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJENoZWNrUmVzdWx0IHVubGVzcyAkQ2hlY2tSZXN1bHQtPntTdWNjZXNzfTsKICAgIH0KCiAgICAjIGdldCBsYXN0IGRlZmluaXRpb24KICAgIG15ICRMYXN0RGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGRlZmluaXRpb24gaXRzZWxmIG9yIHRoZSBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZWQKICAgIG15ICREZWZpbml0aW9uQ2hhbmdlZCA9CiAgICAgICAgKCAhJExhc3REZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSApCiAgICAgICAgfHwKICAgICAgICAoICRMYXN0RGVmaW5pdGlvbi0+e0RlZmluaXRpb259IG5lICRQYXJhbXtEZWZpbml0aW9ufSApOwoKICAgICMgVE9ETzogJFBhcmFte0ZvcmNlfSB8fCAkU2VsZi0+X0NoZWNrRHluYW1pY0ZpZWxkQ2hhbmdlKCk7IGNhbiBiZSB0YWtlbiBvdXQgb2YgX0RlZmluaXRpb25TeW5jKCkgd2l0aCBhIGxpdHRsZSBhZGFwdGlvbgogICAgJERlZmluaXRpb25DaGFuZ2VkIHx8PSAkUGFyYW17Rm9yY2V9OwoKICAgICMgc3RvcCBhZGQsIGlmIGRlZmluaXRpb24gd2FzIG5vdCBjaGFuZ2VkCiAgICBpZiAoICEkRGVmaW5pdGlvbkNoYW5nZWQgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBhZGQgZHluYW1pYyBmaWVsZCBpbmZvLCByb2xlcyBhcmUgYWxyZWFkeSBjb25zaWRlcmVkIGluIF9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0CiAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbiA9ICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAlUGFyYW0sCiAgICApIHx8ICctLS0ge30nOwoKICAgICMgaW5jcmVtZW50IHZlcnNpb24sIHN0YXJ0IHdpdGggdmVyc2lvbiAxIGZvciBjb21wbGV0ZWx5IG5ldyBjbGFzcyBkZWZpbml0aW9ucwogICAgbXkgJFZlcnNpb24gPSAoICRMYXN0RGVmaW5pdGlvbi0+e1ZlcnNpb259IHx8IDAgKSArIDE7CgogICAgIyBpbnNlcnQgbmV3IGRlZmluaXRpb24KICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbV9kZWZpbml0aW9uICcKICAgICAgICAgICAgLiAnKGNsYXNzX2lkLCBjb25maWdpdGVtX2RlZmluaXRpb24sIGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KSBWQUxVRVMgJwogICAgICAgICAgICAuICcoPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtEZWZpbml0aW9ufSwgXCREeW5hbWljRmllbGREZWZpbml0aW9uLCBcJFZlcnNpb24sIFwkUGFyYW17VXNlcklEfSBdLAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgICAgICBFcnJvciAgID0+ICdJbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uIHdhcyBub3Qgc3VjY2Vzc2Z1bCcsCiAgICB9IHVubGVzcyAkU3VjY2VzczsKCiAgICAjIGdldCBpZCBvZiBuZXcgZGVmaW5pdGlvbgogICAgbXkgKCREZWZpbml0aW9uSUQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uIFdIRVJFICcKICAgICAgICAgICAgLiAnY2xhc3NfaWQgPSA/IEFORCB2ZXJzaW9uID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIHZlcnNpb24gREVTQycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NsYXNzSUR9LCBcJFZlcnNpb24gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGFyZSBzeW5jZWQKICAgICRTZWxmLT5EZWZpbml0aW9uU2V0U3luY2VkKAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIHRyaWdnZXIgRGVmaW5pdGlvbkNyZWF0ZSBldmVudAogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnRGVmaW5pdGlvbkNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIE9sZERlZmluaXRpb24gPT4gJExhc3REZWZpbml0aW9uLAogICAgICAgICAgICBDbGFzc0lEICAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklELAogICAgICAgIFZlcnNpb24gICAgICA9PiAkVmVyc2lvbiwKICAgIH07Cn0KCj1oZWFkMiBSb2xlRGVmaW5pdGlvbkFkZCgpCgphZGRzIGEgbmV3IHJvbGUgZGVmaW5pdGlvbi4gVGhpcyBjYW4gYmUgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiBhIHJvbGUgb3IgYQpjaGFuZ2Ugb2YgYW4gZXhpc3Rpbmcgcm9sZS4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgIFJvbGVJRCAgICAgPT4gMTIzLAogICAgICAgIERlZmluaXRpb24gPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICBGb3JjZSAgICAgID0+IDEsICAgICMgb3B0aW9uYWwsIGZvciB1c2UgZHVyaW5nIGltcG9ydCBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcwogICAgKTsKClJldHVybnMgaW4gdGhlIGNhc2Ugb2Ygc3VjY2VzczoKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAxMjMsICMgZXZlbiB0aG91Z2ggaXQgaXMgYSByb2xlCiAgICAgICAgVmVyc2lvbiAgICAgID0+IDQsCiAgICB9OwoKUmV0dXJucyBhbiBlcnJvciBtZXNzYWdlIGluIHRoZSBjYXNlIG9mIGZhaWx1cmU6CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICBFcnJvciAgICAgPT4gIk5lZWQgJXMhIiwKICAgICAgICBFcnJvckFyZ3MgPT4gWyAnRGVmaW5pdGlvbicgXSwKICAgIH07CgpPbmx5IHR3byBhcmd1bWVudHMgb2YgdGhlIGVycm9yIG1lc3NhZ2UgYXJlIHN1cHBvcnRlZC4KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhSb2xlSUQgRGVmaW5pdGlvbiBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgIG15ICRNZXNzYWdlID0gIk5lZWQgJXMhIjsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gc3ByaW50ZiggJE1lc3NhZ2UsICRBcmd1bWVudCApLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3IgICAgID0+ICRNZXNzYWdlLAogICAgICAgICAgICAgICAgRXJyb3JBcmdzID0+IFskQXJndW1lbnRdLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHNhbml0eSBvZiB0aGUgcm9sZSBkZWZpbml0aW9uCiAgICB7CiAgICAgICAgbXkgJENoZWNrUmVzdWx0ID0gJFNlbGYtPlJvbGVEZWZpbml0aW9uQ2hlY2soCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkQ2hlY2tSZXN1bHQgdW5sZXNzICRDaGVja1Jlc3VsdC0+e1N1Y2Nlc3N9OwogICAgfQoKICAgICMgZ2V0IGxhc3QgZGVmaW5pdGlvbiwgZXZlbiB0aG91Z2ggdGhpcyBpcyByb2xlCiAgICBteSAkTGFzdERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtSb2xlSUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGRlZmluaXRpb24gaXRzZWxmIG9yIHRoZSBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZWQKICAgIG15ICREZWZpbml0aW9uQ2hhbmdlZCA9CiAgICAgICAgJFBhcmFte0ZvcmNlfQogICAgICAgIHx8CiAgICAgICAgKCAhJExhc3REZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSApCiAgICAgICAgfHwKICAgICAgICAoICRMYXN0RGVmaW5pdGlvbi0+e0RlZmluaXRpb259IG5lICRQYXJhbXtEZWZpbml0aW9ufSApOwoKICAgICMgc3RvcCBhZGQsIGlmIGRlZmluaXRpb24gd2FzIG5vdCBjaGFuZ2VkCiAgICBpZiAoICEkRGVmaW5pdGlvbkNoYW5nZWQgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBpbmNyZW1lbnQgdmVyc2lvbiwgc3RhcnRpbmcgd2l0aCAxIGZvciB0aGUgaW5pdGlhbCB2ZXJzaW9uCiAgICBteSAkVmVyc2lvbiA9ICggJExhc3REZWZpbml0aW9uLT57VmVyc2lvbn0gfHwgMCApICsgMTsKCiAgICAjIGluc2VydCBuZXcgZGVmaW5pdGlvbiB3aXRob3V0IGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiAnCiAgICAgICAgICAgIC4gJyhjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KSBWQUxVRVMgJwogICAgICAgICAgICAuICcoPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsgXCggJFBhcmFte1JvbGVJRH0sICRQYXJhbXtEZWZpbml0aW9ufSwgJFZlcnNpb24sICRQYXJhbXtVc2VySUR9ICkgXSwKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgRXJyb3IgICA9PiAnSW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiB3YXMgbm90IHN1Y2Nlc3NmdWwnLAogICAgfSB1bmxlc3MgJFN1Y2Nlc3M7CgogICAgIyBnZXQgaWQgb2YgbmV3IGRlZmluaXRpb24KICAgIG15ICgkTmV3Um9sZURlZmluaXRpb25JRCkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24gV0hFUkUgJwogICAgICAgICAgICAuICdjbGFzc19pZCA9ID8gQU5EIHZlcnNpb24gPSA/ICcKICAgICAgICAgICAgLiAnT1JERVIgQlkgdmVyc2lvbiBERVNDJywKICAgICAgICBCaW5kICA9PiBbIFwoICRQYXJhbXtSb2xlSUR9LCAkVmVyc2lvbiApIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBUaGVyZSBpcyBub3cgYW4gaW5pdGlhbCBvciBzdWJzZXF1ZW50IHZlcnNpb24gb2YgYSByb2xlIGRlZmluaXRpb24uIFRoaXMgbmV3IGRlZmluaXRpb24KICAgICMgbWlnaHQgaGF2ZSBhZGRlZCBvciByZW1vdmVkIGR5bmFtaWMgZmllbGRzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNvbmZpZyBpdGVtIGNsYXNzZWQgdGhhdAogICAgIyBpbmNsdWRlIHRoZSByb2xlIGR5bmFtaWNhbGx5IG11c3QgYmUgdXBkYXRlZCB0b28uCiAgICAkU2VsZi0+X0RlZmluaXRpb25DcmVhdGVBZnRlclJvbGVDcmVhdGUoCiAgICAgICAgUm9sZUlEID0+ICRQYXJhbXtSb2xlSUR9LAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAkTmV3Um9sZURlZmluaXRpb25JRCwKICAgICAgICBWZXJzaW9uICAgICAgPT4gJFZlcnNpb24sCiAgICB9Owp9Cgo9aGVhZDIgRGVmaW5pdGlvbkNoZWNrKCkKCmNoZWNrcyB0aGUgc3ludGF4IG9mIGEgbmV3IGRlZmluaXRpb24uIEJvdGggY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgY2FuIGJlIGNoZWNrZWQKd2l0aCB0aGlzIG1ldGhvZC4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25DaGVjaygKICAgICAgICBEZWZpbml0aW9uICAgICAgPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIENoZWNrU3ViRWxlbWVudCA9PiAxLCAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAwLCB0byBjaGVjayBzdWIgZWxlbWVudHMgcmVjdXJzaXZlbHkpCiAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdDbGFzcycsICAgICAgICAgICAjIG9wdGlvbmFsLCBkZWZhdWx0IGlzICdDbGFzcycsIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ0NsYXNzJyBhbmQgJ1JvbGUnCiAgICApOwoKUmV0dXJucyBpbiB0aGUgY2FzZSBvZiBhIHZhbGlkIGRlZmluaXRpb246CgogICAgbXkgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9OwoKSW5kaWNhdGVzIHRoZSBmaXJzdCBmb3VuZCBwcm9ibGVtIGluIHRoZSBjYXNlIG9mIGFuIGludmFsaWQgZGVmaW5pdGlvbjoKCiAgICBteSAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgICAgIEVycm9yICAgICA9PiBxeyVzIGlzIG1pc3NpbmcuIFBsZWFzZSBwcm92aWRlIGRhdGEgZm9yICVzIGluIHRoZSBkZWZpbml0aW9uLn0sCiAgICAgICAgRXJyb3JBcmdzID0+IFsgJ1NlY3Rpb25zJywgJ1NlY3Rpb25zJyBdLAogICAgfTsKCk5vdGUgdGhhdCB0aGUgZXJyb3IgbWVzc2FnZSBpcyBzcGxpdCB1cCBpbiBjb25zdGFudCBhbmQgdmFyaWFibGUgcGFydHMuIFRoaXMgYWxsb3dzIHRyYW5zbGF0aW9uIGluIHRoZSB1c2VyIGludGVyZmFjZS4KCj1jdXQKCnN1YiBEZWZpbml0aW9uQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0RlZmluaXRpb259ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBEZWZpbml0aW9uIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgVGhpcyBtZXRob2QgaXMgdXNlZCBmb3Igcm9sZXMgYW5kIGNsYXNzZXMKICAgIG15ICRUeXBlID0gJFBhcmFte1R5cGV9IC8vICdDbGFzcyc7CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJFJldHVybkVycm9yID0gc3ViIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICAgICAgRXJyb3IgICAgID0+ICRfWzBdLAogICAgICAgICAgICBFcnJvckFyZ3MgPT4gWyAoICRfWzFdIC8vICcnICksICggJF9bMl0gLy8gJycgKSBdLCAgICAjIG9ubHkgdHdvIGFyZ3MgYXJlIHN1cHBvcnRlZAogICAgICAgIH07CiAgICB9OwoKICAgICMgc2ltcGxlIFlBTUwgcGFyc2luZywgd2l0aG91dCB1c2luZyBZQU1MIHRhZ3MKICAgIG15ICREZWZpbml0aW9uUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICk7CgogICAgIyBZQU1MIGludmFsaWQKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREZWZpbml0aW9uUmVmKSApIHsKICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgIFRyYW5zbGF0YWJsZSgnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0LicpCiAgICAgICAgKTsKICAgIH0KCiAgICAjIENoZWNrIGlmIGRlZmluaXRpb24gc3RhcnRzIHdpdGggJy0tLScKICAgICMgVGhpcyBpcyBhIGxhc3QgY2hlY2sgZm9yIGxlZ2FjeSBsZWdhY3kgRGVmaW5pdGlvbnMgKHByZSBPVFJTNikgd2hpY2ggd2hlcmUgbm90IFlBTUwKICAgICMgV2UgY2FuIHJlbW92ZSB0aGlzIHRvZ2V0aGVyIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgY29kZSBpbiBEZWZpbml0aW9uR2V0KCkgZXRjLiB3aXRoIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UgYWZ0ZXIgMTEuMAogICAgaWYgKCBzdWJzdHIoICRQYXJhbXtEZWZpbml0aW9ufSwgMCwgMyApIG5lICctLS0nICkgewogICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgVHJhbnNsYXRhYmxlKCdTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLicpCiAgICAgICAgKTsKICAgIH0KCiAgICAjIE1lcmdlIHRoZSByb2xlcyBpbnRvIHRoZSBEZWZpbml0aW9uUmVmLiBUaGUgcGFzc2VkIGluIHJlZmVyZW5jZSBpcyBtb2RpZmllZCBpbiBwbGFjZS4KICAgICMgVGhpcyBtaWdodCBjcmVhdGVzIHRoZSAnU2VjdGlvbnMnIGF0dHJpYnV0ZSB3aGVuIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KICAgIGlmICggJFR5cGUgZXEgJ0NsYXNzJyApIHsKICAgICAgICBteSAkUmVzdWx0ID0gJFNlbGYtPl9Qcm9jZXNzUm9sZXMoCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgPT4gJERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIEltcG9ydFJvbGVzICAgPT4gJFBhcmFte0ltcG9ydFJvbGVzfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJFJlc3VsdCB1bmxlc3MgJFJlc3VsdC0+e1N1Y2Nlc3N9OwogICAgfQoKICAgICMgY2hlY2sgdGhlIGRhdGEgc3RydWN0dXJlcyBvZiB0aGUgdG9wIGxldmVsIGF0dHJpYnV0ZXMKICAgIG15ICVFeHBlY3RlZEZvcm1hdCA9ICgKICAgICAgICBTZWN0aW9ucyA9PiAnSGFzaCcsCiAgICApOwogICAgaWYgKCAkVHlwZSBlcSAnQ2xhc3MnICkgewogICAgICAgICRFeHBlY3RlZEZvcm1hdHtQYWdlc30gPSAnQXJyYXknOwogICAgfQogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUV4cGVjdGVkRm9ybWF0ICkgewoKICAgICAgICAjIGVpdGhlciBwYWdlcyBvciBzZWN0aW9ucyBkYXRhIGludmFsaWQKICAgICAgICBpZiAoICEkRGVmaW5pdGlvblJlZi0+eyRLZXl9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXslcyBpcyBtaXNzaW5nLiBQbGVhc2UgcHJvdmlkZSBkYXRhIGZvciAlcyBpbiB0aGUgZGVmaW5pdGlvbi59KSwKICAgICAgICAgICAgICAgICRLZXksCiAgICAgICAgICAgICAgICAkS2V5LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBUT0RPOiB0aGlzIGlzIG5vdCB0cmFuc2xhdGFibGUKICAgICAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZi0+eyRLZXl9IG5lIHVjKCAkRXhwZWN0ZWRGb3JtYXR7JEtleX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJXMgaXMgbm90IGEgJXMuIFBsZWFzZSBjb3JyZWN0IHRoZSBzeW50YXgufSksCiAgICAgICAgICAgICAgICAkS2V5LAogICAgICAgICAgICAgICAgJEV4cGVjdGVkRm9ybWF0eyRLZXl9CiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkVmFsaWRhdGVGdW5jdGlvblJlZiA9IFwmeyJLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjazo6SXMkRXhwZWN0ZWRGb3JtYXR7JEtleX1SZWZXaXRoRGF0YSJ9OwogICAgICAgIGlmICggISRWYWxpZGF0ZUZ1bmN0aW9uUmVmLT4oICREZWZpbml0aW9uUmVmLT57JEtleX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJXMgaXMgZW1wdHkuIFBsZWFzZSBwcm92aWRlIGRhdGEgZm9yICVzIGluIHRoZSBkZWZpbml0aW9uLn0pLAogICAgICAgICAgICAgICAgJEtleSwKICAgICAgICAgICAgICAgICRLZXksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgc2Vjb25kIGxldmVsIGRhdGEgZm9ybWF0CiAgICBteSAlU2VjdGlvbklzTWlzc2luZzsKCiAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlcwogICAgaWYgKCAkRXhwZWN0ZWRGb3JtYXR7UGFnZXN9ICkgewogICAgICAgIGZvciBteSAkUGFnZUluZGV4ICggMCAuLiAkI3sgJERlZmluaXRpb25SZWYtPntQYWdlc30gfSApIHsKICAgICAgICAgICAgbXkgJFBhZ2UgPSAkRGVmaW5pdGlvblJlZi0+e1BhZ2VzfS0+WyRQYWdlSW5kZXhdOwogICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSBDb250ZW50KSkgewogICAgICAgICAgICAgICAgaWYgKCAhJFBhZ2UtPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0tleSAnJXMnIGlzIG1pc3NpbmcgaW4gdGhlIGRlZmluaXRpb24gb2YgcGFnZSAlcy59KSwKICAgICAgICAgICAgICAgICAgICAgICAgJE5lZWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlIGNvbnRlbnQgZGF0YQogICAgICAgICAgICBpZiAoIHJlZiAkUGFnZS0+e0NvbnRlbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7S2V5ICVzIGZvciBwYWdlICVzIGlzIG5vdCBhbiBBcnJheS59KSwKICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcsCiAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFnZS0+e0NvbnRlbnR9ICkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7S2V5ICVzIGZvciBwYWdlICVzIGlzIGVtcHR5Ln0pLAogICAgICAgICAgICAgICAgICAgICdDb250ZW50JywKICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlIGNvbnRlbnQgc2VjdGlvbnMKICAgICAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkluZGV4ICggMCAuLiAkI3sgJFBhZ2UtPntDb250ZW50fSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJFBhZ2UtPntDb250ZW50fS0+WyRTZWN0aW9uSW5kZXhdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU2VjdGlvbiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QSBzZWN0aW9uIGluIHBhZ2UgJXMgaXMgaW52YWxpZC4gUGxlYXNlIHByb3ZpZGUgZGF0YSBmb3IgdGhlIHNlY3Rpb24gb3IgcmVtb3ZlIGl0Ln0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCByZWYgJFNlY3Rpb24gbmUgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEYXRhIGZvciBhIHNlY3Rpb24gaW4gcGFnZSAlcyBpcyBub3QgYSBIYXNoLiBQbGVhc2UgY29ycmVjdCB0aGUgc3ludGF4Ln0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAhJFNlY3Rpb24tPiUqICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEYXRhIGZvciBhIHNlY3Rpb24gaW4gcGFnZSAlcyBpcyBlbXB0eS4gUGxlYXNlIHByb3ZpZGUgZGF0YSBmb3IgdGhlIHNlY3Rpb24ufSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFNlY3Rpb24tPntTZWN0aW9ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QSBzZWN0aW9uIGluIHBhZ2UgJXMgaXMgbWlzc2luZyB0aGUga2V5ICdTZWN0aW9uJywgd2hpY2ggaGFzIHRvIGJlIGZpbGxlZCB3aXRoIHRoZSBzZWN0aW9uIG5hbWUufSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3RvcmUgc2VjdGlvbiBuYW1lIGZvciBjaGVja2luZyBkYXRhIGludGVncml0eSBsYXRlciBvbgogICAgICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbklzTWlzc2luZ3sgJFNlY3Rpb24tPntTZWN0aW9ufSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgZm9yIHRoZSBvcHRpb25hbCBhcnJheSByZWZlcmVuY2VzCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KEludGVyZmFjZXMgR3JvdXBzKSkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRQYWdlLT57JEtleX07ICAgICAgICAgICAgICAgIyBpcyBvcHRpb25hbAogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgcmVmICRQYWdlLT57JEtleX0gZXEgJ0FSUkFZJzsgICAgIyBtdXN0IGJlIGFycmF5cmVmIHdoZW4gaXQgZXhpc3RzCgogICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0tleSAlcyBmb3IgcGFnZSAlcyBpcyBub3QgYW4gQXJyYXkufSksCiAgICAgICAgICAgICAgICAgICAgJEtleSwKICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAlRGVmaW5lZER5bmFtaWNGaWVsZHM7CiAgICBteSBATmVlZGVkQ29udGVudEVudHJ5ID0gcXcvREYgR3JpZCBIZWFkZXIvOwoKICAgICMgc2VjdGlvbnMgZGF0YSBpbiBwYWdlcyBjb250ZW50IGFyZSB2YWxpZCwgZ28gb24gY2hlY2tpbmcKICAgIFNFQ1RJT046CiAgICBmb3IgbXkgJFNlY3Rpb25OYW1lICgga2V5cyAleyAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfSAvLyB7fSB9ICkgewoKICAgICAgICAjIHJlbW92ZSBkZWZpbmVkIHNlY3Rpb25zIHRvIGxhdGVyIGlkZW50aWZ5IHVuZGVmaW5lZCBvbmVzCiAgICAgICAgZGVsZXRlICRTZWN0aW9uSXNNaXNzaW5neyRTZWN0aW9uTmFtZX07CgogICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb25SZWYtPntTZWN0aW9uc317JFNlY3Rpb25OYW1lfTsKCiAgICAgICAgaWYgKCAhJFNlY3Rpb24gfHwgIUlzSGFzaFJlZldpdGhEYXRhKCRTZWN0aW9uKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RWl0aGVyIHRoZSBjb250ZW50IG9mIHNlY3Rpb24gJXMgaXMgZW50aXJlbHkgbWlzc2luZyBvciBub3QgYSBoYXNoLn0pLAogICAgICAgICAgICAgICAgJFNlY3Rpb25OYW1lLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU2VjdGlvbi0+e01vZHVsZX0gKSB7CiAgICAgICAgICAgIG15ICRNb2R1bGUgPSAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpTZWN0aW9uOjonIC4gJFNlY3Rpb24tPntNb2R1bGV9OwoKICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgkTW9kdWxlKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtDYW5ub3QgbG9hZCBNb2R1bGUgaW4gc2VjdGlvbiAlcy59KSwKICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbk5hbWUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IFNFQ1RJT047CiAgICAgICAgfQoKICAgICAgICAjIHNraXAgZGVzY3JpcHRpb24gc2VjdGlvbnMKICAgICAgICBuZXh0IFNFQ1RJT04gaWYgJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IGVxICdEZXNjcmlwdGlvbic7CgogICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgaWYgKCAhYW55IHsgJFNlY3Rpb24tPntUeXBlfSBlcSAkXyB9IHF3L0NvbmZpZ0l0ZW1MaW5rcyBEZXNjcmlwdGlvbiBSZWZlcmVuY2VkU2VjdGlvbi8gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7SW52YWxpZCB0eXBlIGluIHNlY3Rpb24gJXMufSksCiAgICAgICAgICAgICAgICAgICAgJFNlY3Rpb25OYW1lLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICEkU2VjdGlvbi0+e0NvbnRlbnR9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtLZXkgJ0NvbnRlbnQnIGlzIG1pc3NpbmcgaW4gc2VjdGlvbiAlcy59KSwKICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkU2VjdGlvbi0+e0NvbnRlbnR9ICkgKSB7CiAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0RhdGEgZm9yICdDb250ZW50JyBpbiBzZWN0aW9uICVzIGlzIG5vdCBhbiBhcnJheS59KSwKICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgQEdyaWRzOwogICAgICAgIGZvciBteSAkQ29udGVudEl0ZW0gKCAkU2VjdGlvbi0+e0NvbnRlbnR9LT5AKiApIHsKCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb250ZW50SXRlbSkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QW4gZWxlbWVudCBvZiAnQ29udGVudCcgaW4gc2VjdGlvbiAlcyBkb2VzIG5vdCBjb250YWluIGtleSB2YWx1ZSBwYWlycy59KSwKICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbk5hbWUKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggIWFueSB7ICRDb250ZW50SXRlbS0+eyRffSB9IEBOZWVkZWRDb250ZW50RW50cnkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7U2VjdGlvbiAlcyBoYXMgY29udGVudCB3aGljaCBkb2Vzbid0IHByb3ZpZGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgZW50cmllcyA8JXM+Ln0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZSwKICAgICAgICAgICAgICAgICAgICAiQE5lZWRlZENvbnRlbnRFbnRyeSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJENvbnRlbnRJdGVtLT57REZ9ICkgewogICAgICAgICAgICAgICAgJERlZmluZWREeW5hbWljRmllbGRzeyAkQ29udGVudEl0ZW0tPntERn0gfSA9ICRTZWN0aW9uTmFtZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb250ZW50SXRlbS0+e0dyaWR9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAR3JpZHMsICRDb250ZW50SXRlbS0+e0dyaWR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJEdyaWRJdGVtIChAR3JpZHMpIHsKCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRHcmlkSXRlbSkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgbWlzY29uZmlndXJlZCBncmlkLn0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJEdyaWRJdGVtLT57Um93c30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgZ3JpZCB3aXRob3V0IGFueSByb3dzLn0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBUT0RPIHNvbWUgbW9yZSBiYXNpYyBjaGVja3MKICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkR3JpZEl0ZW0tPntSb3dzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJENlbGwgKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkQ2VsbC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgZ3JpZCB3aXRob3V0IERGIGluIGEgY2VsbC59KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkRGVmaW5lZER5bmFtaWNGaWVsZHN7ICRDZWxsLT57REZ9IH0gPSAkU2VjdGlvbk5hbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBzZWN0aW9ucyBvZiByb2xlcyB3aGljaCBhcmUgb25seSBhYm91dCB0byBiZSBpbXBvcnRlZCBhcmUgbm90IGRlZmluZWQgeWV0CiAgICBteSAlSW1wb3J0Um9sZXMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte0ltcG9ydFJvbGVzfSAvLyBbXSB9OwoKICAgIGZvciBteSAkU2VjdGlvbk5hbWUgKCBrZXlzICVTZWN0aW9uSXNNaXNzaW5nICkgewogICAgICAgIGlmICggJUltcG9ydFJvbGVzICYmICRTZWN0aW9uTmFtZSA9fiAvOjovICkgewogICAgICAgICAgICBST0xFOgogICAgICAgICAgICBmb3IgbXkgJFJvbGUgKCBrZXlzICV7ICREZWZpbml0aW9uUmVmLT57Um9sZXN9IC8vIHt9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFJPTEUgaWYgISRJbXBvcnRSb2xlc3skUm9sZX07CgogICAgICAgICAgICAgICAgIyB0aGlzIHNlY3Rpb24gd2lsbCBiZSBpbXBvcnRlZCBhbmQgY2hlY2tlZCB3aXRoIHRoZSBzcGVjaWZpYyByb2xlCiAgICAgICAgICAgICAgICBkZWxldGUgJFNlY3Rpb25Jc01pc3Npbmd7JFNlY3Rpb25OYW1lfSBpZiAkU2VjdGlvbk5hbWUgPX4gLyREZWZpbml0aW9uUmVmLT57Um9sZXN9eyRSb2xlfXtOYW1lfTo6LzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJVNlY3Rpb25Jc01pc3NpbmcpIHsKICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgYXJlIHVzZWQgaW4gcGFnZXMsIGJ1dCBhcmUgbm90IGRlZmluZWQ6ICVzfSksCiAgICAgICAgICAgIGpvaW4oICcsICcsIHNvcnQga2V5cyAlU2VjdGlvbklzTWlzc2luZyApCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGFsbCB1c2VkIGR5bmFtaWMgZmllbGRzIGFyZSB2YWxpZAogICAgbXkgJERGSUQyTmFtZUxpc3RSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgVmFsaWQgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgKTsKCiAgICBteSAlREZOYW1lMklETGlzdCA9IHJldmVyc2UgJERGSUQyTmFtZUxpc3RSZWYtPiUqOwoKICAgIGZvciBteSAkRGVmaW5lZEZpZWxkTmFtZSAoIGtleXMgJURlZmluZWREeW5hbWljRmllbGRzICkgewoKICAgICAgICAjIGNoZWNrIHdpdGggZHluYW1pYyBmaWVsZCBsaXN0CiAgICAgICAgaWYgKCAhJERGTmFtZTJJRExpc3R7JERlZmluZWRGaWVsZE5hbWV9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEeW5hbWljIGZpZWxkICVzIGlzIHVzZWQgaW4gc2VjdGlvbiAlcywgYnV0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBzeXN0ZW0uIFBlcmhhcHMgeW91IGZvcmdvdCB0byBjcmVhdGUgaXQgb3IgbWlzc3BlbGxlZCBpdHMgbmFtZT99KSwKICAgICAgICAgICAgICAgICREZWZpbmVkRmllbGROYW1lLAogICAgICAgICAgICAgICAgJERlZmluZWREeW5hbWljRmllbGRzeyREZWZpbmVkRmllbGROYW1lfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9Owp9Cgo9aGVhZDIgUm9sZURlZmluaXRpb25DaGVjaygpCgpjaGVja3MgdGhlIHN5bnRheCBhbmQgdGhlIHNhbml0eSBvZiBhIG5ldyByb2xlIGRlZmluaXRpb24uCgpUaGlzIG1ldGhvZCBjdXJyZW50bHkgb25seSBmYWxscyBiYWNrIHRvIHRoZSBtZXRob2QgQzxEZWZpbml0aW9uQ2hlY2soKT4uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25DaGVjaygKICAgICAgICBEZWZpbml0aW9uICAgICAgPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIENoZWNrU3ViRWxlbWVudCA9PiAxLCAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCwgdG8gY2hlY2sgc3ViIGVsZW1lbnRzIHJlY3Vyc2l2ZWx5KQogICAgKTsKCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5EZWZpbml0aW9uQ2hlY2soICVQYXJhbSwgVHlwZSA9PiAnUm9sZScgKTsKfQoKPWhlYWQyIERlZmluaXRpb25OZWVkU3luYygpCgpyZXR1cm4gYSBoYXNoIG9mIGNsYXNzIGlkcyB3aXRoIGN1cnJlbnQgZGVmaW5pdGlvbnMgd2l0aCBkeW5hbWljIGZpZWxkcyBub3Qgc3luY2VkCgogICAgbXkgJURlZmluaXRpb25zT3V0T2ZTeW5jID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25OZWVkU3luYygpOwoKUmV0dXJuCgogICAgJURlZmluaXRpb25zT3V0T2ZTeW5jID0gKAogICAgICAgIENsYXNzSUQxID0+IFsgRHluYW1pY0ZpZWxkSUQxLCBEeW5hbWljRmllbGRJRDIgXSwKICAgICAgICBDbGFzc0lEMiA9PiBbIER5bmFtaWNGaWVsZElEMSwgRHluYW1pY0ZpZWxkSUQzIF0sCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25OZWVkU3luYyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIG15ICRDYWNoZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5HZXQoCiAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbURlZmluaXRpb24nLAogICAgICAgIEtleSAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgKTsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRDYWNoZSkgKSB7CiAgICAgICAgcmV0dXJuICRDYWNoZS0+JSo7CiAgICB9CgogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGNsYXNzX2lkLCBmaWVsZF9pZCBGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9zeW5jJywKICAgICk7CgogICAgbXkgJU91dE9mU3luYzsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQHsgJE91dE9mU3luY3sgJFJvd1swXSB9IH0sICRSb3dbMV07CiAgICB9CgogICAgIyBjYWNoZSB0aGUgcmVzdWx0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtRGVmaW5pdGlvbicsCiAgICAgICAgS2V5ICAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgICAgIFZhbHVlID0+IFwlT3V0T2ZTeW5jLAogICAgICAgIFRUTCAgID0+IDcyMDAwLCAgICAgICAgICAgICAgICAgICAgIyAyMCBkCiAgICApOwoKICAgIHJldHVybiAlT3V0T2ZTeW5jOwp9Cgo9aGVhZDIgRGVmaW5pdGlvblNldE91dE9mU3luYygpCgpEZWNsYXJlIGN1cnJlbnQgY2xhc3MgZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMgd2l0aCB0aGVpciBkeW5hbWljIGZpZWxkcwoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TZXRPdXRPZlN5bmMoCiAgICAgICAgQ2xhc3NlcyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQxID0+IFsgRHluYW1pY0ZpZWxkSUQxLCBEeW5hbWljRmllbGRJRDIgXSwKICAgICAgICAgICAgQ2xhc3NJRDIgPT4gWyBEeW5hbWljRmllbGRJRDEsIER5bmFtaWNGaWVsZElEMyBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25TZXRPdXRPZlN5bmMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgaWYgKCAhJFBhcmFte0NsYXNzZXN9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc2VzIGhhc2ghJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUN1cnJlbnQgPSAkU2VsZi0+RGVmaW5pdGlvbk5lZWRTeW5jKCk7CiAgICBteSAlTmV3OwoKICAgIENMQVNTOgogICAgZm9yIG15ICRDbGFzc0lEICgga2V5cyAkUGFyYW17Q2xhc3Nlc30tPiUqICkgewogICAgICAgIGlmICggISRDdXJyZW50eyRDbGFzc0lEfSApIHsKICAgICAgICAgICAgJE5ld3skQ2xhc3NJRH0gPSAkUGFyYW17Q2xhc3Nlc317JENsYXNzSUR9OwoKICAgICAgICAgICAgbmV4dCBDTEFTUzsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkRmllbGRJRCAoICRQYXJhbXtDbGFzc2VzfXskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICBpZiAoIG5vbmUgeyAkXyA9PSAkRmllbGRJRCB9ICRDdXJyZW50eyRDbGFzc0lEfS0+QCogKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICROZXd7JENsYXNzSUR9IH0sICRGaWVsZElEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIHVubGVzcyAlTmV3OwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIG15ICRTdWNjZXNzID0gMTsKICAgIGZvciBteSAkQ2xhc3NJRCAoIGtleXMgJU5ldyApIHsKICAgICAgICBmb3IgbXkgJEZpZWxkSUQgKCAkTmV3eyRDbGFzc0lEfS0+QCogKSB7CgogICAgICAgICAgICAjIGluc2VydCBuZXcgb3V0IG9mIHN5bmMgcmVsYXRpb25zCiAgICAgICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCAgPT4gJ0lOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9zeW5jIChjbGFzc19pZCwgZmllbGRfaWQpIFZBTFVFUyAoPywgPyknLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkQ2xhc3NJRCwgXCRGaWVsZElEIF0sCiAgICAgICAgICAgICkgPyAkU3VjY2VzcyA6IDA7CiAgICAgICAgfQogICAgfQoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbURlZmluaXRpb24nLAogICAgICAgIEtleSAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgKTsKCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBEZWZpbml0aW9uU2V0U3luY2VkKCkKCkRlY2xhcmUgY3VycmVudCBjbGFzcyBkZWZpbml0aW9uIGFzIGluIHN5bmMgd2l0aCBpdHMgZHluYW1pYyBmaWVsZHMKCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0U3luY2VkKAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBEZWZpbml0aW9uU2V0U3luY2VkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQKICAgIGlmICggISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2xhc3NJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb25fc3luYyBXSEVSRSBjbGFzc19pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NsYXNzSUR9IF0sCiAgICApOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbURlZmluaXRpb24nLAogICAgICAgIEtleSAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgKTsKCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBEZWZpbml0aW9uU3luYygpCgpBZGQgbmV3IGRlZmluaXRpb25zIGZvciBhbGwgY2xhc3NlcyB3aGVyZSBkeW5hbWljIGZpZWxkIGNvbnRlbnRzIGNoYW5nZWQgY29tcGFyZWQgdG8gdGhlIGN1cnJlbnQgZGVmaW5pdGlvbgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TeW5jKCk7Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvblN5bmMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlT3V0T2ZTeW5jID0gJFNlbGYtPkRlZmluaXRpb25OZWVkU3luYygpOwoKICAgIHJldHVybiAxIHVubGVzcyAlT3V0T2ZTeW5jOwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgbXkgQENsYXNzSURzID0ga2V5cyAlT3V0T2ZTeW5jOwoKICAgIENMQVNTOgogICAgZm9yIG15ICRDbGFzc0lEIChAQ2xhc3NJRHMpIHsKCiAgICAgICAgIyBjaGVjayB3aGV0aGVyIG1lYW5pbmdmdWwgY29udGVudCBpcyAoc3RpbGwpIGFmZmVjdGVkCiAgICAgICAgbXkgJE5lZWRzU3luYyAgPSAwOwogICAgICAgIG15ICREZWZpbml0aW9uID0gJFNlbGYtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbjsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRmllbGRJRCAoICRPdXRPZlN5bmN7JENsYXNzSUR9LT5AKiApIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICRGaWVsZElELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJE9sZER5bmFtaWNGaWVsZCA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CiAgICAgICAgICAgIGlmICggISRPbGREeW5hbWljRmllbGQgfHwgJE9sZER5bmFtaWNGaWVsZC0+e0lEfSBuZSAkRHluYW1pY0ZpZWxkLT57SUR9ICkgewoKICAgICAgICAgICAgICAgICMgY29uc2lkZXIgbmFtZSBjaGFuZ2VzCiAgICAgICAgICAgICAgICAkTmVlZHNTeW5jID0gMTsKCiAgICAgICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkT2xkRHluYW1pY0ZpZWxkLT57TGFiZWx9IG5lICREeW5hbWljRmllbGQtPntMYWJlbH0gKSB7CgogICAgICAgICAgICAgICAgIyBkaWZmZXJlbnQgbGFiZWxzIGNhbiBiZSBkdWUgdG8gdGhlIHNlY3Rpb24gZGVmaW5pdGlvbgogICAgICAgICAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZERlZmluaXRpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZERlZmluaXRpb25ZQU1MID0gJFNlbGYtPl9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICAgICAgKSB8fCAnLS0tIHt9JzsKCiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICREeW5hbWljRmllbGREZWZpbml0aW9uWUFNTCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJE9sZER5bmFtaWNGaWVsZC0+e0xhYmVsfSBuZSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbi0+eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfXtMYWJlbH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJE5lZWRzU3luYyA9IDE7CgogICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBEYXRhSXNEaWZmZXJlbnQoCiAgICAgICAgICAgICAgICAgICAgRGF0YTEgPT4gJE9sZER5bmFtaWNGaWVsZC0+e0NvbmZpZ30sCiAgICAgICAgICAgICAgICAgICAgRGF0YTIgPT4gJER5bmFtaWNGaWVsZC0+e0NvbmZpZ30sCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICROZWVkc1N5bmMgPSAxOwoKICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkTmVlZHNTeW5jICkgewogICAgICAgICAgICAkU2VsZi0+RGVmaW5pdGlvblNldFN5bmNlZCgKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENMQVNTIHVubGVzcyAkTmVlZHNTeW5jOwogICAgICAgIH0KCiAgICAgICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5EZWZpbml0aW9uQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gc3ByaW50ZiAkUmVzdWx0LT57RXJyb3J9LCAkUmVzdWx0LT57RXJyb3JBcmdzfS0+QCo7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRFcnJvck1lc3NhZ2UsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ2xhc3NJbXBvcnQoKQoKSW1wb3J0IGNvbmZpZyBpdGVtIGNsYXNzIGluY2x1ZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgbmFtZXNwYWNlcywgYmFzZWQgb24gY2xhc3MgZGVmaW5pdGlvbgoKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NJbXBvcnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ2xhc3NFeGlzdHMgPT4gIihFUlJPUnxJR05PUkV8VVBEQVRFKSIgICAjIChvcHRpb25hbCkgaG93IHRvIGhhbmRsZSBpbXBvcnQgb2YgYWxyZWFkeSBleGlzdGluZyBjbGFzc2VzLCBkZWZhdWx0IEVSUk9SCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkUmVzdWx0ID0gKAogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAoMXwwKSwgICAgICAgICAgICAgICMgU3RhdGUKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ1NvbWUgTWVzc2FnZScsICAgICAjIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiBmYWlsdXJlCiAgICApOwoKPWN1dAoKc3ViIENsYXNzSW1wb3J0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0NsYXNzRXhpc3RzfSB8fD0gJ0VSUk9SJzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgIyBleHBlY3QgYXJyYXkgcmVmIG9mIGRlZmluaXRpb25zCiAgICBteSAkRGVmaW5pdGlvbkxpc3QgPSAkUGFyYW17Q29udGVudH07CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJERlZmluaXRpb25MaXN0KSApIHsKCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnUGFyYW0gRGVmaW5pdGlvbkxpc3QgaXMgZW1wdHkgb3Igbm90IGFuIGFycmF5IHJlZmVyZW5jZS4nLAogICAgICAgIH07CiAgICB9CgogICAgIyBpbml0aWFsaXplIG5lZWRlZCB2YXJpYWJsZXMKICAgIG15ICVDbGFzc0RlZmluaXRpb25zOwogICAgbXkgJVJvbGVEZWZpbml0aW9uczsKICAgIG15IEBDbGFzc0NhdGVnb3JpZXM7CiAgICBteSAlRHluYW1pY0ZpZWxkczsKICAgIG15ICVOYW1lc3BhY2VzOwogICAgbXkgJVNldERGczsKICAgIG15ICVDbGFzc05hbWUySUQgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApIC8vIHt9CiAgICB9OwogICAgbXkgJUR5bmFtaWNGaWVsZExvb2t1cCA9IHJldmVyc2UgJXsKICAgICAgICAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgICAgICBWYWxpZCAgICAgID0+IDAsCiAgICAgICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgICAgICkgfHwge30KICAgIH07CiAgICBteSAlUm9sZU5hbWUySUQgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgICkgLy8ge30KICAgIH07CgogICAgIyAwLiBwZXJmb3JtIHNhbml0eSBjaGVja3MgSSAtIGdldCByb2xlcyBhbmQgY2xhc3NlcwogICAgbXkgJUltcG9ydFJvbGVzOwogICAgbXkgJUltcG9ydENsYXNzZXM7CiAgICBmb3IgbXkgJERlZmluaXRpb25JdGVtICggJERlZmluaXRpb25MaXN0LT5AKiApIHsKICAgICAgICBpZiAoICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfSAmJiAkRGVmaW5pdGlvbkl0ZW0tPntDbGFzc317TmFtZX0gKSB7CiAgICAgICAgICAgICRJbXBvcnRDbGFzc2VzeyAkRGVmaW5pdGlvbkl0ZW0tPntDbGFzc317TmFtZX0gfSA9ICREZWZpbml0aW9uSXRlbTsKCiAgICAgICAgICAgIGlmICggJENsYXNzTmFtZTJJRHsgJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e05hbWV9IH0gJiYgJFBhcmFte0NsYXNzRXhpc3RzfSBlcSAnRVJST1InICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkNsYXNzICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfXtOYW1lfSBhbHJlYWR5IGV4aXN0cy4iLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREZWZpbml0aW9uSXRlbS0+e1JvbGVOYW1lfSApIHsKICAgICAgICAgICAgJEltcG9ydFJvbGVzeyAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gfSA9ICREZWZpbml0aW9uSXRlbTsKCiAgICAgICAgICAgIGlmICggJFJvbGVOYW1lMklEeyAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gfSAmJiAkUGFyYW17Q2xhc3NFeGlzdHN9IGVxICdFUlJPUicgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiUm9sZSAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gYWxyZWFkeSBleGlzdHMuIiwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiTmVlZCBDbGFzcyBvciBSb2xlTmFtZSBpbiBEZWZpbml0aW9uLiIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgcGVyZm9ybSBzYW5pdHkgY2hlY2tzIElJIC0gbW9yZSBjbGFzcyBhbmQgcm9sZSBzcGVjaWZpY3M7IGNvbGxlY3QgY2F0ZWdvcnkgYW5kIGRmIGRhdGEKICAgIGZvciBteSAkRGVmaW5pdGlvbkl0ZW0gKCAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJERlZmluaXRpb25JdGVtLT57RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkRGVmaW5pdGlvblJlZiApIHsKICAgICAgICAgICAgbXkgJE5hbWUgPSAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gfHwgJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e05hbWV9OwoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJJdGVtICckTmFtZScgaGFzIG5vdCBhIHZhbGlkIFlBTUwgZGVmaW5pdGlvbiBmaWVsZC4iLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBmb3IgbXkgJERlZmluaXRpb25LZXkgKCBrZXlzICV7JERlZmluaXRpb25SZWZ9ICkgewogICAgICAgICAgICAkRGVmaW5pdGlvbkl0ZW0tPnskRGVmaW5pdGlvbktleX0gPSAkRGVmaW5pdGlvblJlZi0+eyREZWZpbml0aW9uS2V5fTsKICAgICAgICB9CgogICAgICAgICMgICAgICAgIG15ICRUeXBlID0gJERlZmluaXRpb25JdGVtLT57Q2xhc3N9ID8gJ0NsYXNzJyA6ICdSb2xlJzsKICAgICAgICAjCiAgICAgICAgIyBUT0RPOiBBZGQgYSBwcmVsaW1pbmFyeSBjaGVjawogICAgICAgICMgICAgICAgICMgY2hlY2sgZGVmaW5pdGlvbiBmb3IgdmFsaWRpdHkKICAgICAgICAjICAgICAgICBteSAkQ2hlY2tSZXN1bHQgPSAkU2VsZi0+RGVmaW5pdGlvbkNoZWNrKAogICAgICAgICMgICAgICAgICAgICBEZWZpbml0aW9uICA9PiAkRGVmaW5pdGlvbkl0ZW0tPntEZWZpbml0aW9ufSwKICAgICAgICAjICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJFR5cGUsCiAgICAgICAgIyAgICAgICAgICAgIEltcG9ydFJvbGVzID0+IFsga2V5cyAlSW1wb3J0Um9sZXMgXSwKICAgICAgICAjICAgICAgICApOwogICAgICAgICMKICAgICAgICAjICAgICAgICBpZiAoICEkQ2hlY2tSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAjICAgICAgICAgICAgbXkgJE5hbWUgPSAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gfHwgJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e05hbWV9OwogICAgICAgICMKICAgICAgICAjICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAjICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICMgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJJdGVtICckTmFtZScgZmFpbGVkIGluaXRpYWwgZGVmaW5pdGlvbiBjaGVjay4iLAogICAgICAgICMgICAgICAgICAgICB9OwogICAgICAgICMgICAgICAgIH0KCiAgICAgICAgIyBjb2xsZWN0IGNsYXNzIHRhZ3MKICAgICAgICBpZiAoICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfSApIHsKICAgICAgICAgICAgQENsYXNzQ2F0ZWdvcmllcyA9IHVuaXEoIEBDbGFzc0NhdGVnb3JpZXMsICggJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e0NhdGVnb3JpZXN9IC8vIFtdICktPkAqICk7CiAgICAgICAgfQoKICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZHMgKGlmIHRoZXkgZXhpc3QpCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbkl0ZW0tPntEeW5hbWljRmllbGRzfSApIHsKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZHMgPSAoCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkcywKICAgICAgICAgICAgICAgICREZWZpbml0aW9uSXRlbS0+e0R5bmFtaWNGaWVsZHN9LT4lKiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBmZXRjaCBleGlzdGluZyBjYXRlZ29yaWVzIHRvIGNoZWNrIGZvciBkdXBsaWNhdGVzCiAgICBteSAkRXhpc3RpbmdDYXRlZ29yaWVzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M6OkNhdGVnb3J5JywKICAgICAgICBWYWxpZCA9PiAwLAogICAgKSAvLyB7fTsKCiAgICAjIGhhbmRsZSBjcmVhdGlvbiBvZiBjb25maWcgaXRlbSBjbGFzcyBjYXRlZ29yaWVzCiAgICBDQVRFR09SWToKICAgIGZvciBteSAkQ2F0ZWdvcnkgKEBDbGFzc0NhdGVnb3JpZXMpIHsKCiAgICAgICAgbmV4dCBDQVRFR09SWSBpZiBhbnkgeyAkXyBlcSAkQ2F0ZWdvcnkgfSB2YWx1ZXMgJEV4aXN0aW5nQ2F0ZWdvcmllcy0+JSo7CgogICAgICAgIG15ICRTdWNjZXNzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgICAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzczo6Q2F0ZWdvcnknLAogICAgICAgICAgICBOYW1lICAgID0+ICRDYXRlZ29yeSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZG4ndCBhZGQgY29uZmlnIGl0ZW0gY2xhc3MgY2F0ZWdvcnkgJENhdGVnb3J5LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIGlubmVyIGZpZWxkcyBvZiBzZXQgREZzIHRvIGhhc2gKICAgIGZvciBteSAkRmllbGQgKCBrZXlzICVEeW5hbWljRmllbGRzICkgewogICAgICAgIGlmICggJER5bmFtaWNGaWVsZHN7JEZpZWxkfXtGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICBteSAlU2V0RmllbGRzID0gbWFwIHsgJF8tPntERn0gPT4gJF8tPntEZWZpbml0aW9ufSB9ICREeW5hbWljRmllbGRzeyRGaWVsZH17Q29uZmlnfXtJbmNsdWRlfS0+QCo7CgogICAgICAgICAgICBpZiAoICElU2V0RmllbGRzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb25lb3VzIGNvbmZpZ3VyYXRpb24gb2YgU2V0ICRGaWVsZC4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJVNldERGcyA9ICgKICAgICAgICAgICAgICAgICVTZXRERnMsCiAgICAgICAgICAgICAgICAlU2V0RmllbGRzLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGRzCiAgICBteSAlQWxsRmllbGRzID0gKCAlRHluYW1pY0ZpZWxkcywgJVNldERGcyApOwogICAgZm9yIG15ICRGaWVsZCAoIGtleXMgJUFsbEZpZWxkcyApIHsKICAgICAgICBpZiAoICREeW5hbWljRmllbGRMb29rdXB7JEZpZWxkfSApIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBuZSAkQWxsRmllbGRzeyRGaWVsZH17RmllbGRUeXBlfSB8fCAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0gbmUgJ0lUU01Db25maWdJdGVtJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJEeW5hbWljRmllbGQgJEZpZWxkIGV4aXN0cyBidXQgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWlyZWQgT2JqZWN0LSBhbmQvb3IgRmllbGRUeXBlLiIsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntNdWx0aVZhbHVlfSB4b3IgJEFsbEZpZWxkc3skRmllbGR9e011bHRpVmFsdWV9ICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkR5bmFtaWNGaWVsZCAkRmllbGQgZXhpc3RzIGJ1dCBkb2VzIG5vdCBtYXRjaCB0aGUgbXVsdGl2YWx1ZSBzZXR0aW5nLiIsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRGaWVsZCAhfiBteyBcQSBbYS16QS1aXGRcLV0rIFx6IH14bXMgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiSW52YWxpZCBEeW5hbWljRmllbGQgbmFtZSAnJEZpZWxkJy4iLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRmllbGQgPX4gL14oW14tXSspLS8gKSB7CiAgICAgICAgICAgICROYW1lc3BhY2VzeyQxfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgMS4gY3JlYXRlIGFsbCBjbGFzc2VzCiAgICBDTEFTU0RFRklOSVRJT046CiAgICBmb3IgbXkgJENsYXNzRGVmaW5pdGlvbiAoIGdyZXAgeyAkXy0+e0NsYXNzfSB9ICREZWZpbml0aW9uTGlzdC0+QCogKSB7CgogICAgICAgIG15ICVDbGFzc0RhdGEgPSAleyBkZWxldGUgJENsYXNzRGVmaW5pdGlvbi0+e0NsYXNzfSB9OwoKICAgICAgICAjIGhhbmRsZSBkdXBsaWNhdGlvbnMgYWNjb3JkaW5nIHBhcmFtIENsYXNzRXhpc3RzCiAgICAgICAgbXkgJENsYXNzSUQ7CiAgICAgICAgaWYgKCAkQ2xhc3NOYW1lMklEeyAkQ2xhc3NEYXRhe05hbWV9IH0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte0NsYXNzRXhpc3RzfSBlcSAnVVBEQVRFJyApIHsKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgPT4gJENsYXNzTmFtZTJJRHsgJENsYXNzRGF0YXtOYW1lfSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJENsYXNzRGF0YXtOYW1lfSwKICAgICAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkNvdWxkIG5vdCB1cGRhdGUgY2xhc3MgJENsYXNzRGF0YXtOYW1lfS4iLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkQ2xhc3NJRCA9ICRDbGFzc05hbWUySUR7ICRDbGFzc0RhdGF7TmFtZX0gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG5leHQgQ0xBU1NERUZJTklUSU9OOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJENsYXNzRGF0YXtOYW1lfSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggISRDbGFzc0lEICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkNvdWxkIG5vdCBhZGQgY2xhc3MgJENsYXNzRGF0YXtOYW1lfS4iLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgY2xhc3MgcHJlZmVyZW5jZXMKICAgICAgICBQUkVGRVJFTkNFS0VZOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZUtleSAocXcoTmFtZU1vZHVsZSBOdW1iZXJNb2R1bGUgVmVyc2lvblN0cmluZ01vZHVsZSBQZXJtaXNzaW9uIENhdGVnb3JpZXMgVmVyc2lvblRyaWdnZXIpKSB7CgogICAgICAgICAgICAjIHRyYW5zaXRpb246IHByZWZlcmVuY2UgUGVybWlzc2lvbiBpcyBuYW1lZCBQZXJtaXNzaW9uR3JvdXAgaW4gZGVmaW5pdGlvbiBzeW50YXgKICAgICAgICAgICAgbXkgJFByZWZlcmVuY2VWYWx1ZTsKICAgICAgICAgICAgaWYgKCAkUHJlZmVyZW5jZUtleSBlcSAnUGVybWlzc2lvbicgKSB7CgogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFS0VZIHVubGVzcyAkQ2xhc3NEYXRhe1Blcm1pc3Npb25Hcm91cH07CgogICAgICAgICAgICAgICAgJFByZWZlcmVuY2VWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgICAgICAgICBHcm91cCA9PiAkQ2xhc3NEYXRhe1Blcm1pc3Npb25Hcm91cH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFByZWZlcmVuY2VWYWx1ZSA9ICRDbGFzc0RhdGF7JFByZWZlcmVuY2VLZXl9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IFBSRUZFUkVOQ0VLRVkgdW5sZXNzICRQcmVmZXJlbmNlVmFsdWU7CgogICAgICAgICAgICBpZiAoICFyZWYgJFByZWZlcmVuY2VWYWx1ZSApIHsKICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlVmFsdWUgPSBbJFByZWZlcmVuY2VWYWx1ZV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRUtFWSB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRQcmVmZXJlbmNlVmFsdWUpOwoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFByZWZlcmVuY2VLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJFByZWZlcmVuY2VWYWx1ZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGRuJ3QgdXBkYXRlIHByZWZlcmVuY2UgJFByZWZlcmVuY2VLZXkgZm9yIGNvbmZpZyBpdGVtIGNsYXNzICRDbGFzc0lELiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNvbGxlY3QgZGVmaW5pdGlvbgogICAgICAgICRDbGFzc0RlZmluaXRpb25zeyRDbGFzc0lEfSA9ICRDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9ufTsKICAgIH0KCiAgICAjIDIuIGNyZWF0ZSBhbGwgcm9sZXMKICAgIFJPTEVERUZJTklUSU9OOgogICAgZm9yIG15ICRSb2xlRGVmaW5pdGlvbiAoIGdyZXAgeyAkXy0+e1JvbGVOYW1lfSB9ICREZWZpbml0aW9uTGlzdC0+QCogKSB7CgogICAgICAgIG15ICRSb2xlTmFtZSA9IGRlbGV0ZSAkUm9sZURlZmluaXRpb24tPntSb2xlTmFtZX07CgogICAgICAgICMgaGFuZGxlIGR1cGxpY2F0aW9ucyBhY2NvcmRpbmcgcGFyYW0gQ2xhc3NFeGlzdHMKICAgICAgICBteSAkUm9sZUlEOwogICAgICAgIGlmICggJFJvbGVOYW1lMklEeyRSb2xlTmFtZX0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte0NsYXNzRXhpc3RzfSBlcSAnVVBEQVRFJyApIHsKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgPT4gJFJvbGVOYW1lMklEeyRSb2xlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkUm9sZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgcm9sZSAkUm9sZU5hbWUuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRSb2xlSUQgPSAkUm9sZU5hbWUySUR7JFJvbGVOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG5leHQgUk9MRURFRklOSVRJT047CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRSb2xlSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICAgICAgICAgICAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJFJvbGVOYW1lLAogICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJFJvbGVJRCApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDb3VsZCBub3QgYWRkIHJvbGUgJFJvbGVOYW1lLiIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIGNvbGxlY3QgZGVmaW5pdGlvbgogICAgICAgICRSb2xlRGVmaW5pdGlvbnN7JFJvbGVJRH0gPSAkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9ufTsKICAgIH0KCiAgICAjIG5hbWVzcGFjZSBoYW5kbGluZwogICAgaWYgKCVOYW1lc3BhY2VzKSB7CgogICAgICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CgogICAgICAgICMgR2V0IGN1cnJlbnQgc2V0dGluZyB2YWx1ZS4KICAgICAgICBteSAlU2V0dGluZyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ05hbWVzcGFjZXMjIyNEeW5hbWljRmllbGQnLAogICAgICAgICk7CgogICAgICAgICMgZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCB1bml0IHRlc3RzCiAgICAgICAgbXkgQEV4aXN0aW5nTmFtZXNwYWNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpOYW1lc3BhY2UnKS0+TmFtZXNwYWNlc0xpc3QoCiAgICAgICAgICAgIFNjb3BlID0+ICdEeW5hbWljRmllbGQnLAogICAgICAgICk7CiAgICAgICAgbXkgJUFsbE5hbWVzcGFjZXMgPSAoCiAgICAgICAgICAgICggbWFwIHsgJF8gPT4gMSB9IEBFeGlzdGluZ05hbWVzcGFjZXMgKSwKICAgICAgICAgICAgJU5hbWVzcGFjZXMsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lc3BhY2VzIG5lZWQgdG8gYmUgY2hhbmdlZAogICAgICAgIG15ICRVcGRhdGVOYW1lc3BhY2VzID0gMDsKICAgICAgICBORVdOQU1FU1BBQ0U6CiAgICAgICAgZm9yIG15ICROZXdOYW1lc3BhY2UgKCBrZXlzICVBbGxOYW1lc3BhY2VzICkgewogICAgICAgICAgICBpZiAoIG5vbmUgeyAkTmV3TmFtZXNwYWNlIGVxICRfIH0gQEV4aXN0aW5nTmFtZXNwYWNlcyApIHsKICAgICAgICAgICAgICAgICRVcGRhdGVOYW1lc3BhY2VzID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgTkVXTkFNRVNQQUNFOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgkVXBkYXRlTmFtZXNwYWNlcykgewoKICAgICAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICAgICAgICAgIEZvcmNlICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVmYXVsdElEID0+ICRTZXR0aW5ne0RlZmF1bHRJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFVwZGF0ZSBzZXR0aW5nIHdpdGggbW9kaWZpZWQgZGF0YQogICAgICAgICAgICBteSAlUmVzdWx0ID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICdOYW1lc3BhY2VzIyMjRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSAgICA9PiBbIGtleXMgJUFsbE5hbWVzcGFjZXMgXSwKICAgICAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHVwZGF0ZSBzZXR0aW5nIE5hbWVzcGFjZXMjIyNEeW5hbWljRmllbGQuJywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVmYXVsdElEID0+ICRTZXR0aW5ne0RlZmF1bHRJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvdWxkIG5vdCB1bmxvY2sgc2V0dGluZyBOYW1lc3BhY2VzIyMjRHluYW1pY0ZpZWxkLicsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAlRGVwbG95bWVudFJlc3VsdCA9ICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ3VyYXRpb25EZXBsb3koCiAgICAgICAgICAgICAgICBDb21tZW50cyAgICAgID0+ICJDbGFzc0ltcG9ydCB1cGRhdGluZyBOYW1lc3BhY2VzIyMjRHluYW1pY0ZpZWxkIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEZvcmNlICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIERpcnR5U2V0dGluZ3MgPT4gWydOYW1lc3BhY2VzIyMjRHluYW1pY0ZpZWxkJ10sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkRGVwbG95bWVudFJlc3VsdHtTdWNjZXNzfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdEZXBsb3ltZW50IGZhaWxlZCEnLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNwbGl0IGR5bmFtaWMgZmllbGRzIGluIHRocmVlIHNlcGFyYXRlIGdyb3VwcwogICAgbXkgQE5vcm1hbEZpZWxkcyAgICAgPSBncmVwIHsgJF8tPntGaWVsZFR5cGV9IG5lICdMZW5zJyAmJiAkXy0+e0ZpZWxkVHlwZX0gbmUgJ1NldCcgfSB2YWx1ZXMgJUFsbEZpZWxkczsKICAgIG15IEBEZXBlbmRlbmN5RmllbGRzID0gZ3JlcCB7ICRfLT57RmllbGRUeXBlfSBlcSAnTGVucycgfHwgJF8tPntGaWVsZFR5cGV9IGVxICdTZXQnIH0gdmFsdWVzICVBbGxGaWVsZHM7CiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoKTsKCiAgICBteSBAU29ydGVkRGVwZW5kZW5jeUZpZWxkczsKICAgIG15IEBMZWZ0b3ZlckZpZWxkcyAgICA9IEBEZXBlbmRlbmN5RmllbGRzOwogICAgbXkgJUF2YWlsYWJsZUZpZWxkcyAgID0gbWFwIHsgJF8tPntOYW1lfSA9PiAxIH0gKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCosIEBOb3JtYWxGaWVsZHMgKTsKICAgIG15ICRQcmV2aW91c0FycmF5U2l6ZSA9IC0xOwogICAgd2hpbGUgKCBATGVmdG92ZXJGaWVsZHMgJiYgKCAkUHJldmlvdXNBcnJheVNpemUgPCBzY2FsYXIgQFNvcnRlZERlcGVuZGVuY3lGaWVsZHMgKSApIHsKICAgICAgICBteSBAQ3VycmVudExlZnRvdmVyRmllbGRzID0gKCk7CiAgICAgICAgJFByZXZpb3VzQXJyYXlTaXplID0gc2NhbGFyIEBTb3J0ZWREZXBlbmRlbmN5RmllbGRzOwogICAgICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoQExlZnRvdmVyRmllbGRzKSB7CiAgICAgICAgICAgIG15ICREZXBlbmRlbmNpZXNGdWxmaWxsZWQgPSAkU2VsZi0+X0NoZWNrREZEZXBlbmRlbmNpZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEF2YWlsYWJsZURGcyAgICAgICA9PiBcJUF2YWlsYWJsZUZpZWxkcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCREZXBlbmRlbmNpZXNGdWxmaWxsZWQpIHsKICAgICAgICAgICAgICAgIHB1c2ggQFNvcnRlZERlcGVuZGVuY3lGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgICAgICAkQXZhaWxhYmxlRmllbGRzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwdXNoIEBDdXJyZW50TGVmdG92ZXJGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQExlZnRvdmVyRmllbGRzID0gQEN1cnJlbnRMZWZ0b3ZlckZpZWxkczsKICAgIH0KICAgIGlmIChATGVmdG92ZXJGaWVsZHMpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAnVGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIGZvbGxvd2luZyBkeW5hbWljIGZpZWxkcyBjb3VsZCBub3QgYmUgcmVzb2x2ZWQ6ICVzLiBQbGVhc2UgbWFrZSBzdXJlIGFsbCBmaWVsZCBkZXBlbmRlbmNpZXMgYXJlIHByZXNlbnQgaW4gdGhlIGltcG9ydCBvciBvbiB0aGUgc3lzdGVtIGFuZCB0aGF0IHRoZXkgZG8gbm90IGNvbnRhaW4gY2lyY3VsYXIgcmVmZXJlbmNlcyB0byBlYWNoIG90aGVyLicsCiAgICAgICAgICAgIFBsYWNlaG9sZGVyRGF0YSA9PiBbIGpvaW4oICcsICcsIEBMZWZ0b3ZlckZpZWxkcyApIF0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIDMuIGNyZWF0ZSBkeW5hbWljIGZpZWxkcwogICAgbXkgJE9yZGVyID0gc2NhbGFyKCBrZXlzICVEeW5hbWljRmllbGRMb29rdXAgKTsKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZENvbmZpZyAoIEBOb3JtYWxGaWVsZHMsIEBTb3J0ZWREZXBlbmRlbmN5RmllbGRzICkgewogICAgICAgIG5leHQgRklFTEQgaWYgJER5bmFtaWNGaWVsZExvb2t1cHsgJEZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgbXkgJVNldENvbmZpZzsKICAgICAgICBpZiAoICRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgIG15IEBJbmNsdWRlZCA9IG1hcCB7IHsgREYgPT4gJF8tPntERn0gfSB9ICRGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0tPkAqOwogICAgICAgICAgICAlU2V0Q29uZmlnID0gKAogICAgICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgICAgICAkRmllbGRDb25maWctPntDb25maWd9LT4lKiwKICAgICAgICAgICAgICAgICAgICBJbmNsdWRlID0+IFxASW5jbHVkZWQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBuZWVkZWQsIHBlcmZvcm0gbmVjZXNzYXJ5IHRyYW5zZm9ybWF0aW9ucwogICAgICAgICRGaWVsZENvbmZpZyA9ICRTZWxmLT5fRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgPT4gJ0ltcG9ydCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEZpZWxkSUQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgICAgICRGaWVsZENvbmZpZy0+JSosCiAgICAgICAgICAgICVTZXRDb25maWcsCiAgICAgICAgICAgIEZpZWxkT3JkZXIgPT4gKyskT3JkZXIsCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgUmVvcmRlciAgICA9PiAwLAogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmllbGRJRCApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBhZGQgZHluYW1pYyBmaWVsZCAkRmllbGRDb25maWctPntOYW1lfS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJElzU2NyaXB0RmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAgICAgJEZpZWxkQ29uZmlnLT4lKiwKICAgICAgICAgICAgICAgIElEID0+ICRGaWVsZElELAogICAgICAgICAgICB9LAogICAgICAgICAgICBCZWhhdmlvciA9PiAnSXNTY3JpcHRGaWVsZCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgZXZlbnRzIGZvciBzY3JpcHQgZmllbGRzCiAgICAgICAgaWYgKCAkSXNTY3JpcHRGaWVsZCAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRGaWVsZENvbmZpZy0+e0NvbmZpZ317VXBkYXRlRXZlbnRzfSApICkgewogICAgICAgICAgICBteSAkQ29uZmlnID0gJEZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSA/ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHJpdmVyJyktPnsgJEZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSB9IDoge307CgogICAgICAgICAgICAjIENoZWNrIG1vZHVsZSB2YWxpZGl0eQogICAgICAgICAgICBpZiAoICEkQ29uZmlnLT57TW9kdWxlfSB8fCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJENvbmZpZy0+e01vZHVsZX0gKSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRHJpdmVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCggJENvbmZpZy0+e01vZHVsZX0gKTsKCiAgICAgICAgICAgICMgdmFsaWRhdGUgdXBkYXRlIGV2ZW50cyBhZ2FpbnN0IHBvc3NpYmxlIGV2ZW50cwogICAgICAgICAgICBteSAkUG9zc2libGVDb25kaXRpb25zID0gJERyaXZlck9iamVjdC0+R2V0UG9zc2libGVFeGVjdXRpb25Db25kaXRpb25zKAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAkRmllbGRDb25maWctPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgICAgIEZpZWxkSUQgICAgPT4gJEZpZWxkSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBARmlsdGVyZWRVcGRhdGVFdmVudHM7CiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUG9zc2libGVDb25kaXRpb25zLT57UG9zc2libGVVcGRhdGVFdmVudHN9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAlUG9zc2libGVVcGRhdGVFdmVudHMgPSBtYXAgeyAkXyA9PiAkXyB9ICRQb3NzaWJsZUNvbmRpdGlvbnMtPntQb3NzaWJsZVVwZGF0ZUV2ZW50c30tPkAqOwogICAgICAgICAgICAgICAgQEZpbHRlcmVkVXBkYXRlRXZlbnRzID0gZ3JlcCB7ICRQb3NzaWJsZVVwZGF0ZUV2ZW50c3skX30gfSAkRmllbGRDb25maWctPntDb25maWd9e1VwZGF0ZUV2ZW50c30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoQEZpbHRlcmVkVXBkYXRlRXZlbnRzKSB7CiAgICAgICAgICAgICAgICAkRHJpdmVyT2JqZWN0LT5TZXRVcGRhdGVFdmVudHMoCiAgICAgICAgICAgICAgICAgICAgRmllbGRJRCA9PiAkRmllbGRJRCwKICAgICAgICAgICAgICAgICAgICBFdmVudHMgID0+IFxARmlsdGVyZWRVcGRhdGVFdmVudHMsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgdHJpZ2dlciBkeW5hbWljIGZpZWxkIGV2ZW50cwogICAgIyAgIHRoaXMgaXMgZG9uZSBiZWNhdXNlIFNldC1pbm5lciBkeW5hbWljIGZpZWxkcyBhcmUgdXBkYXRlZCBhZnRlcndhcmRzIHZpYQogICAgIyAgIGFuIGV2ZW50LCBjYXVzaW5nIHRoZSBkYXRhIGluIHRoZSBjb25maWcgaXRlbSBkZWZpbml0aW9ucyB0byBiZWNvbWUgb3V0ZGF0ZWQKICAgICREeW5hbWljRmllbGRPYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgIyA0LiBhZGQgZGVmaW5pdGlvbnMKICAgIGZvciBteSAkUm9sZUlEICgga2V5cyAlUm9sZURlZmluaXRpb25zICkgewogICAgICAgIG15ICRSZXR1cm4gPSAkU2VsZi0+Um9sZURlZmluaXRpb25BZGQoCiAgICAgICAgICAgIFJvbGVJRCAgICAgPT4gJFJvbGVJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkUm9sZURlZmluaXRpb25zeyRSb2xlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIEZvcmNlICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUmV0dXJuLT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHN0b3JlIGRlZmluaXRpb24uJywKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBmb3IgbXkgJENsYXNzSUQgKCBrZXlzICVDbGFzc0RlZmluaXRpb25zICkgewogICAgICAgIG15ICRSZXR1cm4gPSAkU2VsZi0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkQ2xhc3NEZWZpbml0aW9uc3skQ2xhc3NJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRSZXR1cm4tPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb3VsZCBub3Qgc3RvcmUgZGVmaW5pdGlvbi4nLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4geyBTdWNjZXNzID0+IDEgfTsKfQoKPWhlYWQyIENsYXNzRXhwb3J0KCkKCkV4cG9ydCBjb25maWcgaXRlbSBjbGFzc2VzLCBpbmNsdWRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIG5hbWVzcGFjZXMsIGludG8gYSBZQU1MIHN0cmluZwoKICAgIG15ICRZQU1MU3RyaW5nID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzRXhwb3J0KAogICAgICAgIEl0ZW1JRExpc3QgPT4gW0NsYXNzSUQxLCBDbGFzc0lEMiwgQ2xhc3NJRDMsIC4uLl0sICAgICAgIyBsaXN0IG9mIGNsYXNzIG9yIC8gYW5kIHJvbGUgSURzIHRvIGV4cG9ydAogICAgKTsKCkluIGNhc2Ugb2YgYSBmYWlsdXJlIEM8dW5kZWY+IGlzIHJldHVybmVkLgoKPWN1dAoKc3ViIENsYXNzRXhwb3J0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgIG15ICRBbGxFeHBvcnRlZENsYXNzZXNSZWY7CgogICAgZm9yIG15ICRFeHBvcnRJdGVtSUQgKCBAeyAkUGFyYW17SXRlbUlETGlzdH0gfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBpdGVtIGlzIHJvbGUgb3IgY2xhc3MKICAgICAgICBteSAkSXRlbURhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRXhwb3J0SXRlbUlELAogICAgICAgICk7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIklEICRFeHBvcnRJdGVtSUQgaXMgaW52YWxpZCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICRJdGVtRGF0YS0+e0NsYXNzfSBuZSAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnICYmICRJdGVtRGF0YS0+e0NsYXNzfSBuZSAnSVRTTTo6Q29uZmlnSXRlbTo6Um9sZScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJdGVtIHdpdGggSUQgJEV4cG9ydEl0ZW1JRCBpcyBuZWl0aGVyIGEgY29uZmlnIGl0ZW0gY2xhc3Mgbm9yIGEgY29uZmlnIGl0ZW0gcm9sZSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUV4cG9ydEl0ZW07CiAgICAgICAgbXkgJERlZmluaXRpb25SZWY7CiAgICAgICAgaWYgKCAkSXRlbURhdGEtPntDbGFzc30gZXEgJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApIHsKCiAgICAgICAgICAgICMgZmV0Y2ggY2xhc3MgZGVmaW5pdGlvbgogICAgICAgICAgICAkRGVmaW5pdGlvblJlZiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KCBDbGFzc0lEID0+ICRFeHBvcnRJdGVtSUQgKTsKICAgICAgICAgICAgJEV4cG9ydEl0ZW17Q2xhc3N9e05hbWV9ID0gJERlZmluaXRpb25SZWYtPntDbGFzc307CgogICAgICAgICAgICAjIGZldGNoIGNsYXNzIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRFeHBvcnRJdGVtSUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISVDbGFzc1ByZWZlcmVuY2VzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBnZXQgcHJlZmVyZW5jZSBkYXRhIGZvciBjbGFzcyAkRGVmaW5pdGlvblJlZi0+e0NsYXNzfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgUFJFRkVSRU5DRVNLRVk6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZUtleSAoIGtleXMgJUNsYXNzUHJlZmVyZW5jZXMgKSB7CgogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFU0tFWSB1bmxlc3MgJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFU0tFWSB1bmxlc3MgJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9WzBdOwoKICAgICAgICAgICAgICAgICMgdHJhbnNpdGlvbiBvZiBQZXJtaXNzaW9uIHRvIFBlcm1pc3Npb25Hcm91cAogICAgICAgICAgICAgICAgaWYgKCAkUHJlZmVyZW5jZUtleSBlcSAnUGVybWlzc2lvbicgKSB7CgogICAgICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIGdyb3VwIGlkIGludG8gZ3JvdXAgbmFtZQogICAgICAgICAgICAgICAgICAgIG15ICRQcmVmZXJlbmNlVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9WzBdLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRFeHBvcnRJdGVte0NsYXNzfXtQZXJtaXNzaW9uR3JvdXB9ID0gJFByZWZlcmVuY2VWYWx1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNpbmdsZS12YWx1ZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICBlbHNpZiAoIGFueSB7ICRfIGVxICRQcmVmZXJlbmNlS2V5IH0gcXcoTmFtZU1vZHVsZSBOdW1iZXJNb2R1bGUgVmVyc2lvblN0cmluZ01vZHVsZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJEV4cG9ydEl0ZW17Q2xhc3N9eyRQcmVmZXJlbmNlS2V5fSA9ICRDbGFzc1ByZWZlcmVuY2VzeyRQcmVmZXJlbmNlS2V5fVswXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG11bHRpLXZhbHVlIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgIGVsc2lmICggYW55IHsgJF8gZXEgJFByZWZlcmVuY2VLZXkgfSBxdyhDYXRlZ29yaWVzIFZlcnNpb25UcmlnZ2VyKSApIHsKICAgICAgICAgICAgICAgICAgICAkRXhwb3J0SXRlbXtDbGFzc317JFByZWZlcmVuY2VLZXl9ID0gJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEl0ZW1EYXRhLT57Q2xhc3N9IGVxICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJyApIHsKCiAgICAgICAgICAgICMgZmV0Y2ggcm9sZSBkZWZpbml0aW9uCiAgICAgICAgICAgICREZWZpbml0aW9uUmVmID0gJFNlbGYtPlJvbGVEZWZpbml0aW9uR2V0KCBSb2xlSUQgPT4gJEV4cG9ydEl0ZW1JRCApOwogICAgICAgICAgICAkRXhwb3J0SXRlbXtSb2xlTmFtZX0gPSAkRGVmaW5pdGlvblJlZi0+e1JvbGV9OwogICAgICAgIH0KCiAgICAgICAgIyBwZXJmb3JtIGR5bmFtaWMgZmllbGQgdHJhbnNmb3JtYXRpb24KICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBrZXlzICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgICAgIG15ICRUcmFuc2Zvcm1lZERGQ29uZmlnID0gJFNlbGYtPl9EeW5hbWljRmllbGRDb25maWdUcmFuc2Zvcm0oCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAnRXhwb3J0JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEV4cG9ydEl0ZW17RHluYW1pY0ZpZWxkc317JER5bmFtaWNGaWVsZE5hbWV9ID0gJFRyYW5zZm9ybWVkREZDb25maWc7CiAgICAgICAgfQoKICAgICAgICAjIGV4cG9ydCB0aGUgc3ViLXlhbWwgZGVmaW5pdGlvbiBmaWVsZCBhcyBhIHN0cmluZyBmaWVsZAogICAgICAgICRFeHBvcnRJdGVte0RlZmluaXRpb259ID0gJERlZmluaXRpb25SZWYtPntEZWZpbml0aW9ufTsKCiAgICAgICAgcHVzaCBAeyRBbGxFeHBvcnRlZENsYXNzZXNSZWZ9LCBcJUV4cG9ydEl0ZW07CiAgICB9CgogICAgbXkgJEFsbEV4cG9ydGVkQ2xhc3Nlc1N0ciA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgIERhdGEgPT4gJEFsbEV4cG9ydGVkQ2xhc3Nlc1JlZgogICAgKTsKCiAgICByZXR1cm4gJEFsbEV4cG9ydGVkQ2xhc3Nlc1N0cjsKfQoKPWJlZ2luIEludGVybmFsOgoKPWhlYWQyIF9Qcm9jZXNzUm9sZXMKCkZvciBjb252ZW5pZW5jZSB0aGUgWUFNTCBmb3IgYSBjb25maWcgaXRlbSBjbGFzcyBtYXkgY29udGFpbiBhIHN1YnRyZWUgY2FsbGVkIFJvbGVzLiBVc3VhbGx5IHRoZXNlIFJvbGVzCmxvYWQgb3RoZXIgWUFNTCBkb2N1bWVudHMgd2hpY2ggY29udGFpbiBhIFNlY3Rpb24gaGFzaC4gVGhlc2Ugc2VjdGlvbiBhIG1lcmdlZCBpbnRvIHRoZSB0b3AtbGV2ZWwgU2VjdGlvbiBoYXNoLgpUaGUga2V5cyBvZiB0aGUgbWVyZ2VkIGluIHNlY3Rpb25zIGFyZSB0aGUgUm9sZSBrZXkgam9pbmVkIHdpdGggdGhlIGxvYWRlZCBzZWN0aW9uIG5hbWUuIFRoZSBqb2luIG1hcmtlciBpcyBDPDo6Pi4KClRoZSBwYXNzZWQgaW4gaGFzaCByZWZlcmVuY2UgaXMgbW9kaWZpZWQgaW4gcGxhY2UuCgo9Y3V0CgpzdWIgX1Byb2Nlc3NSb2xlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgZGVmaW5pdGlvbgogICAgaWYgKCAhJFBhcmFte0RlZmluaXRpb25SZWZ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBEZWZpbml0aW9uUmVmIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgcm9sZXMgYXJlIG9wdGlvbmFsCiAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRQYXJhbXtEZWZpbml0aW9uUmVmfTsKICAgIG15ICRSb2xlcyAgICAgICAgID0gJERlZmluaXRpb25SZWYtPntSb2xlc307CgogICAgcmV0dXJuIHsgU3VjY2VzcyA9PiAxIH0gdW5sZXNzICRSb2xlczsKCiAgICAjIGp1c3QgZm9yIGNvbnZlbmllbmNlCiAgICBteSAkUmV0dXJuRXJyb3IgPSBzdWIgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgICAgICAgICBFcnJvciAgICAgPT4gJF9bMF0sCiAgICAgICAgICAgIEVycm9yQXJncyA9PiBbICggJF9bMV0gLy8gJycgKSwgKCAkX1syXSAvLyAnJyApIF0sICAgICMgb25seSB0d28gYXJncyBhcmUgc3VwcG9ydGVkCiAgICAgICAgfTsKICAgIH07CgogICAgaWYgKCByZWYgJFJvbGVzIG5lICdIQVNIJyApIHsKICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0tleSAlcyBpcyBub3QgYSBIYXNoLn0pLAogICAgICAgICAgICAnUm9sZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBub3RoaW5nIHRvIGRvCiAgICByZXR1cm4geyBTdWNjZXNzID0+IDEgfSB1bmxlc3MgJFJvbGVzLT4lKjsKCiAgICAjIGdldCByb2xlIGxpc3QgZm9yIG1hcHBpbmcgbmFtZSB0byBJRAogICAgbXkgJVJvbGVOYW1lMklEOwogICAgewogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRSb2xlTGlzdCAgICAgICAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICAgICApOwogICAgICAgICVSb2xlTmFtZTJJRCA9IHJldmVyc2UgJFJvbGVMaXN0LT4lKjsKICAgIH0KCiAgICBteSAlSW1wb3J0Um9sZXMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte0ltcG9ydFJvbGVzfSAvLyBbXSB9OwoKICAgICMgb3ZlcndyaXRlIHdpdGhvdXQgbWVyY3kKICAgIFJPTEVfS0VZOgogICAgZm9yIG15ICRSb2xlS2V5ICgga2V5cyAkUm9sZXMtPiUqICkgewogICAgICAgIG15ICRSb2xlU291cmNlID0gJFJvbGVzLT57JFJvbGVLZXl9OwoKICAgICAgICAjIFRoZSBuYW1lIG9mIHRoZSByb2xlIGlzIHBlciBkZWZhdWx0IHRoZSBrZXkgaW4gdGhlIFJvbGVzIGhhc2gsCiAgICAgICAgIyBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYW4gZXhwbGljaXQgYXR0cmlidXRlICdOYW1lJy4KICAgICAgICAjIFRoaXMgYWxsb3dzIHRvIHVzZSBhIG1vcmUgY29udmVuaWVudCBuYW1lIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgogICAgICAgIG15ICRSb2xlTmFtZSA9ICRSb2xlU291cmNlLT57TmFtZX0gLy8gJFJvbGVLZXk7CgogICAgICAgICMgVGhlIGF0dHJpYnV0ZSBWZXJzaW9uIGlzIG5vdCByZXF1aXJlZCBpbiB0aGUgWUFNTC4KICAgICAgICAjIFdoZW4gbm8gVmVyc2lvbiBpcyBwYXNzZWQgdGhlbiB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHJvbGUgaXMgdXNlZC4KICAgICAgICAjaWYgKCAhJFJvbGVTb3VyY2UtPntWZXJzaW9ufSApIHsKICAgICAgICAjICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAjICAgICAgICBUcmFuc2xhdGFibGUocXtLZXkgJXMgaXMgbWlzc2luZyBmb3IgdGhlIHJvbGUgJXN9KSwKICAgICAgICAjICAgICAgICAnVmVyc2lvbicsCiAgICAgICAgIyAgICAgICAgJFJvbGVOYW1lLAogICAgICAgICMgICAgKTsKICAgICAgICAjfQoKICAgICAgICAjIHRoZSBmZXRjaGluZyBpcyBkb25lIHZpYSB0aGUgSUQKICAgICAgICBteSAkUm9sZUlEID0gJFJvbGVOYW1lMklEeyRSb2xlTmFtZX07CgogICAgICAgIGlmICggISRSb2xlSUQgJiYgISRJbXBvcnRSb2xlc3skUm9sZU5hbWV9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtUaGUgcm9sZSAlcyB3YXMgbm90IGZvdW5kLn0pLAogICAgICAgICAgICAgICAgJFJvbGVOYW1lLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBkbyBub3QgY2hlY2sgYW55IGZ1cnRoZXIsIGlmIHRoZSByb2xlIGlzIG9ubHkgYWJvdXQgdG8gYmUgaW1wb3J0ZWQKICAgICAgICByZXR1cm4geyBTdWNjZXNzID0+IDEgfSBpZiAkSW1wb3J0Um9sZXN7JFJvbGVOYW1lfTsKCiAgICAgICAgIyBUaGlzIGFscmVhZHkgcGFyc2VzIHRoZSBZQU1MCiAgICAgICAgbXkgJFJvbGVEZWZpbml0aW9uID0gJFNlbGYtPlJvbGVEZWZpbml0aW9uR2V0KAogICAgICAgICAgICBSb2xlSUQgID0+ICRSb2xlSUQsCiAgICAgICAgICAgIFZlcnNpb24gPT4gJFJvbGVTb3VyY2UtPntWZXJzaW9ufSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUm9sZURlZmluaXRpb24gKSB7CiAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe1RoZSByb2xlICVzIHdpdGggdmVyc2lvbiAlcyB3YXMgbm90IGZvdW5kLn0pLAogICAgICAgICAgICAgICAgJFJvbGVOYW1lLAogICAgICAgICAgICAgICAgJFJvbGVTb3VyY2UtPntWZXJzaW9ufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggcmVmICRSb2xlRGVmaW5pdGlvbiBuZSAnSEFTSCcgKSB7CiAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe1RoZSByb2xlICVzIHdpdGggdmVyc2lvbiAlcyBpcyBub3QgYSBoYXNoLn0pLAogICAgICAgICAgICAgICAgJFJvbGVOYW1lLAogICAgICAgICAgICAgICAgJFJvbGVTb3VyY2UtPntWZXJzaW9ufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgISRSb2xlRGVmaW5pdGlvbi0+e0RlZmluaXRpb259CiAgICAgICAgICAgIHx8CiAgICAgICAgICAgICEkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfQogICAgICAgICAgICB8fAogICAgICAgICAgICAhJFJvbGVEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0tPntTZWN0aW9uc30KICAgICAgICAgICAgfHwKICAgICAgICAgICAgcmVmICRSb2xlRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LT57U2VjdGlvbnN9IG5lICdIQVNIJwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtUaGUgcm9sZSAlcyB3aXRoIHZlcnNpb24gJXMgaXMgbm90IHZhbGlkLn0pLAogICAgICAgICAgICAgICAgJFJvbGVOYW1lLAogICAgICAgICAgICAgICAgJFJvbGVTb3VyY2UtPntWZXJzaW9ufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQWRkIHRoZSBzZWN0aW9ucyBmcm9tIHRoZSBSb2xlIHRvIHRoZSBTZWN0aW9ucyBvZiB0aGUgY2xhc3MuCiAgICAgICAgIyBOb3RlIHRoYXQgdGhlIGNvbnZlbmllbnQgbmFtZSBmcm9tIHRoZSBjbGFzcyBkZWZpbml0aW9uIGlzIHVzZWQgaGVyZQogICAgICAgIG15ICRSb2xlU2VjdGlvbnMgPSAkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfS0+e1NlY3Rpb25zfTsKICAgICAgICBmb3IgbXkgJFJvbGVTZWN0aW9uS2V5ICgga2V5cyAkUm9sZVNlY3Rpb25zLT4lKiApIHsKCiAgICAgICAgICAgICMgaWYgYSBjbGFzcyBoYXMgdmFsaWQgcm9sZXMsIHRoZW4gU2VjdGlvbnMgaXMgbm90IHJlcXVpcmVkCiAgICAgICAgICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9IC8vPSB7fTsKCiAgICAgICAgICAgIG15ICRTZWN0aW9uTmFtZSA9IGpvaW4gJzo6JywgJFJvbGVLZXksICRSb2xlU2VjdGlvbktleTsKICAgICAgICAgICAgJERlZmluaXRpb25SZWYtPntTZWN0aW9uc30tPnskU2VjdGlvbk5hbWV9ID0gJFJvbGVTZWN0aW9ucy0+eyRSb2xlU2VjdGlvbktleX07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiB7IFN1Y2Nlc3MgPT4gMSB9Owp9Cgo9aGVhZDIgX0RlZmluaXRpb25QcmVwYXJlKCkKClByZXBhcmUgdGhlIHN5bnRheCBvZiBhIG5ldyBkZWZpbml0aW9uLgoKICAgIG15ICRUcnVlID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9EZWZpbml0aW9uUHJlcGFyZSgKICAgICAgICBEZWZpbml0aW9uUmVmID0+ICRBcnJheVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgX0RlZmluaXRpb25QcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBUT0RPOiB0aGUgbWV0aG9kIGlzIHVudXNlZC4gRWl0aGVyIHJlbW92ZSBpdCBvciBhY3R1YWxseSB1c2UgaXQuCiAgICAjIGNoZWNrIGRlZmluaXRpb24KICAgIGlmICggISRQYXJhbXtEZWZpbml0aW9uUmVmfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvblJlZiEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtEZWZpbml0aW9uUmVmfSB9ICkgewoKICAgICAgICAjIHNldCBDb3VudE1pbgogICAgICAgICRJdGVtLT57Q291bnRNaW59IC8vPSAxOwoKICAgICAgICAjIHNldCBDb3VudE1heAogICAgICAgICRJdGVtLT57Q291bnRNYXh9IHx8PSAxOwoKICAgICAgICAjIHNldCBDb3VudE1pbgogICAgICAgIGlmICggJEl0ZW0tPntDb3VudE1pbn0gPiAkSXRlbS0+e0NvdW50TWF4fSApIHsKICAgICAgICAgICAgJEl0ZW0tPntDb3VudE1pbn0gPSAkSXRlbS0+e0NvdW50TWF4fTsKICAgICAgICB9CgogICAgICAgICMgc2V0IENvdW50RGVmYXVsdAogICAgICAgICRJdGVtLT57Q291bnREZWZhdWx0fSAvLz0gMTsKICAgICAgICBpZiAoICRJdGVtLT57Q291bnREZWZhdWx0fSA8ICRJdGVtLT57Q291bnRNaW59ICkgewogICAgICAgICAgICAkSXRlbS0+e0NvdW50RGVmYXVsdH0gPSAkSXRlbS0+e0NvdW50TWlufTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkSXRlbS0+e0NvdW50RGVmYXVsdH0gPiAkSXRlbS0+e0NvdW50TWF4fSApIHsKICAgICAgICAgICAgJEl0ZW0tPntDb3VudERlZmF1bHR9ID0gJEl0ZW0tPntDb3VudE1heH07CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgaXMgZGVmaW5lZC4KICAgICAgICBpZiAoICRJdGVtLT57U3VifSAmJiByZWYgJEl0ZW0tPntTdWJ9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICRTZWxmLT5fRGVmaW5pdGlvblByZXBhcmUoCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uUmVmID0+ICRJdGVtLT57U3VifSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlbGV0ZSAkSXRlbS0+e1N1Yn07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQoKQoKQ3JlYXRlIGEgWUFNTCBzdHJpbmcgY29udGFpbmluZyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZHluYW1pYyBmaWVsZHMgcmVsZXZhbnQgZm9yIHRoaXMgY29uZmlnIGl0ZW0uClRoZSBkZWZpbml0aW9uIGNhbiBiZSBwYXNzZWQgaW4gZWl0aGVyIGFzIGEgWUFNTCBzdHJpbmcgb3IgYXMgYSBQZXJsIGRhdGEgc3RydWN0dXJlLgoKICAgIG15ICREeW5hbWljRmllbGREZWZpbml0aW9uWUFNTCA9ICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICk7CgpvcgoKICAgIG15ICREeW5hbWljRmllbGREZWZpbml0aW9uWUFNTCA9ICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICk7Cgo9Y3V0CgpzdWIgX0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSXNJbml0aWFsQ2FsbCA9IGRlZmluZWQgJFBhcmFte0RlZmluaXRpb259OyAgICAjIHRoZSBZQU1MIGRlZmluaXRpb24KCiAgICAjIEluIHRoZSBpbml0aWFsIGNhbGwgdGhlIERlZmluaXRpb24gaXMgcGFzc2VkIGFzIFlBTUwuCiAgICAjIEluIHRoZSBzdWJzZXF1ZW50IHJlY3Vyc2l2ZSBjYWxscyBEZWZpbml0aW9uUGVybCBpcyBwYXNzZWQgYXMgYSBQZXJsIGRhdGEgc3RydWN0dXJlLgogICAgaWYgKCRJc0luaXRpYWxDYWxsKSB7CiAgICAgICAgJFBhcmFte0RlZmluaXRpb25QZXJsfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgICMgbWVyZ2UgdGhlIHJvbGVzIGludG8gdGhlIERlZmluaXRpb25SZWYsIHRoZSBwYXNzZWQgaW4gcmVmZXJlbmNlIGlzIG1vZGlmaWVkIGluIHBsYWNlCiAgICAgICAgJFNlbGYtPl9Qcm9jZXNzUm9sZXMoCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgPT4gJFBhcmFte0RlZmluaXRpb25QZXJsfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVDb250ZW50SGFzaCAgPSByZWYgJFBhcmFte0RlZmluaXRpb25QZXJsfSBlcSAnSEFTSCcgID8gJFBhcmFte0RlZmluaXRpb25QZXJsfS0+JSogOiAoKTsKICAgIG15IEBDb250ZW50QXJyYXkgPSByZWYgJFBhcmFte0RlZmluaXRpb25QZXJsfSBlcSAnQVJSQVknID8gJFBhcmFte0RlZmluaXRpb25QZXJsfS0+QCogOiAoKTsKCiAgICAjIGxvZywgZXZlbiB3aGVuIGVtcHR5IGFycmF5cyBvciBoYXNoZXMgYXJlIGFsbG93ZWQKICAgIGlmICggISVDb250ZW50SGFzaCAmJiAhQENvbnRlbnRBcnJheSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvbiBvciBEZWZpbml0aW9uUGVybCBhcyBoYXNoIG9yIGFycmF5IScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgcmVjdXJzaXZlbHkgY29sbGVjdCB0aGUgZHluYW1pYyBmaWVsZHMKICAgIG15ICVEeW5hbWljRmllbGRzOwoKICAgICMgVE9ETzogc3BlY2lmeSB0aGUgcGF0aCB3aGVyZSBERiBmaWVsZHMgYXJlIGV4cGVjdGVkLCBtYXliZSB3aXRoIEpTT046OlBhdGgKICAgIEtFWToKICAgIGZvciBteSAkS2V5ICgga2V5cyAlQ29udGVudEhhc2ggKSB7CiAgICAgICAgaWYgKCAkS2V5IGVxICdERicgKSB7CiAgICAgICAgICAgICREeW5hbWljRmllbGRzeyAkQ29udGVudEhhc2h7JEtleX0gfSA9IFwlQ29udGVudEhhc2g7CgogICAgICAgICAgICBuZXh0IEtFWTsKICAgICAgICB9CgogICAgICAgICMgZG8gbm90IGRlc2NlbmQgaW50byBJbnRlcmZhY2VzIGFuZCBHcm91cHMsCiAgICAgICAgIyBhcyB0aGVzZSBtYXkgYmUgZW1wdHkgYW5kIHdvdWxkIGJlIGxvZ2dlZCBhcyBlcnJvcnMKICAgICAgICAjIFRPRE86IGFyZSBJbnRlcmZhY2VzIGFuZCBHcm91cHMgc3RpbGwgdXNlZCA/CiAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnSW50ZXJmYWNlcyc7CiAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnR3JvdXBzJzsKICAgICAgICBuZXh0IEtFWSBpZiAkS2V5IGVxICdQYWdlcyc7CiAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnUm9sZXMnOwoKICAgICAgICBuZXh0IEtFWSB1bmxlc3MgcmVmICRDb250ZW50SGFzaHskS2V5fTsKCiAgICAgICAgIyBkZXNjZW5kCiAgICAgICAgJUR5bmFtaWNGaWVsZHMgPSAoCiAgICAgICAgICAgICVEeW5hbWljRmllbGRzLAogICAgICAgICAgICAkU2VsZi0+X0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uUGVybCA9PiAkQ29udGVudEhhc2h7JEtleX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgICAgICksCiAgICAgICAgKTsKICAgIH0KCiAgICBmb3IgbXkgJEVudHJ5IChAQ29udGVudEFycmF5KSB7CiAgICAgICAgaWYgKCByZWYgJEVudHJ5ICkgewogICAgICAgICAgICAlRHluYW1pY0ZpZWxkcyA9ICgKICAgICAgICAgICAgICAgICVEeW5hbWljRmllbGRzLAogICAgICAgICAgICAgICAgJFNlbGYtPl9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0KCBEZWZpbml0aW9uUGVybCA9PiAkRW50cnkgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyB0aGUgcmVjdXJzaXZlIGNhbGxzIG9ubHkgY29sbGVjdCB0aGUgZHluYW1pYyBmaWVsZHMKICAgIHJldHVybiAlRHluYW1pY0ZpZWxkcyB1bmxlc3MgJElzSW5pdGlhbENhbGw7CgogICAgIyBzb21lIG1vcmUgd29yayB0byBkbyBpbiB0aGUgaW5pdGlhbCBjYWxsCiAgICBteSAlUmV0dXJuRHluYW1pY0ZpZWxkczsKICAgIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICAgICAjIFN0b3JlIGNvbmZpZyBpdGVtIGNsYXNzIHRvIGNoZWNrIGZvciB2ZXJzaW9uIHRyaWdnZXJzIGluIGR5bmFtaWMgZmllbGQgb2JqZWN0IGhhbmRsZXIKICAgICAgICBteSAkQ2xhc3NJRDJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CiAgICAgICAgbXkgJENsYXNzID0gJENsYXNzSUQyTmFtZS0+eyAkUGFyYW17Q2xhc3NJRH0gfTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkTmFtZSAoIGtleXMgJUR5bmFtaWNGaWVsZHMgKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJE5hbWUgKTsKCiAgICAgICAgICAgICMgb25seSByZXR1cm4gdmFsaWQgZHluYW1pYyBmaWVsZHMKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGQtPiUqOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZC0+e1ZhbGlkSUR9IGVxICcxJzsKCiAgICAgICAgICAgICMgZm9yIHNldCBmaWVsZHMgYWxzbyB0aGUgY29udGFpbmVkIGR5bmFtaWMgZmllbGRzIGhhdmUgdG8gYmUgdmVyc2lvbmVkCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfXtJbmNsdWRlfSApOwoKICAgICAgICAgICAgICAgIElOQ0xVREVEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJbmNsdWRlZERGICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgSU5DTFVERUQgdW5sZXNzICRJbmNsdWRlZERGLT57REZ9OwoKICAgICAgICAgICAgICAgICAgICBteSAkSW5jbHVkZWRERkNvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggTmFtZSA9PiAkSW5jbHVkZWRERi0+e0RGfSApOwoKICAgICAgICAgICAgICAgICAgICAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259ID0gewogICAgICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEluY2x1ZGVkREZDb25maWctPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZyAgICAgPT4gJEluY2x1ZGVkREZDb25maWctPntDb25maWd9LAogICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFR5cGUgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57RmllbGRUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAkSW5jbHVkZWRERkNvbmZpZy0+e09iamVjdFR5cGV9LAogICAgICAgICAgICAgICAgICAgICAgICBDSUNsYXNzICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkUmV0dXJuRHluYW1pY0ZpZWxkc3skTmFtZX0gPSB7CiAgICAgICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICREeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgIENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0NvbmZpZ30sICAgICAgICMgbWF5IGNvbnRhaW4gaW5jbHVkZWQgREYKICAgICAgICAgICAgICAgIEZpZWxkVHlwZSAgPT4gJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlID0+ICREeW5hbWljRmllbGQtPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgICAgIENJQ2xhc3MgICAgPT4gJENsYXNzLAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3L01hbmRhdG9yeSBMYWJlbCBSZWFkb25seS8pIHsKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkRHluYW1pY0ZpZWxkc3skTmFtZX17JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFJldHVybkR5bmFtaWNGaWVsZHN7JE5hbWV9eyRBdHRyaWJ1dGV9ID0gJER5bmFtaWNGaWVsZHN7JE5hbWV9eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgdGhlIGluaXRpYWwgY2FsbCByZXR1cm5zIFlBTUwKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5EdW1wKAogICAgICAgIERhdGEgPT4gXCVSZXR1cm5EeW5hbWljRmllbGRzLAogICAgKTsKfQoKPWhlYWQyIF9EeW5hbWljRmllbGRDb25maWdUcmFuc2Zvcm0oKQoKVHJhbnNmb3JtYXRpb25zIG9mIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZyBuZWVkZWQgZm9yIEltcG9ydC9FeHBvcnQuCk5vdGUgdGhhdCB0aGUgcGFzc2VkIGluIGR5bmFtaWMgZmllbGQgY29uZmlnIGlzIG1vZGlmaWVkIGluIHBsYWNlLgoKICAgICRGaWVsZENvbmZpZyA9ICRTZWxmLT5fRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRmllbGRDb25maWcsCiAgICAgICAgQWN0aW9uICAgICAgICAgICAgID0+ICdJbXBvcnQnLAogICAgKTsKCj1jdXQKCnN1YiBfRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KEFjdGlvbiBEeW5hbWljRmllbGRDb25maWcpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIGlmICggYW55IHsgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317RmllbGRUeXBlfSBlcSAkXyB9IHF3KEFnZW50IENvbmZpZ0l0ZW0gQ29uZmlnSXRlbVZlcnNpb24gQ3VzdG9tZXJDb21wYW55IEN1c3RvbWVyVXNlciBGQVEgVGlja2V0KSApIHsKCiAgICAgICAgIyBuZWVkZWQgdHJhbnNmb3JtYXRpb246IE5hbWUgLT4gSUQKICAgICAgICBpZiAoICRQYXJhbXtBY3Rpb259IGVxICdJbXBvcnQnICkgewoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0gKSB7CiAgICAgICAgICAgICAgICBteSBAUXVldWVJRHM7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFF1ZXVlTmFtZSAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1F1ZXVlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUXVldWVJRHMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5RdWV1ZUxvb2t1cCggUXVldWUgPT4gJFF1ZXVlTmFtZSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UXVldWV9ID0gXEBRdWV1ZUlEczsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9ICkgewogICAgICAgICAgICAgICAgbXkgQFR5cGVJRHM7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFR5cGVOYW1lICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFR5cGVJRHMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyktPlR5cGVMb29rdXAoIFR5cGVJRCA9PiAkVHlwZU5hbWUgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9ID0gXEBUeXBlSURzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317Q2xhc3NJRHN9ICkgewogICAgICAgICAgICAgICAgbXkgJUNsYXNzTmFtZTJJRCA9IHJldmVyc2UgJXsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIG15IEBDbGFzc0lEcyA9IG1hcAogICAgICAgICAgICAgICAgICAgIHsgJENsYXNzTmFtZTJJRHskX30gfQogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57Q2xhc3NJRHN9LT5AKjsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0NsYXNzSURzfSA9IFxAQ2xhc3NJRHM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgbmVlZGVkIHRyYW5zZm9ybWF0aW9uOiBJRCAtPiBOYW1lCiAgICAgICAgZWxzaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnRXhwb3J0JyApIHsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UXVldWV9ICkgewogICAgICAgICAgICAgICAgbXkgQFF1ZXVlTmFtZXM7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFF1ZXVlSUQgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFF1ZXVlTmFtZXMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5RdWV1ZUxvb2t1cCggUXVldWVJRCA9PiAkUXVldWVJRCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UXVldWV9ID0gXEBRdWV1ZU5hbWVzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0gKSB7CiAgICAgICAgICAgICAgICBteSBAVHlwZU5hbWVzOwogICAgICAgICAgICAgICAgZm9yIG15ICRUeXBlSUQgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUaWNrZXRUeXBlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAVHlwZU5hbWVzLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpLT5UeXBlTG9va3VwKCBUeXBlSUQgPT4gJFR5cGVJRCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0gPSBcQFR5cGVOYW1lczsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0NsYXNzSURzfSApIHsKICAgICAgICAgICAgICAgIG15ICVDbGFzc0lEMk5hbWUgPSAlewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgbXkgQENsYXNzTmFtZXMgPSBtYXAKICAgICAgICAgICAgICAgICAgICB7ICRDbGFzc0lEMk5hbWV7JF99IH0KICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0NsYXNzSURzfS0+QCo7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtDbGFzc0lEc30gPSBcQENsYXNzTmFtZXM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0ZpZWxkVHlwZX0gZXEgJ0xlbnMnICkgewoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICAgICBpZiAoICRQYXJhbXtBY3Rpb259IGVxICdJbXBvcnQnICkgewogICAgICAgICAgICBteSAkQXR0cmlidXRlREYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0F0dHJpYnV0ZURGfSA9ICRBdHRyaWJ1dGVERi0+e0lEfTsKICAgICAgICAgICAgbXkgJFJlZmVyZW5jZURGID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgTmFtZSA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0gPSAkUmVmZXJlbmNlREYtPntJRH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte0FjdGlvbn0gZXEgJ0V4cG9ydCcgKSB7CiAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVERiA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0F0dHJpYnV0ZURGfSA9ICRBdHRyaWJ1dGVERi0+e05hbWV9OwogICAgICAgICAgICBteSAkUmVmZXJlbmNlREYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBJRCA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0gPSAkUmVmZXJlbmNlREYtPntOYW1lfTsKICAgICAgICB9CiAgICB9CgogICAgIyBzYW5pdGl6ZSBjb25maWdzIG9mIHNldC1pbmNsdWRlZCBERnMKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgIkV4cG9ydCIgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0luY2x1ZGV9ICkgKSB7CiAgICAgICAgSU5DTFVERURfREY6CiAgICAgICAgZm9yIG15ICRJbmNsdWRlZERGICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntJbmNsdWRlfS0+QCogKSB7CgogICAgICAgICAgICBkZWxldGUgJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufXtJRH07CgogICAgICAgICAgICAjIEZpbHRlciBvZmYgdGhlICdQYXJ0T2ZTZXQnIGF0dHJpYnV0ZSwgaXQgaXMgbm90IG5lY2Vzc2FyeSBhbmQgbWF5IGNhdXNlIGluY29uc2lzdGVuY3kgZXJyb3JzIGxhdGVyIG9uIGltcG9ydAogICAgICAgICAgICBkZWxldGUgJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufS0+e0NvbmZpZ30tPntQYXJ0T2ZTZXR9OwoKICAgICAgICAgICAgIyB0cmFuc2Zvcm0gaW5jbHVkZWQgY29uZmlncyByZWN1cnNpdmVseSBvbiBleHBvcnQKICAgICAgICAgICAgJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufSA9ICRTZWxmLT5fRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRJbmNsdWRlZERGLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgPT4gJ0V4cG9ydCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0V4cG9ydCcgKSB7CiAgICAgICAgZGVsZXRlICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0lEfTsKICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307Cn0KCj1oZWFkMiBfRGVmaW5pdGlvbkNyZWF0ZUFmdGVyUm9sZUNyZWF0ZSgpCgpDb25maWcgaXRlbSBjbGFzcyBkZWZpbml0aW9uIG1heSBpbmNsdWRlIGR5bmFtaWMgcm9sZXMuIFRoaXMgbWVhbnMKdGhhdCB0aGUgdXNlIHJvbGVzIHdpdGhvdXQgc3BlY2lmeWluZyBhIHZlcnNpb24gb2YgdGhlIHJvbGUuIFRoaXMKbWVhbnMgdGhlIGNsYXNzIGRlZmluaXRpb25zIG1heSBoYXZlIHRvIGJlIHVwZGF0ZSB3aGVuIGEgcm9sZSBpcwpjaGFuZ2VkLgoKICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPl9EZWZpbml0aW9uQ3JlYXRlQWZ0ZXJSb2xlQ3JlYXRlKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRmllbGRDb25maWcsCiAgICAgICAgQWN0aW9uICAgICAgICAgICAgID0+ICdJbXBvcnQnLAogICAgKTsKCj1jdXQKCnN1YiBfRGVmaW5pdGlvbkNyZWF0ZUFmdGVyUm9sZUNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIHRoZSByb2xlIGRlZmluaXRpb24KICAgIG15ICRSb2xlTmFtZTsKICAgIHsKICAgICAgICBteSAkUm9sZUlEICAgICAgPSAkUGFyYW17Um9sZUlEfTsKICAgICAgICBteSAkUm9sZUlEMk5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICAgICApOwogICAgICAgICRSb2xlTmFtZSA9ICRSb2xlSUQyTmFtZS0+eyRSb2xlSUR9OwogICAgfQoKICAgICMgTG9vcCBvdmVyIGFsbCBjbGFzc2VzIGFuZCBjaGVjayB3aGV0aGVyIHRoZXkgaW5jbHVkZSB0aGUgY2hhbmdlZCBkeW5hbWljIGZpZWxkCiAgICBteSAkQ2xhc3NJRDJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwogICAgbXkgQENsYXNzSXNBZmZlY3RlZDsKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIGNtcCAkYiB9IGtleXMgJENsYXNzSUQyTmFtZS0+JSogKSB7CgogICAgICAgICMgRGVmaW5pdGlvbkdldCgpIGRvZXMgcmVzb2x2ZSB0aGUgcm9sZSBkZWNsYXJhdGlvbiwKICAgICAgICAjIGJ1dCB0aGUgYXR0cmlidXRlICdSb2xlcycgaXMgc3RpbGwgaW5jbHVkZWQKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzICREZWZpbml0aW9uOwogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn07CgogICAgICAgIG15ICRSb2xlcyA9ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0tPntSb2xlc30gLy8ge307CgogICAgICAgIFJPTEVfS0VZOgogICAgICAgIGZvciBteSAkUm9sZUtleSAoIGtleXMgJFJvbGVzLT4lKiApIHsKICAgICAgICAgICAgbXkgJFJvbGVTb3VyY2UgPSAkUm9sZXMtPnskUm9sZUtleX07CgogICAgICAgICAgICBuZXh0IFJPTEVfS0VZIHVubGVzcyByZWYgJFJvbGVTb3VyY2UgZXEgJ0hBU0gnOyAgICAjIGFuIGVtcHR5IGhhc2hyZWYgaXMgT0sKCiAgICAgICAgICAgICMgb25seSBkeW5hbWljIHJvbGVzLCB0aGF0IGlzIHJvbGVzIHdpdGhvdXQgdmVyc2lvbiwgYXJlIHJlbGV2YW50IGhlcmUKICAgICAgICAgICAgbmV4dCBST0xFX0tFWSBpZiAkUm9sZVNvdXJjZS0+e1ZlcnNpb259OwoKICAgICAgICAgICAgIyBUaGUgbmFtZSBvZiB0aGUgcm9sZSBpcyBwZXIgZGVmYXVsdCB0aGUga2V5IGluIHRoZSBSb2xlcyBoYXNoLAogICAgICAgICAgICAjIGJ1dCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhbiBleHBsaWNpdCBhdHRyaWJ1dGUgJ05hbWUnLgogICAgICAgICAgICAjIFRoaXMgYWxsb3dzIHRvIHVzZSBhIG1vcmUgY29udmVuaWVudCBuYW1lIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgogICAgICAgICAgICBteSAkRGVjbGFyZWRSb2xlTmFtZSA9ICRSb2xlU291cmNlLT57TmFtZX0gLy8gJFJvbGVLZXk7CgogICAgICAgICAgICBuZXh0IFJPTEVfS0VZIHVubGVzcyAkRGVjbGFyZWRSb2xlTmFtZSBlcSAkUm9sZU5hbWU7CgogICAgICAgICAgICBwdXNoIEBDbGFzc0lzQWZmZWN0ZWQsICRDbGFzc0lEOwoKICAgICAgICAgICAgbGFzdCBST0xFX0tFWTsKICAgICAgICB9CiAgICB9CgogICAgIyBmb3JjZSBuZXcgdmVyc2lvbnMgZm9yIHRoZSBhZmZlY3RlZCBjbGFzc2VzCiAgICBmb3IgbXkgJENsYXNzSUQgKEBDbGFzc0lzQWZmZWN0ZWQpIHsKICAgICAgICBteSAkT2xkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KCBDbGFzc0lEID0+ICRDbGFzc0lEICk7CiAgICAgICAgJFNlbGYtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJE9sZERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICBGb3JjZSAgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9DaGVja0RGRGVwZW5kZW5jaWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgIGZvciBteSAkSW5jbHVkZUl0ZW0gKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0luY2x1ZGV9LT5AKiApIHsKICAgICAgICAgICAgaWYgKCAkSW5jbHVkZUl0ZW0tPntERn0gJiYgISRQYXJhbXtBdmFpbGFibGVERnN9eyAkSW5jbHVkZUl0ZW0tPntERn0gfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEluY2x1ZGVJdGVtLT57R3JpZH0gKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoICRJbmNsdWRlSXRlbS0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvd0l0ZW0gKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkUm93SXRlbS0+e0RGfSAmJiAhJFBhcmFte0F2YWlsYWJsZURGc317ICRSb3dJdGVtLT57REZ9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317RmllbGRUeXBlfSBlcSAnTGVucycgKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAhJFBhcmFte0F2YWlsYWJsZURGc317ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9IH0KICAgICAgICAgICAgfHwgISRQYXJhbXtBdmFpbGFibGVERnN9eyAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSB9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9ZW5kIEludGVybmFsOgoKPWN1dAoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/CountLicenseLinks.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6Q291bnRMaWNlbnNlTGlua3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkNvdW50TGljZW5zZUxpbmtzIC0gRXZlbnQgaGFuZGxlciB0aGF0IGNvdW50IGxpY2Vuc2VzIHVzaW5nIGxpbmtlZCBDSSdzCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBldmVudCBoYW5kbGVyIGZ1bmN0aW9ucyBmb3IgY291bnQgbGljZW5zZXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRG9IaXN0b3J5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9MaW5rQ291bnQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBSdW4oKQoKVGhpcyBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQuCgogICAgJERvTGlua0NvdW50T2JqZWN0LT5SdW4oCiAgICAgICAgRXZlbnQgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICduZXcgdmFsdWU6IDEnLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRGF0YSBFdmVudCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IENvbmZpZyBvcHRpb25zCiAgICBteSAlTGljZW5zZVNldHRpbmdzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50JyktPiUqOwoKICAgIG15ICVEZXBsb3ltZW50U3RhdGVMaXN0ID0gJXsKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApCiAgICB9OwoKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnRGVwbG95bWVudFN0YXRlVXBkYXRlJyApIHsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRDdXJyZW50RGVwbFN0YXRlSUQgID0gJFBhcmFte0RhdGF9e05ld307CiAgICAgICAgbXkgJFByZXZpb3VzRGVwbFN0YXRlSUQgPSAkUGFyYW17RGF0YX17T2xkfTsKICAgICAgICBteSAkQ3VycmVudERlcGxTdGF0ZSAgICA9ICREZXBsb3ltZW50U3RhdGVMaXN0eyRDdXJyZW50RGVwbFN0YXRlSUR9OwogICAgICAgIG15ICRQcmV2aW91c0RlcGxTdGF0ZSAgID0gJERlcGxveW1lbnRTdGF0ZUxpc3R7JFByZXZpb3VzRGVwbFN0YXRlSUR9OwoKICAgICAgICBTRVRUSU5HOgogICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlTGljZW5zZVNldHRpbmdzICkgewoKICAgICAgICAgICAgIyBpZiBhbGwgZGVwbG95bWVudCBzdGF0ZXMgYXJlIHZhbGlkIHdlIGRvIG5vdCBjaGVjayBjaGFuZ2VzCiAgICAgICAgICAgIG5leHQgU0VUVElORyBpZiAhJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtWYWxpZERlcGxTdGF0ZXN9OwoKICAgICAgICAgICAgbXkgQFZhbGlkRGVwbFN0YXRlcyAgICA9ICRMaWNlbnNlU2V0dGluZ3N7JEtleX17VmFsaWREZXBsU3RhdGVzfS0+QCo7CiAgICAgICAgICAgIG15ICRMaWNlbnNlUmVmZXJlbmNlREYgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e0xpY2Vuc2VSZWZlcmVuY2VERn07CgogICAgICAgICAgICBuZXh0IFNFVFRJTkcgaWYgISRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kTGljZW5zZVJlZmVyZW5jZURGIn07CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoIG5vbmUgeyAkXyBlcSAkUHJldmlvdXNEZXBsU3RhdGUgfSBAVmFsaWREZXBsU3RhdGVzICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAoIGFueSB7ICRfIGVxICRDdXJyZW50RGVwbFN0YXRlIH0gQFZhbGlkRGVwbFN0YXRlcyApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciBteSAkTGljZW5zZVJlZmVyZW5jZSAoICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kTGljZW5zZVJlZmVyZW5jZURGIn0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT5fTGljZW5zZXNBY2NvdW50aW5nVXBkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgPT4gJExpY2Vuc2VSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgTGljZW5zZVNldHRpbmdzID0+ICRMaWNlbnNlU2V0dGluZ3N7JEtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGVsdGEgICAgICAgICAgID0+IC0xCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgKCBhbnkgeyAkXyBlcSAkUHJldmlvdXNEZXBsU3RhdGUgfSBAVmFsaWREZXBsU3RhdGVzICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAoIG5vbmUgeyAkXyBlcSAkQ3VycmVudERlcGxTdGF0ZSB9IEBWYWxpZERlcGxTdGF0ZXMgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpY2Vuc2VSZWZlcmVuY2UgKCAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJExpY2Vuc2VSZWZlcmVuY2VERiJ9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgID0+ICRMaWNlbnNlUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhICAgICAgICAgICA9PiAxCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0NvbmZpZ0l0ZW1EZWxldGUnICkgewoKICAgICAgICBTRVRUSU5HOgogICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlTGljZW5zZVNldHRpbmdzICkgewogICAgICAgICAgICBteSAkTGljZW5zZVJlZmVyZW5jZURGID0gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtMaWNlbnNlUmVmZXJlbmNlREZ9OwogICAgICAgICAgICBteSBAVmFsaWREZXBsU3RhdGVzICAgID0gKCAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1ZhbGlkRGVwbFN0YXRlc30gfHwgW10gKS0+QCo7CgogICAgICAgICAgICBuZXh0IFNFVFRJTkcgaWYgISRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXsiRHluYW1pY0ZpZWxkXyRMaWNlbnNlUmVmZXJlbmNlREYifTsKICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmIEBWYWxpZERlcGxTdGF0ZXMgJiYgbm9uZSB7ICRfIGVxICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXtDdXJEZXBsU3RhdGV9IH0gQFZhbGlkRGVwbFN0YXRlczsKCiAgICAgICAgICAgIGZvciBteSAkTGljZW5zZVJlZmVyZW5jZSAoICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXsiRHluYW1pY0ZpZWxkXyRMaWNlbnNlUmVmZXJlbmNlREYifS0+QCogKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgPT4gJExpY2Vuc2VSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBEZWx0YSAgICAgICAgICAgPT4gMQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gPX4gL15Db25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXy8gKSB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIFNFVFRJTkc6CiAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVMaWNlbnNlU2V0dGluZ3MgKSB7CiAgICAgICAgICAgIG15ICRMaWNlbnNlUmVmZXJlbmNlREYgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e0xpY2Vuc2VSZWZlcmVuY2VERn07CiAgICAgICAgICAgIG15ICRUb3RhbExpY2Vuc2VzREYgICAgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1RvdGFsTGljZW5zZXNERn07CgogICAgICAgICAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgIkNvbmZpZ0l0ZW1EeW5hbWljRmllbGRVcGRhdGVfJExpY2Vuc2VSZWZlcmVuY2VERiIgKSB7CiAgICAgICAgICAgICAgICBteSBAVmFsaWREZXBsU3RhdGVzID0gKCAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1ZhbGlkRGVwbFN0YXRlc30gfHwgW10gKS0+QCo7CgogICAgICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmIEBWYWxpZERlcGxTdGF0ZXMgJiYgbm9uZSB7ICRfIGVxICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSB9IEBWYWxpZERlcGxTdGF0ZXM7CgogICAgICAgICAgICAgICAgbXkgQE9sZExpY2Vuc2VSZWZlcmVuY2VzTGlzdCA9ICggJFBhcmFte0RhdGF9e09sZFZhbHVlfSB8fCBbXSApLT5AKjsKICAgICAgICAgICAgICAgIG15IEBOZXdMaWNlbnNlUmVmZXJlbmNlc0xpc3QgPSAoICRQYXJhbXtEYXRhfXtWYWx1ZX0gICAgfHwgW10gKS0+QCo7CiAgICAgICAgICAgICAgICBteSAlRGVsdGE7CgogICAgICAgICAgICAgICAgT0xEOgogICAgICAgICAgICAgICAgZm9yIG15ICRMaWNlbnNlUmVmZXJlbmNlIChAT2xkTGljZW5zZVJlZmVyZW5jZXNMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBPTEQgaWYgISRMaWNlbnNlUmVmZXJlbmNlOwoKICAgICAgICAgICAgICAgICAgICAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9Kys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgTkVXOgogICAgICAgICAgICAgICAgZm9yIG15ICRMaWNlbnNlUmVmZXJlbmNlIChATmV3TGljZW5zZVJlZmVyZW5jZXNMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBORVcgaWYgISRMaWNlbnNlUmVmZXJlbmNlOwoKICAgICAgICAgICAgICAgICAgICAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9LS07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgREVMVEE6CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpY2Vuc2VSZWZlcmVuY2UgKCBrZXlzICVEZWx0YSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERFTFRBIGlmICEkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9OwoKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgID0+ICRMaWNlbnNlUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhICAgICAgICAgICA9PiAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkUGFyYW17RXZlbnR9IGVxICJDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXyRUb3RhbExpY2Vuc2VzREYiICkgewogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgICAgICBteSAkUmVmZXJlbmNlRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtMaWNlbnNlUmVmZXJlbmNlREZ9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICRSZWZlcmVuY2VEeW5hbWljRmllbGRJRCA9ICRSZWZlcmVuY2VEeW5hbWljRmllbGRDb25maWctPntJRH07CgogICAgICAgICAgICAgICAgbXkgJFRvdGFsTGljZW5zZXMgPSAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJFRvdGFsTGljZW5zZXNERiJ9OwogICAgICAgICAgICAgICAgbXkgJENvdW50TGlua3MgICAgPSAwOwoKICAgICAgICAgICAgICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdCb3RoJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIExJTks6CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpbmsgKCAkTGlua2VkQ29uZmlnSXRlbXMtPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgTElOSyBpZiAkTGluay0+e0R5bmFtaWNGaWVsZElEfSAhPSAkUmVmZXJlbmNlRHluYW1pY0ZpZWxkSUQ7CiAgICAgICAgICAgICAgICAgICAgJENvdW50TGlua3MrKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQXZhaWxhYmxlRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtBdmFpbGFibGVMaWNlbnNlc0RGfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdmFpbGFibGVEeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVG90YWxMaWNlbnNlcyAtICRDb3VudExpbmtzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9MaWNlbnNlc0FjY291bnRpbmdVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICBteSAkQXZhaWxhYmxlTGljZW5zZXNERiA9ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e0F2YWlsYWJsZUxpY2Vuc2VzREZ9OwogICAgbXkgJFN1Y2Nlc3MgICAgICAgICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgTnVtYmVyICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9LAogICAgICAgICRBdmFpbGFibGVMaWNlbnNlc0RGID0+ICRDb25maWdJdGVtLT57JEF2YWlsYWJsZUxpY2Vuc2VzREZ9ICsgJFBhcmFte0RlbHRhfSwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIGZpZWxkICckUGFyYW17TGljZW5zZVNldHRpbmdzfXtBdmFpbGFibGVMaWNlbnNlc0RGfSciLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFBhcmFte0RlbHRhfSA8IDAgKSB7CiAgICAgICAgbXkgJE1pbmltdW1MaWNlbnNlcyA9ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e01pbmltdW1MaWNlbnNlc307CiAgICAgICAgJENvbmZpZ0l0ZW0tPnskQXZhaWxhYmxlTGljZW5zZXNERn0gKz0gJFBhcmFte0RlbHRhfTsgICAgIyBTeW5jaHJvbml6ZSBDSSBzbmFwc2hvdAoKICAgICAgICBpZiAoICRNaW5pbXVtTGljZW5zZXMgJiYgJENvbmZpZ0l0ZW0tPnskQXZhaWxhYmxlTGljZW5zZXNERn0gPCAkTWluaW11bUxpY2Vuc2VzICkgewogICAgICAgICAgICAkU2VsZi0+X05vdGlmeSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gICAgICA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9Ob3RpZnkgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHdoZXRoZXIgYSB0aWNrZXQgd2FzIGdlbmVyYXRlZCBwcmV2aW91c2x5IGFuZCBpcyBub3QgY2xvc2VkCiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CiAgICBteSAlTGlua0xpc3QgICA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgICAgICBPYmplY3QxID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5MSAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSwKICAgICAgICBPYmplY3QyID0+ICdUaWNrZXQnLAogICAgICAgIFN0YXRlICAgPT4gJ1ZhbGlkJywKICAgICAgICBUeXBlICAgID0+ICdEZXBlbmRzT24nLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIGZvciBteSAkTGlua2VkVGlja2V0SUQgKCBrZXlzICVMaW5rTGlzdCApIHsKICAgICAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRMaW5rZWRUaWNrZXRJRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIFNpbGVudCAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHNraXAgbm90aWZpY2F0aW9uIGlmIGFuIG9wZW4gdGlja2V0IHdhcyBhbHJlYWR5IGNyZWF0ZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17RHluYW1pY0ZpZWxkfSB9CiAgICAgICAgICAgICYmICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17RHluYW1pY0ZpZWxkfSB9ID09IDEKICAgICAgICAgICAgJiYgJFRpY2tldHtTdGF0ZVR5cGV9IG5lICJjbG9zZWQiCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBwcmVwYXJlIHN1YnN0aXR1dGlvbnMKICAgIG15ICVTdWJzdGl0dXRpb25zID0gKAogICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9OVU1CRVI+JyAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXtOdW1iZXJ9LAogICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9OQU1FPicgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXtOYW1lfSwKICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTElDRU5TRVNfQVZBSUw+JyA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e0F2YWlsYWJsZUxpY2Vuc2VzREZ9IH0sCiAgICAgICAgJzxPVE9CT19DT05GSUdJVEVNX0xJQ0VOU0VTX01JTj4nICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtNaW5pbXVtTGljZW5zZXNERn0gfSwKICAgICk7CgogICAgU1VCS0VZOgogICAgZm9yIG15ICRLZXkgKCAoICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17VGl0bGV9IC4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtUZXh0fSApID1+IC88T1RPQk9fQ09ORklHSVRFTV8oW14+XSspPi9nICkgewogICAgICAgIG5leHQgU1VCS0VZIGlmIGV4aXN0cyAkU3Vic3RpdHV0aW9uc3siPE9UT0JPX0NPTkZJR0lURU1fJEtleT4ifTsKICAgICAgICBuZXh0IFNVQktFWSBpZiAhJFBhcmFte0NvbmZpZ0l0ZW19eyRLZXl9OwoKICAgICAgICAkU3Vic3RpdHV0aW9uc3siPE9UT0JPX0NPTkZJR0lURU1fJEtleT4ifSA9ICRQYXJhbXtDb25maWdJdGVtfXskS2V5fSAvLyAnJzsKICAgIH0KCiAgICBteSAkVGlja2V0VGl0bGUgICAgICA9ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17VGl0bGV9OwogICAgbXkgJE5vdGlmaWNhdGlvblRleHQgPSAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1RleHR9OwogICAgZm9yIG15ICRLZXkgKCBrZXlzICVTdWJzdGl0dXRpb25zICkgewogICAgICAgICRUaWNrZXRUaXRsZSAgICAgID1+IHMvJEtleS8kU3Vic3RpdHV0aW9uc3sgJEtleSB9L2c7CiAgICAgICAgJE5vdGlmaWNhdGlvblRleHQgPX4gcy8kS2V5LyRTdWJzdGl0dXRpb25zeyAkS2V5IH0vZzsKICAgIH0KCiAgICAjIGFsbCBjaGVja3MgZmluaXNoZWQgLT4gY3JlYXRlIGEgdGlja2V0IGFzIG5vdGlmaWNhdGlvbgogICAgbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgIFROICAgICAgICAgICA9PiAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGVOdW1iZXIoKSwKICAgICAgICBUaXRsZSAgICAgICAgPT4gJFRpY2tldFRpdGxlLAogICAgICAgIFF1ZXVlICAgICAgICA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1F1ZXVlfSwKICAgICAgICBMb2NrICAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtMb2NrfSAgICAgICAgIHx8ICd1bmxvY2snLAogICAgICAgIFByaW9yaXR5ICAgICA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1ByaW9yaXR5fSAgICAgfHwgJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtTdGF0ZX0gICAgICAgIHx8ICduZXcnLAogICAgICAgIFR5cGUgICAgICAgICA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1R5cGV9ICAgICAgICAgfHwgJycsCiAgICAgICAgU2VydmljZSAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17U2VydmljZX0gICAgICB8fCAnJywKICAgICAgICBTTEEgICAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtTTEF9ICAgICAgICAgIHx8ICcnLAogICAgICAgIEN1c3RvbWVySUQgICA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e0N1c3RvbWVySUR9ICAgfHwgJycsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICBPd25lcklEICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtPd25lcklEfSAgICAgIHx8ICcxJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBpZiAoICEkVGlja2V0SUQgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgY3JlYXRlIGEgdGlja2V0IGZvciBDb25maWdJdGVtSUQ6ICRQYXJhbXtDb25maWdJdGVtfXtDb25maWdJdGVtSUR9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBkbyBhcnRpY2xlIGRiIGluc2VydAogICAgbXkgJEFydGljbGVPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CiAgICBteSAkSW50ZXJuYWxBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQ2hhbm5lbCggQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJyApOwogICAgbXkgJEFydGljbGVJRCAgICAgICAgICAgICAgICAgICAgPSAkSW50ZXJuYWxBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtTZW5kZXJUeXBlfSB8fCAnc3lzdGVtJywKICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAwLAogICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04JywKICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAkTm90aWZpY2F0aW9uVGV4dCwKICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAkVGlja2V0VGl0bGUsCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnTmV3VGlja2V0JywKICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAiXCVcJUNNREJOb3RpZmljYXRpb24iLAogICAgKTsKCiAgICAjIGNsb3NlIHRpY2tldCBpZiBhcnRpY2xlIGNyZWF0ZSBmYWlsZWQhCiAgICBpZiAoICEkQXJ0aWNsZUlEICkgewogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBwcm9jZXNzIHRpY2tldCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbGluayB0aWNrZXQgYW5kIGNvbmZpZyBpdGVtCiAgICAkTGlua09iamVjdC0+TGlua0FkZCgKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgIFRhcmdldEtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdEZXBlbmRzT24nLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICAjIHNldCB0aGUgZHluYW1pYyBmaWVsZCAgdG8gMSwgdG8gbWFyayB0aGUgdGlja2V0IGFzIGdlbmVyYXRlZCBieSB0aGlzIHNjcmlwdAogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICREeW5hbWljRmllbGQgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtEeW5hbWljRmllbGR9LAogICAgKTsKICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/DefinitionConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRlZmluaXRpb25Db25maWdJdGVtVXBkYXRlOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyh1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUgLSBFdmVudCBoYW5kbGVyIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgb24gZGVmaW5pdGlvbiBjaGFuZ2VzCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwoKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEV2ZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBSdW4oKQoKVGhpcyBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQuCgogICAgJEV2ZW50T2JqZWN0LT5SdW4oCiAgICAgICAgRXZlbnQgPT4gJ0RlZmluaXRpb25DcmVhdGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICBMYXN0RGVmaW5pdGlvbklEID0+ICRMYXN0RGVmaW5pdGlvbklELAogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAkUGFyYW17RXZlbnR9IG5lICdEZWZpbml0aW9uQ3JlYXRlJzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERlZmluaXRpb25JRCBDbGFzc0lEKSkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCBpbiBEYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBvbmx5IGNvbnNpZGVyIHByb2R1Y3RpdmUgYW5kIHByZXByb2R1Y3RpdmUgQ0lzCiAgICBteSAkU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdwcmVwcm9kdWN0aXZlJywgJ3Byb2R1Y3RpdmUnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJERlcGxTdGF0ZVN0cmluZyA9IGpvaW4gcXssIH0sIGtleXMgJXskU3RhdGVMaXN0fTsKCiAgICAjIG9ubHkgY29uc2lkZXIgcHJvZHVjdGl2ZSBhbmQgcHJlcHJvZHVjdGl2ZSBDSXMKICAgIG15ICVBZmZlY3RlZENJcyA9ICREQk9iamVjdC0+U2VsZWN0TWFwcGluZygKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBjaS5pZCwgY2kubGFzdF92ZXJzaW9uX2lkIEZST00gY29uZmlnaXRlbSBjaScKICAgICAgICAgICAgLiAiIFdIRVJFIGNpLmNsYXNzX2lkID0gPyBBTkQgY2kuY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkiLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0RhdGF9e0NsYXNzSUR9IF0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJUFmZmVjdGVkQ0lzOwoKICAgICMgYWRkIGhpc3RvcnkgZW50cmllcwogICAgZm9yIG15ICRJRCAoIGtleXMgJUFmZmVjdGVkQ0lzICkgewogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJElELAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0RlZmluaXRpb25VcGRhdGUnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAiJFBhcmFte0RhdGF9e0RlZmluaXRpb25JRH0iLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGlmIHdlIGFyZSBjaGFuZ2luZyByZWZlcmVuY2UgZHluYW1pYyBmaWVsZHMsIHdlIG5lZWQgdG8gc3luY2hyb25pc2UgdGhlIGxpbmsgdGFibGUgYWNjb3JkaW5nbHkKICAgICMgdGhpcyBpcyBkb25lIGJlZm9yZSBWZXJzaW9uQWRkLCB3aGljaCB3aWxsIGluZXZpdGFibHkgd3JpdGUgdGhlIGxpbmtzLCB0b28sIHdpdGggdGhlIG5ldyBDb25maWcgYWxyZWFkeQogICAgaWYgKCAkUGFyYW17RGF0YX17T2xkRGVmaW5pdGlvbn0gJiYgJFBhcmFte0RhdGF9e09sZERlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn0gKSB7CiAgICAgICAgbXkgJE9sZER5bmFtaWNGaWVsZFJlZiA9ICRQYXJhbXtEYXRhfXtPbGREZWZpbml0aW9ufXtEeW5hbWljRmllbGRSZWZ9IC8vIHt9OwogICAgICAgIG15ICREZWZpbml0aW9uUmVmICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRQYXJhbXtEYXRhfS0+e0NsYXNzSUR9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0RhdGF9LT57RGVmaW5pdGlvbklEfSwKICAgICAgICApOwoKICAgICAgICBteSBARHluYW1pY0ZpZWxkTmFtZXMgPSB1bmlxKCBrZXlzICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfS0+JSosIGtleXMgJE9sZER5bmFtaWNGaWVsZFJlZi0+JSogKTsKICAgICAgICBteSAlQ29uZmlnSXRlbTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoQER5bmFtaWNGaWVsZE5hbWVzKSB7CiAgICAgICAgICAgIG15ICROZXdERiA9ICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfXskRHluYW1pY0ZpZWxkTmFtZX07CiAgICAgICAgICAgIG15ICRPbGRERiA9ICRPbGREeW5hbWljRmllbGRSZWYtPnskRHluYW1pY0ZpZWxkTmFtZX07CiAgICAgICAgICAgIG15ICRERiAgICA9ICROZXdERiAvLyAkT2xkREY7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJERGLT57Q29uZmlnfXtSZWZlcmVuY2VkT2JqZWN0VHlwZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkREYtPntDb25maWd9e1JlZmVyZW5jZWRPYmplY3RUeXBlfSA9fiAnXklUU01Db25maWdJdGVtJzsKCiAgICAgICAgICAgIG15ICRTa2lwID0gMTsKICAgICAgICAgICAgaWYgKCAkTmV3REYgJiYgJE9sZERGICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRDb25maWcgKHF3L0xpbmtUeXBlIExpbmtSZWZlcmVuY2luZ1R5cGUgTGlua0RpcmVjdGlvbi8pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICggJE5ld0RGLT57Q29uZmlnfXskQ29uZmlnfSAvLyAnJyApIG5lICggJE9sZERGLT57Q29uZmlnfXskQ29uZmlnfSAvLyAnJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2tpcCA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNraXAgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkU2tpcDsKCiAgICAgICAgICAgIElEUzoKICAgICAgICAgICAgZm9yIG15ICRJRCAoIGtleXMgJUFmZmVjdGVkQ0lzICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW17JElEfSAvLz0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkQ29uZmlnSXRlbXskSUR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZE5hbWUifTsKCiAgICAgICAgICAgICAgICBuZXh0IElEUyB1bmxlc3MgJFZhbHVlICYmICRWYWx1ZS0+WzBdOwoKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5TeW5jTGlua1RhYmxlKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgID0+ICROZXdERiwKICAgICAgICAgICAgICAgICAgICBPbGREeW5hbWljRmllbGRDb25maWcgICA9PiAkT2xkREYsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1WZXJzaW9uSUQgICAgID0+ICRDb25maWdJdGVteyRJRH17VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtTGFzdFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbXskSUR9e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIGRlZmluaXRpb24gdXBkYXRlcyBzaG91bGQgdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbiwgY2FsbCBWZXJzaW9uQWRkCiAgICBpZiAoIGdyZXAgeyAkXyBlcSAnRGVmaW5pdGlvblVwZGF0ZScgfSBAeyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uVHJpZ2dlcn0gLy8gW10gfSApIHsKICAgICAgICBmb3IgbXkgJElEICgga2V5cyAlQWZmZWN0ZWRDSXMgKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiB3ZSBkbyBub3QgbmVlZCB0byBhZGQgYSBuZXcgdmVyc2lvbiwgdXBkYXRlIGFsbCBhZmZlY3RlZCB2ZXJzaW9ucyBhbmQgY2xlYXIgdGhlIGNhY2hlCiAgICBlbHNlIHsKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX3ZlcnNpb24nCiAgICAgICAgICAgICAgICAuICcgU0VUIGRlZmluaXRpb25faWQgPSA/JwogICAgICAgICAgICAgICAgLiAnIFdIRVJFIGlkIElOICgnCiAgICAgICAgICAgICAgICAuICcgU0VMRUNUIGxhc3RfdmVyc2lvbl9pZCcKICAgICAgICAgICAgICAgIC4gJyBGUk9NIGNvbmZpZ2l0ZW0nCiAgICAgICAgICAgICAgICAuICcgV0hFUkUgY2xhc3NfaWQgPSA/JwogICAgICAgICAgICAgICAgLiAiIEFORCBjdXJfZGVwbF9zdGF0ZV9pZCBJTiAoICREZXBsU3RhdGVTdHJpbmcgKSIKICAgICAgICAgICAgICAgIC4gJyApJywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17RGF0YX17RGVmaW5pdGlvbklEfSwgXCRQYXJhbXtEYXRhfXtDbGFzc0lEfSBdLAogICAgICAgICk7CgogICAgICAgICMgY2xlYXIgdGhlIGNhY2hlCiAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgICAgIGZvciBteSAkSUQgKCBrZXlzICVBZmZlY3RlZENJcyApIHsKICAgICAgICAgICAgZm9yIG15ICRERkRhdGEgKCAwLCAxICkgewogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAkREZEYXRhLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQWZmZWN0ZWRDSXN7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgID0+ICRERkRhdGEsCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/DoHistory.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRvSGlzdG9yeTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9IaXN0b3J5IC0gRXZlbnQgaGFuZGxlciB0aGF0IHJlY29yZHMgdGhlIGhpc3RvcnkKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRG9IaXN0b3J5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9IaXN0b3J5Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgUnVuKCkKClRoaXMgbWV0aG9kIGhhbmRsZXMgdGhlIGV2ZW50LgoKICAgICREb0hpc3RvcnlPYmplY3QtPlJ1bigKICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJ25ldyB2YWx1ZTogMScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhEYXRhIEV2ZW50IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGZvciBkeW5hbWljIGZpZWxkcyBmaXJzdCwgbW9zdCBldmVudHMgd2lsbCBiZSB0aGlzLAogICAgIyBSZWFkYWJsZVZhbHVlIGFuZCBSZWFkYWJsZU9sZFZhbHVlIGFyZSBleHBlY3RlZCB0byBiZSBzdHJpbmdzCiAgICBpZiAoICRQYXJhbXtFdmVudH0gPX4gbS9eQ29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV8vICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0hpc3RvcnlBZGQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdWYWx1ZVVwZGF0ZScsCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAiJFBhcmFte0RhdGF9e0ZpZWxkTmFtZX0lJSRQYXJhbXtEYXRhfXtSZWFkYWJsZU9sZFZhbHVlfSUlJFBhcmFte0RhdGF9e1JlYWRhYmxlVmFsdWV9IiwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBkdWUgdG8gY29uc2lzdGVuY3kgd2l0aCB0aWNrZXQgaGlzdG9yeSwgd2UgbmVlZCBIaXN0b3J5VHlwZQogICAgJFBhcmFte0hpc3RvcnlUeXBlfSA9ICRQYXJhbXtFdmVudH07CgogICAgIyBkaXNwYXRjaCB0YWJsZSBmb3IgYWxsIGV2ZW50cwogICAgbXkgJURpc3BhdGNoZXIgPSAoCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSAgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSAgICAgID0+IFwmX1JldHVybiwKICAgICAgICBDb25maWdJdGVtRGVsZXRlICAgICAgPT4gXCZfQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICBMaW5rQWRkICAgICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBMaW5rRGVsZXRlICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBOYW1lVXBkYXRlICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBJbmNpZGVudFN0YXRlVXBkYXRlICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBEZXBsb3ltZW50U3RhdGVVcGRhdGUgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBEZWZpbml0aW9uVXBkYXRlICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBWZXJzaW9uQ3JlYXRlICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBWZXJzaW9uVXBkYXRlICAgICAgICAgPT4gXCZfUmV0dXJuLAogICAgICAgIERlZmluaXRpb25DcmVhdGUgICAgICA9PiBcJl9SZXR1cm4sCiAgICAgICAgVmVyc2lvbkRlbGV0ZSAgICAgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQXR0YWNobWVudEFkZFBvc3QgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQXR0YWNobWVudERlbGV0ZVBvc3QgID0+IFwmX0hpc3RvcnlBZGQsCiAgICApOwoKICAgICMgZXJyb3IgaGFuZGxpbmcKICAgIGlmICggIWV4aXN0cyAkRGlzcGF0Y2hlcnsgJFBhcmFte0V2ZW50fSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnbm9uIGV4aXN0ZW50IGhpc3RvcnkgdHlwZTogJyAuICRQYXJhbXtFdmVudH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2FsbCBjYWxsYmFjawogICAgbXkgJFN1YiA9ICREaXNwYXRjaGVyeyAkUGFyYW17RXZlbnR9IH07CiAgICAkU2VsZi0+JFN1YigKICAgICAgICAlUGFyYW0sCiAgICAgICAgJXsgJFBhcmFte0RhdGF9IH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDEgSU5URVJOQUwgSU5URVJGQUNFCgo9aGVhZDIgX1JldHVybigpCgpkbyBub3RoaW5nCgo9Y3V0CgpzdWIgX1JldHVybiB7IHJldHVybiAxIH0KCj1oZWFkMiBfQ29uZmlnSXRlbURlbGV0ZSgpCgpoaXN0b3J5J3MgZXZlbnQgaGFuZGxlciBmb3IgQ29uZmlnSXRlbURlbGV0ZQoKPWN1dAoKc3ViIF9Db25maWdJdGVtRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWxldGUgaGlzdG9yeQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkhpc3RvcnlEZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9IaXN0b3J5QWRkKCkKCmhpc3RvcnkncyBkZWZhdWx0IGV2ZW50IGhhbmRsZXIuCgo9Y3V0CgpzdWIgX0hpc3RvcnlBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFkZCBoaXN0b3J5IGVudHJ5CiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkhpc3RvcnlBZGQoCiAgICAgICAgJVBhcmFtLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/LinkedTicketUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpMaW5rZWRUaWNrZXRVcGRhdGU7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KG5vbmUpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgQ29uZmlnIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIENvbmZpZ0l0ZW1JRCBpbiBEYXRhISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgaWYgY29uZmlnIGl0ZW0gY2xhc3MgcmVzdHJpY3Rpb25zIGFyZSBpbiBwbGFjZQogICAgIyAgIGlmIHNvLCBjaGVjayBpZiBjb25maWcgaXRlbSBpcyBmcm9tIG9uZSBvZiB0aGUgY29uZmlndXJlZCBjbGFzc2VzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0NvbmZpZ317Q2xhc3Nlc30gKSApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBub25lIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSAkUGFyYW17Q29uZmlnfXtDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb25maWdJdGVtICRDb25maWdJdGVtLT57TmFtZX0gZG9lcyBub3QgYmVsb25nIHRvIG9uZSBvZiB0aGUgY29uZmlndXJlZCBjbGFzc2VzLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbmVjZXNzYXJ5IG9iamVjdHMKICAgIG15ICRMaW5rT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAjIFdlIHJldHJpZXZlIGFsbCBsaW5rZWQgdGlja2V0cyBhbmQgdHJpZ2dlciB0aGVpciB1cGRhdGUuCiAgICBteSAkTGlua0xpc3QgPSAkTGlua09iamVjdC0+TGlua0xpc3QoCiAgICAgICAgT2JqZWN0ICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdDIgPT4gJ1RpY2tldCcsCiAgICAgICAgS2V5ICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICBTdGF0ZSAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkTGlua0xpc3QpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlcmUgYXJlIG5vIGxpbmtlZCB0aWNrZXRzIGZvciBDb25maWdJdGVtIHdpdGggSUQgJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0uIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBMSU5LVFlQRToKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJExpbmtMaXN0LT57VGlja2V0fSB9ICkgewoKICAgICAgICAjIGNoZWNrIGZvciBsaW5rIHR5cGUgcmVzdHJpY3Rpb25zCiAgICAgICAgIyAgIHRoZXkgY2FuJ3QgYmUgcGFzc2VkIGFzIHBhcmFtZXRlciB0byBMaW5rTGlzdCgpLCBiZWNhdXNlIG9ubHkgb25lIHR5cGUgaXMgcG9zc2libGUgdGhlcmUgYW5kIHdlIG1pZ2h0IGhhdmUgbW9yZSB0eXBlcyBjb25maWd1cmVkCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtDb25maWd9e0xpbmtUeXBlc30gKSApIHsKICAgICAgICAgICAgbmV4dCBMSU5LVFlQRSBpZiBub25lIHsgJF8gZXEgJExpbmtUeXBlIH0gJFBhcmFte0NvbmZpZ317TGlua1R5cGVzfS0+QCo7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyAkTGlua0xpc3QtPntUaWNrZXR9LT57JExpbmtUeXBlfSB9ICkgewogICAgICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICggc29ydCBrZXlzICV7ICRMaW5rTGlzdC0+e1RpY2tldH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgICAgICAgICAjIHRyaWdnZXIgZXZlbnQKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgICAgICAgICBFdmVudCA9PiAnTGlua2VkT2JqZWN0RXZlbnRUcmlnZ2VyJywKICAgICAgICAgICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRMaW5rZWRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/RebuildACLPreselectionCache.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OlJlYnVpbGRBQ0xQcmVzZWxlY3Rpb25DYWNoZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7CiAgICAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/EvaluateScriptFields.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkV2YWx1YXRlU2NyaXB0RmllbGRzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkJhc2VTY3JpcHQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhEYXRhIEV2ZW50KSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJEV2ZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6QmFzZVNjcmlwdCcpLT5HZXRVcGRhdGVFdmVudHMoKTsKCiAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEV2ZW50cyk7CiAgICByZXR1cm4gMSBpZiAhJEV2ZW50cy0+eyAkUGFyYW17RXZlbnR9IH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICBmb3IgbXkgJEZpZWxkSUQgKCAkRXZlbnRzLT57ICRQYXJhbXtFdmVudH0gfS0+QCogKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIElEID0+ICRGaWVsZElELAogICAgICAgICk7CgogICAgICAgICMgaWYgd2Ugc3RvcmUgc2V0IHZhbHVlcywgc3RvcmUgYXMgbWFueSB2YWx1ZXMgYXMgdGhlcmUgYXJlIGluIHRpY2tldCBkYXRhIGZvciB0aGUgc2V0CiAgICAgICAgbXkgJFZhbHVlOwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317UGFydE9mU2V0fSApIHsKICAgICAgICAgICAgbXkgQFZhbHVlczsKICAgICAgICAgICAgbXkgJFNldENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICREeW5hbWljRmllbGQtPntDb25maWd9e1BhcnRPZlNldH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJFNldFZhbHVlICggJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRTZXRDb25maWctPntOYW1lfSJ9LT5AKiApIHsKICAgICAgICAgICAgICAgIG15ICVTZXRWYWx1ZXNNYXBwZWQgPSBtYXAgeyAoICJEeW5hbWljRmllbGRfJF8iID0+ICRTZXRWYWx1ZS0+eyRffSApIH0ga2V5cyAkU2V0VmFsdWUtPiUqOwogICAgICAgICAgICAgICAgcHVzaCBAVmFsdWVzLCAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RXZhbHVhdGUoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0ICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAlU2V0VmFsdWVzTWFwcGVkLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRWYWx1ZSA9IFxAVmFsdWVzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkV2YWx1YXRlKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICBTZXQgICAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317UGFydE9mU2V0fSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3JlICAgICAgICAgICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/FieldRestrictions.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMgLSBmdW5jdGlvbnMgdG8gcmVzdHJpY3QgRHluYW1pY0ZpZWxkIGNvbnRlbnQgYW5kIGZpZWxkIHZpc2liaWxpdHkgZm9yIHZhcmlvdXMgZm9ybXMKCj1oZWFkMSBTWU5PUFNJUwoKQ3JlYXRlIEZpZWxkUmVzdHJpY3Rpb25zIG9iamVjdAogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7Cgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpEb24ndCB1c2UgdGhlIGNvbnN0cnVjdG9yIGRpcmVjdGx5LCB1c2UgdGhlIE9iamVjdE1hbmFnZXIgaW5zdGVhZDoKCiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIEdldEZpZWxkU3RhdGVzKCkKClJldHVybnMgcG9zc2libGUgdmFsdWVzLCBzZWxlY3RlZCB2YWx1ZXMsIGFuZCB2aXNpYmlsaXR5IG9mIGZpZWxkcwoKICAgIG15ICRMb29wUHJvdGVjdGlvbiA9IDEwMDsKCiAgICBteSAlU3RhdGVzID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5HZXRGaWVsZFN0YXRlcygKICAgICAgICBDb25maWdJdGVtT2JqZWN0ICAgICAgICAgID0+ICRDb25maWdJdGVtT2JqZWN0LAogICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZ3MsCiAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICBDaGFuZ2VkRWxlbWVudHMgICAgICAgICAgID0+IHt9LAogICAgICAgIEN1c3RvbWVyVXNlciAgICAgICAgICAgICAgPT4gJEN1c3RvbWVyVXNlciwKICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRBY3Rpb24sCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICBHZXRQYXJhbSAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgIH0sCiAgICAgICAgTG9vcFByb3RlY3Rpb24gICAgICAgICAgICA9PiBcJExvb3BQcm90ZWN0aW9uLCAgICAgICAgICAgICAgIyByZXN0cmljdHMgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBjYWxsczsgcGFzc2luZyBhIHJlZmVyZW5jZSB0byAndW5kZWYnIHdpbGwgbGVhZCB0byBhIHdhcm5pbmcKICAgICAgICBBdXRvc2VsZWN0ICAgICAgICAgICAgICAgID0+IHt9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsOyBkZWZhdWx0OiB1bmRlZjsge0ZpZWxkID0+IDAsMSwyLCAuLi59CiAgICAgICAgQUNMUHJlc2VsZWN0aW9uICAgICAgICAgICA9PiAwfDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIFBvc3NpYmxlVmFsdWVzT25seSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWw7IGFzc3VtZSBhbGwgZmllbGRzIGFyZSB2aXNpYmxlIGUuZy4gZm9yIHNldHMKICAgICAgICBDYWNoZWRWaXNpYmlsaXR5ICAgICAgICAgID0+IFwlQ2FjaGVkVmlzaWJpbGl0eSwgICAgICAgICAgICAjIG9wdGlvbmFsOyB1c2UgdGhlIHByb3ZpZGVkIHZpc2liaWxpdHkgYW5kIGRvIG5vdCBzdG9yZSB0aGUgY2FjaGUgYXQgdGhlIGVuZAogICAgICAgIER5bmFtaWNGaWVsZERhdGFEQiAgICAgICAgPT4gXCVEeW5hbWljRmllbGREYXRhREIsICAgICAgICAgICMgb3B0aW9uYWw7IHVzZWQgdG8gc2V0IHZhbHVlcyBmb3IgcmVhcHBlYXJpbmcgZHluYW1pYyBmaWVsZHMgdG8gc3RvcmVkIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgd2lsbCBhbHNvIGJlIHBhc3NlZCBvbiB0byBHZXRGaWVsZFN0YXRlKCkKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICVTdGF0ZXMgPSAoCiAgICAgICAgRmllbGRzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICBJbmRleCAgICAgICAgICAgPT4gPEluZGV4IHdpdGhpbiBAeyAkRHluYW1pY0ZpZWxkQ29uZmlncyB9PgogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+ICRQb3NzaWJsZVZhbHVlcywKICAgICAgICAgICAgfQogICAgICAgICAgICAuLi4KICAgICAgICBdLAogICAgICAgIFZpc2liaWxpdHkgPT4gewogICAgICAgICAgICBGaWVsZDEgID0+IDEsCiAgICAgICAgICAgIEZpZWxkMiAgPT4gMCwKICAgICAgICB9LAogICAgICAgIE5ld1ZhbHVlcyA9PiB7CiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIEdldEZpZWxkU3RhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQKICAgIGZvciAocXcoQWN0aW9uIEdldFBhcmFtKSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjbGVhbiBjb25maWcgaXRlbSBpZCBpZiBpdCBpcyAnTkVXJwogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSBlcSAnTkVXJyApIHsKICAgICAgICBkZWxldGUgJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gJiYgISRQYXJhbXtDdXN0b21lclVzZXJ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQgb3IgQ3VzdG9tZXJVc2VySUQhIgogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGRlY3JlbWVudCBvbiB1bmRlZiByZXN1bHQgaW4gJy0xJywgc28gaWYgTG9vcFByb3RlY3Rpb24gaXMgdW5kZWYsIGZ1bmN0aW9uIGFib3J0cyBoZXJlCiAgICBpZiAoICR7ICRQYXJhbXtMb29wUHJvdGVjdGlvbn0gfS0tIDwgMSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlJhbiBpbnRvIHVucmVzb2x2YWJsZSBsb29wISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVEeW5hbWljRmllbGREYXRhREIgPSBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0R5bmFtaWNGaWVsZERhdGFEQn0gKSA/ICRQYXJhbXtEeW5hbWljRmllbGREYXRhREJ9LT4lKiA6ICgpOwogICAgaWYgKCAoICFleGlzdHMgJFBhcmFte0R5bmFtaWNGaWVsZERhdGFEQn0gKSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkRGF0YURCUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggZGVmaW5lZCAkRHluYW1pY0ZpZWxkRGF0YURCUmVmICkgewogICAgICAgICAgICAlRHluYW1pY0ZpZWxkRGF0YURCID0gJER5bmFtaWNGaWVsZERhdGFEQlJlZi0+JSo7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRoZSBjdXJyZW50IHZpc2liaWxpdHkKICAgIG15ICRDYWNoZWRWaXNpYmlsaXR5OwogICAgaWYgKCAkUGFyYW17QUNMUHJlc2VsZWN0aW9ufSApIHsKCiAgICAgICAgIyBpbiBzb21lIG9jY2FzaW9ucyAoZS5nLiBkeW5hbWljIGZpZWxkIHNldCkgd2UgZG8gbm90IHVzZSB0aGUgY2FjaGUKICAgICAgICAkQ2FjaGVkVmlzaWJpbGl0eSA9IGV4aXN0cyAkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX0KICAgICAgICAgICAgPyAkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX0KICAgICAgICAgICAgOiAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgICAgICAgICAgICAgVHlwZSA9PiAnSGlkZGVuRmllbGRzJywKICAgICAgICAgICAgICAgIEtleSAgPT4gJFBhcmFte0Zvcm1JRH0sCiAgICAgICAgICAgICk7CiAgICB9CgogICAgIyBkb24ndCBza2lwIGFueSBmaWVsZHMgaW5pdGlhbGx5IG9yIGlmIEFDTFByZXNlbGVjdGlvbiBpcyBkaXNhYmxlZAogICAgbXkgJENvbXBsZXRlUnVuID0gJENhY2hlZFZpc2liaWxpdHkgPyAwIDogMTsKCiAgICAjIHNob3J0Y3V0CiAgICBteSAkREZQYXJhbSA9ICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfTsKCiAgICAjIFRPRE86IG5lZWRlZCwgYmVjYXVzZSBDb25maWdJdGVtQWNsIHRhbXBlcnMgd2l0aCB0aGUgRHluYW1pY0ZpZWxkIHJlZmVyZW5jZSwgaWYgQ29uZmlnSXRlbUlEIGlzIGdpdmVuCiAgICBmb3IgbXkgJE5hbWUgKCBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRzfS0+JSogKSB7CiAgICAgICAgJFBhcmFte0dldFBhcmFtfXtEeW5hbWljRmllbGR9eyAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSB9IC8vPSAkUGFyYW17R2V0UGFyYW19e0R5bmFtaWNGaWVsZH17ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH07ICAgICMgYWxsIGtleXMgaGF2ZSB0byBleGlzdAogICAgfQoKICAgICMgdHJhbnNmb3JtIGR5bmFtaWMgZmllbGQgZGF0YSBpbnRvIERGTmFtZSA9PiBERk5hbWUgcGFpcgogICAgbXkgJUR5bmFtaWNGaWVsZEFjbCA9IG1hcCB7ICRfID0+ICRfIH0ga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkc30tPiUqOwoKICAgIG15ICVVc2VyUHJlZmVyZW5jZXM7CiAgICBteSAlVmlzaWJpbGl0eTsKICAgIG15ICRWaXNDaGVjayA9IDE7CgogICAgIyBpbiB0aGUgc3BlY2lhbCBjYXNlIG9mIGFzc3VtaW5nIHZpc2libGUgZmllbGRzIHdlIHN0aWxsIHdhbnQgdG8ga25vdyB3aGV0aGVyIHdlIGRvIGEgJENvbXBsZXRlUnVuCiAgICAjIGJ1dCB3ZSBkaXNjYXJkIGFsbCB2aXNpYmlsaXR5IGNoZWNrcwogICAgIyBUT0RPOiBEaXNjYXJkIGlmIG9ubHkgdXNlZCBpbiBTZXRzCiAgICBpZiAoICRQYXJhbXtQb3NzaWJsZVZhbHVlc09ubHl9ICkgewogICAgICAgICRWaXNDaGVjayA9IDA7CgogICAgICAgICMgdHJlYXQgYWxsIGZpZWxkcyBhcyBhbHdheXMgdmlzaWJsZQogICAgICAgICRDYWNoZWRWaXNpYmlsaXR5ID0gewogICAgICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyA9PiAxIH0ga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkc30tPiUqCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGluIHRoZSBzdGFuZGFyZCBjYXNlIGFuZCBpZiB3ZSB1c2UgQUNMLVByZXNlbGVjdGlvbiBvbmx5IHZpcyBjaGVjayBpZiBuZWNlc3NhcnkKICAgIGVsc2lmICggISRDb21wbGV0ZVJ1biApIHsKICAgICAgICAkVmlzQ2hlY2sgPSAwOwoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgZm9ybS1BQ0xzIGFyZSBhZmZlY3RlZCBieSBhbnkgb2YgdGhlIGNoYW5nZWQgZWxlbWVudHMKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAleyAkUGFyYW17Q2hhbmdlZEVsZW1lbnRzfSB9ICkgewoKICAgICAgICAgICAgIyBhdXRvdml2aWZpY2F0aW9uIGNvdWxkIGJlIGF2b2lkZWQKICAgICAgICAgICAgaWYgKCAkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtSdWxlc317Rm9ybX17JEVsZW1lbnR9ICkgewogICAgICAgICAgICAgICAgJFZpc0NoZWNrID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgRUxFTUVOVDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICEkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtGaWVsZHN9eyRFbGVtZW50fSApIHsKICAgICAgICAgICAgICAgICRWaXNDaGVjayA9IDE7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkRWxlbWVudCBub3QgZGVmaW5lZCBpbiBDb25maWdJdGVtQUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbGFzdCBFTEVNRU5UOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkVmlzQ2hlY2spIHsKCiAgICAgICAgIyBjYWxsIGNvbmZpZyBpdGVtIEFDTHMgZm9yIER5bmFtaWNGaWVsZHMgdG8gY2hlY2sgZmllbGQgdmlzaWJpbGl0eQogICAgICAgIG15ICRBQ0xSZXN1bHQgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX0gfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkUGFyYW17QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnRm9ybScsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJy0nLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlRHluYW1pY0ZpZWxkQWNsLAogICAgICAgICk7CgogICAgICAgIGlmICgkQUNMUmVzdWx0KSB7CiAgICAgICAgICAgICVWaXNpYmlsaXR5ID0gbWFwIHsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8gPT4gMCB9IGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKjsKICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKCBzb3J0IGtleXMgJUFjbERhdGEgKSB7CiAgICAgICAgICAgICAgICAkVmlzaWJpbGl0eXsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkIH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlVmlzaWJpbGl0eSA9IG1hcCB7ICdEeW5hbWljRmllbGRfJyAuICRfID0+IDEgfSBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRzfS0+JSo7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB1c2VyIHByZWZlcmVuY2VzIGZvciBwb3NzaWJsZSB1c2VyIGRlZmF1bHQgdmFsdWVzCiAgICAgICAgaWYgKCAkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAgICAgJVVzZXJQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICgkQ2FjaGVkVmlzaWJpbGl0eSkgewogICAgICAgICVWaXNpYmlsaXR5ID0gJXskQ2FjaGVkVmlzaWJpbGl0eX07CiAgICB9CgogICAgbXkgKCAlRmllbGRzLCAlTmV3VmFsdWVzLCAlU2V0cyApOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKiApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICBteSAkREZOYW1lID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAjIHNraXAgaWYgZmllbGQgaGFzIGJlZW4gaGlkZGVuIChDYWNoZWRWaXNpYmlsaXR5KSBhbmQgaXMgYWxzbyBoaWRkZW4gbm93IChWaXNpYmlsaXR5KQogICAgICAgIGlmICgKICAgICAgICAgICAgJVZpc2liaWxpdHkKICAgICAgICAgICAgJiYgJFZpc2liaWxpdHl7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMAogICAgICAgICAgICAmJiAkQ2FjaGVkVmlzaWJpbGl0eQogICAgICAgICAgICAmJiAkQ2FjaGVkVmlzaWJpbGl0eS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID09IDAKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQoKICAgICAgICAjIDEuIGhhbmRsZSBmaWVsZHMgd2hpY2ggc2V0IHRoZWlyIGR5bmFtaWMgY29udGVudCB0aGVtc2VsdmVzCiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdH0tPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ1NldHNEeW5hbWljQ29udGVudCcsCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgY2hhbmdlcyBpbiB2aXNpYmlsaXR5IG5lZWQgdG8gYmUgcGFzc2VkIGV4cGxpY2l0bHkgdG8gdGhlIGRyaXZlcnMKICAgICAgICAgICAgIyAgIHRoZSBkcml2ZXJzIG9ubHkgZ2V0IHBhc3NlZCB0aGUgQ2FjaGVkVmlzaWJpbGl0eSBhbmQgdGhlcmVmb3IgY2FuJ3QgZGV0ZXJtaW5lIGNoYW5nZXMgdGhlbXNlbHZlcwogICAgICAgICAgICBteSAkRGlzYXBwZWFycyA9ICggJVZpc2liaWxpdHkgJiYgJFZpc2liaWxpdHl7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApOwogICAgICAgICAgICBteSAkUmVhcHBlYXJzICA9ICggJVZpc2liaWxpdHkgJiYgJFZpc2liaWxpdHl7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMSAmJiAkQ2FjaGVkVmlzaWJpbGl0eSAmJiAkQ2FjaGVkVmlzaWJpbGl0eS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID09IDAgKTsKCiAgICAgICAgICAgIG15ICVDb250ZW50ID0gJFBhcmFte0R5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3R9LT5HZXRGaWVsZFN0YXRlKAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgRGlzYXBwZWFycyAgICAgICAgICAgICAgPT4gJERpc2FwcGVhcnMsCiAgICAgICAgICAgICAgICBSZWFwcGVhcnMgICAgICAgICAgICAgICA9PiAkUmVhcHBlYXJzLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkRGF0YURCICAgICAgPT4gXCVEeW5hbWljRmllbGREYXRhREIsCiAgICAgICAgICAgICAgICBDYWNoZWRWaXNpYmlsaXR5ICAgICAgICA9PiAkQ2FjaGVkVmlzaWJpbGl0eSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBGaWVsZFJlc3RyaWN0aW9uc09iamVjdCA9PiAkU2VsZiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgYXV0b3NlbGVjdGlvbiBpcyBhY3RpdmF0ZWQgYW5kIGZpZWxkIGNoYW5nZWQgaW4gYW55IHdheQogICAgICAgICAgICBpZiAoICRDb250ZW50e1Bvc3NpYmxlVmFsdWVzfSAmJiAkUGFyYW17QXV0b3NlbGVjdH0gJiYgJFBhcmFte0F1dG9zZWxlY3R9e0R5bmFtaWNGaWVsZH17JERGTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgbXkgJFNlbGVjdGVkID0gZXhpc3RzICRDb250ZW50e05ld1ZhbHVlfSA/ICRDb250ZW50e05ld1ZhbHVlfSA6ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CgogICAgICAgICAgICAgICAgbXkgJEF1dG9zZWxlY3RlZCA9ICRTZWxmLT5BdXRvc2VsZWN0KAogICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgICAgICAgID0+ICRTZWxlY3RlZCwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkQ29udGVudHtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkQXV0b3NlbGVjdGVkICkgewogICAgICAgICAgICAgICAgICAgICRDb250ZW50e05ld1ZhbHVlfSA9ICRBdXRvc2VsZWN0ZWQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IG5ldyB2YWx1ZSBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgaWYgKCBleGlzdHMgJENvbnRlbnR7TmV3VmFsdWV9ICkgewogICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICRDb250ZW50e05ld1ZhbHVlfTsKICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQ29udGVudHtOZXdWYWx1ZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggZXhpc3RzICRDb250ZW50e1Bvc3NpYmxlVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICRGaWVsZHN7JERGTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gJENvbnRlbnR7UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICBpZiAoIGV4aXN0cyAkQ29udGVudHtOb3RBQ0xSZWR1Y2libGV9ICkgewogICAgICAgICAgICAgICAgICAgICRGaWVsZHN7JERGTmFtZX17Tm90QUNMUmVkdWNpYmxlfSA9ICRDb250ZW50e05vdEFDTFJlZHVjaWJsZX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCBleGlzdHMgJENvbnRlbnR7U2V0c30gKSB7CiAgICAgICAgICAgICAgICAlU2V0cyA9ICgKICAgICAgICAgICAgICAgICAgICAlU2V0cywKICAgICAgICAgICAgICAgICAgICAkQ29udGVudHtTZXRzfS0+JSosCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggZXhpc3RzICRDb250ZW50e05ld1ZhbHVlfSApIHsKICAgICAgICAgICAgICAgICRGaWVsZHN7JERGTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0aGUgdmlzaWJpbGl0eSBvZiBTZXQtaW5uZXIgZmllbGRzIGlzIGhhbmRsZWQgYnkgdGhlIFNldCBpdHNlbGYgaW4gdGhlIEdldEZpZWxkU3RhdGUoKSBzdWIKICAgICAgICAgICAgaWYgKCAkQ29udGVudHtWaXNpYmlsaXR5fSApIHsKICAgICAgICAgICAgICAgICVWaXNpYmlsaXR5ID0gKAogICAgICAgICAgICAgICAgICAgICVWaXNpYmlsaXR5LAogICAgICAgICAgICAgICAgICAgICRDb250ZW50e1Zpc2liaWxpdHl9LT4lKiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJFBhcmFte0R5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3R9LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICk7CgogICAgICAgICMgMi4gaGFuZGxlIGRpc2FwcGVhcmluZyBmaWVsZHMKICAgICAgICBpZiAoICVWaXNpYmlsaXR5ICYmICRWaXNpYmlsaXR5eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID09IDAgKSB7CgogICAgICAgICAgICAjIHZhbHVlcyBvZiB2aXNpYmxlIGZpZWxkcyB0dXJuaW5nIGludmlzaWJsZSBhcmUgZGVsZXRlZAogICAgICAgICAgICBteSAkVXBkYXRlUmVxdWlyZWQgPSAhZGVmaW5lZCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID8gMCA6CiAgICAgICAgICAgICAgICByZWYoICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKQogICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKSA/IDEgOiAwICkKICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPX4gbS9eLT8kLyA/IDAgOiAxOwoKICAgICAgICAgICAgIyBzZXR0aW5nIGNvbmZpZyBpdGVtIHZhbHVlcyBmb3IgaGlkZGVuIGZpZWxkcyBpcyBuZWNlc3NhcnkgZm9yIEFDTCBjYWxjdWxhdGlvbgogICAgICAgICAgICBpZiAoIGRlZmluZWQgJER5bmFtaWNGaWVsZERhdGFEQnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSApIHsKCiAgICAgICAgICAgICAgICBteSAkVmFsdWVJc0RpZmZlcmVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVJc0RpZmZlcmVudCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBWYWx1ZTEgICAgICAgICAgICAgPT4gJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZTIgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZERhdGFEQnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCRWYWx1ZUlzRGlmZmVyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgJFVwZGF0ZVJlcXVpcmVkID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRVcGRhdGVSZXF1aXJlZCA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgdmFsdWVzIGFyZSBwcmVzZW50LCBGaWVsZFJlc3RyaWN0aW9ucyBoYXZlIHRvIGJlIGNoZWNrZWQgYWdhaW4gZm9yIHRoZSBuZXdseSBjaGFuZ2VkIGVsZW1lbnRzCiAgICAgICAgICAgIGlmICgkVXBkYXRlUmVxdWlyZWQpIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBlbnRyeSBhbmQgcmVtZW1iZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gcmVmKCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgPyBbXSA6ICcnOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgd2UgaGF2ZSBhIGNvbmZpZyBpdGVtIGRhdGEgdmFsdWUgYW5kIHVzZSB0aGVtLCBpZiBzbwogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICREeW5hbWljRmllbGREYXRhREJ7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICREeW5hbWljRmllbGREYXRhREJ7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBmaWVsZHMgaGF2ZSB0byBiZSBhZGRlZCB0byBjb3JyZWN0bHkgcmVtb3ZlIGFsbCBjb250ZW50CiAgICAgICAgICAgICAgICBpZiAoICEkSXNBQ0xSZWR1Y2libGUgKSB7CiAgICAgICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICBOb3RBQ0xSZWR1Y2libGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4ge30sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57UmVhZG9ubHl9OwoKICAgICAgICAjIDMuIHNraXAgbm9uIEFDTCByZWR1Y2libGUgZmllbGRzLi4uCiAgICAgICAgaWYgKCAhJElzQUNMUmVkdWNpYmxlICkgewoKICAgICAgICAgICAgIyAuLi5idXQgc2V0IGFjdHVhbCBvciBkZWZhdWx0IHZhbHVlcyBvZiByZWFwcGVhcmluZyBmaWVsZHMgZmlyc3QKICAgICAgICAgICAgaWYgKCAkQ2FjaGVkVmlzaWJpbGl0eSAmJiAkQ2FjaGVkVmlzaWJpbGl0eS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID09IDAgKSB7CgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICREeW5hbWljRmllbGREYXRhREJ7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICREeW5hbWljRmllbGREYXRhREJ7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICBOb3RBQ0xSZWR1Y2libGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRVc2VyUHJlZmVyZW5jZXN7IlVzZXJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkVXNlclByZWZlcmVuY2VzeyJVc2VyRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJENoZWNrQUNMcyA9IDE7CgogICAgICAgICMgNC4gaGFuZGxlIGFsbCBzdGFuZGFyZCBBQ0wgcmVkdWNpYmxlIGZpZWxkcwogICAgICAgICMgZXZhbHVhdGUgcHJlc2VsZWN0aW9uCiAgICAgICAgaWYgKCAhJENvbXBsZXRlUnVuICkgewogICAgICAgICAgICBpZiAoICEkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtGaWVsZHN9eyAnRHluYW1pY0ZpZWxkXycgLiAkREZOYW1lIH0gKSB7CgogICAgICAgICAgICAgICAgIyBubyB3YXkgdG8gdGVsbCBpZiB0aGVyZSBhcmUgYWNscyB3aGljaCBjb25uZWN0IHRoZSBjaGFuZ2VkIGVsZW1lbnQgdG8gdGhlIGFmZmVjdGVkIGZpZWxkCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljRmllbGRfJERGTmFtZSBub3QgZGVmaW5lZCBpbiBDb25maWdJdGVtQUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENoZWNrQUNMcyA9IDA7CgogICAgICAgICAgICAgICAgIyBjaGVjayBhY2xzIGlmLi4uCiAgICAgICAgICAgICAgICAjIC4uLmEgZmllbGQgcmVhcHBlYXJzOiBwb3NzaWJsZSB2YWx1ZXMgaGF2ZSB0byBiZSByZWNhbGN1bGF0ZWQ7CiAgICAgICAgICAgICAgICBpZiAoICRDYWNoZWRWaXNpYmlsaXR5ICYmICRDYWNoZWRWaXNpYmlsaXR5LT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKCiAgICAgICAgICAgICAgICAgICAgIyB0YWtlIHRoZSBjb25maWcgaXRlbSBvciBkZWZhdWx0IHZhbHVlIGFuZCBwdXQgaXQgYWxzbyBpbnRvIE5ld1ZhbHVlcwogICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIHVubGlrZWx5IGNhc2UgdGhhdCB0aGV5IHdpbGwgYmUgZGVsZXRlZCBhZ2FpbiwgdGhpcyB3aWxsIGp1c3QgY2F1c2UgYSByZWR1bmRhbnQgc2Vjb25kIHJ1bgogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkRHluYW1pY0ZpZWxkRGF0YURCeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZERhdGFEQnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICREeW5hbWljRmllbGREYXRhREJ7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggZGVmaW5lZCAkVXNlclByZWZlcmVuY2VzeyJVc2VyRHluYW1pY0ZpZWxkXyRERk5hbWUifSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICRVc2VyUHJlZmVyZW5jZXN7IlVzZXJEeW5hbWljRmllbGRfJERGTmFtZSJ9OwogICAgICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJFVzZXJQcmVmZXJlbmNlc3siVXNlckR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggZGVmaW5lZCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgLi4uYXV0b3NlbGVjdCBpcyB0dXJuZWQgb24gZm9yIHRoZSBjaGFuZ2VkIGZpZWxkIChyZWZpbGwgYSBmaWVsZCBlbXB0aWVkIGJ5IGhhbmQpCiAgICAgICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0F1dG9zZWxlY3R9CiAgICAgICAgICAgICAgICAgICAgJiYgJFBhcmFte0F1dG9zZWxlY3R9e0R5bmFtaWNGaWVsZH17JERGTmFtZX0KICAgICAgICAgICAgICAgICAgICAmJiAkUGFyYW17Q2hhbmdlZEVsZW1lbnRzfXsiRHluYW1pY0ZpZWxkXyRERk5hbWUifQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBFTEVNRU5UOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAleyAkUGFyYW17Q2hhbmdlZEVsZW1lbnRzfSB9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyAuLi50aGUgY2hhbmdlZCBlbGVtZW50IGFmZmVjdHMgdGhlIGN1cnJlbnQgZmllbGQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte0FDTFByZXNlbGVjdGlvbn17UnVsZXN9e0NvbmZpZ0l0ZW19eyRFbGVtZW50fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAnRHluYW1pY0ZpZWxkXycgLiAkREZOYW1lIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENoZWNrQUNMcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IEVMRU1FTlQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgLi4udGhlIGVsZW1lbnQgaXMgbm90IGRlZmluZWQgaW4gdGhlIGNhY2hlIGFuZCB0aHVzIHRoZXJlIGlzIG5vIHdheSB0byB0ZWxsIGlmIHRoZXJlIGFyZSBhY2xzIHdoaWNoIGNvbm5lY3QgaXQgdG8gdGhlIGFmZmVjdGVkIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggISRQYXJhbXtBQ0xQcmVzZWxlY3Rpb259e0ZpZWxkc317JEVsZW1lbnR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENoZWNrQUNMcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkRWxlbWVudCBub3QgZGVmaW5lZCBpbiBDb25maWdJdGVtQUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBFTEVNRU5UOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5vdGhpbmcgY2hhbmdlZCwgb21pdCB0aGlzIGZpZWxkCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRDaGVja0FDTHM7CgogICAgICAgICMgZWxzZSBjaGVjayBBQ0xzCiAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJFBhcmFte0R5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3R9LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgKTsKCiAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICBteSAlQWNsRGF0YSA9ICV7JFBvc3NpYmxlVmFsdWVzfTsKICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICBteSAkQUNMID0gJFBhcmFte0NvbmZpZ0l0ZW1PYmplY3R9LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAleyAkUGFyYW17R2V0UGFyYW19IH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFBhcmFte0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICRERk5hbWUsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICk7CiAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRQYXJhbXtDb25maWdJdGVtT2JqZWN0fS0+Q29uZmlnSXRlbUFjbERhdGEoKTsKCiAgICAgICAgICAgICMgY29udmVydCBGaWx0ZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXN9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgIH0KCiAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gJFBvc3NpYmxlVmFsdWVzLAogICAgICAgIH07CgogICAgICAgICMgY2hlY2sgd2hldGhlciBhbGwgc2VsZWN0ZWQgZW50cmllcyBhcmUgc3RpbGwgdmFsaWQKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifQogICAgICAgICAgICAmJgogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9CiAgICAgICAgICAgICAgICB8fCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9IGVxICcwJwogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIG11bHRpc2VsZWN0IGFuZCAtdmFsdWUgZmllbGRzCiAgICAgICAgICAgIGlmICggcmVmKCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgKSB7CiAgICAgICAgICAgICAgICBTRUxFQ1RFRDoKICAgICAgICAgICAgICAgIGZvciBteSAkU2VsZWN0ZWQgKCBAeyAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9IH0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgc2tpcCBlbXB0eSB2YWx1ZXMgKHBvc3NpYmxlIG9ubHkgZm9yIG11bHRpdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgbmV4dCBTRUxFQ1RFRCBpZiAhZGVmaW5lZCAkU2VsZWN0ZWQ7CgogICAgICAgICAgICAgICAgICAgICMgaWYgYSBzZWxlY3RlZCB2YWx1ZSBpcyBub3QgcG9zc2libGUgYW55bW9yZQogICAgICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFBvc3NpYmxlVmFsdWVzLT57JFNlbGVjdGVkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwIHsgZGVmaW5lZCAkXyAmJiAhZGVmaW5lZCAkUG9zc2libGVWYWx1ZXMtPnskX30gPyB1bmRlZiA6ICRfIH0gJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifS0+QCoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZXAgeyBkZWZpbmVkICRQb3NzaWJsZVZhbHVlcy0+eyRTZWxlY3RlZH0gfSAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9LT5AKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBTRUxFQ1RFRDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2luZ2xlc2VsZWN0IGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFBvc3NpYmxlVmFsdWVzLT57ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gfSApIHsKICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYXV0b3NlbGVjdCBpZiBhcHBsaWNhYmxlCiAgICAgICAgaWYgKCAkUGFyYW17QXV0b3NlbGVjdH0gJiYgJFBhcmFte0F1dG9zZWxlY3R9e0R5bmFtaWNGaWVsZH17JERGTmFtZX0gKSB7CgogICAgICAgICAgICBteSAkU2VsZWN0ZWQgPSAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9CiAgICAgICAgICAgICAgICAvLyAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9IC8vICcnOwoKICAgICAgICAgICAgbXkgJEF1dG9zZWxlY3RlZCA9ICRTZWxmLT5BdXRvc2VsZWN0KAogICAgICAgICAgICAgICAgQ3VycmVudCAgICAgICAgPT4gJFNlbGVjdGVkLAogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gJFBvc3NpYmxlVmFsdWVzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRBdXRvc2VsZWN0ZWQgKSB7CiAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJEF1dG9zZWxlY3RlZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNhY2hlIHRoZSBuZXcgdmlzaWJpbGl0eQogICAgaWYgKCAkUGFyYW17QUNMUHJlc2VsZWN0aW9ufSAmJiAkVmlzQ2hlY2sgJiYgIWV4aXN0cyAkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX0gKSB7CiAgICAgICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0hpZGRlbkZpZWxkcycsCiAgICAgICAgICAgIEtleSAgID0+ICRQYXJhbXtGb3JtSUR9LAogICAgICAgICAgICBWYWx1ZSA9PiB7JVZpc2liaWxpdHl9LAogICAgICAgICAgICBUVEwgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1Nlc3Npb25NYXhUaW1lJykgfHwgNjAgKiA2MCAqIDEyLAogICAgICAgICk7CiAgICB9CgogICAgZWxzaWYgKCAkVmlzQ2hlY2sgJiYgZXhpc3RzICRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fSApIHsKICAgICAgICAkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX0gPSBcJVZpc2liaWxpdHk7CiAgICB9CgogICAgIyBpZiBhZGRpdGlvbmFsIGVsZW1lbnRzIGFyZSBjaGFuZ2VkIGJ5IHRoZSByb3V0aW5lLCByZWN1cnNpdmVseSBjYWxsIEdldEZpZWxkU3RhdGVzLCB1bnRpbCBhbGwgZGVwZW5kZW5jaWVzIGFyZSB3b3JrZWQgdGhyb3VnaAogICAgaWYgKCVOZXdWYWx1ZXMpIHsKCiAgICAgICAgbXkgJVJlY3UgPSAkU2VsZi0+R2V0RmllbGRTdGF0ZXMoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgR2V0UGFyYW0gPT4gewogICAgICAgICAgICAgICAgJXsgJFBhcmFte0dldFBhcmFtfSB9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkID0+IHsKICAgICAgICAgICAgICAgICAgICAleyAkUGFyYW17R2V0UGFyYW19e0R5bmFtaWNGaWVsZH0gfSwKICAgICAgICAgICAgICAgICAgICAlTmV3VmFsdWVzLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2hhbmdlZEVsZW1lbnRzID0+IHsgbWFwIHsgJF8gPT4gMSB9IGtleXMgJU5ld1ZhbHVlcyB9LAogICAgICAgICk7CgogICAgICAgICMgY29tYmluZSB0aGUgdmlzaWJpbGl0eSwgaW5uZXIgdmFsdWVzIHRha2UgcHJlY2VkZW5jZQogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRSZWN1e1Zpc2liaWxpdHl9ICkgKSB7CiAgICAgICAgICAgICVWaXNpYmlsaXR5ID0gKAogICAgICAgICAgICAgICAgJVZpc2liaWxpdHksCiAgICAgICAgICAgICAgICAleyAkUmVjdXtWaXNpYmlsaXR5fSB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjb21iaW5lIHRoZSBmaWVsZCBpbmZvLCBpbm5lciB2YWx1ZXMgdGFrZSBwcmVjZWRlbmNlCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFJlY3V7RmllbGRzfSApICkgewogICAgICAgICAgICAlRmllbGRzID0gKAogICAgICAgICAgICAgICAgJUZpZWxkcywKICAgICAgICAgICAgICAgICV7ICRSZWN1e0ZpZWxkc30gfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY29tYmluZSBhbGwgY2hhbmdlZCBlbGVtZW50cwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRSZWN1e05ld1ZhbHVlc30gKSApIHsKICAgICAgICAgICAgJU5ld1ZhbHVlcyA9ICgKICAgICAgICAgICAgICAgICVOZXdWYWx1ZXMsCiAgICAgICAgICAgICAgICAleyAkUmVjdXtOZXdWYWx1ZXN9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGZpbmFsbHkgdGFrZSBjYXJlIG9mIHNldCBpbmZvcm1hdGlvbgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRSZWN1e1NldHN9ICkgKSB7CiAgICAgICAgICAgICVTZXRzID0gKAogICAgICAgICAgICAgICAgJVNldHMsCiAgICAgICAgICAgICAgICAleyAkUmVjdXtTZXRzfSB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gKAogICAgICAgIEZpZWxkcyAgICAgPT4gXCVGaWVsZHMsCiAgICAgICAgVmlzaWJpbGl0eSA9PiBcJVZpc2liaWxpdHksCiAgICAgICAgTmV3VmFsdWVzICA9PiBcJU5ld1ZhbHVlcywKICAgICAgICBTZXRzICAgICAgID0+IFwlU2V0cywKICAgICk7Cn0KCj1oZWFkMiBBdXRvc2VsZWN0KCkKCkF1dG9zZWxlY3RzIGEgdmFsdWUgaWYgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlzIGVtcHR5IGFuZCBvbmx5IG9uZSB2YWxpZCBvcHRpb24gaXMgcHJlc2VudCwgZWxzZSB1bmRlZiBpcyByZXR1cm5lZAoKICAgIG15ICRTZWxlY3RlZCA9ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdC0+QXV0b3NlbGVjdCgKICAgICAgICBDdXJyZW50ICAgICAgICA9PiAkVmFsdWUsICAgIyB1bmRlZiwgJycsIG9yIFtdCiAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4ge30sCiAgICApOwoKPWN1dAoKc3ViIEF1dG9zZWxlY3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJldHVybiwgaWYgYWxyZWFkeSBmaWxsZWQgKCAnMCcgaXMgdmFsaWQhICkKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRQYXJhbXtDdXJyZW50fQogICAgICAgICYmICggKCAhcmVmKCAkUGFyYW17Q3VycmVudH0gKSAmJiAkUGFyYW17Q3VycmVudH0gIX4gL14tPyQvICkgfHwgSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17Q3VycmVudH0gKSApCiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiB1bmRlZjsgICAgIyMgbm8gY3JpdGljIHF3KFN1YnJvdXRpbmVzOjpQcm9oaWJpdEV4cGxpY2l0UmV0dXJuVW5kZWYpCiAgICB9CgogICAgIyBjaGVjayBwb3NzaWJsZSB2YWx1ZXMKICAgIGlmICggISRQYXJhbXtQb3NzaWJsZVZhbHVlc30gKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoU3Vicm91dGluZXM6OlByb2hpYml0RXhwbGljaXRSZXR1cm5VbmRlZikKICAgIH0KICAgIGlmICggcmVmKCAkUGFyYW17UG9zc2libGVWYWx1ZXN9ICkgbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUG9zc2libGVWYWx1ZXMgaGFzIHRvIGJlIGEgSGFzaCByZWYhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuIHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoU3Vicm91dGluZXM6OlByb2hpYml0RXhwbGljaXRSZXR1cm5VbmRlZikKICAgIH0KCiAgICBteSAoICRWYWxpZEtleXMsICRVc2VkS2V5ICk7CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkUGFyYW17UG9zc2libGVWYWx1ZXN9IH0gKSB7CgogICAgICAgICMgZXhjbHVkZSBlbXB0eSB2YWx1ZXM7ICctJyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICAgICAgICBpZiAoICRLZXkgIX4gL14tPyQvICkgewogICAgICAgICAgICBpZiAoICsrJFZhbGlkS2V5cyA+IDEgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWY7ICAgICMjIG5vIGNyaXRpYyBxdyhTdWJyb3V0aW5lczo6UHJvaGliaXRFeHBsaWNpdFJldHVyblVuZGVmKQogICAgICAgICAgICB9CiAgICAgICAgICAgICRVc2VkS2V5ID0gJEtleTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoICEkVmFsaWRLZXlzICkgewogICAgICAgIHJldHVybiB1bmRlZjsgICAgIyMgbm8gY3JpdGljIHF3KFN1YnJvdXRpbmVzOjpQcm9oaWJpdEV4cGxpY2l0UmV0dXJuVW5kZWYpCiAgICB9ICAgICMgZWxzZSAkVmFsaWRLZXlzID09IDEgPT4gYXV0b3NlbGVjdAoKICAgICMgZmlsbCB0aGUgZmllbGQgaWYgYW5kIGFkZCBpdCB0byB0aGUgY2hhbmdlZCBlbGVtZW50cwogICAgaWYgKCByZWYoICRQYXJhbXtDdXJyZW50fSApICkgewogICAgICAgIHJldHVybiBbJFVzZWRLZXldOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICRVc2VkS2V5OwogICAgfQoKfQoKPWhlYWQyIFNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCkKCkNhbGN1bGF0ZXMgYW5kIHN0b3JlcyBzaW1wbGUgZmllbGQgcmVsYXRpb25zIGFuZCBncm91cHMgQUNMcyB2aWEgdGhlaXIgb3V0cHV0IHR5cGVzIHRvIHByZXNlbGVjdCB0aGVtIHdoZW4gdXNlZCwgbGF0ZXIgb24KCiAgICBteSAkQUNMUHJlc2VsZWN0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7Cgo9Y3V0CgpzdWIgU2V0QUNMUHJlc2VsZWN0aW9uQ2FjaGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQWNscyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnQ29uZmlnSXRlbUFjbCcpOwoKICAgICMgc3RhbmRhcmQgZmllbGRzCiAgICBteSAlRmllbGRzID0gKAogICAgICAgIERlcGxTdGF0ZSA9PiAnRGVwbFN0YXRlJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lTdGF0ZScsCiAgICApOwoKICAgICMgZHluYW1pYyBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCB2YWx1ZXMgJXsgJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdCggUmVzdWx0VHlwZSA9PiAnSEFTSCcgKSB9ICkgewogICAgICAgICRGaWVsZHN7IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkTmFtZSJ9ID0gIkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkTmFtZSI7CiAgICB9CgogICAgbXkgJVByZXNlbGVjdGlvblJ1bGVzOwoKICAgICMgcGFyc2UgQWNscwogICAgQUNMOgogICAgZm9yIG15ICRBQ0wgKCB2YWx1ZXMgJXskQWNsc30gKSB7CgogICAgICAgICMgZ2V0IGNvbnRyb2xsaW5nIGVsZW1lbnRzIChFbGVtZW50Q2hhbmdlZCBsYXRlciBvbikKICAgICAgICBteSAlQ29udHJvbGxlcjsKICAgICAgICBmb3IgbXkgJFByb3BlcnRpZXNIYXNoIChxdyhQcm9wZXJ0aWVzIFByb3BlcnRpZXNEYXRhYmFzZSkpIHsKICAgICAgICAgICAgaWYgKCAkQUNMLT57JFByb3BlcnRpZXNIYXNofXtDb25maWdJdGVtfSApIHsKICAgICAgICAgICAgICAgIE5BTUU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJXsgJEFDTC0+eyRQcm9wZXJ0aWVzSGFzaH17Q29uZmlnSXRlbX0gfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRmllbGRzeyROYW1lfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmllbGQgJE5hbWUgdXNlZCBpbiBBQ0xzLCBpcyBub3QgZGVmaW5lZCEiCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgTkFNRTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJENvbnRyb2xsZXJ7JE5hbWV9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRBQ0wtPnskUHJvcGVydGllc0hhc2h9e0R5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBOQU1FOgogICAgICAgICAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICV7ICRBQ0wtPnskUHJvcGVydGllc0hhc2h9e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRmllbGRzeyROYW1lfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmllbGQgJE5hbWUgdXNlZCBpbiBBQ0xzLCBpcyBub3QgZGVmaW5lZCEiCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgTkFNRTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJENvbnRyb2xsZXJ7JE5hbWV9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgbXkgJEZpZWxkIChxdy9EZXBsU3RhdGUgSW5jaVN0YXRlLykgewogICAgICAgICAgICAgICAgaWYgKCAkQUNMLT57JFByb3BlcnRpZXNIYXNofXskRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICRDb250cm9sbGVyeyRGaWVsZH0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICggISVDb250cm9sbGVyICkgeyBuZXh0IEFDTCB9CgogICAgICAgICMgZ2V0IGFmZmVjdGVkIGVsZW1lbnRzCiAgICAgICAgZm9yIG15ICRJbXBhY3QgKHF3KFBvc3NpYmxlIFBvc3NpYmxlQWRkIFBvc3NpYmxlTm90KSkgewoKICAgICAgICAgICAgIyBDb25maWdJdGVtIFJ1bGVzCiAgICAgICAgICAgIGlmICggJEFDTC0+eyRJbXBhY3R9e0NvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAgICAgQUZGRUNURUQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEFmZmVjdGVkICggc29ydCBrZXlzICV7ICRBQ0wtPnskSW1wYWN0fXtDb25maWdJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGaWVsZHN7JEFmZmVjdGVkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmllbGQgJEFmZmVjdGVkIHVzZWQgaW4gQUNMcywgaXMgbm90IGRlZmluZWQhIgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEFGRkVDVEVEOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnRDaGFuZ2VkICggc29ydCBrZXlzICVDb250cm9sbGVyICkgewogICAgICAgICAgICAgICAgICAgICAgICAkUHJlc2VsZWN0aW9uUnVsZXN7Q29uZmlnSXRlbX17ICRGaWVsZHN7JEVsZW1lbnRDaGFuZ2VkfSB9eyAkRmllbGRzeyRBZmZlY3RlZH0gfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEZvcm0gUnVsZXMKICAgICAgICAgICAgaWYgKCAkQUNMLT57JEltcGFjdH0tPntGb3JtfSApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudENoYW5nZWQgKCBzb3J0IGtleXMgJUNvbnRyb2xsZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgJFByZXNlbGVjdGlvblJ1bGVze0Zvcm19eyAkRmllbGRzeyRFbGVtZW50Q2hhbmdlZH0gfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH0KCiAgICBteSAkUmV0dXJuID0gewogICAgICAgIEZpZWxkcyA9PiB7IG1hcCB7ICRfID0+IDEgfSAoIHZhbHVlcyAlRmllbGRzICkgfSwKICAgICAgICBSdWxlcyAgPT4gXCVQcmVzZWxlY3Rpb25SdWxlcywKICAgIH07CgogICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPlNldCgKICAgICAgICBUeXBlICA9PiAnQ29uZmlnSXRlbUFDTCcsICAgICAgICMgb25seSBbYS16QS1aMC05X10gY2hhcnMgdXNhYmxlCiAgICAgICAgS2V5ICAgPT4gJ1ByZXNlbGVjdGlvbicsCiAgICAgICAgVmFsdWUgPT4gJFJldHVybiwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMjQgKiAxMDAsICAgICMgc2Vjb25kcywgdGhpcyBtZWFucyAxMDAgZGF5cwogICAgKTsKCiAgICByZXR1cm4gJFJldHVybjsKCn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/History.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6SGlzdG9yeTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Okhpc3RvcnkgLSBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtLnBtIHdpdGggaGlzdG9yeSBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBoaXN0b3J5IGZ1bmN0aW9ucy4KCj1oZWFkMiBIaXN0b3J5R2V0KCkKClJldHVybnMgYW4gYXJyYXkgcmVmZXJlbmNlIHdpdGggYWxsIGhpc3RvcnkgZW50cmllcyBmb3IgdGhlIGdpdmVuIGNvbmZpZyBpdGVtLgpFYWNoIGFycmF5IGVsZW1lbnQgaXMgYSBoYXNoIHJlZmVyZW5jZSByZXByZXNlbnRpbmcgb25lIGhpc3RvcnkgZW50cnkuCgpUaGVzZSBoYXNoIHJlZmVyZW5jZXMgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dDoKCiAgICAkSW5mb3tIaXN0b3J5RW50cnlJRH0KICAgICRJbmZve0NvbmZpZ0l0ZW1JRH0KICAgICRJbmZve0hpc3RvcnlUeXBlfQogICAgJEluZm97SGlzdG9yeVR5cGVJRH0KICAgICRJbmZve0NvbW1lbnR9CiAgICAkSW5mb3tDcmVhdGVkQnl9CiAgICAkSW5mb3tDcmVhdGVUaW1lfQogICAgJEluZm97VXNlcklEfQogICAgJEluZm97VXNlckxvZ2lufQogICAgJEluZm97VXNlckxhc3RuYW1lfQogICAgJEluZm97VXNlckZpcnN0bmFtZX0KICAgICRJbmZve1VzZXJGdWxsbmFtZX0KCiAgICBteSAkSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjM0LAogICAgKTsKCj1jdXQKCnN1YiBIaXN0b3J5R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBjYWNoZWQgcmVzdWx0IGV4aXN0cywgcmV0dXJuIHRoYXQgcmVzdWx0CiAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDSVZlcnNpb25zfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9CiAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntDSVZlcnNpb25zfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9OwoKICAgICMgZmV0Y2ggc29tZSBkYXRhIGZyb20gaGlzdG9yeSBmb3IgZ2l2ZW4gY29uZmlnIGl0ZW0KICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgY2guaWQsIGNoLmNvbmZpZ2l0ZW1faWQsIGNoLmNvbnRlbnQsIGNoLnR5cGVfaWQsICcKICAgICAgICAgICAgLiAnY2guY3JlYXRlX2J5LCBjaC5jcmVhdGVfdGltZSwgY2h0Lm5hbWUgJwogICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBjaCwgY29uZmlnaXRlbV9oaXN0b3J5X3R5cGUgY2h0ICcKICAgICAgICAgICAgLiAnV0hFUkUgY2gudHlwZV9pZCA9IGNodC5pZCBBTkQgY2guY29uZmlnaXRlbV9pZCA9ID8gJwogICAgICAgICAgICAuICdPUkRFUiBCWSBjaC5pZCcsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICAjIHNhdmUgZGF0YSBmcm9tIGhpc3RvcnkgaW4gYXJyYXkKICAgIG15IEBFbnRyaWVzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlVG1wID0gKAogICAgICAgICAgICBIaXN0b3J5RW50cnlJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBDb25maWdJdGVtSUQgICA9PiAkUm93WzFdLAogICAgICAgICAgICBDb21tZW50ICAgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICBIaXN0b3J5VHlwZUlEICA9PiAkUm93WzNdLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgICA9PiAkUm93WzRdLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgICA9PiAkUm93WzVdLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAkUm93WzZdLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQEVudHJpZXMsIFwlVG1wOwogICAgfQoKICAgICMgZ2V0IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXNlciB3aG8gY3JlYXRlZCBoaXN0b3J5IGVudHJpZXMKICAgIGZvciBteSAkRW50cnkgKEBFbnRyaWVzKSB7CgogICAgICAgICMgZ2V0IHVzZXIgaW5mb3JtYXRpb24KICAgICAgICBteSAlVXNlckluZm8gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgVXNlcklEID0+ICRFbnRyeS0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgQ2FjaGVkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIGhpc3RvcnkgZW50cnkKICAgICAgICAkRW50cnktPntVc2VySUR9ICAgICAgICA9ICRVc2VySW5mb3tVc2VySUR9OwogICAgICAgICRFbnRyeS0+e1VzZXJMb2dpbn0gICAgID0gJFVzZXJJbmZve1VzZXJMb2dpbn07CiAgICAgICAgJEVudHJ5LT57VXNlckZpcnN0bmFtZX0gPSAkVXNlckluZm97VXNlckZpcnN0bmFtZX07CiAgICAgICAgJEVudHJ5LT57VXNlckxhc3RuYW1lfSAgPSAkVXNlckluZm97VXNlckxhc3RuYW1lfTsKICAgICAgICAkRW50cnktPntVc2VyRnVsbG5hbWV9ICA9ICRVc2VySW5mb3tVc2VyRnVsbG5hbWV9OwogICAgfQoKICAgICMgc2F2ZSByZXN1bHQgaW4gY2FjaGUKICAgICRTZWxmLT57Q2FjaGV9LT57Q0lWZXJzaW9uc30tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfSA9IFxARW50cmllczsKCiAgICByZXR1cm4gXEBFbnRyaWVzOwp9Cgo9aGVhZDIgSGlzdG9yeUVudHJ5R2V0KCkKClJldHVybnMgYSBoYXNoIHJlZmVyZW5jZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIGhpc3RvcnkgZW50cnkuClRoZSBoYXNoIHJlZmVyZW5jZSBjb250YWluIGluZm9ybWF0aW9uIGFib3V0OgoKICAgICRJbmZve0hpc3RvcnlFbnRyeUlEfQogICAgJEluZm97Q29uZmlnSXRlbUlEfQogICAgJEluZm97SGlzdG9yeVR5cGV9CiAgICAkSW5mb3tIaXN0b3J5VHlwZUlEfQogICAgJEluZm97Q29tbWVudH0KICAgICRJbmZve0NyZWF0ZUJ5fQogICAgJEluZm97Q3JlYXRlVGltZX0KICAgICRJbmZve1VzZXJJRH0KICAgICRJbmZve1VzZXJMb2dpbn0KICAgICRJbmZve1VzZXJMYXN0bmFtZX0KICAgICRJbmZve1VzZXJGaXJzdG5hbWV9CiAgICAkSW5mb3tVc2VyRnVsbG5hbWV9CgogICAgbXkgJEluZm8gPSAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUVudHJ5R2V0KAogICAgICAgIEhpc3RvcnlFbnRyeUlEID0+IDEyMzQsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlFbnRyeUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSGlzdG9yeUVudHJ5SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBjYWNoZWQgcmVzdWx0IGV4aXN0cywgcmV0dXJuIHRoYXQgcmVzdWx0CiAgICBpZiAoICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57ICRQYXJhbXtIaXN0b3J5RW50cnlJRH0gfSApIHsKICAgICAgICBteSAoJENvbmZpZ0l0ZW1JRCkgPSBrZXlzICV7ICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57ICRQYXJhbXtIaXN0b3J5RW50cnlJRH0gfSB9OwogICAgICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25zfS0+eyAkUGFyYW17SGlzdG9yeUVudHJ5SUR9IH0tPnskQ29uZmlnSXRlbUlEfTsKICAgIH0KCiAgICAjIGZldGNoIGEgc2luZ2xlIGVudHJ5IGZyb20gaGlzdG9yeQogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBjaC5pZCwgY2guY29uZmlnaXRlbV9pZCwgY2guY29udGVudCwgY2gudHlwZV9pZCwgJwogICAgICAgICAgICAuICdjaC5jcmVhdGVfYnksIGNoLmNyZWF0ZV90aW1lLCBjaHQubmFtZSAnCiAgICAgICAgICAgIC4gJ0ZST00gY29uZmlnaXRlbV9oaXN0b3J5IGNoLCBjb25maWdpdGVtX2hpc3RvcnlfdHlwZSBjaHQgJwogICAgICAgICAgICAuICdXSEVSRSBjaC50eXBlX2lkID0gY2h0LmlkIEFORCBjaC5pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtIaXN0b3J5RW50cnlJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRW50cnk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAlRW50cnkgPSAoCiAgICAgICAgICAgIEhpc3RvcnlFbnRyeUlEID0+ICRSb3dbMF0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICAgID0+ICRSb3dbMl0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgID0+ICRSb3dbM10sCiAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgID0+ICRSb3dbNF0sCiAgICAgICAgICAgIENyZWF0ZVRpbWUgICAgID0+ICRSb3dbNV0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgID0+ICRSb3dbNl0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VyIGRhdGEgZm9yIHRoaXMgZW50cnkKICAgIG15ICVVc2VySW5mbyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCA9PiAkRW50cnl7Q3JlYXRlQnl9LAogICAgICAgIENhY2hlZCA9PiAxLAogICAgKTsKCiAgICAkRW50cnl7VXNlcklEfSAgICAgICAgPSAkVXNlckluZm97VXNlcklEfTsKICAgICRFbnRyeXtVc2VyTG9naW59ICAgICA9ICRVc2VySW5mb3tVc2VyTG9naW59OwogICAgJEVudHJ5e1VzZXJGaXJzdG5hbWV9ID0gJFVzZXJJbmZve1VzZXJGaXJzdG5hbWV9OwogICAgJEVudHJ5e1VzZXJMYXN0bmFtZX0gID0gJFVzZXJJbmZve1VzZXJMYXN0bmFtZX07CiAgICAkRW50cnl7VXNlckZ1bGxuYW1lfSAgPSAkVXNlckluZm97VXNlckZ1bGxuYW1lfTsKCiAgICAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25zfS0+eyAkUGFyYW17SGlzdG9yeUVudHJ5SUR9IH0tPnsgJEVudHJ5e0NvbmZpZ0l0ZW1JRH0gfSA9IFwlRW50cnk7CgogICAgcmV0dXJuIFwlRW50cnk7Cn0KCj1oZWFkMiBIaXN0b3J5QWRkKCkKCkFkZHMgYSBzaW5nbGUgaGlzdG9yeSBlbnRyeSB0byB0aGUgaGlzdG9yeS4KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMzQsCiAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnTmV3Q29uZmlnSXRlbScsICMgZWl0aGVyIEhpc3RvcnlUeXBlIG9yIEhpc3RvcnlUeXBlSUQgaXMgbmVlZGVkCiAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICBDb21tZW50ICAgICAgID0+ICdBbnkgdXNlZnVsIGluZm9ybWF0aW9uJywKICAgICk7Cgo9Y3V0CgpzdWIgSGlzdG9yeUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIFVzZXJJRCBDb21tZW50KSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISggJFBhcmFte0hpc3RvcnlUeXBlfSB8fCAkUGFyYW17SGlzdG9yeVR5cGVJRH0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGlzdG9yeVR5cGUgb3IgSGlzdG9yeVR5cGVJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGhpc3RvcnkgdHlwZSBpZCBmcm9tIGhpc3RvcnkgdHlwZSBpZiBoaXN0b3J5IHR5cGUgaXMgZ2l2ZW4uCiAgICBpZiAoICRQYXJhbXtIaXN0b3J5VHlwZX0gKSB7CiAgICAgICAgbXkgJElkID0gJFNlbGYtPkhpc3RvcnlUeXBlTG9va3VwKCBIaXN0b3J5VHlwZSA9PiAkUGFyYW17SGlzdG9yeVR5cGV9ICk7CgogICAgICAgIGlmICggISRJZCApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ludmFsaWQgaGlzdG9yeSB0eXBlIGdpdmVuIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtIaXN0b3J5VHlwZUlEfSA9ICRJZDsKICAgIH0KCiAgICAjIGlmIGhpc3RvcnkgdHlwZSBpcyBnaXZlbgogICAgZWxzaWYgKCAkUGFyYW17SGlzdG9yeVR5cGVJRH0gKSB7CiAgICAgICAgbXkgJE5hbWUgPSAkU2VsZi0+SGlzdG9yeVR5cGVMb29rdXAoIEhpc3RvcnlUeXBlSUQgPT4gJFBhcmFte0hpc3RvcnlUeXBlSUR9ICk7CgogICAgICAgIGlmICggISROYW1lICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnSW52YWxpZCBoaXN0b3J5IHR5cGUgaWQgZ2l2ZW4hJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGdpdmVuIGNvbmZpZyBpdGVtIGlkIHBvaW50cyB0byBhbiBleGlzdGluZyBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgIG15ICROdW1iZXIgPSAkU2VsZi0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISROdW1iZXIgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJbnZhbGlkIGNvbmZpZyBpdGVtIGlkIGdpdmVuIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgY2FjaGVkIHJlc3VsdHMKICAgIGRlbGV0ZSAkU2VsZi0+e0NhY2hlfS0+e0NJVmVyc2lvbnN9LT57ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgIyBzaG9ydGVuIHRoZSBjb21tZW50IGlmIGl0IGlzIGJpZ2dlciB0aGFuIG1heCBsZW5ndGgKICAgIGlmICggbGVuZ3RoKCAkUGFyYW17Q29tbWVudH0gKSA+IDE5MSApIHsKCiAgICAgICAgbXkgKCAkRmllbGQsICRPbGQsICROZXcgKSA9IHNwbGl0IC8lJS8sICRQYXJhbXtDb21tZW50fSwgMzsKCiAgICAgICAgbXkgJExlbmd0aCA9IGludCggKCAxOTEgLSBsZW5ndGgoJEZpZWxkKSAtIDQgKSAvIDIgKTsKCiAgICAgICAgaWYgKCBsZW5ndGgoJE9sZCkgPiAkTGVuZ3RoICkgewogICAgICAgICAgICBteSAkSW5kZXggPSBpbnQoICRMZW5ndGggLyAyICk7CiAgICAgICAgICAgICRPbGQgPSBzdWJzdHIoICRPbGQsIDAsICRJbmRleCAtIDIgKSAuICcuLi4nIC4gc3Vic3RyKCAkT2xkLCBsZW5ndGgoJE9sZCkgLSAkSW5kZXggKyAyICk7CiAgICAgICAgfQogICAgICAgIGlmICggbGVuZ3RoKCROZXcpID4gJExlbmd0aCApIHsKICAgICAgICAgICAgbXkgJEluZGV4ID0gaW50KCAkTGVuZ3RoIC8gMiApOwogICAgICAgICAgICAkTmV3ID0gc3Vic3RyKCAkTmV3LCAwLCAkSW5kZXggLSAyICkgLiAnLi4uJyAuIHN1YnN0ciggJE5ldywgbGVuZ3RoKCROZXcpIC0gJEluZGV4ICsgMiApOwogICAgICAgIH0KICAgICAgICBteSAkTmV3Q29tbWVudCA9ICRGaWVsZCAuICclJScgLiAkT2xkIC4gJyUlJyAuICROZXc7CgogICAgICAgICRQYXJhbXtDb21tZW50fSA9ICROZXdDb21tZW50OwogICAgfQoKICAgICMgaW5zZXJ0IGhpc3RvcnkgZW50cnkKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBjb25maWdpdGVtX2hpc3RvcnkgKCBjb25maWdpdGVtX2lkLCBjb250ZW50LCBjcmVhdGVfYnksICcKICAgICAgICAgICAgLiAnY3JlYXRlX3RpbWUsIHR5cGVfaWQgKSBWQUxVRVMgKCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyApJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBcJFBhcmFte0NvbW1lbnR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17SGlzdG9yeVR5cGVJRH0sCiAgICAgICAgXSwKICAgICk7Cn0KCj1oZWFkMiBIaXN0b3J5RGVsZXRlKCkKCkRlbGV0ZXMgY29tcGxldGUgaGlzdG9yeSBmb3IgYSBnaXZlbiBjb25maWcgaXRlbQoKICAgICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5RGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBjYWNoZWQgcmVzdWx0cwogICAgZGVsZXRlICRTZWxmLT57Q2FjaGV9LT57Q0lWZXJzaW9ufS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9OwogICAgZm9yIG15ICRWZXJzaW9uTnIgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uc30gfSApIHsKICAgICAgICBteSAoJENhY2hlQ29uZmlnSXRlbSkgPSBrZXlzICV7ICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57JFZlcnNpb25Ocn0gfTsKICAgICAgICBkZWxldGUgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uc30tPnskVmVyc2lvbk5yfSBpZiAkQ2FjaGVDb25maWdJdGVtIGVxICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgfQoKICAgICMgZGVsZXRlIGhpc3RvcnkgZm9yIGdpdmVuIGNvbmZpZyBpdGVtCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBXSEVSRSBjb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKfQoKPWhlYWQyIEhpc3RvcnlFbnRyeURlbGV0ZSgpCgpEZWxldGVzIGEgc2luZ2xlIGhpc3RvcnkgZW50cnkuCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlFbnRyeURlbGV0ZSgKICAgICAgICBIaXN0b3J5RW50cnlJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlFbnRyeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSGlzdG9yeUVudHJ5SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgc2luZ2xlIGVudHJ5CiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0hpc3RvcnlFbnRyeUlEfSBdLAogICAgKTsKfQoKPWhlYWQyIEhpc3RvcnlUeXBlTG9va3VwKCkKClRoaXMgbWV0aG9kIGRvZXMgYSBsb29rdXAgZm9yIGEgaGlzdG9yeSB0eXBlLiBJZiBhIGhpc3RvcnkgdHlwZSBpZCBpcyBnaXZlbiwKaXQgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgaGlzdG9yeSB0eXBlLiBJZiBhIGhpc3RvcnkgdHlwZSBpcyBnaXZlbiwgdGhlIGFwcHJvcHJpYXRlCmlkIGlzIHJldHVybmVkLgoKICAgIG15ICROYW1lID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlUeXBlTG9va3VwKAogICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gMTIzNCwKICAgICk7CgogICAgbXkgJElkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlUeXBlTG9va3VwKAogICAgICAgIEhpc3RvcnlUeXBlID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgICk7Cgo9Y3V0CgpzdWIgSGlzdG9yeVR5cGVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAoJEtleSkgPSBncmVwIHsgJFBhcmFteyRffSB9IHF3KEhpc3RvcnlUeXBlSUQgSGlzdG9yeVR5cGUpOwoKICAgICMgY2hlY2sgZm9yIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEtleSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGlzdG9yeVR5cGVJRCBvciBIaXN0b3J5VHlwZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaWYgcmVzdWx0IGlzIGNhY2hlZCByZXR1cm4gdGhhdCByZXN1bHQKICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e0hpc3RvcnlUeXBlTG9va3VwfS0+eyAkUGFyYW17JEtleX0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9LT57SGlzdG9yeVR5cGVMb29rdXB9LT57ICRQYXJhbXskS2V5fSB9OwoKICAgICMgc2V0IHRoZSBhcHByb3ByaWF0ZSBTUUwgc3RhdGVtZW50CiAgICBteSAkU1FMID0gJ1NFTEVDVCBuYW1lIEZST00gY29uZmlnaXRlbV9oaXN0b3J5X3R5cGUgV0hFUkUgaWQgPSA/JzsKCiAgICBpZiAoICRLZXkgZXEgJ0hpc3RvcnlUeXBlJyApIHsKICAgICAgICAkU1FMID0gJ1NFTEVDVCBpZCBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeV90eXBlIFdIRVJFIG5hbWUgPSA/JzsKICAgIH0KCiAgICAjIGZldGNoIHRoZSByZXF1ZXN0ZWQgdmFsdWUKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17JEtleX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkVmFsdWU7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRWYWx1ZSA9ICRSb3dbMF07CiAgICB9CgogICAgIyBzYXZlIHZhbHVlIGluIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+e0hpc3RvcnlUeXBlTG9va3VwfS0+eyAkUGFyYW17JEtleX0gfSA9ICRWYWx1ZTsKCiAgICByZXR1cm4gJFZhbHVlOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Link.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Okxpbms7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpMaW5rIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKVGhpcyBtb2R1bGUgc3VwcG9ydHMgdGhlIG1haW50ZW5hbmNlIG9mIHRoZSBjb250ZW50IG9mIHRoZSB0YWJsZSBCPGNvbmZpZ2l0ZW1fbGluaz4uIFRoaXMgdGFibGUKaXMgYSBzaGFkb3cgb2YgdGhlIGluZm9ybWF0aW9uIHRoYXQgaXMgY29udGFpbmVkIGluIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkcyB0aGF0IGNvbm5lY3Qgb2JqZWN0cwpvZiB0eXBlIEM8SVRTTUNvbmZpZ0l0ZW0+IGFuZCBDPElUU01Db25maWdJdGVtVmVyc2lvbj4uCgpUaGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgTGlua09iamVjdCBmZWF0dXJlIGlzIGFsc28gcmVwcmVzZW50ZWQgaW4gQjxjb25maWdpdGVtX2xpbms+LiBUaGVzZQpjYXNlIGlzIG1hcmtlZCBieSBCPGNvbmZpZ2l0ZW1fbGluay5keW5hbWljX2ZpZWxkX2lkPiBoYXZpbmcgdGhlIHZhbHVlIEI8TlVMTD4uCgpUaGVyZSBpcyBzdXBwb3J0IGZvciBpbW1lZGlhdGUgdXBkYXRlIG9mIHRoZSB0YWJsZSBhbmQgZm9yIGEgY29tcGxldGUgcmVidWlsZCBvZiB0aGUgdGFibGUuCgpQbGFubmVkIGlzIGFsc28gc3VwcG9ydCBmb3IgZHVtcGluZyB0aGUgY29tcGxldGUgZ3JhcGggc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBmb3IgcHJlc2VudGF0aW9uLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBBZGRDb25maWdJdGVtTGluaygpCgpUaGlzIG1ldGhvZCBpcyBzcGVjaWZpY2FsbHkgZm9yIGFkZGluZyBhIGxpbmsgYmV0d2VlbiB0d28gY29uZmlnIGl0ZW1zLiBJdCBpcyBuZWVkZWQKZm9yIHN1cHBvcnRpbmcgdGhlIExpbmtPYmplY3QgZnVuY3Rpb25hbGl0eS4KClRoZSBsaW5raW5nIG9mIHNwZWNpZmljIHZlcnNpb25zIGlzIG5vdCBzdXBwb3J0ZWQuCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+QWRkQ29uZmlnSXRlbUxpbmsoCiAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgU291cmNlQ29uZmlnSUQgPT4gMTI3LAogICAgICAgIFRhcmdldENvbmZpZ0lEID0+IDEyOCwKICAgICk7Cgo9Y3V0CgpzdWIgQWRkQ29uZmlnSXRlbUxpbmsgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBTb3VyY2VDb25maWdJdGVtSUQgVGFyZ2V0Q29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb29rdXAgdHlwZSBpZAogICAgbXkgJFR5cGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPlR5cGVMb29rdXAoCiAgICAgICAgTmFtZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApJTlNFUlQgSU5UTyBjb25maWdpdGVtX2xpbmsgKAogICAgbGlua190eXBlX2lkLCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQsIGR5bmFtaWNfZmllbGRfaWQsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkKICApCiAgVkFMVUVTICg/LCA/LCA/LCBOVUxMLCBjdXJyZW50X3RpbWVzdGFtcCwgMSApCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXCggJFR5cGVJRCwgJFBhcmFte1NvdXJjZUNvbmZpZ0l0ZW1JRH0sICRQYXJhbXtUYXJnZXRDb25maWdJdGVtSUR9ICkgXSwKICAgICk7CgogICAgJFNlbGYtPl9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17U291cmNlQ29uZmlnSXRlbUlEfSwKICAgICAgICBMaW5rZWQgICAgICAgPT4gWyAkUGFyYW17VGFyZ2V0Q29uZmlnSXRlbUlEfSBdLAogICAgICAgIFVubGlua2VkICAgICA9PiBbXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBEZWxldGVDb25maWdJdGVtTGluaygpCgpUaGlzIG1ldGhvZCBpcyBzcGVjaWZpY2FsbHkgZm9yIGRlbGV0aW5nIGEgbGluayBiZXR3ZWVuIHR3byBjb25maWcgaXRlbXMuIEl0IGlzIG5lZWRlZApmb3Igc3VwcG9ydGluZyB0aGUgTGlua09iamVjdCBmdW5jdGlvbmFsaXR5LgoKVGhlIHVubGlua2luZyBvZiBzcGVjaWZpYyB2ZXJzaW9ucyBpcyBub3Qgc3VwcG9ydGVkLgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlbGV0ZUNvbmZpZ0l0ZW1MaW5rKAogICAgICAgIFR5cGUgICAgICAgICAgID0+ICdEZXBlbmRzT24nLAogICAgICAgIFNvdXJjZUNvbmZpZ0lEID0+IDEyNywKICAgICAgICBUYXJnZXRDb25maWdJRCA9PiAxMjgsCiAgICApOwoKPWN1dAoKc3ViIERlbGV0ZUNvbmZpZ0l0ZW1MaW5rIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgU291cmNlQ29uZmlnSXRlbUlEIFRhcmdldENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9va3VwIHR5cGUgaWQKICAgIG15ICRMaW5rVHlwZUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+VHlwZUxvb2t1cCgKICAgICAgICBOYW1lICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCkRFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluawogIFdIRVJFIGxpbmtfdHlwZV9pZCA9ID8KICAgIEFORCBzb3VyY2VfY29uZmlnaXRlbV9pZCA9ID8KICAgIEFORCB0YXJnZXRfY29uZmlnaXRlbV9pZCA9ID8KICAgIEFORCBkeW5hbWljX2ZpZWxkX2lkIElTIE5VTEwKRU5EX1NRTAogICAgICAgIEJpbmQgPT4gWyBcKCAkTGlua1R5cGVJRCwgJFBhcmFte1NvdXJjZUNvbmZpZ0l0ZW1JRH0sICRQYXJhbXtUYXJnZXRDb25maWdJdGVtSUR9ICkgXSwKICAgICk7CgogICAgJFNlbGYtPl9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17U291cmNlQ29uZmlnSXRlbUlEfSwKICAgICAgICBMaW5rZWQgICAgICAgPT4gW10sCiAgICAgICAgVW5saW5rZWQgICAgID0+IFsgJFBhcmFte1RhcmdldENvbmZpZ0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBMaW5rZWRDb25maWdJdGVtcygpCgpnZXQgdGhlIGNvbmZpZyBpdGVtcyB0aGF0IGFyZSBkaXJlY3RseSBsaW5rZWQgdG8gYSBzcGVjaWZpYyBjb25maWcgaXRlbS4gTm8gZGV0YWlscwpvZiB0aGUgbGlua2VkIGNvbmZpZyBpdGVtcyBhcmUgcmV0dXJuZWQuCgogICAgIyBvbmx5IGxpbmtlZCBmcm9tIGEgY29uZmlnIGl0ZW0KICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFR5cGVzICAgICAgICA9PiBbICdQYXJlbnRDaGlsZCcsICdJc0luc3BpcmVkQnknIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsICMgb25lIG9mIFNvdXJjZSwgVGFyZ2V0LCBCb3RoCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKb3IKCiAgICAjIG9ubHkgbGlua2VkIGZyb20gYSBjb25maWcgaXRlbSB2ZXJzaW9uCiAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCiAgICAgICAgVmVyc2lvbklEICA9PiA0ODksCiAgICAgICAgVHlwZXMgICAgICA9PiBbICdQYXJlbnRDaGlsZCcsICdJc0luc3BpcmVkQnknIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gID0+ICdTb3VyY2UnLCAjIG9uZSBvZiBTb3VyY2UsIFRhcmdldCwgQm90aAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpQYXNzaW5nIGJvdGggY29uZmlnIGl0ZW0gSUQgYW5kIGNvbmZpZyBpdGVtIHZlcnNpb24gSUQgaXMgZmluZSB0b28uCgogICAgIyBsaW5rIHZpYSBpdGVtIG9mIHZlcnNpb24KICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFZlcnNpb25JRCAgICA9PiA0ODksCiAgICAgICAgVHlwZXMgICAgICAgID0+IFsgJ1BhcmVudENoaWxkJywgJ0lzSW5zcGlyZWRCeScgXSwgIyBvcHRpb25hbAogICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywgIyBvbmUgb2YgU291cmNlLCBUYXJnZXQsIEJvdGgKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpUaGUgc2VtYW50aWNzIG9mIHRoZSBwYXJhbWV0ZXIgQzxEaXJlY3Rpb24+IGNhbiBiZSBjb25mdXNpbmcuIFRoZSBhYm92ZSBjYWxsIGNhbiBiZSB2ZXJiYWxpemVkIGFzOgoiR2l2ZSBtZSBhbGwgY29uZmlnIGl0ZW1zIHRoYXQgaGF2ZSBhICdQYXJlbnRDaGlsZCcgb3IgJ0lzSW5zcGlyZWRCeScgcmVsYXRpb25zaGlwIGluIHdoaWNoIHRoZQpjb25maWcgaXRlbSAzMjEgaXMgdGhlIFNvdXJjZSBvYmplY3QuIgoKUmV0dXJucyBhbiBlbXB0eSBhcnJheSByZWYgd2hlbiBubyByZWxhdGlvbnNoaXBzIHdlcmUgZm91bmQ6CgogICAgJExpbmtlZENvbmZpZ0l0ZW1zID0gW107CgpSZXR1cm5zIGEgbGlzdCB3aGVuIHJlbGF0aW9uc2hpcHMgaGF2ZSBiZWVuIGZvdW5kLiBFaXRoZXIgQzxDb25maWdJdGVtSUQ+IG9yIEM8VmVyc2lvbklEPiBpcyBzZXQuCkM8RHluYW1pY0ZpZWxkSUQ+IGlzIG5vdCBkZWZpbmVkIHdoZW4gTGlua09iamVjdCBpcyB1c2VkLgoKICAgICRMaW5rZWRDb25maWdJdGVtcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+IDE3LAogICAgICAgICAgICBWZXJzaW9uSUQgICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgRGlyZWN0aW9uICAgICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgIExpbmtUeXBlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExpbmtUeXBlICAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZElEID0+IDEyNywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gdW5kZWYsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgID0+IDIyLAogICAgICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgTGlua1R5cGVJRCAgICAgPT4gMiwKICAgICAgICAgICAgTGlua1R5cGUgICAgICAgPT4gJ0lzSW5zcGlyZWRCeScsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZElEID0+IHVuZGVmLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICBdOwoKPWN1dAoKc3ViIExpbmtlZENvbmZpZ0l0ZW1zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KERpcmVjdGlvbiBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGlmICggISggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfHwgJFBhcmFte1ZlcnNpb25JRH0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgZWl0aGVyIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgUGFzc2luZyBib3RoIENvbmZpZ0l0ZW1JRCBhbmQgVmVyc2lvbklEIGlzIGZpbmUKCiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBnZXQgY29tcGxldGUgbGlzdCBmb3IgYm90aCBkaXJlY3Rpb25zIChvciBvbmx5IG9uZSBpZiByZXN0cmljdGVkKQogICAgbXkgKCAkU1FMLCBAQmluZHMgKTsKICAgIHsKICAgICAgICAjIHRoZSBsaW5rIHR5cGUgaXMgb3B0aW9uYWwKICAgICAgICBteSBAVHlwZUNvbmRpdGlvbnM7ICAgICMgMCBvciAxIGNvbmRpdGlvbnMKICAgICAgICBteSBAVHlwZUJpbmRzOyAgICAgICAgICMgMCwgMSwgb3IgbWFueSBiaW5kcwogICAgICAgIGlmICggJFBhcmFte1R5cGVzfSAmJiByZWYgJFBhcmFte1R5cGVzfSBlcSAnQVJSQVknICkgewoKICAgICAgICAgICAgIyBlbXB0eSBsaXN0IG9mIHR5cGVzIGdpdmVzIG5vIHJlc3VsdAogICAgICAgICAgICByZXR1cm4gW10gdW5sZXNzICRQYXJhbXtUeXBlc30tPkAqOwoKICAgICAgICAgICAgbXkgJFBsYWNlaG9sZGVycyA9IGpvaW4gJywgJywgbWFwIHsnPyd9ICRQYXJhbXtUeXBlc30tPkAqOwogICAgICAgICAgICBwdXNoIEBUeXBlQ29uZGl0aW9ucywgImxpbmtfdHlwZV9pZCBJTiAoJFBsYWNlaG9sZGVycykiOwoKICAgICAgICAgICAgcHVzaCBAVHlwZUJpbmRzLCBtYXAKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkTGlua09iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgID0+ICRfLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkUGFyYW17VHlwZXN9LT5AKjsKICAgICAgICB9CgogICAgICAgICMgdGhlc2UgIGFycmF5cyBoYXZlIGVpdGhlciAxIG9yIDIgZWxlbWVudHMKICAgICAgICBteSAoIEBTb3VyY2VDb25kaXRpb25zLCBAVGFyZ2V0Q29uZGl0aW9ucywgQElEQmluZHMgKTsKICAgICAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25kaXRpb25zLCAnc291cmNlX2NvbmZpZ2l0ZW1faWQgPSA/JzsKICAgICAgICAgICAgcHVzaCBAVGFyZ2V0Q29uZGl0aW9ucywgJ3RhcmdldF9jb25maWdpdGVtX2lkID0gPyc7CiAgICAgICAgICAgIHB1c2ggQElEQmluZHMsICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25kaXRpb25zLCAnc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCA9ID8nOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25kaXRpb25zLCAndGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCA9ID8nOwogICAgICAgICAgICBwdXNoIEBJREJpbmRzLCAgICAgICAgICAkUGFyYW17VmVyc2lvbklEfTsKICAgICAgICB9CgogICAgICAgICMgbGluayBkaXJlY3Rpb25zIGFyZSByZWFkIGluIHRoZSBzYW1lIG1hbm5lciBhcyB3aW5kIGRpcmVjdGlvbnMgLSBub3J0aCB3aW5kIGNvbWVzIGZyb20gdGhlIG5vcnRoLAogICAgICAgICMgYSAiU291cmNlIiBkaXJlY3Rpb24gcmV0dXJucyBhbGwgbGlua2VkIENJcyB3aGVyZSB3ZSBjb21lIGZyb20gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gYXMgc291cmNlCiAgICAgICAgIyAuLi5vciBzbzsgdGhpcyBpcyBjb25zaXN0ZW50IHdpdGggS2VybmVsL1N5c3RlbS9MaW5rT2JqZWN0LnBtIG1vc3QgaW1wb3J0YW50bHkKICAgICAgICBpZiAoICRQYXJhbXtEaXJlY3Rpb259IGVxICdTb3VyY2UnICkgewogICAgICAgICAgICAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCBESVNUSU5DVCB0YXJnZXRfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnU291cmNlJywgZHluYW1pY19maWVsZF9pZAogIEZST00gY29uZmlnaXRlbV9saW5rCiAgV0hFUkUgQHtbIGpvaW4gJyBBTkQgJywgKCBtYXAgeyAiKCRfKSIgfSBqb2luICcgT1IgJywgQFNvdXJjZUNvbmRpdGlvbnMgKSwgQFR5cGVDb25kaXRpb25zIF19CkVORF9TUUwKICAgICAgICAgICAgQEJpbmRzID0gKCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtEaXJlY3Rpb259IGVxICdUYXJnZXQnICkgewogICAgICAgICAgICAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCBESVNUSU5DVCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnVGFyZ2V0JywgZHluYW1pY19maWVsZF9pZAogIEZST00gY29uZmlnaXRlbV9saW5rCiAgV0hFUkUgQHtbIGpvaW4gJyBBTkQgJywgKCBtYXAgeyAiKCRfKSIgfSBqb2luICcgT1IgJywgQFRhcmdldENvbmRpdGlvbnMgKSwgQFR5cGVDb25kaXRpb25zIF19CkVORF9TUUwKICAgICAgICAgICAgQEJpbmRzID0gKCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBCb3RoIGRpcmVjdGlvbnMKICAgICAgICAgICAgIyBUT0RPOiB0ZXN0IHdpdGggUG9zdGdyZVNRTCBhbmQgT3JhY2xlCiAgICAgICAgICAgICRTUUwgPSA8PCJFTkRfU1FMIjsKKAogIFNFTEVDVCBESVNUSU5DVCB0YXJnZXRfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnU291cmNlJywgZHluYW1pY19maWVsZF9pZAogICAgRlJPTSBjb25maWdpdGVtX2xpbmsKICAgIFdIRVJFIEB7WyBqb2luICcgQU5EICcsICggbWFwIHsgIigkXykiIH0gam9pbiAnIE9SICcsIEBTb3VyY2VDb25kaXRpb25zKSwgQFR5cGVDb25kaXRpb25zIF19CikKVU5JT04KKAogIFNFTEVDVCBESVNUSU5DVCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnVGFyZ2V0JywgZHluYW1pY19maWVsZF9pZAogICAgRlJPTSBjb25maWdpdGVtX2xpbmsKICAgIFdIRVJFIEB7WyBqb2luICcgQU5EICcsICggbWFwIHsgIigkXykiIH0gam9pbiAnIE9SICcsIEBUYXJnZXRDb25kaXRpb25zKSwgQFR5cGVDb25kaXRpb25zIF19CikKRU5EX1NRTAogICAgICAgICAgICBAQmluZHMgPSAoIEBJREJpbmRzLCBAVHlwZUJpbmRzLCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RBbGwoCiAgICAgICAgU1FMICA9PiAkU1FMLAogICAgICAgIEJpbmQgPT4gWyBcKEBCaW5kcykgXSwKICAgICk7CgogICAgbXkgQFJlc3VsdCA9IG1hcAogICAgICAgIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRfLT5bMF0sCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gJF8tPlsxXSwKICAgICAgICAgICAgICAgIExpbmtUeXBlSUQgICA9PiAkXy0+WzJdLAogICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFR5cGVJRCA9PiAkXy0+WzJdLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAkXy0+WzNdLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkSUQgPT4gJF8tPls0XSwKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkUm93cy0+QCo7CgogICAgcmV0dXJuIFxAUmVzdWx0Owp9Cgo9aGVhZDIgU3luY0xpbmtUYWJsZSgpCgpUaGlzIG1ldGhvZCBlbnRhaWxzIHRoZSBsb2dpYyBmb3Iga2VlcGluZyB0aGUgdGFibGUgQjxjb25maWdpdGVtX2xpbms+IGluIHN5bmMKd2l0aCBkeW5hbWljIGZpZWxkIHVwZGF0ZXMuCgpEZWZpbml0aW9uVXBkYXRlcyBwYXNzIE9sZER5bmFtaWNGaWVsZENvbmZpZyBhcyBhZGRpdGlvbmFsIHBhcmFtZXRlciBiZWNhdXNlCmxpbmtpbmcgYW5kIHVubGlua2luZyBtaWdodCBkaWZmZXIuCgpJbiB0aGUgYmVsb3cgdGhlIG9iamVjdCBob2xkaW5nIHRoZSBkeW5hbWljIGZpZWxkIGlzIHJlZmVycmVkIHRvIGFzICJSZWZlcmVuY2luZyIsCnRoZSBvYmplY3RzIHdoaWNoIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkIGFyZSAiUmVmZXJlbmNlZCIuIFRoaXMgaXMKaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIExpbmtUeXBlRGlyZWN0aW9uIHdoaWNoIGNhbiBlaXRoZXIgYmUKUmVmZXJlbmNpbmdJc1NvdXJjZSBvciBSZWZlcmVuY2luZ0lzVGFyZ2V0LgoKPWN1dAoKc3ViIFN5bmNMaW5rVGFibGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRNaXNzaW5nICggZ3JlcCB7ICEkUGFyYW17JF99IH0gcXcoRHluYW1pY0ZpZWxkQ29uZmlnIENvbmZpZ0l0ZW1JRCBDb25maWdJdGVtTGFzdFZlcnNpb25JRCBDb25maWdJdGVtVmVyc2lvbklEKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE1pc3NpbmchIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAgID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CiAgICBteSAkT2xkRmllbGRDb25maWcgICAgICAgPSAkUGFyYW17T2xkRHluYW1pY0ZpZWxkQ29uZmlnfTsKICAgIG15ICREeW5hbWljRmllbGRJRCAgICAgICA9ICREeW5hbWljRmllbGRDb25maWctPntJRH07CiAgICBteSAkREZEZXRhaWxzICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfTsKICAgIG15ICRPbGRERkRldGFpbHMgICAgICAgICA9ICRPbGRGaWVsZENvbmZpZyA/ICRPbGRGaWVsZENvbmZpZy0+e0NvbmZpZ30gOiAkREZEZXRhaWxzOwogICAgbXkgJFJlZmVyZW5jZWRPYmplY3RUeXBlID0gJERGRGV0YWlscy0+e1JlZmVyZW5jZWRPYmplY3RUeXBlfTsKCiAgICBpZiAoICRSZWZlcmVuY2VkT2JqZWN0VHlwZSBuZSAnSVRTTUNvbmZpZ0l0ZW0nICYmICRSZWZlcmVuY2VkT2JqZWN0VHlwZSBuZSAnSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBwYXJhbWV0ZXIgUmVmZXJlbmNlZE9iamVjdFR5cGUgbXVzdCBiZSBlaXRoZXIgSVRTTUNvbmZpZ0l0ZW0gb3IgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHsKICAgICAgICBteSBATGlua0NvbmZpZ3M7CgogICAgICAgIHB1c2ggQExpbmtDb25maWdzLCAkREZEZXRhaWxzICAgIGlmICRERkRldGFpbHMtPntMaW5rVHlwZX07CiAgICAgICAgcHVzaCBATGlua0NvbmZpZ3MsICRPbGRERkRldGFpbHMgaWYgJE9sZEZpZWxkQ29uZmlnICYmICRPbGRERkRldGFpbHMtPntMaW5rVHlwZX07CgogICAgICAgICMgTGlua2luZyBpcyBub3QgbmVjZXNzYXJpbHkgc2V0IHVwLiBUaGF0IGlzIGZpbmUuCiAgICAgICAgcmV0dXJuIDEgdW5sZXNzIEBMaW5rQ29uZmlnczsKCiAgICAgICAgIyBXaGVuIGxpbmtpbmcgaXMgc2V0IHVwIHdlIG5lZWQgdGhlIGNvbXBsZXRlIGluZm9ybWF0aW9uIGZvciBob3cKICAgICAgICAjIHRoZSBsaW5raW5nIHNob3VsZCBiZSBkb25lLgogICAgICAgIGZvciBteSAkQ29uZmlnIChATGlua0NvbmZpZ3MpIHsKICAgICAgICAgICAgTkVFREVEOgogICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoTGlua0RpcmVjdGlvbiBMaW5rUmVmZXJlbmNpbmdUeXBlKSkgewogICAgICAgICAgICAgICAgbmV4dCBORUVERUQgaWYgJENvbmZpZy0+eyROZWVkZWR9OwoKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gcXF7SW52YWxpZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24uIFRoZSBzZXR0aW5nICROZWVkZWQgaXMgbWlzc2luZyx9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgbXkgJERCT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIFdlIGNhbiBlaXRoZXIgYnVpbGQgInN0YXRpYyIgbGlua3MgZnJvbSBzcGVjaWZpYyBjb25maWcgaXRlbSB2ZXJzaW9ucwogICAgIyBvciAiZHluYW1pYyIgbGlua3MgZnJvbSBhIENJIGRpcmVjdGx5LgogICAgIyBEZXBlbmRpbmcgb24gdGhhdCB3ZSB1c2UgYSBkaWZmZXJlbnQgb2JqZWN0IGlkCiAgICBteSAkT2JqZWN0SUQgPSAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnID8gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gOiAkUGFyYW17Q29uZmlnSXRlbVZlcnNpb25JRH07CgogICAgbXkgJExpbmtUeXBlSUQ7CiAgICBteSAkT2JqZWN0Q29sdW1uOwogICAgbXkgJFZhbHVlQ29sdW1uOwogICAgbXkgQE9sZFZhbHVlczsKCiAgICBteSAkR2V0Q29sdW1uRGF0YSA9IHN1YiB7CiAgICAgICAgbXkgJENvbmZpZyA9ICRfWzBdOwoKICAgICAgICBteSAkTGlua1R5cGVOYW1lID0gJENvbmZpZy0+e0xpbmtUeXBlfTsKICAgICAgICAkTGlua1R5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJExpbmtUeXBlTmFtZSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJExpbmtUeXBlSUQgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgbGluayB0eXBlICckTGlua1R5cGVOYW1lJyBpcyBub3QgdmFsaWQnLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIFRoZSBjb2x1bW4gZm9yIHRoZSAocmVmZXJlbmNpbmcpIG9iamVjdCBpZCBkZXBlbmRzIG9uIHRoZSBkaXJlY3Rpb24gYW5kCiAgICAgICAgIyBvbiB3aGV0aGVyIHdlIGxpbmsgZnJvbSBhIHNwZWNpZmljIHZlcnNpb24gKHN0YXRpYykgb3IgdGhlIENJIChkeW5hbWljKQogICAgICAgICMgUG9zc2libGUgY29sdW1ucyBhcmU6CiAgICAgICAgIyAgIHRhcmdldF9jb25maWdpdGVtX2lkCiAgICAgICAgIyAgIHRhcmdldF9jb25maWdpdGVtX3ZlcnNpb25faWQsCiAgICAgICAgIyAgIHNvdXJjZV9jb25maWdpdGVtX2lkLAogICAgICAgICMgICBzb3VyY2VfY29uZmlnaXRlbV92ZXJzaW9uX2lkCiAgICAgICAgJE9iamVjdENvbHVtbiA9IGpvaW4gJ18nLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rRGlyZWN0aW9ufSBlcSAnUmVmZXJlbmNpbmdJc1NvdXJjZScgPyAnc291cmNlJyAgICAgOiAndGFyZ2V0JyApLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rUmVmZXJlbmNpbmdUeXBlfSBlcSAnRHluYW1pYycgICAgICAgPyAnY29uZmlnaXRlbScgOiAnY29uZmlnaXRlbV92ZXJzaW9uJyApLAogICAgICAgICAgICAnaWQnOwoKICAgICAgICAjIFRoZSBjb2x1bW4gZm9yIHRoZSAocmVmZXJlbmNlZCkgdmFsdWUgYWxzbyBkZXBlbmRzIG9uIHRoZSBsaW5rIGRpcmVjdGlvbgogICAgICAgICMgYW5kIGhlcmUgb24gdGhlIGZpZWxkIHR5cGU7IGlmIHRoZSBsYXR0ZXIgY2hhbmdlcyBiZXR3ZWVuIGRlZmluaXRpb25zIFJlYnVpbGRMaW5rVGFibGUgaGFzIHRvIGJlIHVzZWQKICAgICAgICAjIFRoZSBwb3NzaWJsZSBjb2x1bW5zIGFyZSB0aGUgc2FtZSBhcyBhYm92ZQogICAgICAgICRWYWx1ZUNvbHVtbiA9IGpvaW4gJ18nLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rRGlyZWN0aW9ufSBlcSAnUmVmZXJlbmNpbmdJc1NvdXJjZScgPyAndGFyZ2V0JyAgICAgOiAnc291cmNlJyApLAogICAgICAgICAgICAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAgPyAnY29uZmlnaXRlbScgOiAnY29uZmlnaXRlbV92ZXJzaW9uJyApLAogICAgICAgICAgICAnaWQnOwogICAgfTsKCiAgICAjIGZpcnN0IGRlbGV0ZSBleGlzdGluZyBsaW5rcwogICAgaWYgKCAkT2xkREZEZXRhaWxzLT57TGlua1R5cGV9ICkgewogICAgICAgICRHZXRDb2x1bW5EYXRhLT4oJE9sZERGRGV0YWlscyk7CgogICAgICAgICMgaWYgd2UgaGF2ZSBDSSAtIENJIGxpbmtzLCB3ZSBoYXZlIHRvIHRyaWdnZXIgQ3VySW5jaVN0YXRlIFJlY2FsY3VsYXRpb24gZm9yIGRlbGV0ZWQgbGlua3MKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkT2xkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICBAT2xkVmFsdWVzID0gJERCT2JqZWN0LT5TZWxlY3RDb2xBcnJheSgKICAgICAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCAkVmFsdWVDb2x1bW4gRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgZHluYW1pY19maWVsZF9pZCA9ID8gQU5EICRPYmplY3RDb2x1bW4gPSA/IiwKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJER5bmFtaWNGaWVsZElELCBcJE9iamVjdElEIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgZHluYW1pY19maWVsZF9pZCA9ID8gQU5EICRPYmplY3RDb2x1bW4gPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkRHluYW1pY0ZpZWxkSUQsIFwkT2JqZWN0SUQgXSwKICAgICAgICApOwogICAgfQoKICAgICMgaWYgd2UgZGlkIGEgZGVmaW5pdGlvbiB1cGRhdGUsIHdlIGhhdmUgdG8gImxvYWQiIHRoZSBuZXcgREYgQ29uZmlnCiAgICBpZiAoJE9sZEZpZWxkQ29uZmlnKSB7CiAgICAgICAgJEdldENvbHVtbkRhdGEtPigkREZEZXRhaWxzKTsKICAgIH0KCiAgICBteSBATmV3VmFsdWVzID0gJFBhcmFte1ZhbHVlfQogICAgICAgID8gcmVmICRQYXJhbXtWYWx1ZX0gPyAoIGdyZXAgeyRffSAkUGFyYW17VmFsdWV9LT5AKiApIDogKCAkUGFyYW17VmFsdWV9ICkKICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgKCk7CgogICAgIyBmaW5hbGx5IHNldCB0aGUgbmV3IGxpbmtzCiAgICBpZiAoICRERkRldGFpbHMtPntMaW5rVHlwZX0gJiYgQE5ld1ZhbHVlcyApIHsKCiAgICAgICAgJERCT2JqZWN0LT5Eb0FycmF5KAogICAgICAgICAgICBTUUwgPT4gPDwiRU5EX1NRTCIsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fbGluayAoCiAgICBkeW5hbWljX2ZpZWxkX2lkLCBsaW5rX3R5cGVfaWQsICRPYmplY3RDb2x1bW4sICRWYWx1ZUNvbHVtbiwKICAgIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkKICApCiAgVkFMVUVTICgKICAgID8sID8sID8sID8sCiAgICBjdXJyZW50X3RpbWVzdGFtcCwgMQogICkKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+IFsgJER5bmFtaWNGaWVsZElELCAkTGlua1R5cGVJRCwgJE9iamVjdElELCBcQE5ld1ZhbHVlcyBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBsYXN0bHkgd2UgaGF2ZSB0byByZWNhbGMgY3VycmVudCBpbmNpZGVudCBzdGF0ZXMgZm9yIGZ1bGx5IGR5bmFtaWMgbGlua3MKICAgIGlmICgKICAgICAgICBAT2xkVmFsdWVzCiAgICAgICAgfHwKICAgICAgICAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkKICAgICAgICApCiAgICB7CgogICAgICAgIG15ICVMaW5rZWQ7CiAgICAgICAgbXkgJVVubGlua2VkID0gbWFwIHsgJF8gPT4gMSB9IEBPbGRWYWx1ZXM7CgogICAgICAgICMgaWYgd2UgaGF2ZSBhIG5vcm1hbCBmaWVsZCB1cGRhdGUsIHdlIGRvIG5vdCBuZWVkIHRvIHJlY2FsY3VsYXRlIGxpbmtzIHdoaWNoIGRvIG5vdCBjaGFuZ2UKICAgICAgICBpZiAoICEkT2xkRmllbGRDb25maWcgKSB7CiAgICAgICAgICAgIGZvciBteSAkSUQgKEBOZXdWYWx1ZXMpIHsKICAgICAgICAgICAgICAgIGlmICggZXhpc3RzICRVbmxpbmtlZHskSUR9ICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkVW5saW5rZWR7JElEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMaW5rZWR7JElEfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaW4gY2FzZSBvZiBhIGRlZmluaXRpb24gdXBkYXRlICh3ZSBoYXZlIGFuIG9sZCBERiBDb25maWcpIHdlIGp1c3QgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHdlIHN0aWxsIGFyZSBmdWxseSBkeW5hbWljCiAgICAgICAgIyB3ZSBkbyBub3Qgc2tpcCBzdGF5aW5nIGxpbmtzLCBiZWNhdXNlIGRpcmVjdGlvbiBhbmQgdHlwZSBtaWdodCBoYXZlIGNoYW5nZWQKICAgICAgICBlbHNpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICAlTGlua2VkID0gbWFwIHsgJF8gPT4gMSB9IEBOZXdWYWx1ZXM7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+X1RyaWdnZXJDdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgIExpbmtlZCAgICAgICA9PiBbIGtleXMgJUxpbmtlZCBdLAogICAgICAgICAgICBVbmxpbmtlZCAgICAgPT4gWyBrZXlzICVVbmxpbmtlZCBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBhc3N1bWUgc3VjY2VzcwogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBSZWJ1aWxkTGlua1RhYmxlKCkKCnB1cmdlIGFuZCByZXBvcHVsYXRlIHRoZSB0YWJsZSBCPGNvbmZpZ2l0ZW1fbGluaz4gYmFzZWQgb24gdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkcwphbmQgb24gdGhlIExpbmtPYmplY3QgZGF0YS4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJlYnVpbGRMaW5rVGFibGU7CgpUaGUgcmVzdWx0IGlzIGEgaGFzaHJlZiBsaWtlOgoKICAgIG15ICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgPT4gMSwgIyBvciAwIGluIGNhc2Ugb2YgZmFpbHVyZQogICAgICAgIE1lc3NhZ2UgID0+ICdzb21lIG1lc3NhZ2UnLAogICAgICAgIENvbG9yICAgID0+ICdncmVlbicsICAgICMgb3IgcmVkLCBvciB5ZWxsb3cKICAgIH07Cgo9Y3V0CgpzdWIgUmVidWlsZExpbmtUYWJsZSB7CiAgICBteSAoJFNlbGYpID0gQF87CgogICAgIyBubyBwYXJhbWV0ZXJzIGFyZSBzdXBwb3J0ZWQKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIHB1cmdlIHRoZSB0YWJsZSwgZ2l2ZSB1cCBpbiBjYXNlIG9mIGVycm9yCiAgICBteSAkU3VjY2Vzc1B1cmdlID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLicpLAogICAgICAgIENvbG9yICAgPT4gJ3JlZCcsCiAgICB9IHVubGVzcyAkU3VjY2Vzc1B1cmdlOwoKICAgICMgR2V0IHRoZSByZWxldmFudCBkeW5hbWljIGZpZWxkcy4gUmVsZXZhbnQgYXJlIG9ubHkKICAgICMgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGRzIHRoYXQgY29ubmVjdCBhbiBJVFNNQ29uZmlnSXRlbQogICAgIyB0byBhbm90aGVyIElUU01Db25maWdJdGVtIG9yIGFuIElUU01Db25maWdJdGVtVmVyc2lvbi4KICAgICMgQW5vdGhlciBjb25kaXRpb24gaXMgdGhhdCB0aGUgYXR0cmlidXRlICdMaW5rVHlwZScgaXMgY29uZmlndXJlZCBmb3IgdGhhdAogICAgIyBkeW5hbWljIGZpZWxkLgogICAgbXkgQER5bmFtaWNGaWVsZHM7CiAgICB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAkQ29tcGxldGVEeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nCiAgICAgICAgKTsKICAgICAgICBARHluYW1pY0ZpZWxkcyA9CiAgICAgICAgICAgIGdyZXAgeyAkXy0+e0NvbmZpZ30tPntMaW5rVHlwZX0gfQogICAgICAgICAgICBncmVwIHsgcmVmICRfLT57Q29uZmlnfSBlcSAnSEFTSCcgfQogICAgICAgICAgICBncmVwIHsgJF8tPntGaWVsZFR5cGV9ID1+IG0vXkNvbmZpZ0l0ZW0vIH0KICAgICAgICAgICAgJENvbXBsZXRlRHluYW1pY0ZpZWxkTGlzdC0+QCo7CiAgICB9CgogICAgIyBub3RoaW5nIHRvIGRvIHdoZW4gdGhlcmUgYXJlIG5vIGR5bmFtaWMgZmllbGRzCiAgICAjIFRPRE86IGNvdmVyIHRoZSBjYXNlIHdoZXJlIG9ubHkgTGlua09iamVjdCBpcyB1c2VkCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCcpLAogICAgICAgIENvbG9yICAgPT4gJ3llbGxvdycsCiAgICB9IHVubGVzcyBARHluYW1pY0ZpZWxkczsKCiAgICAjIE5lZWRlZCBmb3IgZGVjaWRpbmcgd2hpY2ggYXR0cmlidXRlIG9mIGNvbmZpZ2l0ZW1fbGluayBpcyB1c2VkLgogICAgbXkgJUxpbmtzVG9DSSA9CiAgICAgICAgbWFwICB7ICRfLT57SUR9ID0+IDEgfQogICAgICAgIGdyZXAgeyAkXy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW0nIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKICAgIG15ICVMaW5rc1RvQ0lWZXJzaW9uID0KICAgICAgICBtYXAgIHsgJF8tPntJRH0gPT4gMSB9CiAgICAgICAgZ3JlcCB7ICRfLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbVZlcnNpb24nIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKCiAgICAjIEVhc3kgYWNjZWVkIHRvIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZy4KICAgIG15ICVERkxvb2t1cEJ5SUQgPQogICAgICAgIG1hcCB7ICRfLT57SUR9ID0+ICRfIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKCiAgICAjIEdldCB0aGUgcmVsZXZhbnQgZHluYW1pYyBmaWVsZCB2YWx1ZXMuCiAgICAjIFRoZSBtZXRob2RzIGluIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZSBhcmUgc3BlY2lmaWMgdG8gc3BlY2lmaWMgZmllbGRzLAogICAgIyBzbyB1c2UgZGVkaWNhdGVkIFNRTCBoZXJlLgogICAgbXkgJFJvd3M7CiAgICB7CiAgICAgICAgbXkgJVF1ZXJ5Q29uZGl0aW9uID0gJERCT2JqZWN0LT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICA9PiAnZGZ2LmZpZWxkX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgPT4gWyBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlREZMb29rdXBCeUlEIF0sCiAgICAgICAgICAgIEJpbmRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkUm93cyA9ICREQk9iamVjdC0+U2VsZWN0QWxsKAogICAgICAgICAgICBTUUwgPT4gPDwiRU5EX1NRTCIsClNFTEVDVCBkZnYuZmllbGRfaWQsIHYuY29uZmlnaXRlbV9pZCwgdi5pZCwgZGZ2LnZhbHVlX2ludCwgdl9tYXgubWF4X3ZlcnNpb25faWQKICBGUk9NIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2CiAgSU5ORVIgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdgogICAgT04gZGZ2Lm9iamVjdF9pZCA9IHYuaWQKICBJTk5FUiBKT0lOICgKICAgIFNFTEVDVCBjb25maWdpdGVtX2lkLCBNQVgoaWQpIEFTIG1heF92ZXJzaW9uX2lkCiAgICAgIEZST00gY29uZmlnaXRlbV92ZXJzaW9uCiAgICAgIEdST1VQIEJZIGNvbmZpZ2l0ZW1faWQKICApIEFTIHZfbWF4CiAgICBPTiB2X21heC5jb25maWdpdGVtX2lkID0gdi5jb25maWdpdGVtX2lkCiAgV0hFUkUgJFF1ZXJ5Q29uZGl0aW9ue1NRTH0KICBPUkRFUiBieSBkZnYuaWQKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+ICRRdWVyeUNvbmRpdGlvbntWYWx1ZXN9LAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlcyBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIGEgYmF0Y2ggaW5zZXJ0CgogICAgIyBmb3IgdGhlIGxpbmsgdHlwZXMgd2UgbmVlZCB0byBkbyBzb21lIHdvcmsKICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKICAgIG15ICgKICAgICAgICBATGlua1R5cGVJRHMsCiAgICAgICAgQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsCiAgICAgICAgQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLAogICAgICAgIEBUYXJnZXRDb25maWdJdGVtSURzLAogICAgICAgIEBUYXJnZXRDb25maWdJdGVtVmVyc2lvbklEcywKICAgICAgICBARmllbGRJRHMsCiAgICApOwogICAgUk9XOgogICAgZm9yIG15ICRSb3cgKCAkUm93cy0+QCogKSB7CiAgICAgICAgbXkgKCAkRmllbGRJRCwgJENvbmZpZ0l0ZW1JRCwgJFZlcnNpb25JRCwgJFZhbHVlLCAkTWF4VmVyc2lvbklEICkgPSAkUm93LT5AKjsKCiAgICAgICAgbmV4dCBST1cgdW5sZXNzICRERkxvb2t1cEJ5SUR7JEZpZWxkSUR9OwoKICAgICAgICBteSAkREZEZXRhaWxzID0gJERGTG9va3VwQnlJRHskRmllbGRJRH0tPntDb25maWd9OwoKICAgICAgICBuZXh0IFJPVyB1bmxlc3MgJERGRGV0YWlsczsKCiAgICAgICAgTkVFREVEOgogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhMaW5rVHlwZSBMaW5rRGlyZWN0aW9uKSkgewogICAgICAgICAgICBuZXh0IE5FRURFRCBpZiAkREZEZXRhaWxzLT57JE5lZWRlZH07CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBxcXtJbnZhbGlkIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbi4gVGhlIHNldHRpbmcgJE5lZWRlZCBpcyBtaXNzaW5nIGZvciBmaWVsZCAkREZMb29rdXBCeUlEeyRGaWVsZElEfS0+e05hbWV9LH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICB9CgogICAgICAgIG15ICRMaW5rVHlwZU5hbWUgPSAkREZEZXRhaWxzLT57TGlua1R5cGV9OwogICAgICAgIG15ICRMaW5rVHlwZUlEICAgPSAkTGlua09iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSAgID0+ICRMaW5rVHlwZU5hbWUsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRMaW5rVHlwZUlEICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGxpbmsgdHlwZSAnJExpbmtUeXBlTmFtZScgaXMgbm90IHZhbGlkJy4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQoKICAgICAgICAjIHNvbWV0aW1lcyBvbmx5IHRoZSBzZXR0aW5nIG9mIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIGlzIHJlbGV2YW50CiAgICAgICAgIyBUaGUgZGVmYXVsdCBpcyBEeW5hbWljLgogICAgICAgIG15ICRMaW5rSXNEeW5hbWljID0gMDsKICAgICAgICAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gLy89ICdEeW5hbWljJzsKICAgICAgICBpZiAoICRERkRldGFpbHMtPntMaW5rUmVmZXJlbmNpbmdUeXBlfSBlcSAnJyB8fCAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICBuZXh0IFJPVyB1bmxlc3MgJFZlcnNpb25JRCA9PSAkTWF4VmVyc2lvbklEOwoKICAgICAgICAgICAgJExpbmtJc0R5bmFtaWMgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBzb21lIHZhbHVlcyBhcmUgaW5kZXBlbmRlbnQgb2YgdGhlIGRpcmVjdGlvbgogICAgICAgIHB1c2ggQExpbmtUeXBlSURzLCAkTGlua1R5cGVJRDsKICAgICAgICBwdXNoIEBGaWVsZElEcywgICAgJEZpZWxkSUQ7CgogICAgICAgIG15ICRMaW5rRGlyZWN0aW9uID0gJERGRGV0YWlscy0+e0xpbmtEaXJlY3Rpb259OwogICAgICAgIGlmICggJExpbmtEaXJlY3Rpb24gZXEgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtSURzLCAgICAgICAgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW1JRCA6IHVuZGVmOwogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtVmVyc2lvbklEcywgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gdW5kZWYgICAgICAgICA6ICRWZXJzaW9uSUQ7CiAgICAgICAgICAgIHB1c2ggQFRhcmdldENvbmZpZ0l0ZW1JRHMsICAgICAgICAkTGlua3NUb0NJeyRGaWVsZElEfSAgICAgICAgPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgICAgIHB1c2ggQFRhcmdldENvbmZpZ0l0ZW1WZXJzaW9uSURzLCAkTGlua3NUb0NJVmVyc2lvbnskRmllbGRJRH0gPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBhcyBhYm92ZSwgYnV0IGJhY2t3YXJkcwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtSURzLCAgICAgICAgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW1JRCA6IHVuZGVmOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtVmVyc2lvbklEcywgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gdW5kZWYgICAgICAgICA6ICRWZXJzaW9uSUQ7CiAgICAgICAgICAgIHB1c2ggQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsICAgICAgICAkTGlua3NUb0NJeyRGaWVsZElEfSAgICAgICAgPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgICAgIHB1c2ggQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLCAkTGlua3NUb0NJVmVyc2lvbnskRmllbGRJRH0gPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgICMgTXVsdGl2YWx1ZSBJTlNFUlQKICAgIG15ICROdW1SZWZlcmVuY2VSb3dzID0gJERCT2JqZWN0LT5Eb0FycmF5KAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKSU5TRVJUIElOVE8gY29uZmlnaXRlbV9saW5rICgKICAgIGxpbmtfdHlwZV9pZCwKICAgIHNvdXJjZV9jb25maWdpdGVtX2lkLAogICAgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwKICAgIHRhcmdldF9jb25maWdpdGVtX2lkLAogICAgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwKICAgIGR5bmFtaWNfZmllbGRfaWQsCiAgICBjcmVhdGVfdGltZSwKICAgIGNyZWF0ZV9ieQogICkKICBWQUxVRVMgKD8sID8sID8sID8sID8sID8sIENVUlJFTlRfVElNRVNUQU1QKCksIDEpCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXEBMaW5rVHlwZUlEcywKICAgICAgICAgICAgXEBTb3VyY2VDb25maWdJdGVtSURzLAogICAgICAgICAgICBcQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLAogICAgICAgICAgICBcQFRhcmdldENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIFxAVGFyZ2V0Q29uZmlnSXRlbVZlcnNpb25JRHMsCiAgICAgICAgICAgIFxARmllbGRJRHMsCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJyksCiAgICAgICAgQ29sb3IgICA9PiAncmVkJywKICAgIH0gdW5sZXNzIGRlZmluZWQgJE51bVJlZmVyZW5jZVJvd3M7CgogICAgIyBhZGQgcm93cyBmcm9tIExpbmtPYmplY3QsIHRoYXQgaXMgZnJvbSB0aGUgbGlua19yZWxhdGlvbiB0YWJsZQogICAgbXkgJE51bUxpbmtPYmplY3RSb3dzID0gMDsKICAgIHsKICAgICAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgICAgICMgZ2V0IGEgbGlzdCBvZiBwb3NzaWJsZSBsaW5rIHR5cGVzIGJldHdlZW4gY29uZmlnIGl0ZW1zIGZyb20gdGhlIFN5c0NvbmZpZwogICAgICAgIG15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgICAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyBmb3IgdGhlIGRhdGFiYXNlIFNFTEVDVCB3ZSBuZWVkIHRoZSBudW1lcmljIElEcwogICAgICAgIG15IEBQb3NzaWJsZUxpbmtUeXBlSURzID0KICAgICAgICAgICAgbWFwIHsgJExpbmtPYmplY3QtPlR5cGVMb29rdXAoIE5hbWUgPT4gJF8sIFVzZXJJRCA9PiAxICkgfQogICAgICAgICAgICBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiAgICAgICAgbXkgJVR5cGVRdWVyeUNvbmRpdGlvbiA9ICREQk9iamVjdC0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ3R5cGVfaWQnLAogICAgICAgICAgICBWYWx1ZXMgICA9PiBcQFBvc3NpYmxlTGlua1R5cGVJRHMsCiAgICAgICAgICAgIEJpbmRNb2RlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBsaW1pdCB0byBsaW5rcyBiZXR3ZWVuIGNvbmZpZyBpdGVtcwogICAgICAgICMgQW4gSUQgaXMgY3JlYXRlZCB3aGVuIE9iamVjdExvb2t1cCgpIGlzIGNhbGxlZCB0aGUgZm9yIGZpcnN0IHRpbWUgd2l0aCB0aGF0IG5hbWUKICAgICAgICBteSAkQ0lPYmplY3RJRCA9ICRMaW5rT2JqZWN0LT5PYmplY3RMb29rdXAoCiAgICAgICAgICAgIE5hbWUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICApOwoKICAgICAgICAjIHRlbXBvcmFyeSBsaW5rcyBhcmUgbm90IGNvbnNpZGVyZWQKICAgICAgICBteSAkVGVtcG9yYXJ5U3RhdGVJRCA9ICRMaW5rT2JqZWN0LT5TdGF0ZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAnVGVtcG9yYXJ5JywKICAgICAgICApOwoKICAgICAgICBteSAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCB0eXBlX2lkLCBzb3VyY2Vfa2V5LCB0YXJnZXRfa2V5CiAgRlJPTSBsaW5rX3JlbGF0aW9uCiAgV0hFUkUgc3RhdGVfaWQgPD4gPwogICAgQU5EIHNvdXJjZV9vYmplY3RfaWQgPSA/CiAgICBBTkQgdGFyZ2V0X29iamVjdF9pZCA9ID8KICAgIEFORCAkVHlwZVF1ZXJ5Q29uZGl0aW9ue1NRTH0KRU5EX1NRTAogICAgICAgIG15IEBCaW5kcyA9ICgKICAgICAgICAgICAgXCRUZW1wb3JhcnlTdGF0ZUlELAogICAgICAgICAgICBcJENJT2JqZWN0SUQsCiAgICAgICAgICAgIFwkQ0lPYmplY3RJRCwKICAgICAgICAgICAgJFR5cGVRdWVyeUNvbmRpdGlvbntWYWx1ZXN9LT5AKgogICAgICAgICk7CgogICAgICAgIHJldHVybiB1bmxlc3MgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgICAgIEJpbmQgPT4gXEBCaW5kcywKICAgICAgICApOwoKICAgICAgICBteSAoIEBMaW5rVHlwZUlEcywgQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsIEBUYXJnZXRDb25maWdJdGVtSURzICk7CiAgICAgICAgd2hpbGUgKCBteSAoICRMaW5rVHlwZUlELCAkU291cmNlQ29uZmlnSXRlbUlELCAkVGFyZ2V0Q29uZmlnSXRlbUlEICkgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgICAgIHB1c2ggQExpbmtUeXBlSURzLCAgICAgICAgICRMaW5rVHlwZUlEOwogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtSURzLCAkU291cmNlQ29uZmlnSXRlbUlEOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtSURzLCAkVGFyZ2V0Q29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgIyBNdWx0aXZhbHVlIElOU0VSVAogICAgICAgICROdW1MaW5rT2JqZWN0Um93cyA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApJTlNFUlQgSU5UTyBjb25maWdpdGVtX2xpbmsgKAogICAgbGlua190eXBlX2lkLCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQsCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5CiAgKQogIFZBTFVFUyAoCiAgICA/LCA/LCA/LAogICAgQ1VSUkVOVF9USU1FU1RBTVAoKSwgMQogICkKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgIFxATGlua1R5cGVJRHMsCiAgICAgICAgICAgICAgICBcQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICAgICBcQFRhcmdldENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTnVtUm93cyA9ICROdW1SZWZlcmVuY2VSb3dzICsgJE51bUxpbmtPYmplY3RSb3dzOwoKICAgICMgd2FybiB3aGVuIHRoZXJlIGFyZSBubyBsaW5rcwogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnKSwKICAgICAgICBDb2xvciAgID0+ICd5ZWxsb3cnLAogICAgfSBpZiAkTnVtUm93cyA9PSAwOwoKICAgICMgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGxpbmssIGxvb2tzIGdvb2QKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdEb25lJyksCiAgICAgICAgQ29sb3IgICA9PiAnZ3JlZW4nLAogICAgfTsKfQoKc3ViIF9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0lUU006OkNvcmU6OkluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24nKTsKCiAgICByZXR1cm4gMSBpZiAhJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqOwoKICAgICMgdGhlIGNhY2hlIGZvciBEeW5hbWljRmllbGRzID0+IDAgaXMgYWxyZWFkeSBlbXB0aWVkIGJlZm9yZSBERnMgYXJlIHdyaXR0ZW4KICAgIG15ICRSZWZlcmVuY2luZ0NJID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICApOwoKICAgICMgdG8gbm90IGFsd2F5cyByZWNhbGN1bGF0ZSB0aGUgY29tcGxldGUKICAgIG15IEBDSXNUb1JlY2FsYzsKCiAgICAjIGlmIHRoZSByZWZlcmVuY2luZyBDSSBkb2VzIG5vdCBoYXZlIGEgbWF0Y2hpbmcgQ3VySW5jaSBhbmQgSW5jaSBzdGF0ZSwganVzdCByZWNhbGN1bGF0ZSBldmVyeXRoaW5nCiAgICBpZiAoICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57SW5jaVN0YXRlSUR9ICkgewogICAgICAgIEBDSXNUb1JlY2FsYyA9ICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKTsKCiAgICAgICAgcHVzaCBAQ0lzVG9SZWNhbGMsICRQYXJhbXtVbmxpbmtlZH0tPkAqOwogICAgfQoKICAgIGVsc2UgewogICAgICAgIExJTktFRDoKICAgICAgICBmb3IgbXkgJElEICggJFBhcmFte0xpbmtlZH0tPkAqICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgaW5pdGlhdGUgdGhlIHdob2xlIHJlY2FsY3VsYXRpb24gaWYgdGhlcmUgaXMgYW55IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgQ3VySW5jaVN0YXRlcwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9ICkgewogICAgICAgICAgICAgICAgQENJc1RvUmVjYWxjID0gKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApOwoKICAgICAgICAgICAgICAgIGxhc3QgTElOS0VEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJElEICggJFBhcmFte1VubGlua2VkfS0+QCogKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRJRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9yIHVubGlua2VkIENJcyB3ZSBhbHdheXMgaGF2ZSB0byBhZGQgYm90aCBzaWRlcwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9ICkgewogICAgICAgICAgICAgICAgJENJc1RvUmVjYWxjWzBdID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICBwdXNoIEBDSXNUb1JlY2FsYywgJElEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICFAQ0lzVG9SZWNhbGM7CgogICAgcmV0dXJuICRTZWxmLT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBcQENJc1RvUmVjYWxjLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Mask.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TWFzazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KGZpcnN0IG5vbmUpOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TWFzayAtIGZ1bmN0aW9ucyB0byBwcmVwYXJlIGFuZCBhZG1pbmlzdHJhdGUgY29uZmlnIGl0ZW0gbWFza3MKCj1oZWFkMSBERVNDUklQVElPTgoKZnVuY3Rpb25zIHRvIHByZXBhcmUgYW5kIGFkbWluaXN0cmF0ZSBjb25maWcgaXRlbSBtYXNrcwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJE1hc2tPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok1hc2snKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgRGVmaW5pdGlvblNldCgpCgpTZXQgdGhlIGRlZmluaXRpb24gZm9yIGEgY29uZmlnIGl0ZW0gbWFzawoKICAgIG15ICRTdWNjZXNzID0gJE1hc2tPYmplY3QtPkRlZmluaXRpb25TZXQoCiAgICAgICAgRGVmaW5pdGlvbiAgICAgICA9PiBcQERlZmluaXRpb24sCiAgICAgICAgRGVmaW5pdGlvblN0cmluZyA9PiAkWUFNTFN0cmluZywgICMgZWl0aGVyIERlZmluaXRpb24gb3IgRGVmaW5pdGlvblN0cmluZyBpcyBuZWVkZWQKICAgICAgICBNYXNrICAgICAgICAgICAgID0+ICRNYXNrLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICk7Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvblNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdy9Vc2VySUQgTWFzay8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRQYXJhbXtEZWZpbml0aW9uU3RyaW5nfSApIHsKCiAgICAgICAgIyBWYWxpZGF0ZSBZQU1MIGNvZGUgYnkgY29udmVydGluZyBpdCB0byBQZXJsLgogICAgICAgIG15ICREZWZpbml0aW9uUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICAgICAgRGF0YSA9PiAkUGFyYW17RGVmaW5pdGlvblN0cmluZ30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCByZWYgJERlZmluaXRpb25SZWYgbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgYW5kIGFycmF5IGluIHZhbGlkIFlBTUwhJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0RlZmluaXRpb259ICkgewogICAgICAgICRQYXJhbXtEZWZpbml0aW9uU3RyaW5nfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkR1bXAoCiAgICAgICAgICAgIERhdGEgPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIGlmICggISRQYXJhbXtEZWZpbml0aW9uU3RyaW5nfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkIG5vdCBnZW5lcmF0ZSBZQU1MIGZyb20gcHJvdmlkZWQgRGVmaW5pdGlvbiEnLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb24gb3IgRGVmaW5pdGlvblN0cmluZyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICRTZWxmLT5EZWZpbml0aW9uRGVsZXRlKAogICAgICAgIE1hc2sgICAgICA9PiAkUGFyYW17TWFza30sCiAgICAgICAgS2VlcENhY2hlID0+IDEsCiAgICApOwoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0lOU0VSVCBJTlRPIGZyb250ZW5kX21hc2tfZGVmaW5pdGlvbiAoIG1hc2ssIGRlZmluaXRpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkgKSBWQUxVRVMgKCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyApJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtNYXNrfSwgXCRQYXJhbXtEZWZpbml0aW9uU3RyaW5nfSwgXCRQYXJhbXtVc2VySUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRGVmaW5pdGlvbkdldCgpCgpHZXQgdGhlIGRlZmluaXRpb24gZm9yIGEgY29uZmlnIGl0ZW0gbWFzawoKICAgIG15ICREZWZpbml0aW9uID0gJE1hc2tPYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgTWFzayAgID0+ICRNYXNrLAogICAgICAgIFJldHVybiA9PiAnQVJSQVknLCAjIE9wdGlvbmFsIGVpdGhlciBBUlJBWSAoZGVmYXVsdCkgb3IgU1RSSU5HIHdoaWNoIHJldHVybnMgdGhlIFlBTUwKICAgICk7Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdy9NYXNrLykgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICRQYXJhbXtSZXR1cm59IHx8PSAnQVJSQVknOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAnU0VMRUNUIGRlZmluaXRpb24gRlJPTSBmcm9udGVuZF9tYXNrX2RlZmluaXRpb24gV0hFUkUgbWFzayA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtNYXNrfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICgkRGVmaW5pdGlvblN0cmluZykgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKTsKCiAgICByZXR1cm4gaWYgISREZWZpbml0aW9uU3RyaW5nOwoKICAgIHJldHVybiAkRGVmaW5pdGlvblN0cmluZyBpZiAkUGFyYW17UmV0dXJufSBlcSAnU1RSSU5HJzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICREZWZpbml0aW9uU3RyaW5nLAogICAgKTsKfQoKPWhlYWQyIERlZmluaXRpb25EZWxldGUoKQoKRGVsZXRlIHRoZSBkZWZpbml0aW9uIGZvciBhIGNvbmZpZyBpdGVtIG1hc2sKCiAgICBteSAkU3VjY2VzcyA9ICRNYXNrT2JqZWN0LT5EZWZpbml0aW9uRGVsZXRlKAogICAgICAgIE1hc2sgPT4gJE1hc2ssCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25EZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvTWFzay8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGZyb250ZW5kX21hc2tfZGVmaW5pdGlvbiBXSEVSRSBtYXNrID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TWFza30gXSwKICAgICk7Cn0KCj1oZWFkMiBDb25maWd1cmVkTWFza3NMaXN0KCkKCkdldCBhbGwgY29uZmlndXJlZCBtYXNrcwoKICAgIG15IEBNYXNrcyA9ICRNYXNrT2JqZWN0LT5Db25maWd1cmVkTWFza3NMaXN0KCk7Cgo9Y3V0CgpzdWIgQ29uZmlndXJlZE1hc2tzTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBtYXNrIEZST00gZnJvbnRlbmRfbWFza19kZWZpbml0aW9uJywKICAgICk7CgogICAgbXkgQE1hc2tzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBATWFza3MsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIEBNYXNrczsKfQoKPWhlYWQyIFJlbmRlcklucHV0KCkKClJlbmRlciBpbnB1dCBmaWVsZHMgYWNjb3JkaW5nIHRvIG1hc2sgZGVmaW5pdGlvbgoKICAgICRNYXNrT2JqZWN0LT5SZW5kZXJJbnB1dCgKICAgICAgICBHZXRQYXJhbSAgICAgICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICBNYXNrRGVmaW5pdGlvbiAgICAgICAgPT4gJE1hc2tEZWZpbml0aW9uLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZ3MgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlncywKICAgICAgICBDb25maWcgICAgICAgICAgICAgICAgPT4gJENvbmZpZywKICAgICAgICBTZXBhcmF0ZUR5bmFtaWNGaWVsZHMgPT4gJFNlcGFyYXRlRHluYW1pY0ZpZWxkcywKICAgICk7Cgo9Y3V0CgpzdWIgUmVuZGVySW5wdXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvR2V0UGFyYW0gTGF5b3V0T2JqZWN0IE1hc2tEZWZpbml0aW9uLykgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWdzfSApOwoKICAgIG15ICVHZXRQYXJhbSA9ICV7ICRQYXJhbXtHZXRQYXJhbX0gfTsKCiAgICBteSAlRHluYW1pY0ZpZWxkQ29uZmlnc0hhc2ggPSBtYXAgeyAkXy0+e05hbWV9ID0+ICRfIH0gQHsgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ3N9IH07CgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17TWFza0RlZmluaXRpb259ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIG1hc2sgZGVmaW5pdGlvbiEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZm9yIG15ICRBcmVhRGVmaW5pdGlvbiAoIEB7ICRQYXJhbXtNYXNrRGVmaW5pdGlvbn0gfSApIHsKICAgICAgICBteSAlQXJlYSA9ICggUm93cyA9PiBbXSApOwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRBcmVhRGVmaW5pdGlvbi0+e0dyaWR9ICkgKSB7CiAgICAgICAgICAgICVBcmVhID0gJEFyZWFEZWZpbml0aW9uLT57R3JpZH0tPiUqOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEFyZWFEZWZpbml0aW9uLT57TGlzdH0gKSApIHsKICAgICAgICAgICAgJEFyZWF7Um93c30gICAgPSBbIG1hcCB7IFskX10gfSAkQXJlYURlZmluaXRpb24tPntMaXN0fS0+QCogXTsKICAgICAgICAgICAgJEFyZWF7Q29sdW1uc30gPSAxOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRSb3cgKCBAeyAkQXJlYXtSb3dzfSB9ICkgewoKICAgICAgICAgICAgbXkgJFJvd0NsYXNzU3RyaW5nID0gJyc7CiAgICAgICAgICAgIG15ICRSb3dSZWFkT25seSAgICA9ICggZmlyc3QgeyAkXy0+e1JlYWRPbmx5fSB9ICRSb3ctPkAqICkgPyAxIDogMDsKCiAgICAgICAgICAgICMgaGlkZSBjb21wbGV0ZSByb3cgaWYgbm8gZmllbGQgaXMgdmlzaWJsZQogICAgICAgICAgICBpZiAoICRQYXJhbXtWaXNpYmlsaXR5fSAmJiBub25lIHsgJFBhcmFte1Zpc2liaWxpdHl9eyJEeW5hbWljRmllbGRfJF8tPntOYW1lfSJ9IH0gQHskUm93fSApIHsKICAgICAgICAgICAgICAgICRSb3dDbGFzc1N0cmluZyAuPSAnIG9vb0FDTEhpZGRlbic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3BlY2lhbCB0cmVhdG1lbnQgZm9yIHNlcGFyYXRlIGR5bmFtaWMgZmllbGRzIGJhc2VkIG9uIGZpcnN0IGZpZWxkCiAgICAgICAgICAgIG15ICRSb3dCbG9ja05hbWUgPSAkUGFyYW17U2VwYXJhdGVEeW5hbWljRmllbGRzfSAmJiAkUGFyYW17U2VwYXJhdGVEeW5hbWljRmllbGRzfS0+eyAkUm93LT5bMF17TmFtZX0gfQogICAgICAgICAgICAgICAgPyAnUm93X0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte1NlcGFyYXRlRHluYW1pY0ZpZWxkc30tPnsgJFJvdy0+WzBde05hbWV9IH0gOiAnUm93X0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAjIENvbHVtbiBzaXplIHN0cmluZyBpcyBzcGxpdCBpbiBwYXJ0cy4gVXNlZCBhcmUgYXMgbWFueSBwYXJ0cyBhcyBjb2x1bW5zIGFyZSBkZWZpbmVkCiAgICAgICAgICAgICMgUGFydHMgYXJlIGNoZWNrZWQgYWdhaW5zdCBhIHJlZ2V4CiAgICAgICAgICAgIG15ICRDb2x1bW5TaXplU3RyaW5nID0gJyc7CiAgICAgICAgICAgIGlmICggJEFyZWF7Q29sdW1uU2l6ZX0gKSB7CiAgICAgICAgICAgICAgICBteSBAQ29sdW1uU2l6ZXMgPSBzcGxpdCggJyAnLCAkQXJlYXtDb2x1bW5TaXplfSApOwogICAgICAgICAgICAgICAgbXkgJENvbHVtbkluZGV4ID0gMDsKICAgICAgICAgICAgICAgIENPTFVNTlNJWkU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJENvbHVtblNpemUgKEBDb2x1bW5TaXplcykgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OU0laRSBpZiAkQ29sdW1uU2l6ZSAhfiAvXigoXGQoXC5cZCk/ZnJccz8pfChcZCtweFxzPyl8YXV0b1xzPykrJC87CiAgICAgICAgICAgICAgICAgICAgbGFzdCBDT0xVTU5TSVpFIGlmICRDb2x1bW5JbmRleCA9PSAoICRBcmVhe0NvbHVtbnN9IHx8IDEgKTsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uU2l6ZVN0cmluZyAuPSAkQ29sdW1uU2l6ZSAuICcgJzsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uSW5kZXgrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdoaWxlICggc2NhbGFyIHNwbGl0KCAnICcsICRDb2x1bW5TaXplU3RyaW5nICkgPCAkQXJlYXtDb2x1bW5zfSApIHsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uU2l6ZVN0cmluZyAuPSAnIDFmcic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENvbHVtblNpemVTdHJpbmcgfHw9ICIxZnIgIiB4ICRBcmVhe0NvbHVtbnN9OwoKICAgICAgICAgICAgJFJvd0NsYXNzU3RyaW5nIC49ICRBcmVhe0NvbHVtbnN9ID4gMSA/ICcgTXVsdGlDb2x1bW4nIDogJyc7CiAgICAgICAgICAgIG15ICRNdWx0aVZhbHVlRmllbGQgPSAnJzsKICAgICAgICAgICAgRUxFTUVOVDoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZEl0ZW0gKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZ3NIYXNoeyAkRmllbGRJdGVtLT57TmFtZX0gfS0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFJvd0NsYXNzU3RyaW5nIC49ICcgTXVsdGlWYWx1ZSc7CiAgICAgICAgICAgICAgICAgICAgJE11bHRpVmFsdWVGaWVsZCA9ICRGaWVsZEl0ZW0tPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBsYXN0IEVMRU1FTlQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFJvd0Jsb2NrTmFtZSwKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlQ29sdW1ucyA9PiAkQ29sdW1uU2l6ZVN0cmluZywKICAgICAgICAgICAgICAgICAgICBSb3dDbGFzc2VzICAgICAgPT4gJFJvd0NsYXNzU3RyaW5nLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBUZW1wbGF0ZURhdGFMaXN0OwoKICAgICAgICAgICAgIyBEeW5hbWljRmllbGRIVE1MIGlzIGFzc3VtZWQgdG8gYmUgYSBoYXNoIHdpdGggc2VwYXJhdGUgaHRtbCBmb3IgZWFjaCB2YWx1ZQogICAgICAgICAgICBteSBASFRNTENvdW50S2V5cyA9IGtleXMgJEdldFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9LT57JE11bHRpVmFsdWVGaWVsZH17SFRNTH0tPiUqOwogICAgICAgICAgICBteSAkTWF4VmFsdWVDb3VudCA9IEBIVE1MQ291bnRLZXlzID8gJCNIVE1MQ291bnRLZXlzIDogMDsKICAgICAgICAgICAgZm9yIG15ICRSb3dJbmRleCAoIDAgLi4gJE1heFZhbHVlQ291bnQgKSB7CiAgICAgICAgICAgICAgICBteSAkR3JpZEVsZW1lbnRTdGFydCA9IDE7CiAgICAgICAgICAgICAgICBFTEVNRU5UOgogICAgICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCB7ICggJGEtPntTdGFydH0gfHwgMSApIDw9PiAoICRiLT57U3RhcnR9IHx8IDEgKSB9IEB7JFJvd30gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZENvbmZpZ3NIYXNoeyAkRWxlbWVudC0+e05hbWV9IH0gKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IEVMRU1FTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkR2V0UGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJEVsZW1lbnQtPntOYW1lfSB9ICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgICA9ICREeW5hbWljRmllbGRDb25maWdzSGFzaHsgJEVsZW1lbnQtPntOYW1lfSB9OwogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MRGF0YSA9ICRHZXRQYXJhbXtEeW5hbWljRmllbGRIVE1MfS0+eyAkRWxlbWVudC0+e05hbWV9IH07CiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgICAgID0gJER5bmFtaWNGaWVsZEhUTUxEYXRhLT57SFRNTH17JFJvd0luZGV4fTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkSFRNTCAmJiAhJFJvd0luZGV4ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCA9ICREeW5hbWljRmllbGRIVE1MRGF0YS0+e0ZpZWxkfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UIGlmICEkRHluYW1pY0ZpZWxkSFRNTDsKCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkNsYXNzU3RyaW5nID0gJyc7CgogICAgICAgICAgICAgICAgICAgICMgaGlkZSBmaWVsZHMKICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtWaXNpYmlsaXR5fSAmJiAhJFBhcmFte1Zpc2liaWxpdHl9eyJEeW5hbWljRmllbGRfJEVsZW1lbnQtPntOYW1lfSJ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ29sdW1uQ2xhc3NTdHJpbmcgLj0gJyBvb29BQ0xIaWRkZW4nOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjb2x1bW4gcGxhY2VtZW50CiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtblN0eWxlID0gJ2dyaWQtY29sdW1uOiAnOwogICAgICAgICAgICAgICAgICAgICRHcmlkRWxlbWVudFN0YXJ0ID0gKCAkRWxlbWVudC0+e1N0YXJ0fSAmJiAkRWxlbWVudC0+e1N0YXJ0fSA+ICRHcmlkRWxlbWVudFN0YXJ0ICkgPyAkRWxlbWVudC0+e1N0YXJ0fSA6ICRHcmlkRWxlbWVudFN0YXJ0OwoKICAgICAgICAgICAgICAgICAgICAjIHNhdmluZyBlbGVtZW50IHN0YXJ0IGZvciBjb3JyZWN0IHBsYWNpbmcgb2Ygcm93cyB3aXRoIG1peGVkIGZpZWxkcyAobXVsdGl2YWx1ZSBhbmQgbm9uLW11bHRpdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQtPntTdGFydH0gPSAkR3JpZEVsZW1lbnRTdGFydDsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uU3R5bGUgLj0gJEdyaWRFbGVtZW50U3RhcnQgLiAnIC8gJzsKICAgICAgICAgICAgICAgICAgICAkR3JpZEVsZW1lbnRTdGFydCsrOwogICAgICAgICAgICAgICAgICAgICRDb2x1bW5TdHlsZSAuPSAkRWxlbWVudC0+e1NwYW59ID8gJ3NwYW4gJyAuICRFbGVtZW50LT57U3Bhbn0gOiAnc3BhbiAxJzsKCiAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWFsIHRyZWF0bWVudCBmb3Igc2VwYXJhdGUgZHluYW1pYyBmaWVsZHMKICAgICAgICAgICAgICAgICAgICBteSAkQ29sQmxvY2tOYW1lID0gJFBhcmFte1NlcGFyYXRlRHluYW1pY0ZpZWxkc30gJiYgJFBhcmFte1NlcGFyYXRlRHluYW1pY0ZpZWxkc30tPnsgJEVsZW1lbnQtPntOYW1lfSB9CiAgICAgICAgICAgICAgICAgICAgICAgID8gJ0R5bmFtaWNGaWVsZF8nIC4gJEVsZW1lbnQtPntOYW1lfSA6ICdEeW5hbWljRmllbGQnOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e011bHRpVmFsdWV9ICYmICRSb3dJbmRleCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkVGVtcGxhdGVDb25maWcgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gKCAkUGFyYW17SURTdWZmaXh9ID8gJFBhcmFte0lEU3VmZml4fSA6ICcnICkgLiAnX1RlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJEZpZWxkVGVtcGxhdGVIVE1MID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5FZGl0RmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJFRlbXBsYXRlQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKSwgICAgIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGFyYW1PYmplY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBSkFYVXBkYXRlICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwZGF0YWJsZUZpZWxkcyAgICA9PiAkUGFyYW17QUpBWFVwZGF0YWJsZUZpZWxkc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lckludGVyZmFjZSAgPT4gJFBhcmFte0N1c3RvbWVySW50ZXJmYWNlfSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZE9ubHkgICAgICAgICAgID0+ICRFbGVtZW50LT57UmVhZE9ubHl9ICAgICAgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAVGVtcGxhdGVEYXRhTGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZCAgICAgICA9PiAoICRGaWVsZFRlbXBsYXRlSFRNTC0+e0hUTUx9eycwJ30gfHwgJEZpZWxkVGVtcGxhdGVIVE1MLT57RmllbGR9ICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3R5bGUgPT4gJENvbHVtblN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJENvbHVtbkNsYXNzU3RyaW5nIC49ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e011bHRpVmFsdWV9ID8gJyBNdWx0aVZhbHVlXycgLiAkUm93SW5kZXggOiAnJzsKICAgICAgICAgICAgICAgICAgICBteSAkQ2VsbEJsb2NrRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0eWxlICAgPT4gJENvbHVtblN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICBGaWVsZCAgICAgICAgID0+ICREeW5hbWljRmllbGRIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICBUb29sdGlwICAgICAgID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1Rvb2x0aXB9LAogICAgICAgICAgICAgICAgICAgICAgICBNdWx0aVZhbHVlICAgID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e011bHRpVmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBSb3dSZWFkT25seSAgID0+ICRSb3dSZWFkT25seSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uQ2xhc3NlcyA9PiAkQ29sdW1uQ2xhc3NTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4ICAgICAgICAgPT4gJFJvd0luZGV4LAogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIGlmICggJFJvd0luZGV4ID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDZWxsQmxvY2tEYXRhLT57TGFiZWx9ID0gJER5bmFtaWNGaWVsZEhUTUxEYXRhLT57TGFiZWx9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRDb2xCbG9ja05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJENlbGxCbG9ja0RhdGEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBZGQgdGVtcGxhdGVzIGZvciBkeW5hbWljZmllbGRzIGF0IGVuZCBvZiByb3cKICAgICAgICAgICAgZm9yIG15ICRUZW1wbGF0ZURhdGEgKEBUZW1wbGF0ZURhdGFMaXN0KSB7CiAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkTXVsdGlWYWx1ZVRlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRUZW1wbGF0ZURhdGEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Number.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGNvbmZpZyBpdGVtIG51bWJlciBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIENvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoKQoKcmV0dXJuIGNvbmZpZyBpdGVtIGlkIG9yIGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7CgogICAgb3IKCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAnMTIzNDU0MzIxJywKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbU51bWJlckxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAhJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQgb3IgQ29uZmlnSXRlbU51bWJlciEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntJRH0tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfQogICAgICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfS0+e0NvbmZpZ0l0ZW1OdW1iZXJMb29rdXB9LT57SUR9LT57ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgICAgICMgYXNrIGRhdGFiYXNlCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgY29uZmlnaXRlbV9udW1iZXIgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXI7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgIyBjYWNoZSB0aGUgcmVzdWx0CiAgICAgICAgJFNlbGYtPntDYWNoZX0tPntDb25maWdJdGVtTnVtYmVyTG9va3VwfS0+e0lEfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9ID0gJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgIHJldHVybiAkQ29uZmlnSXRlbU51bWJlcjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntOdW1iZXJ9LT57ICRQYXJhbXtDb25maWdJdGVtTnVtYmVyfSB9CiAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntDb25maWdJdGVtTnVtYmVyTG9va3VwfS0+e051bWJlcn0tPnsgJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9IH07CgogICAgIyBhc2sgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFIGNvbmZpZ2l0ZW1fbnVtYmVyID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQ29uZmlnSXRlbUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIGNhY2hlIHRoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntOdW1iZXJ9LT57ICRQYXJhbXtDb25maWdJdGVtTnVtYmVyfSB9ID0gJENvbmZpZ0l0ZW1JRDsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRDsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoKQoKY3JlYXRlIGEgbmV3IGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICROdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbU51bWJlckNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUeXBlIENsYXNzSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkUGFyYW17VHlwZX0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgY29uZmlnIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBiYWNrZW5kIG1vZHVsZSAkUGFyYW17VHlwZX0hICRAIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlQmFzZUNsYXNzKCAkUGFyYW17VHlwZX0gKTsKCiAgICAjIGNyZWF0ZSBudW1iZXIKICAgIG15ICROdW1iZXIgPSAkU2VsZi0+X0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoJVBhcmFtKTsKCiAgICByZXR1cm4gJE51bWJlcjsKfQoKPWhlYWQyIEN1cnJlbnRDb3VudGVyR2V0KCkKCnJldHVybiB0aGUgY3VycmVudCBjb3VudGVyIG9mIGEgY2xhc3MKCiAgICBteSAkQ291bnRlciA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXJyZW50Q291bnRlckdldCgKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICk7Cgo9Y3V0CgpzdWIgQ3VycmVudENvdW50ZXJHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2xhc3NJRCBUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFzayB0aGUgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGNvdW50ZXIgRlJPTSBjb25maWdpdGVtX2NvdW50ZXIgV0hFUkUgJwogICAgICAgICAgICAuICdjbGFzc19pZCA9ID8gQU5EIGNvdW50ZXJfdHlwZSA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtUeXBlfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJE51bWJlcjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJE51bWJlciA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICROdW1iZXI7Cn0KCj1oZWFkMiBDdXJyZW50Q291bnRlclNldCgpCgpzZXQgdGhlIGN1cnJlbnQgY291bnRlciBvZiBhIGNsYXNzCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VycmVudENvdW50ZXJTZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICAgICAgVHlwZSAgICA9PiAnQXV0b0luY3JlbWVudCcsCiAgICAgICAgQ291bnRlciA9PiAnMTInLAogICAgKTsKCj1jdXQKCnN1YiBDdXJyZW50Q291bnRlclNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIFR5cGUgQ291bnRlcikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgb2xkIGNvdW50ZXIKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2NvdW50ZXIgV0hFUkUgY2xhc3NfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgKTsKCiAgICAjIHNldCBuZXcgY291bnRlcgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbV9jb3VudGVyICcKICAgICAgICAgICAgLiAnKGNsYXNzX2lkLCBjb3VudGVyX3R5cGUsIGNvdW50ZXIpIFZBTFVFUyAoPywgPywgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NsYXNzSUR9LCBcJFBhcmFte1R5cGV9LCBcJFBhcmFte0NvdW50ZXJ9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Number/AutoIncrement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50IC0gY29uZmlnIGl0ZW0gbnVtYmVyIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBhdXRvIGluY3JlbWVudCBjb25maWcgaXRlbSBudW1iZXIgZnVuY3Rpb25zCgo9aGVhZDIgX0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoKQoKY3JlYXRlIGEgbmV3IGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICROdW1iZXIgPSAkQmFja2VuZE9iamVjdC0+X0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIF9Db25maWdJdGVtTnVtYmVyQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2xhc3NJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHN5c3RlbSBpZAogICAgbXkgJFN5c3RlbUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTeXN0ZW1JRCcpOwoKICAgICMgZ2V0IGN1cnJlbnQgY291bnRlcgogICAgbXkgJEN1cnJlbnRDb3VudGVyID0gJFNlbGYtPkN1cnJlbnRDb3VudGVyR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgIFR5cGUgICAgPT4gJ0F1dG9JbmNyZW1lbnQnLAogICAgKSB8fCAwOwoKICAgIENJUEhFUjoKICAgIGZvciBteSAkQ2lwaGVyICggMSAuLiAxXzAwMF8wMDBfMDAwICkgewoKICAgICAgICAjIGNyZWF0ZSBuZXcgbnVtYmVyCiAgICAgICAgbXkgJE51bWJlciA9ICRTeXN0ZW1JRCAuICRQYXJhbXtDbGFzc0lEfSAuIHNwcmludGYoICIlMDZkIiwgKCAkQ3VycmVudENvdW50ZXIgKyAkQ2lwaGVyICkgKTsKCiAgICAgICAgIyBmaW5kIGV4aXN0aW5nIG51bWJlcgogICAgICAgIG15ICREdXBsaWNhdGUgPSAkU2VsZi0+Q29uZmlnSXRlbU51bWJlckxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkTnVtYmVyLAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0lQSEVSIGlmICREdXBsaWNhdGU7CgogICAgICAgICMgc2V0IGNvdW50ZXIKICAgICAgICAkU2VsZi0+Q3VycmVudENvdW50ZXJTZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ291bnRlciA9PiAoICRDdXJyZW50Q291bnRlciArICRDaXBoZXIgKSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJE51bWJlcjsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb24gLSBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtLnBtIHdpdGggUGVybWlzc2lvbiBmdW5jdGlvbnMKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIFBlcm1pc3Npb24gZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBQZXJtaXNzaW9uKCkKCnJldHVybnMgd2hldGhlciB0aGUgdXNlciBoYXMgcGVybWlzc2lvbnMgb3Igbm90CgogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICAgID0+ICdybycsCiAgICAgICAgU2NvcGUgICAgPT4gJ0NsYXNzJywgIyBDbGFzcyB8fCBJdGVtCiAgICAgICAgQ2xhc3NJRCAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnQ2xhc3MnCiAgICAgICAgSXRlbUlEICAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnSXRlbScKICAgICAgICBVc2VySUQgICA9PiAxMjMsCiAgICApOwoKb3Igd2l0aG91dCBsb2dnaW5nLCBmb3IgZXhhbXBsZSBmb3IgdG8gY2hlY2sgaWYgYSBsaW5rL2FjdGlvbiBzaG91bGQgYmUgc2hvd24KCiAgICBteSAkQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgICAgPT4gJ3JvJywKICAgICAgICBTY29wZSAgICA9PiAnQ2xhc3MnLCAjIENsYXNzIHx8IEl0ZW0KICAgICAgICBDbGFzc0lEICA9PiAxMjMsICAgICAjIGlmIFNjb3BlIGlzICdDbGFzcycKICAgICAgICBJdGVtSUQgICA9PiAxMjMsICAgICAjIGlmIFNjb3BlIGlzICdJdGVtJwogICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhUeXBlIFNjb3BlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgSXRlbUlEIG9yIENsYXNzSUQgZGVwZW5kZW50CiAgICAjIG9uIHRoZSBTY29wZQogICAgaWYgKAogICAgICAgICggJFBhcmFte1Njb3BlfSBlcSAnQ2xhc3MnICYmICEkUGFyYW17Q2xhc3NJRH0gKQogICAgICAgIHx8CiAgICAgICAgKCAkUGFyYW17U2NvcGV9IGVxICdJdGVtJyAmJiAhJFBhcmFte0l0ZW1JRH0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgQ2xhc3NJRCBpZiBTY29wZSBpcyAnQ2xhc3MnIG9yIEl0ZW1JRCBpZiBTY29wZSBpcyAnSXRlbSchIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBSdW4gYWxsIElUU01Db25maWdJdGVtIFBlcm1pc3Npb24gbW9kdWxlcy4KICAgICMKICAgICMgVGhlIGlkZWEgaXMgdGhlIHRoZSBwZXJtaXNzaW9uIG1vZHVsZXMgYXJlIG9yZGVyZWQgYW5kIGNhbiBiZSBkaXZpZGVkIGludG8gdHdvIHBoYXNlcy4KICAgICMgSW4gdGhlIGZpcnN0IHBoYXNlICdSZXF1aXJlZCcgaXMgb24gYW5kICdHcmFudGVkJyBpcyBvZmYuIFRoaXMgYXNzdXJlcyB0aGF0IGFsbCByZXF1aXJlZAogICAgIyBwcmVjb25kaXRpb25zIGFyZSBtZXQuIEluIHRoZSBzZWNvbmQgcGhhc2UgJ1JlcXVpcmVkJyBpcyBvZmYgYW5kICdHcmFudGVkJyBpcyBvbi4gSXQgc3VmZmljZXMKICAgICMgd2hlbiBvbmx5IG9uIHNlY29uZCBwaGFzZSBtb2R1bGUgZ3JhbnRzIGFjY2Vzcy4KICAgICMKICAgICMgT3RoZXIgY29tYmluYXRpb25zIGFyZSBwb3NzaWJsZSBidXQgbWlnaHQgYnJpbmcgc3VycHJpc2luZyByZXN1bHRzLgogICAgaWYgKAogICAgICAgIHJlZiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6JyAuICRQYXJhbXtTY29wZX0gKSBlcSAnSEFTSCcKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJU1vZHVsZXMgPSAlewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6JyAuICRQYXJhbXtTY29wZX0gKQogICAgICAgIH07CiAgICAgICAgTU9EVUxFOgogICAgICAgIGZvciBteSAkTW9kdWxlICggc29ydCBrZXlzICVNb2R1bGVzICkgewoKICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICBuZXh0IE1PRFVMRSB1bmxlc3MgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1vZHVsZXN7JE1vZHVsZX0tPntNb2R1bGV9ICk7CgogICAgICAgICAgICAjIGNyZWF0ZSBvYmplY3QKICAgICAgICAgICAgbXkgJE1vZHVsZU9iamVjdCA9ICRNb2R1bGVzeyRNb2R1bGV9LT57TW9kdWxlfS0+bmV3OwoKICAgICAgICAgICAgIyBleGVjdXRlIFJ1bigpCiAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9ICRNb2R1bGVPYmplY3QtPlJ1biglUGFyYW0pOwoKICAgICAgICAgICAgIyBjaGVjayBncmFudGVkIG9wdGlvbiAoc2hvdWxkIEkgc2F5IG9rKQogICAgICAgICAgICBpZiAoICRBY2Nlc3NPayAmJiAkTW9kdWxlc3skTW9kdWxlfS0+e0dyYW50ZWR9ICkgewoKICAgICAgICAgICAgICAgICMgYWNjZXNzIG9rCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWZ1c2UgYWNjZXNzICBiZWNhdXNlIGFjY2VzcyBpcyBmYWxzZSBidXQgaXQncyByZXF1aXJlZAogICAgICAgICAgICBpZiAoICEkQWNjZXNzT2sgJiYgJE1vZHVsZXN7JE1vZHVsZX0tPntSZXF1aXJlZH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW17TG9nTm99ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBlcm1pc3Npb24gZGVuaWVkIGJlY2F1c2UgbW9kdWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIigkTW9kdWxlc3skTW9kdWxlfS0+e01vZHVsZX0pIGlzIHJlcXVpcmVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIihVc2VySUQ6ICRQYXJhbXtVc2VySUR9ICckUGFyYW17VHlwZX0nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIm9uICRQYXJhbXtTY29wZX06ICIgLiAkUGFyYW17ICRQYXJhbXtTY29wZX0gLiAnSUQnIH0gLiAiKSEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZWZ1c2UgYWNjZXNzCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBkb24ndCBncmFudCBhY2Nlc3MKICAgIGlmICggISRQYXJhbXtMb2dOb30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGVybWlzc2lvbiBkZW5pZWQgKFVzZXJJRDogJFBhcmFte1VzZXJJRH0gJyRQYXJhbXtUeXBlfScgIgogICAgICAgICAgICAgICAgLiAib24gJFBhcmFte1Njb3BlfTogIiAuICRQYXJhbXsgJFBhcmFte1Njb3BlfSAuICdJRCcgfSAuICIpISIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCj1oZWFkMiBDdXN0b21lclBlcm1pc3Npb24oKQoKcmV0dXJucyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9ucyBvciBub3QKCiAgICBteSAkQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxMjMsCiAgICAgICAgTG9nTm8gICAgICAgID0+IDEsICAgICMgb3B0aW9uYWwsIGRvIG5vdCBsb2csIGRlZmF1bHQ6IDAKICAgICk7Cgo9Y3V0CgpzdWIgQ3VzdG9tZXJQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDdXN0b21lckdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBteSAlQ29uZGl0aW9ucyA9ICV7ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJykgLy8ge30gfTsKICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIENPTkRJVElPTjoKICAgIGZvciBteSAkQ29uZGl0aW9uU2V0ICggdmFsdWVzICVDb25kaXRpb25zICkgewogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0dyb3Vwc30gJiYgJENvbmRpdGlvblNldC0+e0dyb3Vwc30tPkAqICkgewogICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRDdXN0b21lckdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJEdyb3VwTG9va3VweyRffSB9ICRDb25kaXRpb25TZXQtPntHcm91cHN9LT5AKjsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ICkgewogICAgICAgICAgICBteSBAQ2xhc3NlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gPyAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBDbGFzc2VzICYmIG5vbmUgeyAkXyBlcSAkQ29uZmlnSXRlbS0+e0NsYXNzfSB9IEBDbGFzc2VzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gKSB7CiAgICAgICAgICAgIG15IEBEZXBsU3RhdGVzID0gcmVmICRDb25kaXRpb25TZXQtPntEZXBsb3ltZW50U3RhdGVzfSA/ICRDb25kaXRpb25TZXQtPntEZXBsb3ltZW50U3RhdGVzfS0+QCogOiAoICRDb25kaXRpb25TZXQtPntEZXBsb3ltZW50U3RhdGVzfSApOwoKICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgQERlcGxTdGF0ZXMgJiYgbm9uZSB7ICRfIGVxICRDb25maWdJdGVtLT57RGVwbFN0YXRlfSB9IEBEZXBsU3RhdGVzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZGl0aW9uU2V0LT57RHluYW1pY0ZpZWxkVmFsdWVzfSApIHsKICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9LT4lKiApIHsKICAgICAgICAgICAgICAgIG15ICRDb25kaXRpb25WYWx1ZSA9ICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9IC8vICcnOwoKICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiAkQ29uZGl0aW9uVmFsdWUgbmUgJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICFyZWYgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiAkQ29uZGl0aW9uVmFsdWUgbmUgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbmRpdGlvblZhbHVlIGVxICcnICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0tPkAqOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgbm9uZSB7ICRfIGVxICRDb25kaXRpb25WYWx1ZSB9ICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0tPkAqOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiAhJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gfTsKCiAgICAgICAgICAgIG15IEBDdXN0b21lclVzZXJzID0gcmVmICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9IH0KICAgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gfS0+QCoKICAgICAgICAgICAgICAgIDogKCAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSB9ICk7CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJF8gZXEgJFBhcmFte1VzZXJJRH0gfSBAQ3VzdG9tZXJVc2VyczsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICEkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSB9OwoKICAgICAgICAgICAgbXkgQEN1c3RvbWVyQ29tcGFuaWVzID0gcmVmICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9IH0KICAgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0gfS0+QCoKICAgICAgICAgICAgICAgIDogKCAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSB9ICk7CgogICAgICAgICAgICBteSAlQWNjZXNzaWJsZUN1c3RvbWVycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckdyb3VwJyktPkdyb3VwQ29udGV4dEN1c3RvbWVycygKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgbm9uZSB7ICRBY2Nlc3NpYmxlQ3VzdG9tZXJzeyRffSB9IEBDdXN0b21lckNvbXBhbmllczsKICAgICAgICB9CgogICAgICAgICMgZ3JhbnQgYWNjZXNzCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaWYgKCAhJFBhcmFte0xvZ05vfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQZXJtaXNzaW9uIGRlbmllZCAoQ3VzdG9tZXJVc2VySUQ6ICRQYXJhbXtVc2VySUR9ICIKICAgICAgICAgICAgICAgIC4gIm9uIENvbmZpZ0l0ZW06ICIgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICIpISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRvbid0IGdyYW50IGFjY2VzcwogICAgcmV0dXJuOwp9Cgo9aGVhZDIgUHVibGljUGVybWlzc2lvbigpCgpyZXR1cm5zIHdoZXRoZXIgdGhlIHB1YmxpYyBub24tbG9nZ2VkIHVzZXIgaGFzIHBlcm1pc3Npb25zIG9yIG5vdAoKICAgIG15ICRBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UHVibGljUGVybWlzc2lvbigKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIExvZ05vICAgICAgICA9PiAxLCAgICAjIG9wdGlvbmFsLCBkbyBub3QgbG9nLCBkZWZhdWx0OiAwCiAgICApOwoKPWN1dAoKc3ViIFB1YmxpY1Blcm1pc3Npb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlQ29uZGl0aW9ucyA9ICV7ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpIC8vIHt9IH07CiAgICBteSAkQ29uZmlnSXRlbSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiBhbnkgeyAkXy0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gfHwgJF8tPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9IH0gdmFsdWVzICVDb25kaXRpb25zLAogICAgKTsKCiAgICBDT05ESVRJT046CiAgICBmb3IgbXkgJENvbmRpdGlvblNldCAoIHZhbHVlcyAlQ29uZGl0aW9ucyApIHsKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntDbGFzc2VzfSApIHsKICAgICAgICAgICAgbXkgQENsYXNzZXMgPSByZWYgJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ID8gJENvbmRpdGlvblNldC0+e0NsYXNzZXN9LT5AKiA6ICggJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ICk7CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBAQ2xhc3NlcyAmJiBub25lIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSBAQ2xhc3NlczsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgewogICAgICAgICAgICBteSBARGVwbFN0YXRlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gPyAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBEZXBsU3RhdGVzICYmIG5vbmUgeyAkXyBlcSAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZX0gfSBARGVwbFN0YXRlczsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0R5bmFtaWNGaWVsZFZhbHVlc30gKSB7CiAgICAgICAgICAgIGZvciBteSAkRmllbGROYW1lICgga2V5cyAkQ29uZGl0aW9uU2V0LT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBteSAkRmllbGRWYWx1ZSA9ICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9OwogICAgICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgJEZpZWxkVmFsdWUgJiYgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSBuZSAkRmllbGRWYWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBncmFudCBhY2Nlc3MKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAoICEkUGFyYW17TG9nTm99ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBlcm1pc3Npb24gZGVuaWVkIChQdWJsaWMgYWNjZXNzICIKICAgICAgICAgICAgICAgIC4gIm9uIENvbmZpZ0l0ZW06ICIgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICIpISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRvbid0IGdyYW50IGFjY2VzcwogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission/ClassGroupCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3NHcm91cENoZWNrOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3NHcm91cENoZWNrIC0gY2hlY2sgaWYgYSB1c2VyIGJlbG9uZ3MgdG8gYSBncm91cAo9aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgaXMgYSBwZXJtaXNzaW9uIG1vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwoKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJENoZWNrT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uOjpDbGFzc0dyb3VwQ2hlY2snKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBSdW4oKQoKdGhpcyBtZXRob2QgZG9lcyB0aGUgY2hlY2sgaWYgdGhlIHVzZSBiZWxvbmdzIHRvIGEgZ2l2ZW4gZ3JvdXAKCiAgICBteSAkSGFzQWNjZXNzID0gJENoZWNrT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEICA9PiAxMjMsCiAgICAgICAgVHlwZSAgICA9PiAncm8nLAogICAgICAgIENsYXNzSUQgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzOjpDb21wdXRlcicsCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVXNlcklEIFR5cGUgQ2xhc3NJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhIGZvciB0aGUgcmVsZXZhbnQgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRDbGFzc0l0ZW0tPntQZXJtaXNzaW9ufTsKICAgIG15ICgkQ2xhc3NJdGVtUGVybWlzc2lvbikgPSAkQ2xhc3NJdGVtLT57UGVybWlzc2lvbn0tPkAqOwogICAgcmV0dXJuIHVubGVzcyAkQ2xhc3NJdGVtUGVybWlzc2lvbjsKCiAgICAjIGdldCB1c2VyIGdyb3VwcwogICAgbXkgQEdyb3VwSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBSZXN1bHQgPT4gJ0lEJywKICAgICAgICBDYWNoZWQgPT4gMSwKICAgICk7CgogICAgIyBsb29raW5nIGZvciBncm91cCBpZCwgZ3JhbnQgYWNjZXNzIGlmIHVzZXIgaXMgaW4gZ3JvdXAKICAgIGZvciBteSAkR3JvdXBJRCAoQEdyb3VwSURzKSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJENsYXNzSXRlbVBlcm1pc3Npb24gJiYgJEdyb3VwSUQgZXEgJENsYXNzSXRlbVBlcm1pc3Npb247CiAgICB9CgogICAgIyByZWZ1c2UgYWNjZXNzIHBlciBkZWZhdWx0CiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission/ItemClassGroupCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjayAtIGNoZWNrIGlmIGEgdXNlciBjYW4gYWNjZXNzIGFuIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKVGhpcyBpcyBhIHBlcm1pc3Npb24gbW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uClRoZSBjaGVjayBpcyBiYXNlZCBvbiB0aGUgY2xhc3Mgb2YgdGhlIGNvbmZpZyBpdGVtLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDaGVja09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjaycpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHt9LCAkVHlwZTsKfQoKPWhlYWQyIFJ1bigpCgp0aGlzIG1ldGhvZCBkb2VzIHRoZSBjaGVjayBpZiB0aGUgdXNlciBjYW4gYWNjZXNzIGFuIGl0ZW0KCiAgICBteSAkSGFzQWNjZXNzID0gJENoZWNrT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEID0+IDEyMywKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBJdGVtSUQgPT4gMzQ1LAogICAgKTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJJRCBUeXBlIEl0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICk7CgogICAgIyBnZXQgZGF0YSBmb3IgdGhlIHJlbGV2YW50IGNvbmZpZyBpdGVtIGNsYXNzCiAgICBteSAkQ2xhc3NJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJENsYXNzSXRlbS0+e1Blcm1pc3Npb259OwogICAgbXkgKCRDbGFzc0l0ZW1QZXJtaXNzaW9uKSA9ICRDbGFzc0l0ZW0tPntQZXJtaXNzaW9ufS0+QCo7CiAgICByZXR1cm4gdW5sZXNzICRDbGFzc0l0ZW1QZXJtaXNzaW9uOwoKICAgICMgZ2V0IHVzZXIgZ3JvdXBzCiAgICBteSBAR3JvdXBJRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFJlc3VsdCA9PiAnSUQnLAogICAgICAgIENhY2hlZCA9PiAxLAogICAgKTsKCiAgICAjIGxvb2tpbmcgZm9yIGdyb3VwIGlkLCBncmFudCBhY2Nlc3MgaWYgdXNlciBpcyBpbiBncm91cAogICAgZm9yIG15ICRHcm91cElEIChAR3JvdXBJRHMpIHsKICAgICAgICByZXR1cm4gMSBpZiAkQ2xhc3NJdGVtUGVybWlzc2lvbiAmJiAkR3JvdXBJRCBlcSAkQ2xhc3NJdGVtUGVybWlzc2lvbjsKICAgIH0KCiAgICAjIHJlZnVzZSBhY2Nlc3MgcGVyIGRlZmF1bHQKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Version.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvbjsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoYW55KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvbiAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCB2ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgSVRTTUNvbmZpZ0l0ZW0gb2JqZWN0cy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgVmVyc2lvblpvb21MaXN0KCkKCnJldHVybiBhIGNvbmZpZyBpdGVtIHZlcnNpb24gbGlzdCBhcyBhcnJheS1oYXNoIHJlZmVyZW5jZQoKICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvblpvb21MaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICApOwoKICAgICMgZ2V0IHZlcnNpb24gem9vbSBsaXN0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBpZCwgbmFtZSwgdmVyc2lvbl9zdHJpbmcsIGRlcGxfc3RhdGVfaWQsIGluY2lfc3RhdGVfaWQsIGRlc2NyaXB0aW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KICBXSEVSRSBjb25maWdpdGVtX2lkID0gPwogIE9SREVSIEJZIGlkCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQFZlcnNpb25MaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBWZXJzaW9uTGlzdCwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICA9PiAkUm93WzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkUm93WzFdLAogICAgICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAkUm93WzJdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAkUm93WzNdLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAkUm93WzRdLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAkUm93WzVdLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAkUm93WzZdLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICA9PiAkUm93WzddLAogICAgICAgICAgICAgICAgQ2hhbmdlVGltZSAgICA9PiAkUm93WzhdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICA9PiAkUm93WzldLAogICAgICAgICAgICB9OwoKICAgIH0KCiAgICBmb3IgbXkgJFZlcnNpb24gKEBWZXJzaW9uTGlzdCkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGZ1bmN0aW9uYWxpdHkKICAgICAgICBteSAkRGVwbFN0YXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkVmVyc2lvbi0+e0RlcGxTdGF0ZUlEfSwKICAgICAgICApOwoKICAgICAgICAkVmVyc2lvbi0+e0RlcGxTdGF0ZX0gICAgID0gJERlcGxTdGF0ZS0+e05hbWV9OwogICAgICAgICRWZXJzaW9uLT57RGVwbFN0YXRlVHlwZX0gPSAkRGVwbFN0YXRlLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CgogICAgICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGZ1bmN0aW9uYWxpdHkKICAgICAgICBteSAkSW5jaVN0YXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkVmVyc2lvbi0+e0luY2lTdGF0ZUlEfSwKICAgICAgICApOwoKICAgICAgICAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gICAgID0gJEluY2lTdGF0ZS0+e05hbWV9OwogICAgICAgICRWZXJzaW9uLT57SW5jaVN0YXRlVHlwZX0gPSAkSW5jaVN0YXRlLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CgogICAgICAgICMgYWRkIGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAkVmVyc2lvbi0+e0NsYXNzSUR9ICAgICAgICAgID0gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKICAgICAgICAkVmVyc2lvbi0+e0NsYXNzfSAgICAgICAgICAgID0gJENvbmZpZ0l0ZW0tPntDbGFzc307CiAgICAgICAgJFZlcnNpb24tPntOdW1iZXJ9ICAgICAgICAgICA9ICRDb25maWdJdGVtLT57TnVtYmVyfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZUlEfSAgID0gJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVJRH07CiAgICAgICAgJFZlcnNpb24tPntDdXJEZXBsU3RhdGV9ICAgICA9ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZVR5cGV9ID0gJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVUeXBlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckluY2lTdGF0ZUlEfSAgID0gJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVJRH07CiAgICAgICAgJFZlcnNpb24tPntDdXJJbmNpU3RhdGV9ICAgICA9ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckluY2lTdGF0ZVR5cGV9ID0gJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfTsKICAgIH0KCiAgICByZXR1cm4gXEBWZXJzaW9uTGlzdDsKfQoKPWhlYWQyIFZlcnNpb25MaXN0QWxsKCkKClJldHVybnMgYSB0d28tZGltZW5zaW9uYWwgaGFzaCByZWZlcmVuY2Ugd2l0aCB0aGUgY29uZmlnIGl0ZW0gaWRzIGFzIGtleXMgb2YgdGhlIGZpcnN0IGxldmVsCmFuZCB0aGUgY29ycmVzcG9uZGluZyB2ZXJzaW9uIGlkcyBhcyBrZXlzIG9mIHRoZSBzZWNvbmQgbGV2ZWwsCnRoZW4gZm9sbG93ZWQgYnkgdGhlIHZlcnNpb24gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZS4KCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3RBbGwoCiAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBbIDEsIDIsIDMsIDQsIC4uLl0sICAgICMgb3B0aW9uYWwKCiAgICAgICAgT2xkZXJEYXRlICAgICA9PiAnMjAxNC0xMi0yMiAyMzo1OTo1OScsICMgb3B0aW9uYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaW5kcyB2ZXJzaW9ucyBvbGRlciB0aGFuIHRoZSBnaXZlbiBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRm9ybWF0IE1VU1QgYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBZWVlZLU1NLUREIEhIOk1NOlNTCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlsbCBtaXNzaW5nIHZhbHVlcyB3aXRoIDAgZmlyc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFeGFtcGxlOiAyMDE0LTA0LTAxIDA3OjAzOjA0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGl0IHdvbid0IGJlIHRha2VuIGFzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFsaWQgc2VhcmNoIHBhcmFtZXRlcgoKICAgICAgICBMaW1pdCAgICAgICAgID0+IDEwMDAwMDAsICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKClJldHVybnM6CgogICAgJFZlcnNpb25MaXN0UmVmID0gewoKICAgICAgICAjIENvbmZpZ0l0ZW1JRAogICAgICAgIDEgPT4gewoKICAgICAgICAgICAgIyBWZXJzaW9uSUQKICAgICAgICAgICAgMTAwID0+IHsKICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAxLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAnQ29uZmlnSXRlbTEnLAogICAgICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAnVmVyc2lvbjEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICA9PiA1LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAzLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAyLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnQUJDRCcsCiAgICAgICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICcyMDE2LTAzLTIyIDE3OjU4OjAwJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICMgVmVyc2lvbklECiAgICAgICAgICAgIDEwMSA9PiB7CiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+IDEwMSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gMSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW0yJywKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJ1ZlcnNpb24yJywKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgPT4gNSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gMywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgPT4gMiwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAnMjAxNi0wMy0yMiAxNzo1ODowMCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBDb25maWdJdGVtSUQKICAgICAgICAyID0+IHsKCiAgICAgICAgICAgICMgVmVyc2lvbklECiAgICAgICAgICAgIDE1MCA9PiB7CiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+IDE1MCwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gMiwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW0xJywKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJ1ZlcnNpb24xJywKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgPT4gNSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gMywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgPT4gMiwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAnMjAxNi0wMy0yMiAxNzo1ODowMCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAjIFZlcnNpb25JRAogICAgICAgICAgICAxNTEgPT4gewogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICA9PiAxNTEsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+IDIsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdDb25maWdJdGVtMScsCiAgICAgICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICdWZXJzaW9uMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+IDUsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+IDMsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+IDIsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdBQkNEJywKICAgICAgICAgICAgICAgIENyZWF0ZVRpbWUgICAgPT4gJzIwMTYtMDMtMjIgMTc6NTg6MDAnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFZlcnNpb25MaXN0QWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjb2xsZWN0IHRoZSBjb25kaXRpb25zIGZvciB0aGUgV0hFUkUgY2xhdXNlCiAgICBteSBAQ29uZGl0aW9uczsKICAgIG15IEBCaW5kUGFyYW1ldGVyOwoKICAgICMgaWYgd2UgZ290IENvbmZpZ0l0ZW1JRHMgbWFrZSBzdXJlIHdlIGp1c3QgaGF2ZSBudW1lcmljIGlkcywKICAgICMgZXh0cmFjdCB0aG9zZSBhbmQgdXNlIGl0IGZvciB0aGUgcXVlcnkKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17Q29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9IGdyZXAgeyAkXyA9fiBtL15cZCskLyB9IEB7ICRQYXJhbXtDb25maWdJdGVtSURzfSB9OwogICAgICAgIHB1c2ggQENvbmRpdGlvbnMsICdjb25maWdpdGVtX2lkIElOICgnIC4gKCBqb2luICcsICcsIEBDb25maWdJdGVtSURzICkgLiAnKSc7CiAgICB9CgogICAgaWYgKCAkUGFyYW17T2xkZXJEYXRlfSAmJiAkUGFyYW17T2xkZXJEYXRlfSA9fiBtL15cZHs0fVwtXGR7Mn1cLVxkezJ9XCBcZHsyfVw6XGR7Mn06XGR7Mn0kLyApIHsKICAgICAgICBwdXNoIEBDb25kaXRpb25zLCAgICAnY3JlYXRlX3RpbWUgPCA/JzsKICAgICAgICBwdXNoIEBCaW5kUGFyYW1ldGVyLCBcJFBhcmFte09sZGVyRGF0ZX07CiAgICB9CgogICAgIyBidWlsZCBzcWwKICAgIG15ICRTUUwgPSA8PCdFTkRfU1FMJzsKU0VMRUNUIGlkLCBjb25maWdpdGVtX2lkLCBuYW1lLCB2ZXJzaW9uX3N0cmluZywgZGVmaW5pdGlvbl9pZCwgZGVwbF9zdGF0ZV9pZCwgaW5jaV9zdGF0ZV9pZCwgZGVzY3JpcHRpb24sCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KRU5EX1NRTAoKICAgIGlmIChAQ29uZGl0aW9ucykgewogICAgICAgICRTUUwgLj0gJ1dIRVJFICcgLiBqb2luICcgQU5EICcsIEBDb25kaXRpb25zOwogICAgfQoKICAgICMgc2V0IGxpbWl0CiAgICBpZiAoICRQYXJhbXtMaW1pdH0gKSB7CiAgICAgICAgJFBhcmFte0xpbWl0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdW90ZSggJFBhcmFte0xpbWl0fSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgaWYgKEBCaW5kUGFyYW1ldGVyKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgIEJpbmQgID0+IFxAQmluZFBhcmFtZXRlciwKICAgICAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlUmVzdWx0czsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFJlc3VsdHN7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSB7CiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFJvd1swXSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUm93WzFdLAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICRSb3dbMl0gIHx8ICcnLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRSb3dbM10gIHx8ICcnLAogICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+ICRSb3dbNF0gIHx8ICcnLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+ICRSb3dbNV0gIHx8ICcnLAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+ICRSb3dbNl0gIHx8ICcnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICRSb3dbN10gIHx8ICcnLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICRSb3dbOF0gIHx8ICcnLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+ICRSb3dbOV0gIHx8ICcnLAogICAgICAgICAgICBDaGFuZ2VUaW1lICAgID0+ICRSb3dbMTBdIHx8ICcnLAogICAgICAgICAgICBDaGFuZ2VCeSAgICAgID0+ICRSb3dbMTFdIHx8ICcnLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIFwlUmVzdWx0czsKfQoKPWhlYWQyIFZlcnNpb25MaXN0KCkKCnJldHVybiB0aGUgbGlzdCBvZiBjb25maWcgaXRlbSB2ZXJzaW9uIElEcyBvZiB0aGUgc3BlY2lmaWVkIGNvbmZpZyBpdGVtIGFzIGFuIGFycmF5IHJlZmVyZW5jZS4KVGhlIElEcyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4KCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgIG15IEBWZXJzaW9uTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RDb2xBcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBpZAogIEZST00gY29uZmlnaXRlbV92ZXJzaW9uCiAgV0hFUkUgY29uZmlnaXRlbV9pZCA9ID8KICBPUkRFUiBCWSBpZApFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gXEBWZXJzaW9uTGlzdDsKfQoKPWhlYWQyIFZlcnNpb25OYW1lR2V0KCkKCnJldHVybnMgdGhlIG5hbWUgb2YgYSB2ZXJzaW9uIG9mIGEgY29uZmlnIGl0ZW0uCgogICAgbXkgJFZlcnNpb25OYW1lID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25OYW1lR2V0KAogICAgICAgIFZlcnNpb25JRCA9PiAxMjMsCiAgICApOwoKb3IKCiAgICBteSAkVmVyc2lvbk5hbWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbk5hbWVHZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbk5hbWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1ZlcnNpb25JRH0gJiYgISRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQgb3IgQ29uZmlnSXRlbUlEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgICAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OlZlcnNpb25JRDo6JyAuICRQYXJhbXtWZXJzaW9uSUR9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJHskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgbmFtZSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17VmVyc2lvbklEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgICAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJHskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgbmFtZSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiAnCiAgICAgICAgICAgICAgICAuICdXSEVSRSBjb25maWdpdGVtX2lkID0gPyBPUkRFUiBCWSBpZCBERVNDJywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJVZlcnNpb247CiAgICB3aGlsZSAoIG15ICggJElkLCAkTmFtZSApID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkVmVyc2lvbntWZXJzaW9uSUR9ID0gJElkOwogICAgICAgICRWZXJzaW9ue05hbWV9ICAgICAgPSAkTmFtZTsKICAgIH0KCiAgICAjIGNoZWNrIHZlcnNpb24KICAgIGlmICggISRWZXJzaW9ue1ZlcnNpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdObyBzdWNoIGNvbmZpZyBpdGVtIHZlcnNpb24hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBjYWNoZSBmb3IgVmVyc2lvbklEIChhbHdheXMpCiAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OlZlcnNpb25JRDo6JyAuICRWZXJzaW9ue1ZlcnNpb25JRH07CiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwkVmVyc2lvbntOYW1lfSwKICAgICk7CgogICAgIyBzZXQgY2FjaGUgZm9yIENvbmZpZ0l0ZW1JRCAob25seSBpZiBjYWxsZWQgd2l0aCBDb25maWdJdGVtSUQpCiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRDYWNoZUtleSA9ICdWZXJzaW9uTmFtZUdldDo6Q29uZmlnSXRlbUlEOjonIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gXCRWZXJzaW9ue05hbWV9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9ue05hbWV9Owp9Cgo9aGVhZDIgVmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgpCgpyZXR1cm4gdGhlIGNvbmZpZyBpdGVtIGlkIG9mIGEgdmVyc2lvbgoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBWZXJzaW9uQ29uZmlnSXRlbUlER2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbkNvbmZpZ0l0ZW1JREdldH0tPnsgJFBhcmFte1ZlcnNpb25JRH0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbkNvbmZpZ0l0ZW1JREdldH0tPnsgJFBhcmFte1ZlcnNpb25JRH0gfTsKCiAgICAjIGdldCBjb25maWcgaXRlbSBpZAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCBjb25maWdpdGVtX2lkIEZST00gY29uZmlnaXRlbV92ZXJzaW9uIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1ZlcnNpb25JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICB3aGlsZSAoIG15ICgkSWQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEID0gJElkOwogICAgfQoKICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uQ29uZmlnSXRlbUlER2V0fS0+eyAkUGFyYW17VmVyc2lvbklEfSB9ID0gJENvbmZpZ0l0ZW1JRDsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRDsKfQoKPWhlYWQyIFZlcnNpb25BZGQoKQoKYWRkcyBhIG5ldyB2ZXJzaW9uIHRvIGVpdGhlciBhbiBleGlzdGluZyBjb25maWcgaXRlbS4KT3IgYWRkcyB0aGUgaW5pdGlhbCB2ZXJzaW9uIHRvIGFuIGNvbmZpZyBpdGVtIHRoYXQgaXMgYmVpbmcgY3JlYXRlZC4KCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gMTIzLAogICAgICAgIExhc3RWZXJzaW9uSUQgICAgID0+IDEyMywKICAgICAgICBMYXN0VmVyc2lvbiAgICAgICA9PiB7Li4ufSAgICAgICAgICAjIGVpdGhlciBDb25maWdJdGVtSUQgb3IgTGFzdFZlcnNpb24oSUQpIGlzIG1hbmRhdG9yeQogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJ1RoZSBOYW1lJywgICAgIyBvcHRpb25hbAogICAgICAgIFZlcnNpb25TdHJpbmcgICAgID0+ICdUaGUgVmVyc2lvbicsICMgb3B0aW9uYWwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiA4LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gNCwgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIERlc2NyaXB0aW9uICAgICAgID0+ICdBQkNEJywgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBEeW5hbWljRmllbGRfTmFtZSA9PiAkVmFsdWUsICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRMYXN0VmVyc2lvbiA9ICRQYXJhbXtMYXN0VmVyc2lvbn0gfHwgJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRQYXJhbXtMYXN0VmVyc2lvbklEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICVWZXJzaW9uID0gKAogICAgICAgICRMYXN0VmVyc2lvbi0+JSosCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENvbmZpZ0l0ZW1JRCBOYW1lIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEKSkgewogICAgICAgIGlmICggISRWZXJzaW9ueyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXR0cmlidXRlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkQ2xhc3NMaXN0OwogICAgcmV0dXJuIHVubGVzcyByZWYgJENsYXNzTGlzdCBlcSAnSEFTSCc7CgogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJFZlcnNpb257Q2xhc3NJRH0sCiAgICApOwoKICAgIG15ICROYW1lTW9kdWxlT2JqZWN0OwogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OiROYW1lTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbntDbGFzc30hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGEgYmFja2VuZCBvYmplY3QKICAgICAgICAkTmFtZU1vZHVsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKTsKCiAgICAgICAgIyBvdmVycmlkZSBwb3NzaWJsZSBpbmNvbWluZyBuYW1lCiAgICAgICAgJFZlcnNpb257TmFtZX0gPSAkTmFtZU1vZHVsZU9iamVjdC0+Q29uZmlnSXRlbU5hbWVDcmVhdGUoJVBhcmFtKTsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICdORVcnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRWZXJzaW9ue0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRWZXJzaW9ue05hbWV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICMgYnVpbGQgYSBzdHJpbmcgb2YgYWxsIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgIG15ICREdXBsaWNhdGVzID0gam9pbiAnLCAnLCBAeyROYW1lRHVwbGljYXRlc307CgogICAgICAgICAgICAgICAgIyB3cml0ZSBhbiBlcnJvciBsb2cgbWVzc2FnZSBjb250YWluaW5nIGFsbCB0aGUgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIG5hbWUgJFZlcnNpb257TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgKENvbmZpZ0l0ZW1JRHM6ICREdXBsaWNhdGVzKSEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJFZlcnNpb25TdHJpbmdNb2R1bGVPYmplY3Q7CiAgICBteSAkVmVyc2lvblN0cmluZ01vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze1ZlcnNpb25TdHJpbmdNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkVmVyc2lvblN0cmluZ01vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OiRWZXJzaW9uU3RyaW5nTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY2xhc3MgJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpOwoKICAgICAgICAjIG92ZXJyaWRlIHBvc3NpYmxlIGluY29taW5nIHZlcnNpb24gc3RyaW5nCiAgICAgICAgJFZlcnNpb257VmVyc2lvblN0cmluZ30gPSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdC0+VmVyc2lvblN0cmluZ0dldCgKICAgICAgICAgICAgVmVyc2lvbiAgICA9PiBcJVZlcnNpb24sCiAgICAgICAgICAgIFZlcnNpb25BZGQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgbmV3IHZlcnNpb25zIGFyZSBhbHdheXMgYWRkZWQgd2l0aCB0aGUgbmV3ZXN0IGRlZmluaXRpb24KICAgIG15ICREZWZpbml0aW9uID0gJFNlbGYtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkVmVyc2lvbntDbGFzc0lEfSwKICAgICk7CgogICAgaWYgKCAhJERlZmluaXRpb24gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIERlZmluaXRpb24hIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBpbnNlcnQgbmV3IHZlcnNpb24KICAgIG15ICRJbnNlcnRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fdmVyc2lvbiAoCiAgICBjb25maWdpdGVtX2lkLCBuYW1lLCB2ZXJzaW9uX3N0cmluZywgZGVmaW5pdGlvbl9pZCwgZGVwbF9zdGF0ZV9pZCwgaW5jaV9zdGF0ZV9pZCwgZGVzY3JpcHRpb24sCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CikKVkFMVUVTICgKICAgID8sID8sID8sID8sID8sID8sID8sCiAgIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPwopCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFwkVmVyc2lvbntOYW1lfSwKICAgICAgICAgICAgXCRWZXJzaW9ue1ZlcnNpb25TdHJpbmd9LAogICAgICAgICAgICBcJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICBcJFZlcnNpb257RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBcJFZlcnNpb257SW5jaVN0YXRlSUR9LAogICAgICAgICAgICBcJFZlcnNpb257RGVzY3JpcHRpb259LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRJbnNlcnRTdWNjZXNzOwoKICAgICMgZ2V0IGlkIG9mIG5ldyB2ZXJzaW9uCiAgICBteSAoJFZlcnNpb25JRCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKU0VMRUNUIGlkCiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KICBXSEVSRSBjb25maWdpdGVtX2lkID0gPwogIE9SREVSIEJZIGlkIERFU0MKRU5EX1NRTAogICAgICAgIEJpbmQgID0+IFsgXCRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIHZlcnNpb24gaWQKICAgIGlmICggISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBnZXQgdGhlIG5ldyB2ZXJzaW9uIGlkISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAkU2VsZi0+X1VwZGF0ZUN1ckF0dHIoCiAgICAgICAgVmVyc2lvbiAgICAgPT4gXCVWZXJzaW9uLAogICAgICAgIExhc3RWZXJzaW9uID0+ICRMYXN0VmVyc2lvbiwKICAgICAgICBWZXJzaW9uSUQgICA9PiAkVmVyc2lvbklELAogICAgICAgIFVzZXJJRCAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgQ29uZmlnSXRlbUdldCB3aXRob3V0IGR5bmFtaWMgZmllbGRzCiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIEtleSAgPT4gam9pbigKICAgICAgICAgICAgJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb257Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgREZEYXRhICAgICAgID0+IDAsCiAgICAgICAgKSwKICAgICk7CgogICAgIyB0cmlnZ2VyIFZlcnNpb25DcmVhdGUgZXZlbgogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnVmVyc2lvbkNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb257Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIE9sZERlcGxTdGF0ZSA9PiAkTGFzdFZlcnNpb24tPntDdXJEZXBsU3RhdGV9LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15IEBVcGRhdGVkRHluYW1pY0ZpZWxkczsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFkZWZpbmVkICRWZXJzaW9ueyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnTGVucycgJiYgISRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUhhbmRsZWQgID0+IDEsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gJiYgZXhpc3RzICRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gKSwKICAgICAgICApOwoKICAgICAgICAjIG9ubHkgdGhyb3cgZXZlbnRzIGZvciBmaWVsZHMgY2hhbmdlZCBmcm9tIHRoZSBsYXN0IHZlcnNpb24gLSBjaGVja2VkIGJ5IENvbmZpZ0l0ZW1VcGRhdGUoKQogICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgZXhpc3RzICRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQFVwZGF0ZWREeW5hbWljRmllbGRzLCAkRHluYW1pY0ZpZWxkLT57TmFtZX07CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB2ZXJzaW9uIGRhdGEgd2l0aCBhY3R1YWwgZHluYW1pYyBmaWVsZCB2YWx1ZXMKICAgICAgICAjIGltcG9ydGFudCBpbiBjYXNlIG9mIHJlZmVyZW5jZSBmaWVsZHMKICAgICAgICBpZiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gJiYgJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW1wb3J0U2VhcmNoQXR0cmlidXRlfSApIHsKICAgICAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFZlcnNpb257ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgQ29uZmlnSXRlbUdldCB3aXRoIGR5bmFtaWMgZmllbGRzCiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAxLAogICAgICAgICksCiAgICApOwoKICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWREeW5hbWljRmllbGRzKSB7CgogICAgICAgICMgcHJlcGFyZSByZWFkYWJsZSB2YWx1ZXMgZm9yIHRoZSBoaXN0b3J5CiAgICAgICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICApOwogICAgICAgIG15ICRSZWFkYWJsZU9sZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlJlYWRhYmxlVmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JE5hbWV9LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJExhc3RWZXJzaW9uLT57ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUcmlnZ2VyIGR5bmFtaWMgZmllbGQgdXBkYXRlIGV2ZW50LgogICAgICAgICMgVGhpcyBtaWdodCB1cGRhdGUgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4KICAgICAgICAjIEFsc28gcGFzcyBpbiB0aGUgbGFzdCB2ZXJzaW9uIGluIG9yZGVyIHRvIGFsbG93IGZvciBzcGVjaWFsIGhhbmRsaW5nIHdoZW4gdGhlIGxhc3QgdmVyc2lvbiBpcyBjaGFuZ2VkLgogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXycgLiAkTmFtZSwKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgRmllbGROYW1lICAgICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICAgICAgICAgIE9sZFZhbHVlICAgICAgICAgICAgICAgID0+ICRMYXN0VmVyc2lvbi0+eyAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSB9LAogICAgICAgICAgICAgICAgUmVhZGFibGVWYWx1ZSAgICAgICAgICAgPT4gJFJlYWRhYmxlVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBSZWFkYWJsZU9sZFZhbHVlICAgICAgICA9PiAkUmVhZGFibGVPbGRWYWx1ZS0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgID0+ICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtVmVyc2lvbklEICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxhc3RWZXJzaW9uSUQgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJlY2FsY3VsYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIGFsbCBsaW5rZWQgY29uZmlnIGl0ZW1zCiAgICBpZiAoJFJlY2FsY0N1ckluY2lTdGF0ZSkgewogICAgICAgICRTZWxmLT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVmVyc2lvbntDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9uSUQ7Cn0KCj1oZWFkMiBWZXJzaW9uVXBkYXRlKCkKCnVwZGF0ZSBhIHZlcnNpb24KCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25VcGRhdGUoCiAgICAgICAgVmVyc2lvbklEICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVmVyc2lvbiAgICAgICAgICAgICAgICA9PiB7Li4ufSAgICAgICAgICAjIGVpdGhlciBWZXJzaW9uSUQgb3IgVmVyc2lvbiBpcyBtYW5kYXRvcnkKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICA9PiAxMjMsICAgICAgICAgICAjIG9wdGlvbmFsLCBJRCBvZiB0aGUgZGVmaW5pdGlvbiB3aGljaCB3YXMgdXNlZCBmb3IgY3JlYXRpbmcgdGhlIGlucHV0CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnVGhlIE5hbWUnLCAgICAjIG9wdGlvbmFsCiAgICAgICAgVmVyc2lvblN0cmluZyAgICAgICAgICA9PiAnVGhlIFZlcnNpb24nLCAjIG9wdGlvbmFsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICA9PiA4LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICA9PiA0LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICA9PiAnQUJDRCcsICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkXzwkREZOYW1lPiA9PiAkVmFsdWUsICAgICAgICAjIG9wdGlvbmFsLCBvbmUgcGFyYW1ldGVyIGZvciBlYWNoIGR5bmFtaWMgZmllbGQgd2hpY2ggc2hvdWxkIGJlIHVwZGF0ZWQKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvblVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWZXJzaW9uID0gJFBhcmFte1ZlcnNpb259IHx8ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBdHRyaWJ1dGUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhJFZlcnNpb24gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFZlcnNpb24gb3IgVmVyc2lvbklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgSXRlbUlEID0+ICRWZXJzaW9uLT57Q2xhc3NJRH0sCiAgICApOwoKICAgIG15ICROYW1lTW9kdWxlT2JqZWN0OwogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OiROYW1lTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbi0+e0NsYXNzfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICROYW1lTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOYW1lOjokTmFtZU1vZHVsZSIpOwoKICAgICAgICAjIFRPRE86IEltcHJvdmUgYmVoYXZpb3VyIG9mIG1vZHVsZXMgd2hpY2ggYWxsb3cgbmFtZSByZXVzYWdlIGFuZCBkbyBub3QgYWx3YXlzIGRlbGV0ZSBhbmQgcmVjcmVhdGUgbmFtZXMKICAgICAgICAjIEluIGNhc2Ugd2UgaGF2ZSBhIG5hbWUgbW9kdWxlIHdoaWNoIGNyZWF0ZXMgbmFtZXMgaW5jcmVtZW50YWxseSwgd2UgY3VycmVudGx5IGhhdmUgdG8gZGVsZXRlIGZpcnN0IGFuZCByZWNyZWF0ZSB0aGVuCiAgICAgICAgaWYgKCAkTmFtZU1vZHVsZU9iamVjdC0+Y2FuKCdDb25maWdJdGVtTmFtZURlbGV0ZScpICkgewogICAgICAgICAgICAkTmFtZU1vZHVsZU9iamVjdC0+Q29uZmlnSXRlbU5hbWVEZWxldGUoICRWZXJzaW9uLT57TmFtZX0gKTsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtOYW1lfSA9ICROYW1lTW9kdWxlT2JqZWN0LT5Db25maWdJdGVtTmFtZUNyZWF0ZSgKICAgICAgICAgICAgJFZlcnNpb24tPiUqLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgJiYgJFBhcmFte05hbWV9IG5lICRWZXJzaW9uLT57TmFtZX0gKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkVmVyc2lvbi0+e0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RvcCBwcm9jZXNzaW5nIGlmIHRoZSBuYW1lIGlzIG5vdCB1bmlxdWUKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICBteSAkRHVwbGljYXRlcyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgICAgICMgd3JpdGUgYW4gZXJyb3IgbG9nIG1lc3NhZ2UgY29udGFpbmluZyBhbGwgdGhlIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBuYW1lICRQYXJhbXtOYW1lfSBpcyBhbHJlYWR5IGluIHVzZSAoQ29uZmlnSXRlbUlEczogJER1cGxpY2F0ZXMpISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdDsKICAgIG15ICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX0gPyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uU3RyaW5nTW9kdWxlfVswXSA6ICcnOwogICAgaWYgKCRWZXJzaW9uU3RyaW5nTW9kdWxlKSB7CgogICAgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6JFZlcnNpb25TdHJpbmdNb2R1bGUiKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbi0+e0NsYXNzfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpOwoKICAgICAgICAjIG92ZXJyaWRlIHBvc3NpYmxlIGluY29taW5nIHZlcnNpb24gc3RyaW5nCiAgICAgICAgJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSA9ICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0LT5WZXJzaW9uU3RyaW5nR2V0KAogICAgICAgICAgICBWZXJzaW9uID0+IHsKICAgICAgICAgICAgICAgICRWZXJzaW9uLT4lKiwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDYWNoZU9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAwOwoKICAgIGlmICggYW55IHsgZGVmaW5lZCAkUGFyYW17JF99IH0gcXcvTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlZmluaXRpb25JRCBEZXNjcmlwdGlvbi8gKSB7CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIGZvciBteSAkQXR0cmlidXRlIChxdy9OYW1lIFZlcnNpb25TdHJpbmcgRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgRGVmaW5pdGlvbklEIERlc2NyaXB0aW9uLykgewogICAgICAgICAgICAkUGFyYW17JEF0dHJpYnV0ZX0gfHw9ICRWZXJzaW9uLT57JEF0dHJpYnV0ZX07CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSBleGlzdGluZyB2ZXJzaW9uCiAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClVQREFURSBjb25maWdpdGVtX3ZlcnNpb24KICBTRVQgbmFtZSA9ID8sIHZlcnNpb25fc3RyaW5nID0gPywgZGVmaW5pdGlvbl9pZCA9ID8sIGRlcGxfc3RhdGVfaWQgPSA/LCBpbmNpX3N0YXRlX2lkID0gPywgZGVzY3JpcHRpb24gPSA/LCBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLCBjaGFuZ2VfYnkgPSA/CiAgV0hFUkUgaWQgPSA/CkVORF9TUUwKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJFBhcmFte05hbWV9LAogICAgICAgICAgICAgICAgXCRQYXJhbXtWZXJzaW9uU3RyaW5nfSwKICAgICAgICAgICAgICAgIFwkUGFyYW17RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgIFwkUGFyYW17RGVwbFN0YXRlSUR9LAogICAgICAgICAgICAgICAgXCRQYXJhbXtJbmNpU3RhdGVJRH0sCiAgICAgICAgICAgICAgICBcJFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFwkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIHVubGVzcyAkVXBkYXRlU3VjY2VzczsKCiAgICAgICAgIyBUaGUgY29uZmlnIGl0ZW0gaXMgb25seSBhZmZlY3RlZCB3aGVuIHRoZSBsYXN0IHZlcnNpb24gd2FzIG1vZGlmaWVkCiAgICAgICAgaWYgKCAkVmVyc2lvbi0+e1ZlcnNpb25JRH0gZXEgJFZlcnNpb24tPntMYXN0VmVyc2lvbklEfSApIHsKICAgICAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH07CgogICAgICAgICAgICAkUmVjYWxjQ3VySW5jaVN0YXRlID0gJFNlbGYtPl9VcGRhdGVDdXJBdHRyKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgIExhc3RWZXJzaW9uID0+ICRWZXJzaW9uLAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgPT4gJFZlcnNpb24tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgYmFzZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgID0+IDAsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb24tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oICc6OicsICdWZXJzaW9uTmFtZUdldCcsIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0gKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgdHJpZ2dlciBWZXJzaW9uVXBkYXRlIGV2ZW50CiAgICAgICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgICAgICBFdmVudCA9PiAnVmVyc2lvblVwZGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJFZlcnNpb24tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgIE9sZERlcGxTdGF0ZSA9PiAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXRlc3QgZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzCiAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFZlcnNpb24tPntDbGFzc0lEfSwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSBAVXBkYXRlZER5bmFtaWNGaWVsZHM7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBrZXlzICVQYXJhbSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJEF0dHJpYnV0ZSA9fiBtL15EeW5hbWljRmllbGRfKC4rKS87CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskMX07CgogICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JDF9OwoKICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUhhbmRsZWQgID0+IDEsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9LAogICAgICAgICk7CgogICAgICAgIGlmICgkU3VjY2VzcykgewogICAgICAgICAgICBwdXNoIEBVcGRhdGVkRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZC0+e05hbWV9OwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdmVyc2lvbiBkYXRhIHdpdGggYWN0dWFsIGR5bmFtaWMgZmllbGQgdmFsdWVzCiAgICAgICAgIyBpbXBvcnRhbnQgaW4gY2FzZSBvZiByZWZlcmVuY2UgZmllbGRzCiAgICAgICAgaWYgKCAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICYmICREeW5hbWljRmllbGQtPntDb25maWd9e0ltcG9ydFNlYXJjaEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRWZXJzaW9uLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFteyRBdHRyaWJ1dGV9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgZHluYW1pYyBmaWVsZHMsIHRvbwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICA9PiAxLAogICAgICAgICksCiAgICApOwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAxLAogICAgICAgICksCiAgICApOwoKICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWREeW5hbWljRmllbGRzKSB7CgogICAgICAgICMgcHJlcGFyZSByZWFkYWJsZSB2YWx1ZXMgZm9yIHRoZSBoaXN0b3J5CiAgICAgICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkUmVhZGFibGVPbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyROYW1lfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWZXJzaW9uLT57ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUcmlnZ2VyIHRoZSBkeW5hbWljIGZpZWxkIHVwZGF0ZSBldmVudC4KICAgICAgICAjIFRoaXMgbWlnaHQgdXBkYXRlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuCiAgICAgICAgIyBBbHNvIHBhc3MgaW4gdGhlIGxhc3QgdmVyc2lvbiBpbiBvcmRlciB0byBhbGxvdyBmb3Igc3BlY2lhbCBoYW5kbGluZyB3aGVuIHRoZSBsYXN0IHZlcnNpb24gaXMgY2hhbmdlZC4KICAgICAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV8nIC4gJE5hbWUsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIEZpZWxkTmFtZSAgICAgICAgICAgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgPT4gJFBhcmFteyAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSB9LAogICAgICAgICAgICAgICAgT2xkVmFsdWUgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICAgICAgICAgIFJlYWRhYmxlVmFsdWUgICAgICAgICAgID0+ICRSZWFkYWJsZVZhbHVlLT57VmFsdWV9LAogICAgICAgICAgICAgICAgUmVhZGFibGVPbGRWYWx1ZSAgICAgICAgPT4gJFJlYWRhYmxlT2xkVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICA9PiAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtVmVyc2lvbklEICAgICA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTGFzdFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgkUmVjYWxjQ3VySW5jaVN0YXRlKSB7CgogICAgICAgICMgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgYWxsIGxpbmtlZCBjb25maWcgaXRlbXMKICAgICAgICAkU2VsZi0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb24tPntDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWZXJzaW9uRGVsZXRlKCkKCmRlbGV0ZSBhbiBleGlzdGluZyB2ZXJzaW9uIG9yIHZlcnNpb25zCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCm9yCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBWZXJzaW9uSURzID0+IFsgMSwgMiwgMywgNCBdLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkRlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1ZlcnNpb25JRH0gJiYgISRQYXJhbXtDb25maWdJdGVtSUR9ICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWZXJzaW9uSURzfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQsIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSURzIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZlcnNpb25MaXN0ID0gW107CiAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgIHB1c2ggQHskVmVyc2lvbkxpc3R9LCAkUGFyYW17VmVyc2lvbklEfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1ZlcnNpb25JRHN9ICkgewogICAgICAgIHB1c2ggQHskVmVyc2lvbkxpc3R9LCBAeyAkUGFyYW17VmVyc2lvbklEc30gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICMgZ2V0IHZlcnNpb24gbGlzdAogICAgICAgICRWZXJzaW9uTGlzdCA9ICRTZWxmLT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDEgaWYgIXNjYWxhciBAeyRWZXJzaW9uTGlzdH07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gaWQgZm9yIHZlcnNpb24gKG5lZWRlZCBmb3IgZXZlbnQgaGFuZGxpbmcpCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyB0byBzdG9yZSB1bmlxdWUgY29uZmlnIGl0ZW0gaWRzIGlmIHRoZXJlIGFyZSB2ZXJzaW9ucyBmcm9tIGRpZmZlcmVudCBjb25maWcgaXRlbXMKICAgIG15ICVDb25maWdJdGVtSURzOwoKICAgIG15ICRTdWNjZXNzOwogICAgZm9yIG15ICRWZXJzaW9uSUQgKCBAeyRWZXJzaW9uTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZ2l0ZW0gaWQgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSB8fCAkUGFyYW17VmVyc2lvbklEc30gKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkU2VsZi0+VmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbklELAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciB0aGUgdW5pcXVlIGNvbmZpZyBpdGVtIGlkcwogICAgICAgICRDb25maWdJdGVtSURzeyRDb25maWdJdGVtSUR9ID0gMTsKCiAgICAgICAgIyBnZXQgYSBsaXN0IG9mIGFsbCBhdHRhY2htZW50cwogICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJFNlbGYtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0gdmVyc2lvbgogICAgICAgIEZJTEVOQU1FOgogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGRlbGV0ZSB0aGUgYXR0YWNobWVudAogICAgICAgICAgICBteSAkRGVsZXRpb25TdWNjZXNzID0gJFNlbGYtPlZlcnNpb25BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJERlbGV0aW9uU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlVua25vd24gcHJvYmxlbSB3aGVuIGRlbGV0aW5nIGF0dGFjaG1lbnQgJEZpbGVuYW1lIG9mIENvbmZpZ0l0ZW0gVmVyc2lvbiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIiRWZXJzaW9uSUQuIFBsZWFzZSBjaGVjayB0aGUgVmlydHVhbEZTIGJhY2tlbmQgZm9yIHN0YWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiZmlsZXMhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIGR5bmFtaWMgZmllbGQgdmFsdWVzIGZvciB0aGlzIHZlcnNpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKS0+T2JqZWN0VmFsdWVzRGVsZXRlKAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIE9iamVjdElEICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB2ZXJzaW9uCiAgICAgICAgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRWZXJzaW9uSUQgXSwKICAgICAgICApOwoKICAgICAgICAjIHRyaWdnZXIgVmVyc2lvbkRlbGV0ZSBldmVudCB3aGVuIGRlbGV0aW9uIHdhcyBzdWNjZXNzZnVsCiAgICAgICAgaWYgKCRTdWNjZXNzKSB7CgogICAgICAgICAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgICAgICAgICAgRXZlbnQgPT4gJ1ZlcnNpb25EZWxldGUnLAogICAgICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZGVsZXRlIGFmZmVjdGVkIGNhY2hlcwogICAgICAgICAgICBmb3IgbXkgJERGRGF0YSAocXcoMCAxKSkgewogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgICAgICAgICBERkRhdGEgICAgPT4gJERGRGF0YQogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oICc6OicsICdWZXJzaW9uTmFtZUdldCcsIFZlcnNpb25JRCA9PiAkVmVyc2lvbklEICksCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBkZWxldGUgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uQ29uZmlnSXRlbUlER2V0fS0+eyRWZXJzaW9uSUR9OwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgIyBkZWxldGUgYWZmZWN0ZWQgY2FjaGVzIGZvciBDb25maWdJdGVtSUQgKG1vc3QgcmVjZW50IHZlcnNpb24gbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQpCiAgICAgICAgZm9yIG15ICRERkRhdGEgKHF3KDAgMSkpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgICAgIEtleSAgPT4gam9pbigKICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgICAgID0+ICRERkRhdGEKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiBqb2luKCAnOjonLCAnVmVyc2lvbk5hbWVHZXQnLCBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgVmVyc2lvblNlYXJjaCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBsaXN0IGFzIGFuIGFycmF5IHJlZmVyZW5jZQoKICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25TZWFyY2goCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdUaGUgTmFtZScsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgOSwgOCwgNywgNiBdLCAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzID0+IFsgMzIxLCAxMjMgXSwgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSW5jaVN0YXRlSURzID0+IFsgMzIxLCAxMjMgXSwgICAgIyAob3B0aW9uYWwpCgogICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLCAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQoKICAgICAgICBPcmRlckJ5ID0+IFsgJ0NvbmZpZ0l0ZW1JRCcsICdOdW1iZXInIF0sICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdDb25maWdJdGVtSUQnIF0KICAgICAgICAjIChDb25maWdJdGVtSUQsIE5hbWUsIE51bWJlciwgQ2xhc3NJRCwgRGVwbFN0YXRlSUQsIEluY2lTdGF0ZUlECiAgICAgICAgIyBDcmVhdGVUaW1lLCBDcmVhdGVCeSwgQ2hhbmdlVGltZSwgQ2hhbmdlQnkpCgogICAgICAgICMgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgT3JkZXJCeToKICAgICAgICAjIFRoZSBPcmRlckJ5RGlyZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGVhY2ggT3JkZXJCeSBhdHRyaWJ1dGUuCiAgICAgICAgIyBUaGUgcGFpcmluZyBpcyBtYWRlIGJ5IHRoZSBhcnJheSBpbmRpY2VzLgoKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsgJ1VwJywgJ0Rvd24nIF0sICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ1VwJyBdCiAgICAgICAgIyAoRG93biB8IFVwKQoKICAgICAgICBMaW1pdCAgICAgICAgICA9PiAxMjIsICAjIChvcHRpb25hbCkKICAgICAgICBVc2luZ1dpbGRjYXJkcyA9PiAwLCAgICAjIChvcHRpb25hbCkgZGVmYXVsdCAxCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25TZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBkZWZhdWx0IHZhbHVlcwogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VXNpbmdXaWxkY2FyZHN9ICkgewogICAgICAgICRQYXJhbXtVc2luZ1dpbGRjYXJkc30gPSAxOwogICAgfQoKICAgICMgdmVyaWZ5IHRoYXQgYWxsIHBhc3NlZCBhcnJheSBwYXJhbWV0ZXJzIGNvbnRhaW4gYW4gYXJyYXlyZWYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAoCiAgICAgICAgcXcoCiAgICAgICAgICAgIE9yZGVyQnkKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbgogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFBhcmFteyRBcmd1bWVudH0gfHw9IFtdOwoKICAgICAgICAgICAgbmV4dCBBUkdVTUVOVDsKICAgICAgICB9CgogICAgICAgIGlmICggcmVmICRQYXJhbXskQXJndW1lbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IG9yZGVyIGFuZCBvcmRlciBkaXJlY3Rpb24KICAgIGlmICggIUB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgewogICAgICAgICRQYXJhbXtPcmRlckJ5fSA9IFsnQ29uZmlnSXRlbUlEJ107CiAgICB9CiAgICBpZiAoICFAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKICAgICAgICAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gPSBbJ1VwJ107CiAgICB9CgogICAgIyBkZWZpbmUgb3JkZXIgdGFibGUKICAgIG15ICVPcmRlckJ5VGFibGUgPSAoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICd2ci5jb25maWdpdGVtX2lkJywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ3ZyLm5hbWUnLAogICAgICAgIE51bWJlciAgICAgICA9PiAnY2kuY29uZmlnaXRlbV9udW1iZXInLAogICAgICAgIENsYXNzSUQgICAgICA9PiAnY2kuY2xhc3NfaWQnLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAndnIuZGVwbF9zdGF0ZV9pZCcsCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICd2ci5pbmNpX3N0YXRlX2lkJywKICAgICAgICBDcmVhdGVUaW1lICAgPT4gJ2NpLmNyZWF0ZV90aW1lJywKICAgICAgICBDcmVhdGVCeSAgICAgPT4gJ2NpLmNyZWF0ZV9ieScsCgogICAgICAgICMgdGhlIGNoYW5nZSB0aW1lIG9mIHRoZSBDSSBpcyB0aGUgc2FtZSBhcyB0aGUgY3JlYXRlIHRpbWUgb2YgdGhlIHZlcnNpb24hCiAgICAgICAgQ2hhbmdlVGltZSA9PiAndnIuY3JlYXRlX3RpbWUnLAoKICAgICAgICBDaGFuZ2VCeSA9PiAnY2kuY2hhbmdlX2J5JywKICAgICk7CgogICAgIyBjaGVjayBpZiBPcmRlckJ5IGNvbnRhaW5zIG9ubHkgdW5pcXVlIHZhbGlkIHZhbHVlcwogICAgbXkgJU9yZGVyQnlTZWVuOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgIGlmICggISRPcmRlckJ5IHx8ICEkT3JkZXJCeVRhYmxleyRPcmRlckJ5fSB8fCAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ICkgewoKICAgICAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeSBjb250YWlucyBpbnZhbGlkIHZhbHVlICckT3JkZXJCeScgIgogICAgICAgICAgICAgICAgICAgIC4gJ29yIHRoZSB2YWx1ZSBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhlIHZhbHVlIHRvIGNoZWNrIGlmIGl0IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UKICAgICAgICAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ID0gMTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIE9yZGVyQnlEaXJlY3Rpb24gYXJyYXkgY29udGFpbnMgb25seSAnVXAnIG9yICdEb3duJwogICAgRElSRUNUSU9OOgogICAgZm9yIG15ICREaXJlY3Rpb24gKCBAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgIyBvbmx5ICdVcCcgb3IgJ0Rvd24nIGFsbG93ZWQKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdVcCc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnRG93bic7CgogICAgICAgICMgZm91bmQgYW4gZXJyb3IKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk9yZGVyQnlEaXJlY3Rpb24gY2FuIG9ubHkgY29udGFpbiAnVXAnIG9yICdEb3duJyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNzZW1ibGUgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgbXkgQFNRTE9yZGVyQnk7CiAgICBteSAkQ291bnQgPSAwOwogICAgbXkgQE9yZGVyQnlTZWxlY3RDb2x1bW5zOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IG9yZGVyIGRpcmVjdGlvbgogICAgICAgIG15ICREaXJlY3Rpb24gPSAnREVTQyc7CgogICAgICAgICMgYWRkIHRoZSBnaXZlbiBvcmRlciBkaXJlY3Rpb24KICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiA9ICdBU0MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAkRGlyZWN0aW9uID0gJ0RFU0MnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBTUUwKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAgICAgICAgICAgIiRPcmRlckJ5VGFibGV7JE9yZGVyQnl9ICREaXJlY3Rpb24iOwogICAgICAgIHB1c2ggQE9yZGVyQnlTZWxlY3RDb2x1bW5zLCAkT3JkZXJCeVRhYmxleyRPcmRlckJ5fTsKCiAgICB9CiAgICBjb250aW51ZSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgIyBnZXQgbGlrZSBlc2NhcGUgc3RyaW5nIG5lZWRlZCBmb3Igc29tZSBkYXRhYmFzZXMgKGUuZy4gb3JhY2xlKQogICAgbXkgJExpa2VFc2NhcGVTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+R2V0RGF0YWJhc2VGdW5jdGlvbignTGlrZUVzY2FwZVN0cmluZycpOwoKICAgICMgYWRkIG5hbWUgdG8gc3FsIHdoZXJlIGFycmF5CiAgICBteSBAU1FMV2hlcmU7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte05hbWV9ICYmICRQYXJhbXtOYW1lfSBuZSAnJyApIHsKCiAgICAgICAgIyBkdXBsaWNhdGUgdGhlIG5hbWUKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbXtOYW1lfTsKCiAgICAgICAgIyBxdW90ZQogICAgICAgICROYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCROYW1lKTsKCiAgICAgICAgaWYgKCAkUGFyYW17VXNpbmdXaWxkY2FyZHN9ICkgewoKICAgICAgICAgICAgIyBwcmVwYXJlIGxpa2Ugc3RyaW5nCiAgICAgICAgICAgICRTZWxmLT5fUHJlcGFyZUxpa2VTdHJpbmcoIFwkTmFtZSApOwoKICAgICAgICAgICAgcHVzaCBAU1FMV2hlcmUsICJMT1dFUih2ci5uYW1lKSBMSUtFIExPV0VSKCckTmFtZScpICRMaWtlRXNjYXBlU3RyaW5nIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQFNRTFdoZXJlLCAiTE9XRVIodnIubmFtZSkgPSBMT1dFUignJE5hbWUnKSI7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGFycmF5IHBhcmFtcwogICAgbXkgJUFycmF5UGFyYW1zID0gKAogICAgICAgIENsYXNzSURzICAgICA9PiAnY2kuaWQgPSB2ci5jb25maWdpdGVtX2lkIEFORCBjaS5jbGFzc19pZCcsCiAgICAgICAgRGVwbFN0YXRlSURzID0+ICd2ci5kZXBsX3N0YXRlX2lkJywKICAgICAgICBJbmNpU3RhdGVJRHMgPT4gJ3ZyLmluY2lfc3RhdGVfaWQnLAogICAgKTsKCiAgICBBUlJBWVBBUkFNOgogICAgZm9yIG15ICRBcnJheVBhcmFtICggc29ydCBrZXlzICVBcnJheVBhcmFtcyApIHsKCiAgICAgICAgbmV4dCBBUlJBWVBBUkFNIGlmICEkUGFyYW17JEFycmF5UGFyYW19OwoKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEFycmF5UGFyYW19IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJyYXlQYXJhbSBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBuZXh0IEFSUkFZUEFSQU0gaWYgIUB7ICRQYXJhbXskQXJyYXlQYXJhbX0gfTsKCiAgICAgICAgIyBxdW90ZSBhcyBpbnRlZ2VyCiAgICAgICAgZm9yIG15ICRPbmVQYXJhbSAoIEB7ICRQYXJhbXskQXJyYXlQYXJhbX0gfSApIHsKICAgICAgICAgICAgJE9uZVBhcmFtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCAkT25lUGFyYW0sICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiBxeywgfSwgQHsgJFBhcmFteyRBcnJheVBhcmFtfSB9OwoKICAgICAgICBwdXNoIEBTUUxXaGVyZSwgIiRBcnJheVBhcmFtc3sgJEFycmF5UGFyYW0gfSBJTiAoJEluU3RyaW5nKSI7CiAgICB9CgogICAgIyBhZGQgcHJldmlvdXMgdmVyc2lvbiBwYXJhbQogICAgaWYgKCAhJFBhcmFte1ByZXZpb3VzVmVyc2lvblNlYXJjaH0gKSB7CiAgICAgICAgcHVzaCBAU1FMV2hlcmUsICdjaS5sYXN0X3ZlcnNpb25faWQgPSB2ci5pZCc7CiAgICB9CgogICAgIyBjcmVhdGUgd2hlcmUgc3RyaW5nCiAgICBteSAkV2hlcmVTdHJpbmcgPSBAU1FMV2hlcmUgPyAnIFdIRVJFICcgLiBqb2luIHF7IEFORCB9LCBAU1FMV2hlcmUgOiAnJzsKCiAgICAjIHNldCBsaW1pdCwgcXVvdGUgYXMgaW50ZWdlcgogICAgaWYgKCAkUGFyYW17TGltaXR9ICkgewogICAgICAgICRQYXJhbXtMaW1pdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVvdGUoICRQYXJhbXtMaW1pdH0sICdJbnRlZ2VyJyApOwogICAgfQoKICAgICMgYWRkIHRoZSBvcmRlciBieSBjb2x1bW5zIGFsc28gdG8gdGhlIHNlbGVjdGVkIGNvbHVtbnMKICAgIG15ICRPcmRlckJ5U2VsZWN0U3RyaW5nID0gJyc7CiAgICBpZiAoQE9yZGVyQnlTZWxlY3RDb2x1bW5zKSB7CiAgICAgICAgJE9yZGVyQnlTZWxlY3RTdHJpbmcgPSBqb2luICcsICcsIEBPcmRlckJ5U2VsZWN0Q29sdW1uczsKICAgICAgICAkT3JkZXJCeVNlbGVjdFN0cmluZyA9ICcsICcgLiAkT3JkZXJCeVNlbGVjdFN0cmluZzsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICJTRUxFQ1QgRElTVElOQ1QgdnIuY29uZmlnaXRlbV9pZCAkT3JkZXJCeVNlbGVjdFN0cmluZyAiCiAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtIGNpLCBjb25maWdpdGVtX3ZlcnNpb24gdnIgJwogICAgICAgIC4gJFdoZXJlU3RyaW5nOwoKICAgICMgYWRkIHRoZSBPUkRFUiBCWSBjbGF1c2UKICAgIGlmIChAU1FMT3JkZXJCeSkgewogICAgICAgICRTUUwgLj0gJyBPUkRFUiBCWSAnOwogICAgICAgICRTUUwgLj0gam9pbiAnLCAnLCBAU1FMT3JkZXJCeTsKICAgICAgICAkU1FMIC49ICcgJzsKICAgIH0KCiAgICAjIGFzayB0aGUgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAQ29uZmlnSXRlbUxpc3Q7CiAgICB3aGlsZSAoIG15ICgkSWQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBDb25maWdJdGVtTGlzdCwgJElkOwogICAgfQoKICAgIHJldHVybiBcQENvbmZpZ0l0ZW1MaXN0Owp9Cgo9aGVhZDIgVmVyc2lvbkF0dGFjaG1lbnRBZGQoKQoKYWRkcyBhbiBhdHRhY2htZW50IHRvIGEgY29uZmlnIGl0ZW0KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICBWZXJzaW9uSUQgICAgPT4gMSwKICAgICAgICBGaWxlbmFtZSAgICAgICAgPT4gJ2ZpbGVuYW1lJywKICAgICAgICBDb250ZW50ICAgICAgICAgPT4gJ2NvbnRlbnQnLAogICAgICAgIENvbnRlbnRUeXBlICAgICA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhWZXJzaW9uSUQgRmlsZW5hbWUgQ29udGVudCBDb250ZW50VHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgd3JpdGUgdG8gdmlydHVhbCBmcwogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPldyaXRlKAogICAgICAgIEZpbGVuYW1lICAgID0+ICJDb25maWdJdGVtVmVyc2lvbi8kUGFyYW17VmVyc2lvbklEfS8kUGFyYW17RmlsZW5hbWV9IiwKICAgICAgICBNb2RlICAgICAgICA9PiAnYmluYXJ5JywKICAgICAgICBDb250ZW50ICAgICA9PiBcJFBhcmFte0NvbnRlbnR9LAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQ29udGVudElEICAgPT4gJFBhcmFte0NvbnRlbnRJRH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRQYXJhbXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgIFZlcnNpb25JRCAgID0+ICRQYXJhbXtWZXJzaW9uSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBlcnJvcgogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW5ub3QgYWRkIGF0dGFjaG1lbnQgZm9yIGNvbmZpZyBpdGVtIHZlcnNpb24gJFBhcmFte1ZlcnNpb25JRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZlcnNpb25BdHRhY2htZW50RGVsZXRlKCkKCkRlbGV0ZSB0aGUgZ2l2ZW4gZmlsZSBmcm9tIHRoZSB2aXJ0dWFsIGZpbGVzeXN0ZW0uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgVmVyc2lvbklEID0+IDEyMywgICAgICAgICAgICAgICAjIHVzZWQgaW4gZXZlbnQgaGFuZGxpbmcsIGUuZy4gZm9yIGxvZ2dpbmcgdGhlIGhpc3RvcnkKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJ1Byb2plY3RwbGFuLnBkZicsICMgaWRlbnRpZmllcyB0aGUgYXR0YWNobWVudCAodG9nZXRoZXIgd2l0aCB0aGUgVmVyc2lvbklEKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBWZXJzaW9uQXR0YWNobWVudERlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbklEIEZpbGVuYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGRlbGV0ZSBmaWxlCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RGVsZXRlKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICk7CgogICAgIyBjaGVjayBmb3IgZXJyb3IKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGRlbGV0ZSBhdHRhY2htZW50ICRGaWxlbmFtZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBWZXJzaW9uQXR0YWNobWVudEdldCgpCgpUaGlzIG1ldGhvZCByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IG9uZSBzcGVjaWZpYyBhdHRhY2htZW50LgoKICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgIFZlcnNpb25JRCA9PiA0LAogICAgICAgIEZpbGVuYW1lICAgICA9PiAndGVzdC50eHQnLAogICAgKTsKCnJldHVybnMKCiAgICB7CiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBBbGxQcmVmZXJlbmNlcyA9PiAndGVzdCcsCiAgICAgICAgfSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAndGVzdC50eHQnLAogICAgICAgIENvbnRlbnQgICAgID0+ICdjb250ZW50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgRmlsZXNpemUgICAgPT4gMTIzNDg0MDksCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgfQoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFZlcnNpb25JRCBGaWxlbmFtZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgaWYgKCAhQEF0dGFjaG1lbnRzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YSBmb3IgYXR0YWNobWVudAogICAgbXkgJUF0dGFjaG1lbnREYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5SZWFkKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICAgICBNb2RlICAgICA9PiAnYmluYXJ5JywKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRJbmZvID0gewogICAgICAgICVBdHRhY2htZW50RGF0YSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRBdHRhY2htZW50RGF0YXtDb250ZW50fSB9LAogICAgICAgIENvbnRlbnRUeXBlID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc30tPntDb250ZW50VHlwZX0sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgIEZpbGVzaXplICAgID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc30tPntGaWxlc2l6ZVJhd30sCiAgICB9OwoKICAgIHJldHVybiAkQXR0YWNobWVudEluZm87Cn0KCj1oZWFkMiBWZXJzaW9uQXR0YWNobWVudExpc3QoKQoKUmV0dXJucyBhbiBhcnJheSB3aXRoIGFsbCBhdHRhY2htZW50cyBvZiB0aGUgZ2l2ZW4gY29uZmlnIGl0ZW0uCgogICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICBAQXR0YWNobWVudHMgPSAoCiAgICAgICAgJ2ZpbGVuYW1lLnR4dCcsCiAgICAgICAgJ290aGVyX2ZpbGUucGRmJywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkF0dGFjaG1lbnRMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBmaW5kIGFsbCBhdHRhY2htZW50cyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICBteSBAQXR0YWNobWVudHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPkZpbmQoCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgZm9yIG15ICRGaWxlbmFtZSAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICMgcmVtb3ZlIGV4dHJhIGluZm9ybWF0aW9uIGZyb20gZmlsZW5hbWUKICAgICAgICAkRmlsZW5hbWUgPX4gc3sgXEEgQ29uZmlnSXRlbVZlcnNpb24gLyBcZCsgLyB9e314bXM7CiAgICB9CgogICAgcmV0dXJuIEBBdHRhY2htZW50czsKfQoKPWhlYWQyIFZlcnNpb25BdHRhY2htZW50RXhpc3RzKCkKCkNoZWNrcyBpZiBhIGZpbGUgd2l0aCBhIGdpdmVuIGZpbGVuYW1lIGV4aXN0cy4KCiAgICBteSAkRXhpc3RzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50RXhpc3RzKAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC50eHQnLAogICAgICAgIFZlcnNpb25JRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhGaWxlbmFtZSBWZXJzaW9uSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBGaWxlbmFtZSA9PiAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfVXBkYXRlQ3VyQXR0ciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDdXJJbmNpU3RhdGVJRDsKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAwOwoKICAgICMgaWYgdGhlIGxhc3QgdmVyc2lvbiBkb2VzIG5vdCB5ZXQgaGF2ZSBhIEN1ckluY2lTdGF0ZUlEIHlldCB0aGUgQ29uZmlnSXRlbSBpcyBuZXcKICAgICMgc2V0IGN1cnJlbnQgSW5jaVN0YXRlSUQ7IHJlY2FsY3VsYXRpb24gaXMgbm90IG5lY2Vzc2FyeSAobm8gbGlua3MgY2FuIGV4aXN0IHlldCkKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0xhc3RWZXJzaW9ufXtDdXJJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJFBhcmFte1ZlcnNpb259e0luY2lTdGF0ZUlEfTsKICAgIH0KCiAgICAjIGlmIHRoZSBjb25maWcgaXRlbSB1cGRhdGUgZG9lcyBub3QgY2hhbmdlIHRoZSBJbmNpU3RhdGVJRAogICAgIyB3ZSBqdXN0IGtlZXAgdGhlIEN1ckluY2lTdGF0ZUlEOyBubyByZWNhbGN1bGF0aW9uCiAgICBlbHNpZiAoICRQYXJhbXtWZXJzaW9ufXtJbmNpU3RhdGVJRH0gZXEgJFBhcmFte0xhc3RWZXJzaW9ufXtJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJFBhcmFte0xhc3RWZXJzaW9ufXtDdXJJbmNpU3RhdGVJRH07CiAgICB9CgogICAgIyBpZiB0aGUgaW5jaWRlbnQgc3RhdGUgY2hhbmdlcywgd2Ugc3RhcnQgdGhlIHJlY2FsY3VsYXRpb24KICAgICMgd2UgZG8gbm90IHRlc3QgZm9yIGNhc2VzIGxpa2Ugc2FtZSBJbmNpU3RhdGVUeXBlLCBvciBuZXcgSW5jaVN0YXRlIGVxIGxhc3QgQ3VySW5jaVN0YXRlCiAgICBlbHNlIHsKICAgICAgICAkQ3VySW5jaVN0YXRlSUQgICAgID0gJFBhcmFte1ZlcnNpb259e0luY2lTdGF0ZUlEfTsKICAgICAgICAkUmVjYWxjQ3VySW5jaVN0YXRlID0gMTsKICAgIH0KCiAgICAjIFVwZGF0ZSBsYXN0IHZlcnNpb24sIGN1cl9pbmNpX3N0YXRlX2lkLCBjdXJfZGVwbF9zdGF0ZV9pZCBvZiB0aGUgY29uZmlnIGl0ZW0uCiAgICAjIGN1cl9pbmNpX3N0YXRlX2lkIGlzIG5lZWRlZCBieSBDdXJJbmNpU3RhdGVSZWNhbGMoKS4KICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKVVBEQVRFIGNvbmZpZ2l0ZW0KICBTRVQKICAgIGxhc3RfdmVyc2lvbl9pZCAgID0gPywKICAgIGN1cl9pbmNpX3N0YXRlX2lkID0gPywKICAgIGN1cl9kZXBsX3N0YXRlX2lkID0gPywKICAgIGNoYW5nZV90aW1lICAgICAgID0gY3VycmVudF90aW1lc3RhbXAsCiAgICBjaGFuZ2VfYnkgICAgICAgICA9ID8KICBXSEVSRSBpZCA9ID8KRU5EX1NRTAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgICAgIFwkQ3VySW5jaVN0YXRlSUQsCiAgICAgICAgICAgIFwkUGFyYW17VmVyc2lvbn17RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgY3VycmVudCBhdHRyaWJ1dGVzIG9mIENvbmZpZ0l0ZW1JRCAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRSZWNhbGNDdXJJbmNpU3RhdGU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/VersionString/Incremental.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6SW5jcmVtZW50YWw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OkluY3JlbWVudGFsIC0gVXNpbmcgYSBjb3VudGVyIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKbXkgJFZlcnNpb25TdHJpbmdNb2R1bGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OkluY3JlbWVudGFsJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcygge30sICRUeXBlICk7Cn0KCnN1YiBWZXJzaW9uU3RyaW5nR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRQYXJhbXtWZXJzaW9ufXtWZXJzaW9uU3RyaW5nfSBpZiAoICRQYXJhbXtWZXJzaW9ufXtWZXJzaW9uU3RyaW5nfSAmJiAhJFBhcmFte1ZlcnNpb25BZGR9ICk7CgogICAgIyBleHBlY3RlZCBwYXJhbXM6IFZlcnNpb24KICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgKICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJFBhcmFte1ZlcnNpb259e0NvbmZpZ0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRWZXJzaW9uTGlzdFJlZik7CgogICAgbXkgJEluaXRpYWxWZXJzaW9uU3RyaW5nID0gKCBzY2FsYXIga2V5cyAkVmVyc2lvbkxpc3RSZWYtPnsgJFBhcmFte1ZlcnNpb259e0NvbmZpZ0l0ZW1JRH0gfS0+JSogKSArIDE7CiAgICBteSAkVmVyc2lvblN0cmluZzsKICAgIHdoaWxlICggIWRlZmluZWQgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgaWYgKCBncmVwIHsgJF8tPntWZXJzaW9uU3RyaW5nfSBlcSAkSW5pdGlhbFZlcnNpb25TdHJpbmcgfSB2YWx1ZXMgJFZlcnNpb25MaXN0UmVmLT57ICRQYXJhbXtWZXJzaW9ufXtDb25maWdJdGVtSUR9IH0tPiUqICkgewogICAgICAgICAgICAkSW5pdGlhbFZlcnNpb25TdHJpbmcrKzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRWZXJzaW9uU3RyaW5nID0gJEluaXRpYWxWZXJzaW9uU3RyaW5nOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFZlcnNpb25TdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/VersionString/TemplateToolkit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0IC0gRXZhbHVhdGluZyBhIFRlbXBsYXRlOjpUb29sa2l0IGV4cHJlc3Npb24gZm9yIHRoZSB2ZXJzaW9uIHN0cmluZwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdC4gRG8gbm90IHVzZSBpdCBkaXJlY3RseSwgaW5zdGVhZCB1c2U6CgpteSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcygge30sICRUeXBlICk7Cn0KCnN1YiBWZXJzaW9uU3RyaW5nR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte1ZlcnNpb259ICk7CiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtWZXJzaW9ufXtDbGFzc0lEfTsKCiAgICAjIGZldGNoIGV4cHJlc3Npb24gZnJvbSBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgcHJlZmVyZW5jZXMKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufXtDbGFzc0lEfSwKICAgICk7CiAgICByZXR1cm4gdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSggJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ0V4cHJlc3Npb259ICk7CgogICAgIyBldmFsdWF0ZSBleHByZXNzaW9uIGRlZmluZWQgaW4gc3lzY29uZmlnCiAgICBteSAkVmVyc2lvblN0cmluZyA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlID0+ICRDbGFzc1ByZWZlcmVuY2Vze1ZlcnNpb25TdHJpbmdFeHByZXNzaW9ufVswXSwKICAgICAgICBEYXRhICAgICA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJFZlcnNpb25TdHJpbmc7CgogICAgIyByZW1vdmUgbmV3bGluZXMgYW5kIGNhcnJpYWdlIHJldHVybnMgdG8gZW5hYmxlIG1hdGNoaW5nIHdpdGggZWRpdCBmaWVsZCB2YWx1ZQogICAgJFZlcnNpb25TdHJpbmcgPX4gcy8oXG58XHIpLy9nOwoKICAgICMgaWYgcHJldmlvdXMgdmVyc2lvbnMgZXhpc3QsIGNoZWNrIGlmIHN0cmluZyBpcyB0YWtlbgogICAgIyBmZXRjaCB2ZXJzaW9ucwogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25MaXN0QWxsKAogICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICBpZiAoIGdyZXAgeyAkXy0+e1ZlcnNpb25TdHJpbmd9IGVxICRWZXJzaW9uU3RyaW5nIH0gdmFsdWVzICRWZXJzaW9uTGlzdFJlZi0+eyAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSB9LT4lKiApIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9uU3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ImportExport/ObjectBackend/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgRW5jb2RlOwp1c2UgTGlzdDo6QWxsVXRpbHMgcXcoZmlyc3QpOwp1c2UgTUlNRTo6QmFzZTY0ICAgcXcoZGVjb2RlX2Jhc2U2NCBlbmNvZGVfYmFzZTY0KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc1N0cmluZ1dpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhIElzQXJyYXlSZWZXaXRoRGF0YSBJc1Bvc2l0aXZlSW50ZWdlcik7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpKU09OJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbSAtIGltcG9ydC9leHBvcnQgYmFja2VuZCBmb3IgSVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGZ1bmN0aW9ucyB0byBpbXBvcnQgYW5kIGV4cG9ydCBJVFNNIGNvbmZpZyBpdGVtcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgT2JqZWN0QXR0cmlidXRlc0dldCgpCgpnZXQgdGhlIG9iamVjdCBhdHRyaWJ1dGVzIG9mIGFuIG9iamVjdCBhcyBhIHJlZiB0byBhbiBhcnJheSBvZiBoYXNoIHJlZmVyZW5jZXMKCiAgICBteSAkQXR0cmlidXRlcyA9ICRPYmplY3RCYWNrZW5kLT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RBdHRyaWJ1dGVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0CiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDbGFzc0lEJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdDbGFzcycpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4JywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICczJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4U2V0T3V0ZXInLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50JyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBWYWx1ZURlZmF1bHQgPT4gJzAnLAogICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgID0+IDAsCiAgICAgICAgICAgICAgICBSZWdleCAgICAgICAgPT4gcXJ7IFxBIFxkKiBceiB9eG1zLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIE1heExlbmd0aCAgICA9PiA1LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ291bnRNYXhTZXRJbm5lcicsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICcwJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0VtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNsdWRlQXR0YWNobWVudHMnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXTsKfQoKPWhlYWQyIE1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KCkKCmdldHMgdGhlIG1hcHBpbmcgYXR0cmlidXRlcyBvZiBhbiBvYmplY3QgYXMgcmVmZXJlbmNlIHRvIGFuIGFycmF5IG9mIGhhc2ggcmVmZXJlbmNlcy4KCiAgICBteSAkQXR0cmlidXRlcyA9ICRPYmplY3RCYWNrZW5kLT5NYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgKICAgICAgICBUZW1wbGF0ZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkQXR0cmlidXRlcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIERhdGEgPT4gWwogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJOdW1iZXIiLCBWYWx1ZSA9PiAiTnVtYmVyIiB9LAogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJOYW1lIiwgVmFsdWUgPT4gIk5hbWUiIH0sCiAgICAgICAgICAgICAgICAgICAgeyBLZXkgPT4gIkRlcGxTdGF0ZSIsIFZhbHVlID0+ICJEZXBsb3ltZW50IFN0YXRlIiB9LAogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJJbmNpU3RhdGUiLCBWYWx1ZSA9PiAiSW5jaWRlbnQgU3RhdGUiIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIk5hbWVzcGFjZUJvZGVuLUJvZGVuZmFyYmU6OjEiLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAiTmFtZXNwYWNlQm9kZW4tQm9kZW5mYXJiZTo6MSIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEtleSA9PiAiTmFtZXNwYWNlQm9kZW4tQm9kZW5mYXJiZTo6MiIsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICJOYW1lc3BhY2VCb2Rlbi1Cb2RlbmZhcmJlOjoyIiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJOYW1lc3BhY2VCb2Rlbi1Cb2RlbmZhcmJlOjozIiwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIk5hbWVzcGFjZUJvZGVuLUJvZGVuZmFyYmU6OjMiLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICAgICAgICAgIFR5cGUgPT4gIlNlbGVjdGlvbiIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEtleSAgID0+ICJLZXkiLAogICAgICAgICAgICBOYW1lICA9PiAiS2V5IiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSW5wdXQgPT4geyBUeXBlID0+ICJDaGVja2JveCIgfSwKICAgICAgICAgICAgS2V5ICAgPT4gIklkZW50aWZpZXIiLAogICAgICAgICAgICBOYW1lICA9PiAiSWRlbnRpZmllciIsCiAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhCiAgICBteSAkT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk9iamVjdERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkT2JqZWN0RGF0YTsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICRPYmplY3REYXRhIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJE9iamVjdERhdGEtPntDbGFzc0lEfTsKCiAgICAjIGdldCBkZWZpbml0aW9uIGZvciB0aGUgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICAjIG5vIGVycm9yIGhhbmRsaW5nCiAgICByZXR1cm4gdW5sZXNzICREZWZpbml0aW9uOwogICAgcmV0dXJuIHVubGVzcyByZWYgJERlZmluaXRpb24gZXEgJ0hBU0gnOwogICAgcmV0dXJuIHVubGVzcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn07CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwoKICAgIG15IEBFbGVtZW50cyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ051bWJlcicpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnTmFtZScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdWZXJzaW9uU3RyaW5nJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdWZXJzaW9uIFN0cmluZycpLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGRlc2NyaXB0aW9uIGlmIGRlZmluZWQKICAgIG15ICRIYXNEZXNjcmlwdGlvbiA9ICggZ3JlcCB7ICRfLT57VHlwZX0gJiYgJF8tPntUeXBlfSBlcSAnRGVzY3JpcHRpb24nIH0gdmFsdWVzICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9LT4lKiApID8gMSA6IDA7CiAgICBpZiAoJEhhc0Rlc2NyaXB0aW9uKSB7CiAgICAgICAgcHVzaCBARWxlbWVudHMsIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdEZXNjcmlwdGlvbicpLAogICAgICAgIH07CiAgICB9CgogICAgIyBhZGQgZWxlbWVudHMKICAgIHB1c2ggQEVsZW1lbnRzLCAkU2VsZi0+X01hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIER5bmFtaWNGaWVsZFJlZiAgICAgICA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sICAgICMgcGFnZSBsYXlvdXQgaXMgaWdub3JlZCBoZXJlCiAgICAgICAgQ291bnRNYXhMaW1pdCAgICAgICAgID0+ICRPYmplY3REYXRhLT57Q291bnRNYXh9ICAgICAgICAgfHwgMywKICAgICAgICBDb3VudE1heFNldE91dGVyTGltaXQgPT4gJE9iamVjdERhdGEtPntDb3VudE1heFNldE91dGVyfSB8fCAwLAogICAgICAgIENvdW50TWF4U2V0SW5uZXJMaW1pdCA9PiAkT2JqZWN0RGF0YS0+e0NvdW50TWF4U2V0SW5uZXJ9IHx8IDAsCiAgICApOwoKICAgIHJldHVybiBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnS2V5JywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdLZXknKSwKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxARWxlbWVudHMsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJZGVudGlmaWVyJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdJZGVudGlmaWVyJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXTsKfQoKPWhlYWQyIFNlYXJjaEF0dHJpYnV0ZXNHZXQoKQoKZ2V0IHRoZSBzZWFyY2ggb2JqZWN0IGF0dHJpYnV0ZXMgb2YgYW4gb2JqZWN0IGFzIGFycmF5L2hhc2ggcmVmZXJlbmNlCgogICAgbXkgJEF0dHJpYnV0ZUxpc3QgPSAkT2JqZWN0QmFja2VuZC0+U2VhcmNoQXR0cmlidXRlc0dldCgKICAgICAgICBUZW1wbGF0ZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhCiAgICBteSAkT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk9iamVjdERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkT2JqZWN0RGF0YTsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICRPYmplY3REYXRhIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJE9iamVjdERhdGEtPntDbGFzc0lEfTsKCiAgICAjIGdldCBkZWZpbml0aW9uCiAgICBteSAkRGVmaW5pdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJE9iamVjdERhdGEtPntDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkRGVmaW5pdGlvbjsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICREZWZpbml0aW9uIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIFtdIHVubGVzcyByZWYgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKCiAgICAjIGdldCBkZXBsb3ltZW50IGFuZCBpbmNpZGVudCBzdGF0ZSBsaXN0cywgaWdub3JpbmcgZXJyb3JzCiAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyBkZWZpbmVkICREZXBsU3RhdGVMaXN0OwoKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyBkZWZpbmVkICRJbmNpU3RhdGVMaXN0OwoKICAgIG15IEBBdHRyaWJ1dGVzID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTnVtYmVyJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gODAsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTkxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTmFtZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDgwLAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDE5MSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSW5jaVN0YXRlSURzJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdJbmNpZGVudCBTdGF0ZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTGltaXQnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0xpbWl0JyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gODAsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTkxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGR5bmFtaWMgZmllbGQgYXR0cmlidXRlcwogICAgcHVzaCBAQXR0cmlidXRlcywgJFNlbGYtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICk7CgogICAgcmV0dXJuIFxAQXR0cmlidXRlczsKfQoKPWhlYWQyIEV4cG9ydERhdGFHZXQoKQoKZ2V0IGV4cG9ydCBkYXRhIGFzIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5IGZvciBhcnJheSByZWZlcmVuY2VzLCB0aGF0IGlzIGEgQzwyRC10YWJsZT4KCiAgICBteSAkUm93cyA9ICRPYmplY3RCYWNrZW5kLT5FeHBvcnREYXRhR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0RGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUZW1wbGF0ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRJbXBvcnRFeHBvcnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0Jyk7CgogICAgIyBnZXQgb2JqZWN0IGRhdGEKICAgIG15ICRPYmplY3REYXRhID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YUdldCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIG9iamVjdCBkYXRhCiAgICBpZiAoICEkT2JqZWN0RGF0YSB8fCByZWYgJE9iamVjdERhdGEgbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gb2JqZWN0IGRhdGEgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAkUGFyYW17VGVtcGxhdGVJRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjbGFzcyBpZCBmcm9tIHRoZSB0ZW1wbGF0ZQogICAgewogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkICRDbGFzc0xpc3Q7CgogICAgICAgIGlmICggISRPYmplY3REYXRhLT57Q2xhc3NJRH0gfHwgISRDbGFzc0xpc3QtPnsgJE9iamVjdERhdGEtPntDbGFzc0lEfSB9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIGNsYXNzIGlkIGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIElEcyBmb3IgdGhlIG1hcHBpbmcgaW4gdGhpcyB0ZW1wbGF0ZQogICAgbXkgJE1hcHBpbmdJRHMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nTGlzdCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHRoZSBtYXBwaW5nIGxpc3QKICAgIGlmICggISRNYXBwaW5nSURzIHx8IHJlZiAkTWFwcGluZ0lEcyBuZSAnQVJSQVknIHx8ICEkTWFwcGluZ0lEcy0+QCogKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gdmFsaWQgbWFwcGluZyBsaXN0IGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgdGhlIG1hcHBpbmcgb2JqZWN0IGxpc3QKICAgIG15IEBNYXBwaW5nT2JqZWN0TGlzdDsKICAgIGZvciBteSAkTWFwcGluZ0lEICggJE1hcHBpbmdJRHMtPkAqICkgewoKICAgICAgICAjIGdldCBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgbXkgJE1hcHBpbmdPYmplY3REYXRhID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFHZXQoCiAgICAgICAgICAgIE1hcHBpbmdJRCA9PiAkTWFwcGluZ0lELAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKCAhJE1hcHBpbmdPYmplY3REYXRhIHx8IHJlZiAkTWFwcGluZ09iamVjdERhdGEgbmUgJ0hBU0gnICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIG1hcHBpbmcgbGlzdCBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICRQYXJhbXtUZW1wbGF0ZUlEfSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBNYXBwaW5nT2JqZWN0TGlzdCwgJE1hcHBpbmdPYmplY3REYXRhOwogICAgfQoKICAgICMgZ2V0IHNlYXJjaCBkYXRhCiAgICBteSAkU2VhcmNoRGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkU2VhcmNoRGF0YTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRTZWFyY2hEYXRhIGVxICdIQVNIJzsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QsIGZvciB0cmFuc2xhdGluZyB0aGUgbnVtZXJpYyBJRHMgaW50byByZWFkYWJsZSBuYW1lcwogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwogICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QgfHwgcmVmICREZXBsU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBnZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBsaXN0IElUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0LCBmb3IgdHJhbnNsYXRpbmcgdGhlIG51bWVyaWMgSURzIGludG8gcmVhZGFibGUgbmFtZXMKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CiAgICBpZiAoICEkSW5jaVN0YXRlTGlzdCB8fCByZWYgJEluY2lTdGF0ZUxpc3QgbmUgJ0hBU0gnICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGdldCB0aGUgZ2VuZXJhbCBjYXRhbG9nIGxpc3QgSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjdXJyZW50IGRlZmluaXRpb24gb2YgdGhpcyBjbGFzcwogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRPYmplY3REYXRhLT57Q2xhc3NJRH0sCiAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJVNlYXJjaFBhcmFtczsKCiAgICAjIGFkZCBudW1iZXIgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgIGlmICggJFNlYXJjaERhdGEtPntOdW1iZXJ9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7TnVtYmVyfSA9IGRlbGV0ZSAkU2VhcmNoRGF0YS0+e051bWJlcn07CiAgICB9CgogICAgIyBhZGQgbmFtZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgaWYgKCAkU2VhcmNoRGF0YS0+e05hbWV9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7TmFtZX0gPSBkZWxldGUgJFNlYXJjaERhdGEtPntOYW1lfTsKICAgIH0KCiAgICAjIGFkZCBkZXBsb3ltZW50IHN0YXRlIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICBpZiAoICRTZWFyY2hEYXRhLT57RGVwbFN0YXRlSURzfSApIHsKICAgICAgICBteSBARGVwbFN0YXRlSURzID0gc3BsaXQgLyMjIyMjLywgJFNlYXJjaERhdGEtPntEZXBsU3RhdGVJRHN9OwogICAgICAgICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSA9IFxARGVwbFN0YXRlSURzOwogICAgICAgIGRlbGV0ZSAkU2VhcmNoRGF0YS0+e0RlcGxTdGF0ZUlEc307CiAgICB9CgogICAgIyBhZGQgaW5jaWRlbnQgc3RhdGUgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgIGlmICggJFNlYXJjaERhdGEtPntJbmNpU3RhdGVJRHN9ICkgewogICAgICAgIG15IEBJbmNpU3RhdGVJRHMgPSBzcGxpdCAvIyMjIyMvLCAkU2VhcmNoRGF0YS0+e0luY2lTdGF0ZUlEc307CiAgICAgICAgJFNlYXJjaFBhcmFtc3tJbmNpU3RhdGVJRHN9ID0gXEBJbmNpU3RhdGVJRHM7CiAgICAgICAgZGVsZXRlICRTZWFyY2hEYXRhLT57SW5jaVN0YXRlSURzfTsKICAgIH0KCiAgICAjIGFkZCBsaW1pdCB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgaWYgKCBJc1Bvc2l0aXZlSW50ZWdlciggJFNlYXJjaERhdGEtPntMaW1pdH0gKSApIHsKICAgICAgICAkU2VhcmNoUGFyYW1ze0xpbWl0fSA9IGRlbGV0ZSAkU2VhcmNoRGF0YS0+e0xpbWl0fTsKICAgIH0KCiAgICAjIGFkZCBhbGwgZHluYW1pYyBmaWVsZCBkYXRhIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICBteSAlREZTZWFyY2hQYXJhbXMgPSAkU2VsZi0+X0RGU2VhcmNoRGF0YVByZXBhcmUoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICBTZWFyY2hEYXRhICAgICAgPT4gJFNlYXJjaERhdGEsCiAgICApOwogICAgQFNlYXJjaFBhcmFtc3sga2V5cyAlREZTZWFyY2hQYXJhbXMgfSA9IHZhbHVlcyAlREZTZWFyY2hQYXJhbXM7CgogICAgIyBzZWFyY2ggdGhlIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAlU2VhcmNoUGFyYW1zLAogICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRPYmplY3REYXRhLT57Q2xhc3NJRH0gXSwKICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMCwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICApOwoKICAgICMgSlNPTiBzdXBwb3J0IG1pZ2h0IGJlIG5lZWRlZCBmb3IgU2V0IGR5bmFtaWMgZmllbGRzCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgbXkgJEZvcm1hdHRlckNhbkhhbmRsZVJlZmVyZW5jZXMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5Gb3JtYXR0ZXJDYW5IYW5kbGVSZWZlcmVuY2VzKAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15IEBSb3dzOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGNvbmZpZyBpdGVtLCBpbmNsdWRpbmcgdGhlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgdW5sZXNzICRDb25maWdJdGVtOwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIHVubGVzcyByZWYgJENvbmZpZ0l0ZW0gZXEgJ0hBU0gnOwoKICAgICAgICAjIGFkZCBkYXRhIHRvIHRoZSBleHBvcnQgZGF0YSBhcnJheQogICAgICAgIG15IEBSb3dJdGVtczsKICAgICAgICBNQVBQSU5HT0JKRUNUOgogICAgICAgIGZvciBteSAkTWFwcGluZ09iamVjdCAoQE1hcHBpbmdPYmplY3RMaXN0KSB7CgogICAgICAgICAgICAjIGV4dHJhY3Qga2V5CiAgICAgICAgICAgIG15ICRLZXkgPSAkTWFwcGluZ09iamVjdC0+e0tleX07CgogICAgICAgICAgICAjIGhhbmRsZSBlbXB0eSBrZXkKICAgICAgICAgICAgaWYgKCAhJEtleSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAnJzsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGNvbmZpZyBpdGVtIG51bWJlcgogICAgICAgICAgICBpZiAoICRLZXkgZXEgJ051bWJlcicgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgY3VycmVudCBjb25maWcgaXRlbSBuYW1lCiAgICAgICAgICAgIGlmICggJEtleSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJENvbmZpZ0l0ZW0tPntOYW1lfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGRlcGxveW1lbnQgc3RhdGUKICAgICAgICAgICAgaWYgKCAkS2V5IGVxICdEZXBsU3RhdGUnICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVJRH0gfHw9ICdEVU1NWSc7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJERlcGxTdGF0ZUxpc3QtPnsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVJRH0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGluY2lkZW50IHN0YXRlCiAgICAgICAgICAgIGlmICggJEtleSBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57SW5jaVN0YXRlSUR9IHx8PSAnRFVNTVknOwogICAgICAgICAgICAgICAgcHVzaCBAUm93SXRlbXMsICRJbmNpU3RhdGVMaXN0LT57ICRDb25maWdJdGVtLT57SW5jaVN0YXRlSUR9IH07CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGhhbmRsZSBkZXNjcmlwdGlvbgogICAgICAgICAgICBpZiAoICRLZXkgZXEgJ0Rlc2NyaXB0aW9uJyApIHsKCiAgICAgICAgICAgICAgICBteSAkRGVzY3JpcHRpb24gPSAkQ29uZmlnSXRlbS0+e0Rlc2NyaXB0aW9ufTsKCiAgICAgICAgICAgICAgICAjIHByZXBhcmUgZGVzY3JpcHRpb24gaW5saW5lIGltYWdlcyBmb3IgZXhwb3J0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyBmZXRjaCBjb25maWcgaXRlbSBhdHRhY2htZW50IGxpc3QgZm9yIGhhbmRsaW5nIGlubGluZSBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBmZXRjaCBhdHRhY2htZW50IGRhdGEgYW5kIHJlcGxhY2UgY29udGVudCBpZCBpbiBkZXNjcmlwdGlvbiB3aXRoIGJhc2U2NC1lbmNvZGVkIGF0dGFjaG1lbnQgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRGaWxlbmFtZSAoQEF0dGFjaG1lbnRMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57Q29udGVudElEfSA9ICRBdHRhY2htZW50LT57UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH07CgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRUeXBlIERpc3Bvc2l0aW9uICkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57JEtleX0gPSBFbmNvZGU6OmVuY29kZSggJ1VURi04JywgJEF0dGFjaG1lbnQtPnskS2V5fSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50SUQgQ29udGVudFR5cGUgRGlzcG9zaXRpb24gQ29udGVudCBDb250ZW50QWx0ZXJuYXRpdmUgKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSAvLz0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudFN0cmluZyAuPSAkQXR0YWNobWVudFN0cmluZyA/ICcjIyMnIDogJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudFN0cmluZyAuPSAkS2V5IC4gJyMjIycgLiBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+eyRLZXl9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICREZXNjcmlwdGlvbiA9fiBzLyg/PG9wZW4+c3JjPSIpKGNpZDopKD88Y2lkPiRBdHRhY2htZW50LT57Q29udGVudElEfSkoPzxjbG9zZT4iICkvJCt7b3Blbn0kQXR0YWNobWVudFN0cmluZyQre2Nsb3NlfS9nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJERlc2NyaXB0aW9uOwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgdmVyc2lvbiBzdHJpbmcKICAgICAgICAgICAgaWYgKCAkS2V5IGVxICdWZXJzaW9uU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBbGwgb3RoZXIgYXR0cmlidXRlcyBpbmRpY2F0ZSBkeW5hbWljIGZpZWxkcy4KICAgICAgICAgICAgIyBUaGlzIGdldHMgd2hhdGV2ZXIgQ29uZmlnSXRlbUdldCgpIHB1dHMgaW50byB0aGUgb2JqZWN0LiBFLmcuIGZvciBHZW5lcmFsQ2F0YWxvZyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICAjIHdlIGdldCB0aGUgaXRlbSBJRCBpbnRvIHRoZSBnZW5lcmFsIGNhdGFsb2cuIFRoaXMgaXMgZmluZSBmb3IgSW1wb3J0L0V4cG9ydCwgYnV0IG5vdCByZWFsbHkgaHVtYW4gcmVhZGFibGUuCiAgICAgICAgICAgICMgTm90ZSB0aGF0IHRoaW5ncyBsaWtlIHRoZSBpbmNpZGVudCBzdGF0ZSBhcmUgbG9va2VkIHVwLgoKICAgICAgICAgICAgIyBUaGUgS2V5IGVuY29kZXMgc29tZSBleHRyYSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhlIGluZGV4ZXMgc3RhcnQgYXQgMSBpbiB0aGUga2V5IG5hbWVzCiAgICAgICAgICAgIG15ICggJERGRnVsbE5hbWUsICRJbmRleCwgJElubmVyREYsICRJbm5lckluZGV4ICkgPSBzcGxpdCAvOjovLCAkS2V5OwogICAgICAgICAgICBteSAkREZOYW1lOwogICAgICAgICAgICBpZiAoICRERkZ1bGxOYW1lID1+IC9eRHluYW1pY0ZpZWxkXyguKikvICkgewogICAgICAgICAgICAgICAgJERGTmFtZSA9ICQxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfTsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICMgaWdub3JlIHVuZXhwZWN0ZWQgaW5kZXhlcywgYnV0IHN0aWxsIGN1dCB0aGUgJzo6JwogICAgICAgICAgICBpZiAoIGRlZmluZWQgJEluZGV4ICYmICRJbmRleCAhfiBtL15bMS05XVswLTldKiQvICkgewogICAgICAgICAgICAgICAgdW5kZWYgJEluZGV4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSW5uZXJJbmRleCAmJiAkSW5uZXJJbmRleCAhfiBtL15bMS05XVswLTldKiQvICkgewogICAgICAgICAgICAgICAgdW5kZWYgJElubmVySW5kZXg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRDb25maWdJdGVtLT57JERGRnVsbE5hbWV9OwoKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJyc7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRoZSBmb3JtYXR0aW5nIGRlcGVuZHMgb24gdGhlIGNvbmZpZyBvZiB0aGUgZHluYW1pYyBmaWVsZCwgd2hpY2ggaXMgbm90IHJlYWxseSBuaWNlLgogICAgICAgICAgICBteSAkSXNNdWx0aVZhbHVlID0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e011bHRpVmFsdWV9ID8gMiA6IDA7CiAgICAgICAgICAgIG15ICRJc1NldCAgICAgICAgPSAoICRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gLy8gJycgKSBlcSAnU2V0JzsKCiAgICAgICAgICAgICMgaGFuZGxlIHNwZWNpYWwgY2FzZXMKICAgICAgICAgICAgbXkgJEFjdHVhbFZhbHVlID0gZXZhbCB7CgogICAgICAgICAgICAgICAgIyBhIHNwZWNpZmljIGluZGV4IHdhcyByZXF1ZXN0ZWQKICAgICAgICAgICAgICAgIGlmICggJElzTXVsdGlWYWx1ZSAmJiAkSW5kZXggKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRWYWx1ZS0+WyAkSW5kZXggLSAxIF0gLy8gJyc7ICAgICMgYXMgaWYgYW4gZW1wdHkgc3RyaW5nIHdlcmUgbm90IHZhbGlkCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBGb3IgU2V0IHNpbmdsZSBhbmQgbXVsdGl2YWx1ZSBmaWVsZHMgYmVoYXZlIHRoZSBzYW1lIHdheS4KICAgICAgICAgICAgICAgICMgTm8gbmVlZCB0byBzaGF2ZSBvZmYgYSBsZXZlbC4KICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWUgaWYgJElzU2V0OwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpcnN0IGVsZW1lbnQgZm9yIHNpbmdsZSB2YWx1ZSBmaWVsZHMKICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWUtPlswXSAvLyAnJyBpZiAoICEkSXNNdWx0aVZhbHVlICYmIHJlZiAkVmFsdWUgZXEgJ0FSUkFZJyApOwoKICAgICAgICAgICAgICAgICMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWU7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAjIGNoZWNrIGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBzZXQtaW5uZXIgZmllbGQKICAgICAgICAgICAgaWYgKCRJbm5lckRGKSB7CgogICAgICAgICAgICAgICAgIyBmZXRjaCBhbmQgc2V0IGZpZWxkIGNvbmZpZwogICAgICAgICAgICAgICAgbXkgJElubmVyRmllbGRJdGVtICAgPSBmaXJzdCB7ICRfLT57REZ9IGVxICRJbm5lckRGIH0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCo7CiAgICAgICAgICAgICAgICBteSAkSW5uZXJGaWVsZENvbmZpZyA9ICRJbm5lckZpZWxkSXRlbS0+e0RlZmluaXRpb259OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJElubmVyRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgc2V0IHZhbHVlCiAgICAgICAgICAgICAgICBteSAkSW5uZXJWYWx1ZSA9ICRBY3R1YWxWYWx1ZS0+eyRJbm5lckRGfTsKCiAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkICRJbm5lclZhbHVlICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAnJzsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgVGhlIGZvcm1hdHRpbmcgZGVwZW5kcyBvbiB0aGUgY29uZmlnIG9mIHRoZSBkeW5hbWljIGZpZWxkLCB3aGljaCBpcyBub3QgcmVhbGx5IG5pY2UuCiAgICAgICAgICAgICAgICBteSAkSW5uZXJJc011bHRpVmFsdWUgPSAkSW5uZXJGaWVsZENvbmZpZy0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gPyAyIDogMDsKCiAgICAgICAgICAgICAgICAjIGhhbmRsZSBzcGVjaWFsIGNhc2VzCiAgICAgICAgICAgICAgICBteSAkQWN0dWFsSW5uZXJWYWx1ZSA9IGV2YWwgewoKICAgICAgICAgICAgICAgICAgICAjIGEgc3BlY2lmaWMgaW5kZXggd2FzIHJlcXVlc3RlZAogICAgICAgICAgICAgICAgICAgIGlmICggJElubmVySXNNdWx0aVZhbHVlICYmICRJbm5lckluZGV4ICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJElubmVyVmFsdWUtPlsgJElubmVySW5kZXggLSAxIF0gLy8gJyc7ICAgICMgYXMgaWYgYW4gZW1wdHkgc3RyaW5nIHdlcmUgbm90IHZhbGlkCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGdldCBmaXJzdCBlbGVtZW50IGZvciBzaW5nbGUgdmFsdWUgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRJbm5lclZhbHVlLT5bMF0gLy8gJycgaWYgKCAhJElubmVySXNNdWx0aVZhbHVlICYmIHJlZiAkSW5uZXJWYWx1ZSBlcSAnQVJSQVknICk7CgogICAgICAgICAgICAgICAgICAgICMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJElubmVyVmFsdWU7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJEFjdHVhbFZhbHVlID0gJEFjdHVhbElubmVyVmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVGhpcyBpcyByZWxldmFudCBmb3IgZS5nLiB0aGUgQ1NWIGJhY2tlbmQgd2hpY2ggY2FuJ3QgdHJhbnNwYXJlbnRseSBzZXJpYWxpemUgZGF0YSBzdHJ1Y3R1cmVzLgogICAgICAgICAgICAjIFJlZmVyZW5jZXMgYXJlIEpTT05pZmllZC4gVGhpcyBoYXBwZW5zIHdoZW46CiAgICAgICAgICAgICMgLSBhIG11bHRpdmFsdWUgZmllbGQgZ2l2ZXMgYW4gYXJyYXkgcmVmZXJlbmNlCiAgICAgICAgICAgICMgLSBhIG11bHRpdmFsdWUgU2V0IGZpZWxkIGdpdmVzIGFuIGFycmF5IHJlZmVyZW5jZSB3aXRoIGFycmF5IHJlZmVyZW5jZXMgaW5zaWRlCiAgICAgICAgICAgICMgLSBhIHNpbmdsZXZhbHVlIFNldCBmaWVsZCBnaXZlcyBhbiBhcnJheSByZWZlcmVuY2UKICAgICAgICAgICAgaWYgKCAhJEZvcm1hdHRlckNhbkhhbmRsZVJlZmVyZW5jZXMgJiYgcmVmICRBY3R1YWxWYWx1ZSApIHsKCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJEpTT05PYmplY3QtPkVuY29kZSgKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiAkQWN0dWFsVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgU29ydEtleXMgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRoZSByZWd1bGFyIGNhc2UKICAgICAgICAgICAgcHVzaCBAUm93SXRlbXMsICRBY3R1YWxWYWx1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkT2JqZWN0RGF0YS0+e0luY2x1ZGVBdHRhY2htZW50c30gKSB7CiAgICAgICAgICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiApKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSA9IEVuY29kZTo6ZW5jb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudC0+eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRJRCBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiBDb250ZW50IENvbnRlbnRBbHRlcm5hdGl2ZSApKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSAvLz0gJyc7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRTdHJpbmcgLj0gJEF0dGFjaG1lbnRTdHJpbmcgPyAnIyMjJyA6ICcnOwogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50U3RyaW5nIC49ICRLZXkgLiAnIyMjJyAuIGVuY29kZV9iYXNlNjQoICRBdHRhY2htZW50LT57JEtleX0gKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHB1c2ggQFJvd3MsIFxAUm93SXRlbXM7CiAgICB9CgogICAgcmV0dXJuIFxAUm93czsKfQoKPWhlYWQyIEltcG9ydERhdGFTYXZlKCkKCmltcG9ydHMgYSBzaW5nbGUgZW50aXR5IG9mIHRoZSBpbXBvcnQgZGF0YS4gVGhlIEM8VGVtcGxhdGVJRD4gcG9pbnRzIHRvIHRoZSBkZWZpbml0aW9uCm9mIHRoZSBjdXJyZW50IGltcG9ydC4gQzxJbXBvcnREYXRhUm93PiBob2xkcyB0aGUgZGF0YS4gQzxDb3VudGVyPiBpcyBvbmx5IHVzZWQgaW4KZXJyb3IgbWVzc2FnZXMsIGZvciBpbmRpY2F0aW5nIHdoaWNoIGl0ZW0gd2FzIG5vdCBpbXBvcnRlZCBzdWNjZXNzZnVsbHkuCgpUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBjb25maWcgaXRlbSB3aWxsIG5ldmVyIGJlIGRlbGV0ZWQuIFdoZW4gdGhlcmUgYXJlIG5vCmNoYW5nZXMgaW4gdGhlIGRhdGEsIHRoZSBpbXBvcnQgd2lsbCBiZSBza2lwcGVkLiBXaGVuIHRoZXJlIGlzIG5ldyBvciBjaGFuZ2VkIGRhdGEsCnRoZW4gYSBuZXcgY29uZmlnIGl0ZW0gb3IgYSBuZXcgdmVyc2lvbiBpcyBjcmVhdGVkLgoKSW4gdGhlIGNhc2Ugb2YgY2hhbmdlZCBkYXRhLCB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIGNvbmZpZyBpdGVtIHdpbGwgY29udGFpbiB0aGUKYXR0cmlidXRlcyBvZiB0aGUgQzxJbXBvcnREYXRhUm93PiBwbHVzIHRoZSBvbGQgYXR0cmlidXRlcyB0aGF0IGFyZQpub3QgcGFydCBvZiB0aGUgaW1wb3J0IGRlZmluaXRpb24uClRodXMgSW1wb3J0RGF0YVNhdmUoKSBndWFyYW50ZWVzIHRvIG5vdCBvdmVyd3JpdGUgdW5kZWNsYXJlZCBhdHRyaWJ1dGVzLgoKVGhlIGJlaGF2aW9yIHdoZW4gaW1wb3J0ZWQgYXR0cmlidXRlcyBhcmUgZW1wdHkgZGVwZW5kcyBvbiB0aGUgc2V0dGluZyBpbiB0aGUgb2JqZWN0IGRhdGEuCldoZW4gQzxFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzPiBpcyBub3Qgc2V0LCB0aGVuIGVtcHR5IHZhbHVlcyB3aWxsIHdpcGUgb3V0CnRoZSBvbGQgZGF0YS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4gV2hlbiBDPEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXM+IGlzIHNldCwKdGhlbiBlbXB0eSB2YWx1ZXMgd2lsbCBsZWF2ZSB0aGUgb2xkIHZhbHVlcy4KClRoZSBkZWNpc2lvbiB3aGF0IGNvbnN0aXR1dGUgYW4gZW1wdHkgdmFsdWUgaXMgYSBiaXQgaGFpcnkuCkhlcmUgYXJlIHRoZSBydWxlcy4KRmllbGRzIHRoYXQgYXJlIG5vdCBldmVuIG1lbnRpb25lZCBpbiB0aGUgSW1wb3J0IGRlZmluaXRpb24gYXJlIGVtcHR5LiBUaGVzZSBhcmUgdGhlICdub3QgZGVmaW5lZCcgZmllbGRzLgpFbXB0eSBzdHJpbmdzIGFuZCB1bmRlZmluZWQgdmFsdWVzIGNvbnN0aXR1dGUgZW1wdHkgZmllbGRzLgpGaWVsZHMgd2l0aCB3aXRoIG9ubHkgb25lIG9yIG1vcmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSBub3QgZW1wdHkuCkZpZWxkcyB3aXRoIHRoZSBkaWdpdCAnMCcgYXJlIG5vdCBlbXB0eS4KCiAgICBteSAoICRDb25maWdJdGVtSUQsICRSZXRDb2RlICkgPSAkT2JqZWN0QmFja2VuZC0+SW1wb3J0RGF0YVNhdmUoCiAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAxMjMsCiAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiAkQXJyYXlSZWYsCiAgICAgICAgQ291bnRlciAgICAgICA9PiAzNjcsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKTsKCkFuIGVtcHR5IEM8Q29uZmlnSXRlbUlEPiBpbmRpY2F0ZXMgZmFpbHVyZS4gT3RoZXJ3aXNlIGl0IGluZGljYXRlcyB0aGUKbG9jYXRpb24gb2YgdGhlIGltcG9ydGVkIGRhdGEuCkM8UmV0Q29kZT4gaXMgZWl0aGVyICdDcmVhdGVkJywgJ1VwZGF0ZWQnIG9yICdTa2lwcGVkJy4gJ0NyZWF0ZWQnIG1lYW5zIHRoYXQgYSBuZXcKY29uZmlnIGl0ZW0gaGFzIGJlZW4gY3JlYXRlZC4gJ1VwZGF0ZWQnIG1lYW5zIHRoYXQgYSBuZXcgdmVyc2lvbiBoYXMgYmVlbiBhZGRlZCB0bwphbiBleGlzdGluZyBjb25maWcgaXRlbS4gJ1NraXBwZWQnIG1lYW5zIHRoYXQgbm8gbmV3IHZlcnNpb24gaGFzIGJlZW4gY3JlYXRlZCwKYXMgdGhlIG5ldyBkYXRhIGlzIGlkZW50aWNhbCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYW4gZXhpc3RpbmcgY29uZmlnIGl0ZW0uCgpObyBjb2RlcyBoYXZlIHlldCBiZWVuIGRlZmluZWQgZm9yIHRoZSBmYWlsdXJlIGNhc2UuCgo9Y3V0CgpzdWIgSW1wb3J0RGF0YVNhdmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBJbXBvcnREYXRhUm93IENvdW50ZXIgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpbXBvcnQgZGF0YSByb3cKICAgIGlmICggcmVmICRQYXJhbXtJbXBvcnREYXRhUm93fSBuZSAnQVJSQVknICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06IEltcG9ydERhdGFSb3cgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhLCB0aGF0IGlzIHRoZSBjb25maWcgb2YgdGhpcyB0ZW1wbGF0ZQogICAgbXkgJE9iamVjdERhdGEgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJE9iamVjdERhdGEgfHwgcmVmICRPYmplY3REYXRhIG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiTm8gb2JqZWN0IGRhdGEgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAnJFBhcmFte1RlbXBsYXRlSUR9JyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMganVzdCBmb3IgY29udmVuaWVuY2UKICAgIG15ICRFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0gJE9iamVjdERhdGEtPntFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzfTsKCiAgICAjIGNoZWNrIHRoZSBjbGFzcyBpZCBvZiB0aGUgdGVtcGxhdGUgY29uZmlnCiAgICB7CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkQ2xhc3NMaXN0IHx8IHJlZiAkQ2xhc3NMaXN0IG5lICdIQVNIJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJDYW4ndCBnZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBsaXN0IElUU006OkNvbmZpZ0l0ZW06OkNsYXNzIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICggISRPYmplY3REYXRhLT57Q2xhc3NJRH0gfHwgISRDbGFzc0xpc3QtPnsgJE9iamVjdERhdGEtPntDbGFzc0lEfSB9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJObyBjbGFzcyBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICckUGFyYW17VGVtcGxhdGVJRH0nIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIG1hcHBpbmcgbGlzdAogICAgbXkgJE1hcHBpbmdJRHMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nTGlzdCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHRoZSBtYXBwaW5nIGxpc3QKICAgIGlmICggISRNYXBwaW5nSURzIHx8IHJlZiAkTWFwcGluZ0lEcyBuZSAnQVJSQVknIHx8ICEkTWFwcGluZ0lEcy0+QCogKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAuICJObyB2YWxpZCBtYXBwaW5nIGxpc3QgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAnJFBhcmFte1RlbXBsYXRlSUR9JyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY3JlYXRlIHRoZSBtYXBwaW5nIG9iamVjdCBsaXN0CiAgICAjIFRPRE86IHdoeSBpcyB0aGlzIGNhbGxlZCBmb3IgZXZlcnkgcm93IG9mIHRoZSBpbXBvcnQgZmlsZSA/CiAgICBteSBATWFwcGluZ09iamVjdExpc3Q7CiAgICBmb3IgbXkgJE1hcHBpbmdJRCAoICRNYXBwaW5nSURzLT5AKiApIHsKCiAgICAgICAgIyBnZXQgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIG15ICRNYXBwaW5nT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhR2V0KAogICAgICAgICAgICBNYXBwaW5nSUQgPT4gJE1hcHBpbmdJRCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIGlmICggISRNYXBwaW5nT2JqZWN0RGF0YSB8fCByZWYgJE1hcHBpbmdPYmplY3REYXRhIG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiTm8gbWFwcGluZyBvYmplY3QgZGF0YSBmb3VuZCBmb3IgdGhlIG1hcHBpbmcgaWQgJyRNYXBwaW5nSUQnIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHB1c2ggQE1hcHBpbmdPYmplY3RMaXN0LCAkTWFwcGluZ09iamVjdERhdGE7CiAgICB9CgogICAgIyBjaGVjayBhbmQgcmVtZW1iZXIgdGhlIElkZW50aWZpZXJzCiAgICAjIHRoZSBJZGVudGlmaWVycyBpZGVudGlmeSB0aGUgY29uZmlnIGl0ZW0gdGhhdCBzaG91bGQgYmUgdXBkYXRlZAogICAgbXkgJUlkZW50aWZpZXI7CiAgICB7CiAgICAgICAgbXkgJFJvd0luZGV4ID0gMDsKICAgICAgICBNQVBQSU5HT0JKRUNUREFUQToKICAgICAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdExpc3QpIHsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVERBVEEgdW5sZXNzICRNYXBwaW5nT2JqZWN0RGF0YS0+e0lkZW50aWZpZXJ9OwoKICAgICAgICAgICAgIyBjaGVjayBpZiBpZGVudGlmaWVyIGFscmVhZHkgZXhpc3RzCiAgICAgICAgICAgIGlmICggJElkZW50aWZpZXJ7ICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX0gfSApIHsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICInJE1hcHBpbmdPYmplY3REYXRhLT57S2V5fScgaGFzIGJlZW4gdXNlZCBtdWx0aXBsZSB0aW1lcyBhcyBhbiBpZGVudGlmaWVyIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBpZGVudGlmaWVyIHZhbHVlCiAgICAgICAgICAgICRJZGVudGlmaWVyeyAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9IH0gPSAkUGFyYW17SW1wb3J0RGF0YVJvd30tPlskUm93SW5kZXhdOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUREFUQSBpZiAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9ICYmICRQYXJhbXtJbXBvcnREYXRhUm93fS0+WyRSb3dJbmRleF07CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIklkZW50aWZpZXIgZmllbGQgaXMgZW1wdHkiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICRSb3dJbmRleCsrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsb29rdXAgdGFibGUgZm9yIGdldHRpbmcgdGhlIElEIGZvciBkZXBsb3ltZW50IHN0YXRlIG5hbWVzCiAgICBteSAlRGVwbFN0YXRlTGlzdFJldmVyc2U7CiAgICB7CiAgICAgICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QgfHwgcmVmICREZXBsU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBnZW5lcmFsIGNhdGFsb2cgbGlzdCBJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSByZXZlcnNlIG1hcHBpbmcsIHRoYXQgaXMgZnJvbSBuYW1lIHRvIElECiAgICAgICAgJURlcGxTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAkRGVwbFN0YXRlTGlzdC0+JSo7CiAgICB9CgogICAgIyBnZXQgbG9va3VwIHRhYmxlIGZvciBnZXR0aW5nIHRoZSBJRCBmb3IgaW5jaWRlbnQgc3RhdGUgbmFtZXMKICAgIG15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZTsKICAgIHsKICAgICAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJEluY2lTdGF0ZUxpc3QgfHwgcmVmICRJbmNpU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBnZW5lcmFsIGNhdGFsb2cgbGlzdCBJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSByZXZlcnNlIG1hcHBpbmcsIHRoYXQgaXMgZnJvbSBuYW1lIHRvIElECiAgICAgICAgJUluY2lTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAkSW5jaVN0YXRlTGlzdC0+JSo7CiAgICB9CgogICAgIyBnZXQgY3VycmVudCBkZWZpbml0aW9uIG9mIHRoaXMgY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgZGVmaW5pdGlvbiBkYXRhCiAgICBpZiAoICEkRGVmaW5pdGlvbiB8fCByZWYgJERlZmluaXRpb24gbmUgJ0hBU0gnICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBkZWZpbml0aW9uIG9mIGNsYXNzIGlkICRPYmplY3REYXRhLT57Q2xhc3NJRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHRyeSB0byBnZXQgdGhlIGNvbmZpZyBpdGVtIGlkIHdoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGlkZW50aWZpZXIKICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICBpZiAoJUlkZW50aWZpZXIpIHsKCiAgICAgICAgbXkgJVNlYXJjaFBhcmFtczsKCiAgICAgICAgIyBhZGQgbnVtYmVyIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCAkSWRlbnRpZmllcntOdW1iZXJ9ICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze051bWJlcn0gPSBkZWxldGUgJElkZW50aWZpZXJ7TnVtYmVyfTsKICAgICAgICB9CgogICAgICAgICMgYWRkIG5hbWUgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgICAgICBpZiAoICRJZGVudGlmaWVye05hbWV9ICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze05hbWV9ID0gZGVsZXRlICRJZGVudGlmaWVye05hbWV9OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgZGVwbG95bWVudCBzdGF0ZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgICAgIGlmICggJElkZW50aWZpZXJ7RGVwbFN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXsgJElkZW50aWZpZXJ7RGVwbFN0YXRlfSB9IHx8ICcnOwoKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUlEICkgewoKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIlRoZSBkZXBsb3ltZW50IHN0YXRlICckSWRlbnRpZmllcntEZXBsU3RhdGV9JyBpcyBpbnZhbGlkIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gPSBbJERlcGxTdGF0ZUlEXTsKICAgICAgICAgICAgZGVsZXRlICRJZGVudGlmaWVye0RlcGxTdGF0ZX07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBpbmNpZGVudCBzdGF0ZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgICAgIGlmICggJElkZW50aWZpZXJ7SW5jaVN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBpbmNpZGVudCBzdGF0ZSBpZAogICAgICAgICAgICBteSAkSW5jaVN0YXRlSUQgPSAkSW5jaVN0YXRlTGlzdFJldmVyc2V7ICRJZGVudGlmaWVye0luY2lTdGF0ZX0gfSB8fCAnJzsKCiAgICAgICAgICAgIGlmICggISRJbmNpU3RhdGVJRCApIHsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgaW5jaWRlbnQgc3RhdGUgJyRJZGVudGlmaWVye0luY2lTdGF0ZX0nIGlzIGludmFsaWQiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7SW5jaVN0YXRlSURzfSA9IFskSW5jaVN0YXRlSURdOwogICAgICAgICAgICBkZWxldGUgJElkZW50aWZpZXJ7SW5jaVN0YXRlfTsKICAgICAgICB9CgogICAgICAgICMgdGhlIHJlbWFpbmluZyBpdGVtcyBpbiAlSWRlbnRpZmllciBhcmUgYWxsIGZvciBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVERkltcG9ydFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZJbXBvcnRTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICAgICAgSWRlbnRpZmllciAgICAgID0+IFwlSWRlbnRpZmllciwKICAgICAgICApOwogICAgICAgIEBTZWFyY2hQYXJhbXN7IGtleXMgJURGSW1wb3J0U2VhcmNoUGFyYW1zIH0gPSB2YWx1ZXMgJURGSW1wb3J0U2VhcmNoUGFyYW1zOwoKICAgICAgICAjIHNlYXJjaCBleGlzdGluZyBjb25maWcgaXRlbSB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXJzCiAgICAgICAgKCAkQ29uZmlnSXRlbUlELCBteSBAT3RoZXJDb25maWdJdGVtSURzICkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgJVNlYXJjaFBhcmFtcywKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsgJE9iamVjdERhdGEtPntDbGFzc0lEfSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMCwKICAgICAgICAgICAgVXNpbmdXaWxkY2FyZHMgICAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIFF1ZXJ5Q29uZGl0aW9uICAgICAgICA9PiAwLAogICAgICAgICk7CgogICAgICAgIGlmIChAT3RoZXJDb25maWdJdGVtSURzKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIklkZW50aWZpZXIgZmllbGRzIE5PVCB1bmlxdWUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdmVyc2lvbiBkYXRhIG9mIHRoZSBjb25maWcgaXRlbQogICAgbXkgJFZlcnNpb25EYXRhID0ge307CiAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewoKICAgICAgICAjIGdldCBsYXRlc3QgdmVyc2lvbgogICAgICAgICRWZXJzaW9uRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVNYXBwaW5nT2JqZWN0S2V5RGF0YSA9IG1hcCB7ICRfLT57S2V5fSA9PiAxIH0gQE1hcHBpbmdPYmplY3RMaXN0OwoKICAgICMgYnVpbGQgbGlzdCBvZiBkeW5hbWljIGZpZWxkcyB0byBpbmNsdWRlIGZpZWxkcyBvZiBkZWZpbml0aW9uIGFuZCBvZiBpbmNsdWRlZCBzZXQgZmllbGRzCiAgICBteSAlRHluYW1pY0ZpZWxkTGlzdDsKCiAgICAjIENoZWNrIGlmIGN1cnJlbnQgZGVmaW5pdGlvbiBvZiB0aGlzIGNsYXNzIGhhcyByZXF1aXJlZCBhdHRyaWJ1dGUgd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4gbWFwcGluZyBsaXN0LgogICAgREZfTkFNRToKICAgIGZvciBteSAkREZOYW1lICggc29ydCBrZXlzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+eyRERk5hbWV9OwoKICAgICAgICAjIHNldCBmaWVsZCBuYW1lcyB0byBkaWZmZXJlbnRpYXRlIGR5bmFtaWMgZmllbGRzIGZyb20gc3RhbmRhcmQgYXR0cmlidXRlcwogICAgICAgICREeW5hbWljRmllbGRMaXN0eyRERk5hbWV9ID0gJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICAgICAgIyBUT0RPOiBpcyB0aGUgc3BlY2lhbCBjYXNlIGZvciBTZXQgbmVlZGVkID8KICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVkREYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdHsgJEluY2x1ZGVkREYtPntERn0gfSA9ICRJbmNsdWRlZERGLT57RGVmaW5pdGlvbn07CgogICAgICAgICAgICAgICAgIyBhc3N1bWluZyB0aGF0IGRmIHNldHMgYXJlIG5vdCBuZXN0ZWQgZGVlcGVyIHRoYW4gdHdvIHN0YWdlcwogICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXN0ZWRJbmNsdWRlZERGICggJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufXtDb25maWd9e0luY2x1ZGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZExpc3R7ICROZXN0ZWRJbmNsdWRlZERGLT57REZ9IH0gPSAkTmVzdGVkSW5jbHVkZWRERi0+e0RlZmluaXRpb259OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBvbmx5IHJlcXVpcmVkIGF0dHJpYnV0ZXMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntSZXF1aXJlZH07CgogICAgICAgIG15ICRLZXkgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgIG5leHQgREZfTkFNRSBpZiAkTWFwcGluZ09iamVjdEtleURhdGF7IkR5bmFtaWNGaWVsZF8kS2V5In07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAuICJBdHRyaWJ1dGUgJyRLZXknIGlzIHJlcXVpcmVkLCBidXQgZG9lcyBub3QgZXhpc3QgaW4gbWFwcGluZyBsaXN0ISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IHVwIGZpZWxkcyBpbiBWZXJzaW9uRGF0YSBhbmQgaW4gdGhlIFhNTCBhdHRyaWJ1dGVzCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAlREZIYXNoOyAgICAjIG1hcCBmaWVsZCBuYW1lLCBpbmNsdWRpbmcgdGhlIHByZWZpeCAnRHluYW1pY0ZpZWxkXycsIHRvIHRoZSB2YWx1ZQogICAgbXkgJFJvd0luZGV4ID0gMDsKICAgIE1BUFBJTkdfT0JKRUNUX0RBVEE6CiAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdExpc3QpIHsKCiAgICAgICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgICAgIG15ICRLZXkgICA9ICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX07CiAgICAgICAgbXkgJFZhbHVlID0gJFBhcmFte0ltcG9ydERhdGFSb3d9LT5bJFJvd0luZGV4XTsKCiAgICAgICAgaWYgKCAkS2V5IGVxICdOdW1iZXInICkgewoKICAgICAgICAgICAgIyBEbyBub3RoaW5nLiBUaGUgSW1wb3J0IG1heSBub3Qgb3ZlcnJpZGUgdGhlIGNvbmZpZyBpdGVtIG51bWJlci4KICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdOYW1lJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJFZhbHVlICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIG5hbWUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdEZXBsU3RhdGUnICkgewoKICAgICAgICAgICAgaWYgKCAkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyAmJiAoICFkZWZpbmVkICRWYWx1ZSB8fCAkVmFsdWUgZXEgJycgKSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGV4dHJhY3QgZGVwbG95bWVudCBzdGF0ZSBpZAogICAgICAgICAgICBteSAkRGVwbFN0YXRlSUQgPSAkRGVwbFN0YXRlTGlzdFJldmVyc2V7JFZhbHVlfSB8fCAnJzsKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUlEICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIGRlcGxveW1lbnQgc3RhdGUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+e0RlcGxTdGF0ZUlEfSA9ICREZXBsU3RhdGVJRDsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSBlcSAnSW5jaVN0YXRlJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgIG15ICRJbmNpU3RhdGVJRCA9ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskVmFsdWV9IHx8ICcnOwogICAgICAgICAgICBpZiAoICEkSW5jaVN0YXRlSUQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgaW5jaWRlbnQgc3RhdGUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSA9ICRJbmNpU3RhdGVJRDsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSBlcSAnRGVzY3JpcHRpb24nICkgewoKICAgICAgICAgICAgaWYgKCAkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyAmJiAoICFkZWZpbmVkICRWYWx1ZSB8fCAkVmFsdWUgZXEgJycgKSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgZGVzY3JpcHRpb24gJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0cmlldmUgYW5kIHN0b3JlIGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMgZm9yIGltcG9ydAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSBARGVzY3JpcHRpb25BdHRhY2htZW50czsKCiAgICAgICAgICAgICAgICAjIGF0dGFjaG1lbnRzIGFyZSBzdG9yZWQgaW4gdGhlIHNyYyBhdHRyaWJ1dGUgb2YgdGhlaXIgaW1nIHRhZyBhcyBiYXNlNjQgZW5jb2RlZCBzdHJpbmcKICAgICAgICAgICAgICAgIG15IEBBdHRhY2htZW50U3RyaW5ncyA9ICRWYWx1ZSA9fiAvc3JjPVwiKC4rPylcIiAvZ3M7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnRTdHJpbmcgKEBBdHRhY2htZW50U3RyaW5ncykgewogICAgICAgICAgICAgICAgICAgIG15ICVBdHRhY2htZW50ID0gc3BsaXQoIC8jIyMvLCAkQXR0YWNobWVudFN0cmluZywgLTEgKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVBdHRhY2htZW50ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9ICRBdHRhY2htZW50eyRLZXl9IGVxICcnID8gJycgOiBkZWNvZGVfYmFzZTY0KCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyggRmlsZW5hbWUgQ29udGVudFR5cGUgRGlzcG9zaXRpb24gKSkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSB1bmxlc3MgJEF0dGFjaG1lbnR7JEtleX07CgogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9IEVuY29kZTo6ZGVjb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHVzaCBARGVzY3JpcHRpb25BdHRhY2htZW50cywgXCVBdHRhY2htZW50OwoKICAgICAgICAgICAgICAgICAgICAjIGVzY2FwZSBiYXNlNjQgc3BlY2lhbCBjaGFyYWN0ZXJzICcvJyBhbmQgJysnCiAgICAgICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRTdHJpbmdFc2NhcGVkID0gJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRTdHJpbmdFc2NhcGVkID1+IHMvXC8vXFxcLy9nOwogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50U3RyaW5nRXNjYXBlZCA9fiBzL1wrL1xcXCsvZzsKCiAgICAgICAgICAgICAgICAgICAgIyByZXBsYWNlIGJhc2U2NCBlbmNvZGVkIHN0cmluZyBpbiBkZXNjcmlwdGlvbiB3aXRoIGNvbnRlbmQgaWQKICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPX4gcy8kQXR0YWNobWVudFN0cmluZ0VzY2FwZWQvY2lkOiRBdHRhY2htZW50e0NvbnRlbnRJRH0vZ3M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gPSBcQERlc2NyaXB0aW9uQXR0YWNobWVudHM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdWZXJzaW9uU3RyaW5nJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJFZhbHVlICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIHZlcnNpb24gc3RyaW5nICckVmFsdWUnIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkVmVyc2lvbkRhdGEtPnskS2V5fSA9ICRWYWx1ZTsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSA9fiBtL15EeW5hbWljRmllbGRfKD88REZOYW1lV2l0aEluZGV4Pi4rKS8gKSB7CgogICAgICAgICAgICBpZiAoJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMpIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBIGlmICFkZWZpbmVkICRWYWx1ZTsKCiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFZhbHVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQSBpZiAkVmFsdWUgZXEgJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVGhlIGtleSBtaWdodCBlbmNvbXBhc3MgYW4gaW5kZXgsIGluZGljYXRlZCBieSAnOjonLgogICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGUgIGluZGV4ZXMgYXJlIDEtYmFzZWQuCiAgICAgICAgICAgIG15ICggJERGTmFtZSwgJEluZGV4LCAkSW5uZXJERk5hbWUsICRJbm5lckluZGV4ICkgPSBzcGxpdCAvOjovLCAkK3tERk5hbWVXaXRoSW5kZXh9OwoKICAgICAgICAgICAgIyBpZ25vcmUgdW5leHBlY3RlZCBpbmRleGVzLCBidXQgc3RpbGwgY3V0IHRoZSAnOjonCiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSW5kZXggJiYgJEluZGV4ICF+IG0vXlsxLTldWzAtOV0qJC8gKSB7CiAgICAgICAgICAgICAgICB1bmRlZiAkSW5kZXg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRJbm5lckluZGV4ICYmICRJbm5lckluZGV4ICF+IG0vXlsxLTldWzAtOV0qJC8gKSB7CiAgICAgICAgICAgICAgICB1bmRlZiAkSW5uZXJJbmRleDsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkREZLZXkgPSAiRHluYW1pY0ZpZWxkXyRERk5hbWUiOwoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRMaXN0eyRERk5hbWV9OwoKICAgICAgICAgICAgIyBza2lwIGltcG9ydCB3aGVuIHRoZSBkeW5hbWljIGZpZWxkIGlzIG5vdCBmb3VuZAogICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBoYW5kbGUgc2V0LWlubmVyIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIGlmICgkSW5uZXJERk5hbWUpIHsKICAgICAgICAgICAgICAgIG15ICRJbm5lckRGQ29uZmlnID0gJER5bmFtaWNGaWVsZExpc3R7JElubmVyREZOYW1lfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRJbm5lckRGQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gLy89IFtdOwogICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9WyAkSW5kZXggLSAxIF17JElubmVyREZOYW1lfSAvLz0gW107CgogICAgICAgICAgICAgICAgaWYgKCByZWYgJFZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fVsgJEluZGV4IC0gMSBdeyRJbm5lckRGTmFtZX1bICRJbm5lckluZGV4IC0gMSBdID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBNdWx0aXZhbHVlIGZpZWxkcyBhcmUgZXhwb3J0ZWQgYXMgSlNPTiBzdHJpbmdzIGluIHRoZSBjYXNlIG9mIENTViBleHBvcnRzLgogICAgICAgICAgICAgICAgbXkgJElubmVySXNNdWx0aVZhbHVlID0gJElubmVyREZDb25maWctPntDb25maWd9e011bHRpVmFsdWV9OwoKICAgICAgICAgICAgICAgIGlmICggJElubmVySXNNdWx0aVZhbHVlICYmICRJbm5lckluZGV4ICkgewogICAgICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fVsgJEluZGV4IC0gMSBdeyRJbm5lckRGTmFtZX1bICRJbm5lckluZGV4IC0gMSBdID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBUaGUgdmFsdWUgaXMgZW5jb2RlZCBhcyBKU09OIGZvciBtdWx0aXZhbHVlCiAgICAgICAgICAgICAgICBpZiAoJElubmVySXNNdWx0aVZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9WyAkSW5kZXggLSAxIF17JElubmVyREZOYW1lfSA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGtlZXAgdGhlIHZhbHVlIGFzIGlzLCBmb3Igc2luZ2xlIHZhbHVlLCBub24tc2V0CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX1bICRJbmRleCAtIDEgXXskSW5uZXJERk5hbWV9ID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWZlcmVuY2VzIGFyZSBuZXZlciB1bnBhY2tlZAogICAgICAgICAgICBpZiAoIHJlZiAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gPSAkVmFsdWU7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIE11bHRpdmFsdWUgZmllbGRzIGFyZSBleHBvcnRlZCBhcyBKU09OIHN0cmluZ3MgaW4gdGhlIGNhc2Ugb2YgQ1NWIGV4cG9ydHMuCiAgICAgICAgICAgIG15ICRJc011bHRpVmFsdWUgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e011bHRpVmFsdWV9OwogICAgICAgICAgICBteSAkSXNTZXQgICAgICAgID0gKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSAvLyAnJyApIGVxICdTZXQnOwoKICAgICAgICAgICAgIyBGb3IgaW5kZXhlZCBhY2Nlc3Mgb25seSBTZXRzIGFyZSBKU09OIGVuY29kZWQKICAgICAgICAgICAgaWYgKCAkSXNNdWx0aVZhbHVlICYmICRJbmRleCApIHsKICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fSAvLz0gW107CiAgICAgICAgICAgICAgICBpZiAoJElzU2V0KSB7CiAgICAgICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9LT5bICRJbmRleCAtIDEgXSA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0tPlsgJEluZGV4IC0gMSBdID0gJFZhbHVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBUaGUgdmFsdWUgaXMgZW5jb2RlZCBhcyBKU09OIGZvciBtdWx0aXZhbHVlIGFuZCBzZXRzCiAgICAgICAgICAgIGlmICggJElzTXVsdGlWYWx1ZSB8fCAkSXNTZXQgKSB7CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMga2VlcCB0aGUgdmFsdWUgYXMgaXMsIGZvciBzaW5nbGUgdmFsdWUsIG5vbi1zZXQKICAgICAgICAgICAgJERGSGFzaHskREZLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgIyBza2lwIHRoaXMgbWFwcGluZyB3aGVuIGl0IGNvdWxkIG5vdCBiZSBoYW5kbGVkCiAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgfQogICAgY29udGludWUgewogICAgICAgICRSb3dJbmRleCsrOwogICAgfQoKICAgICMgaWYgZW1wdHkgZmllbGRzIGltcGx5IHRoYXQgb2xkIHZhbHVlcyBzaG91bGQgYmUgcHJlc2VydmVkLAogICAgIyAgIHdlIHRpZHkgdGhlIGltcG9ydGVkIGR5bmFtaWMgZmllbGQgZGF0YSBvZiBlbXB0eSBvciB1bmRlZmluZWQgdmFsdWVzCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlREZIYXNoICkgewogICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkREZIYXNoeyRLZXl9IHx8ICRERkhhc2h7JEtleX0gZXEgJycgKSApIHsKICAgICAgICAgICAgZGVsZXRlICRERkhhc2h7JEtleX07CiAgICAgICAgfQogICAgfQoKICAgIG15ICVOZXdWZXJzaW9uRGF0YSA9ICVERkhhc2g7CgogICAgIyBjaGVjayBpZiB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICBpZiAoCiAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57TmFtZX0gKQogICAgICAgICYmICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVW5pcXVlQ0lOYW1lOjpFbmFibGVVbmlxdWVuZXNzQ2hlY2snKQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2hlY2tpbmcgZm9yIGR1cGxpY2F0ZSBuYW1lcyAoQ2xhc3NJRDogJE9iamVjdERhdGEtPntDbGFzc0lEfSwgIgogICAgICAgICAgICAgICAgICAgIC4gIk5hbWU6ICRWZXJzaW9uRGF0YS0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICIgLiAkQ29uZmlnSXRlbUlEIHx8ICdORVcnIC4gJyknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJE5hbWVEdXBsaWNhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQgfHwgJ05FVycsCiAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb25EYXRhLT57TmFtZX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgIG15ICROYW1lRHVwbGljYXRlc1N0cmluZyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiVGhlIG5hbWUgJFZlcnNpb25EYXRhLT57TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1JRChzKTogIgogICAgICAgICAgICAgICAgICAgIC4gJE5hbWVEdXBsaWNhdGVzU3RyaW5nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHJldHVybiBjb2RlIHRvIGFsc28gaW5jbHVkZSB0aGUgZHVwbGljYXRlIG5hbWUKICAgICAgICAgICAgIyByZXR1cm4gdW5kZWYgZm9yIHRoZSBjb25maWcgaXRlbSBpZCBzbyBpdCB3aWxsIGJlIGNvdW50ZWQgYXMgJ0ZhaWxlZCcKICAgICAgICAgICAgcmV0dXJuIHVuZGVmLCAiRHVwbGljYXRlTmFtZSAnJFZlcnNpb25EYXRhLT57TmFtZX0nIjsgICAgIyMgbm8gY3JpdGljIHF3KFN1YnJvdXRpbmVzOjpQcm9oaWJpdEV4cGxpY2l0UmV0dXJuVW5kZWYpCiAgICAgICAgfQogICAgfQoKICAgICMgZXh0cmFjdCB0aGUgZGF0YSB0aGF0IGNvbmNlcm5zIGR5bmFtaWMgZmllbGRzCiAgICBteSAlREZWZXJzaW9uRGF0YSA9CiAgICAgICAgbWFwICB7ICRfID0+ICROZXdWZXJzaW9uRGF0YXskX30gfQogICAgICAgIGdyZXAge20vXkR5bmFtaWNGaWVsZC99CiAgICAgICAga2V5cyAlTmV3VmVyc2lvbkRhdGE7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIHRoZSBzcGVjaWZpZWQgY29uZmlnIGl0ZW0gYWxyZWFkeSBleGlzdHMKICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CgogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkVmVyc2lvbkRhdGEtPntOYW1lfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gJFZlcnNpb25EYXRhLT57RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+ICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAkVmVyc2lvbkRhdGEtPntEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJFZlcnNpb25EYXRhLT57VmVyc2lvblN0cmluZ30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICVERkhhc2gsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJFcnJvciB3aGVuIGFkZGluZyB0aGUgbmV3IGNvbmZpZyBpdGVtIHZlcnNpb24uIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZmV0Y2ggdXBkYXRlZCBkYXRhIHRvIGdldCB2ZXJzaW9uIGlkCiAgICAgICAgbXkgJFVwZGF0ZWRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaW1wb3J0IGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gKSApIHsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFZlcnNpb25BdHRhY2htZW50U3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFVwZGF0ZWRDb25maWdJdGVtRGF0YS0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT4lKiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdGhlIGxhc3QgYW5kIHVubWFwcGVkIGVudHJpZXMgYXJlIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gQHsgJFBhcmFte0ltcG9ydERhdGFSb3d9IH1bICRSb3dJbmRleCAuLiAkI3sgJFBhcmFte0ltcG9ydERhdGFSb3d9IH0gXTsKCiAgICAgICAgIyBpZiBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIGlzIGZhbHNlLCBjbGVhciBhbGwgYXR0YWNobWVudHMKICAgICAgICBpZiAoICEkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyApIHsKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICRDbGVhclN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJE9iamVjdERhdGEtPntJbmNsdWRlQXR0YWNobWVudHN9ICYmIEBBdHRhY2htZW50cyApIHsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50U3RyaW5nIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICVBdHRhY2htZW50ID0gc3BsaXQoIC8jIyMvLCAkQXR0YWNobWVudFN0cmluZywgLTEgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoIGtleXMgJUF0dGFjaG1lbnQgKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnR7JEtleX0gPSAkQXR0YWNobWVudHskS2V5fSBlcSAnJyA/ICcnIDogZGVjb2RlX2Jhc2U2NCggJEF0dGFjaG1lbnR7JEtleX0gKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBLRVk6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRUeXBlIERpc3Bvc2l0aW9uICkpIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSB1bmxlc3MgJEF0dGFjaG1lbnR7JEtleX07CgogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50eyRLZXl9ID0gRW5jb2RlOjpkZWNvZGUoICdVVEYtOCcsICRBdHRhY2htZW50eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgZHVwbGljYXRlcwogICAgICAgICAgICAgICAgbXkgJEV4aXN0cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEV4aXN0cygKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnR7RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGlmIGR1cGxpY2F0ZSBleGlzdHMsIGRlbGV0ZSBpdCB0byBvdmVyd3JpdGUgd2l0aCB0aGUgaW1wb3J0ZWQgYXR0YWNobWVudAogICAgICAgICAgICAgICAgaWYgKCRFeGlzdHMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudHtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdGhlIGF0dGFjaG1lbnQgZGVsZXRlIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2VzcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aXRoIGltcG9ydGluZyBhbiBhdHRhY2htZW50IGZvciBjb25maWcgaXRlbSAkQ29uZmlnSXRlbUlEOiBDb3VsZG4ndCBjbGVhbiB1cCBleGlzdGluZyBmaWxlICRBdHRhY2htZW50e0ZpbGVuYW1lfSEiLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAlQXR0YWNobWVudCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgYXR0YWNobWVudCBhZGQgc3VjY2VzcwogICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CgogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2l0aCBpbXBvcnRpbmcgYW4gYXR0YWNobWVudCBmb3IgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1JRDogQWRkaW5nIGZpbGUgJEF0dGFjaG1lbnR7RmlsZW5hbWV9IGZhaWxlZCEiLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBpZiBDb25maWdJdGVtVXBkYXRlIHN1Y2NlZWRlZCwgd2UgY29uc2lkZXIgdGhlIGRhdGEgYXMgY2hhbmdlZCByZWdhcmRsZXNzIHdoZXRoZXIgZGF0YSB3YXMgZGlmZmVyZW50CiAgICAgICAgbXkgJFJldENvZGUgPSBUcmFuc2xhdGFibGUoJ0NoYW5nZWQnKTsKCiAgICAgICAgcmV0dXJuICRDb25maWdJdGVtSUQsICRSZXRDb2RlOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgbm8gY29uZmlnIGl0ZW0gd2FzIGZvdW5kLCBzbyBhZGQgbmV3IGNvbmZpZyBpdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICAgICA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkVmVyc2lvbkRhdGEtPntOYW1lfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICA9PiAkVmVyc2lvbkRhdGEtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgID0+ICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb259LAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nICA9PiAkVmVyc2lvbkRhdGEtPntWZXJzaW9uU3RyaW5nfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICVERlZlcnNpb25EYXRhLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgdGhlIG5ldyBjb25maWcgaXRlbSBpZAogICAgICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIkVycm9yIHdoZW4gYWRkaW5nIHRoZSBuZXcgY29uZmlnIGl0ZW0uIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgaW1wb3J0IGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gKSApIHsKCiAgICAgICAgICAgICMgZ2V0IGxhdGVzdCB2ZXJzaW9uIGlkCiAgICAgICAgICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApIHx8IFtdOwogICAgICAgICAgICBteSAkTGF0ZXN0VmVyc2lvbklEID0gJFZlcnNpb25MaXN0LT5bLTFdIC8vIDA7CgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCAkVmVyc2lvbkRhdGEtPntEZXNjcmlwdGlvbkF0dGFjaG1lbnRzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBteSAkVmVyc2lvbkF0dGFjaG1lbnRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkTGF0ZXN0VmVyc2lvbklELAogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT4lKiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdGhlIGxhc3QgYW5kIHVubWFwcGVkIGVudHJpZXMgYXJlIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gQHsgJFBhcmFte0ltcG9ydERhdGFSb3d9IH1bICRSb3dJbmRleCAuLiAkI3sgJFBhcmFte0ltcG9ydERhdGFSb3d9IH0gXTsKICAgICAgICBpZiAoICRPYmplY3REYXRhLT57SW5jbHVkZUF0dGFjaG1lbnRzfSAmJiBAQXR0YWNobWVudHMgKSB7CiAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudFN0cmluZyAoQEF0dGFjaG1lbnRzKSB7CiAgICAgICAgICAgICAgICBteSAlQXR0YWNobWVudCA9IHNwbGl0KCAvIyMjLywgJEF0dGFjaG1lbnRTdHJpbmcsIC0xICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVBdHRhY2htZW50ICkgewogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnR7JEtleX0gZXEgJycgPyAnJyA6IGRlY29kZV9iYXNlNjQoICRBdHRhY2htZW50eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiApKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRBdHRhY2htZW50eyRLZXl9OwoKICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9IEVuY29kZTo6ZGVjb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICVBdHRhY2htZW50LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHRoZSBhdHRhY2htZW50IGFkZCBzdWNjZXNzCiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKCiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aXRoIGltcG9ydGluZyBhbiBhdHRhY2htZW50IGZvciBjb25maWcgaXRlbSAkQ29uZmlnSXRlbUlEOiBBZGRpbmcgZmlsZSAkQXR0YWNobWVudHtGaWxlbmFtZX0gZmFpbGVkISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRCwgVHJhbnNsYXRhYmxlKCdDcmVhdGVkJyk7CiAgICB9Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoKQoKcmVjdXJzaXZlIGZ1bmN0aW9uIGZvciBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgpLgpEZWZpbml0aW9ucyBmb3Igb2JqZWN0IGF0dHJpYnV0ZXMgYXJlIHBhc3NlZCBpbiBDPER5bmFtaWNGaWVsZFJlZj4uClRoZSBuZXcgb2JqZWN0IGF0dHJpYnV0ZXMgYXJlIHJldHVybmVkLgpDPENvdW50TWF4TGltaXQ+IGxpbWl0cyB0aGUgbWF4IGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cy4KQzxDb3VudE1heFNldE91dGVyTGltaXQ+IGxpbWl0cyB0aGUgbWF4IGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cyBvZiBTZXQgZHluYW1pYyBmaWVsZHMuCkM8Q291bnRNYXhTZXRJbm5lckxpbWl0PiBsaW1pdHMgdGhlIG1heCBsZW5ndGggb2YgaW1wb3J0YWJsZSBhcnJheXMgb2YgU2V0IGR5bmFtaWMgZmllbGQgY29udGVudCBmaWVsZHMuCgogICAgcHVzaCBARWxlbWVudHMsICRPYmplY3RCYWNrZW5kLT5fTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmICAgICAgID0+ICRIYXNoUmVmLAogICAgICAgIENvdW50TWF4TGltaXQgICAgICAgICA9PiAzLAogICAgICAgIENvdW50TWF4U2V0T3V0ZXJMaW1pdCA9PiAwLAogICAgICAgIENvdW50TWF4U2V0SW5uZXJMaW1pdCA9PiAwLAogICAgKTsKCj1jdXQKCnN1YiBfTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtcwogICAgZm9yIG15ICRDb3VudE1heEF0dHIgKHF3KENvdW50TWF4TGltaXQgQ291bnRNYXhTZXRPdXRlckxpbWl0IENvdW50TWF4U2V0SW5uZXJMaW1pdCkpIHsKICAgICAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQgJFBhcmFteyRDb3VudE1heEF0dHJ9OwogICAgICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXskQ291bnRNYXhBdHRyfSBlcSAnJzsKICAgIH0KCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwoKICAgIG15IEBFbGVtZW50czsKICAgIGZvciBteSAkREZOYW1lICggc29ydCBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPnskREZOYW1lfTsKICAgICAgICBteSAkREZEZXRhaWxzICAgICAgICAgID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ307CgogICAgICAgICMgdGhlIHZlcnNpb24gd2l0aG91dCBwcmVmaXggaXMgYWx3YXlzIHBvc3NpYmxlCiAgICAgICAgIyAgIGRlc3BpdGUgZm9yIFNldCBmaWVsZHMsIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgQ291bnRNYXhTZXRPdXRlckxpbWl0CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBuZSAnU2V0JyB8fCAkUGFyYW17Q291bnRNYXhTZXRPdXRlckxpbWl0fSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgIG15ICRLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgbXkgJFZhbHVlID0gam9pbiAnOjonLAogICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJEtleSIsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kVmFsdWUiLAogICAgICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgTGltaXQgdGhlIGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cywgZXZlbiBpZiBtb3JlIGVsZW1lbnRzIGNhbiBiZSBzZXQgdmlhIHRoZSBHVUkuCiAgICAgICAgbXkgJElzTXVsdGkgID0gJERGRGV0YWlscy0+e011bHRpc2VsZWN0fSB8fCAkREZEZXRhaWxzLT57TXVsdGlWYWx1ZX07CiAgICAgICAgbXkgJENvdW50TWF4ID0gMDsKICAgICAgICBpZiAoJElzTXVsdGkpIHsKCiAgICAgICAgICAgICMgdXNlIFNldE91dGVyIGxpbWl0IGZvciBTZXQgZmllbGRzIHRoZW1zZWx2ZXMKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICRDb3VudE1heCA9ICRQYXJhbXtDb3VudE1heFNldE91dGVyTGltaXR9IC8vIDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdXNlIG5vcm1hbCBsaW1pdCBmb3IgZXZlcnl0aGluZyBlbHNlCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENvdW50TWF4ID0gJFBhcmFte0NvdW50TWF4TGltaXR9IC8vIDM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uICRDb3VudE1heCApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgIG15ICRLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgJENvdW50OwoKICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgbXkgJFZhbHVlID0gam9pbiAnOjonLAogICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgJENvdW50OwoKICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJEtleSIsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kVmFsdWUiLAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICMgaW4gY2FzZSBvZiBTZXQsIGl0ZXJhdGUgaW5uZXIgZmllbGRzIGFzIHdlbGwKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKCiAgICAgICAgICAgICAgICBteSAkSW5uZXJGaWVsZHMgPSAkREZEZXRhaWxzLT57SW5jbHVkZX07CgogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJElubmVyRmllbGRzKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkSXRlbSAoICRJbm5lckZpZWxkcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyAgICA9ICRGaWVsZEl0ZW0tPntEZWZpbml0aW9ufTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVyREZEZXRhaWxzID0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIHZlcnNpb24gd2l0aG91dCBwcmVmaXggaXMgYWx3YXlzIHBvc3NpYmxlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkSW5uZXJLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17S2V5UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRERk5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggJFBhcmFte0tleVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBrZXkgc3RyaW5nLCBpbmNsdWRpbmcgYSBwb3RlbnRpYWwgcHJlZml4IGFuZCBhIHBvdGVudGlhbCBjb3VudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVyVmFsdWUgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERGTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBFbGVtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJElubmVyS2V5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kSW5uZXJWYWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVySXNNdWx0aSAgPSAkSW5uZXJERkRldGFpbHMtPntNdWx0aXNlbGVjdH0gfHwgJElubmVyREZEZXRhaWxzLT57TXVsdGlWYWx1ZX07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb3VudElubmVyTWF4ID0gJElubmVySXNNdWx0aSA/ICggJFBhcmFte0NvdW50TWF4U2V0SW5uZXJMaW1pdH0gLy8gMCApIDogMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ291bnRJbm5lciAoIDEgLi4gJENvdW50SW5uZXJNYXggKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRJbm5lcktleSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERGTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17S2V5UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudElubmVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkSW5uZXJWYWx1ZSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtWYWx1ZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtWYWx1ZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnRJbm5lcjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCByb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gIkR5bmFtaWNGaWVsZF8kSW5uZXJLZXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAiRHluYW1pY0ZpZWxkXyRJbm5lclZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBARWxlbWVudHM7Cn0KCj1oZWFkMiBfREZTZWFyY2hBdHRyaWJ1dGVzR2V0KCkKCnJlY3Vyc2l2ZSBmdW5jdGlvbiBmb3IgU2VhcmNoQXR0cmlidXRlc0dldCgpCgogICAgJE9iamVjdEJhY2tlbmQtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkQXJyYXlSZWYsCiAgICAgICAgQXR0cmlidXRlTGlzdCA9PiAkQXJyYXlSZWYsCiAgICApOwoKPWN1dAoKc3ViIF9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKCiAgICBteSBAQXR0cmlidXRlczsKICAgIERGX05BTUU6CiAgICBmb3IgbXkgJERGTmFtZSAoIHNvcnQga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT57JERGTmFtZX07CgogICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXgKICAgICAgICBteSAkS2V5ID0gam9pbiAnOjonLAogICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBjcmVhdGUgbmFtZSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXgKICAgICAgICBteSAkTmFtZSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgKCAkUGFyYW17TmFtZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgIyBhZGQgYXR0cmlidXRlLCBpZiBtYXJrZWQgYXMgc2VhcmNoYWJsZQoKICAgICAgICAjIFRPRE86IGRldGVybWluZSB3aGV0aGVyIERGIGlzIHNlYXJjaGFibGU6ICREeW5hbWljRmllbGRDb25maWctPntTZWFyY2hhYmxlfQogICAgICAgICMgVE9ETzogdXNlIHNlYXJjaCBmaWVsZCBmcm9tIGR5bmFtaWMgZmllbGQgZHJpdmVyCiAgICAgICAgaWYgKDEpIHsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1RleHQnIHx8ICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdUZXh0QXJlYScgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntJbnB1dH0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SW5wdXR9LT57SW5wdXR9LT57U2l6ZX0gfHwgNjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SW5wdXR9LT57SW5wdXR9LT57TWF4TGVuZ3RofSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0dlbmVyYWxDYXRhbG9nJyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgbGlzdAogICAgICAgICAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0NsYXNzfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLCAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogZGV0ZXJtaW5lIHdoZXRoZXIgaXRlbXMgc2hvdWxkIGJlIHRyYW5zbGF0ZWQgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lucHV0fS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVE9ETzogaGFuZGxlIFNldHMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJFNlbGYtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57U3VifSwKICAgICAgICAgICAgS2V5UHJlZml4ICAgICAgID0+ICRLZXksCiAgICAgICAgICAgIE5hbWVQcmVmaXggICAgICA9PiAkTmFtZSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBAQXR0cmlidXRlczsKfQoKPWhlYWQyIF9ERlNlYXJjaERhdGFQcmVwYXJlKCkKCnJlY3Vyc2lvbiBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBleHBvcnQgWE1MIHNlYXJjaCBwYXJhbXMKCiAgICBteSAlREZTZWFyY2hQYXJhbXMgPSAkT2JqZWN0QmFja2VuZC0+X0RGU2VhcmNoRGF0YVByZXBhcmUoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREeW5hbWljRmllbGRSZWYsCiAgICAgICAgU2VhcmNoRGF0YSAgICAgID0+ICRIYXNoUmVmLAogICAgKTsKCj1jdXQKCnN1YiBfREZTZWFyY2hEYXRhUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17U2VhcmNoRGF0YX07CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkUGFyYW17U2VhcmNoRGF0YX0gZXEgJ0hBU0gnOwoKICAgIG15ICVERlNlYXJjaFBhcmFtczsKICAgIERGX05BTUU6CiAgICBmb3IgbXkgJERGTmFtZSAoIHNvcnQga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT57JERGTmFtZX07CgogICAgICAgICMgY3JlYXRlIGtleQogICAgICAgIG15ICRLZXkgPSAkUGFyYW17UHJlZml4fSA/ICRQYXJhbXtQcmVmaXh9IC4gJzo6JyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA6ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgbmV4dCBERl9OQU1FIHVubGVzcyAkUGFyYW17U2VhcmNoRGF0YX0tPnskS2V5fTsgICAgIyAnIyMjIyMnIHNlcGFyYXRlZAoKICAgICAgICAkREZTZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kS2V5In0gPSB7IEVxdWFscyA9PiBbIHNwbGl0IC8jIyMjIy8sICRQYXJhbXtTZWFyY2hEYXRhfS0+eyRLZXl9IF0gfTsKCiAgICAgICAgIyBUT0RPOiBzdXBwb3J0IFNldHMKICAgICAgICBuZXh0IERGX05BTUUgaWYgISREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgbXkgJVNldFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57U3VifSwKICAgICAgICAgICAgV2hhdCAgICAgICAgICA9PiAkUGFyYW17V2hhdH0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgICAgPT4gJFBhcmFte1NlYXJjaERhdGF9LAogICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRLZXksCiAgICAgICAgKTsKICAgICAgICBAREZTZWFyY2hQYXJhbXN7IGtleXMgJVNldFNlYXJjaFBhcmFtcyB9ID0gdmFsdWVzICVTZXRTZWFyY2hQYXJhbXM7CiAgICB9CgogICAgcmV0dXJuICVERlNlYXJjaFBhcmFtczsKfQoKPWhlYWQyIF9ERkltcG9ydFNlYXJjaERhdGFQcmVwYXJlKCkKCnJlY3Vyc2l2ZSBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBpbXBvcnQgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCgogICAgbXkgJURGSW1wb3J0U2VhcmNoUGFyYW1zID0gJE9iamVjdEJhY2tlbmQtPl9ERkltcG9ydFNlYXJjaERhdGFQcmVwYXJlKAogICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sCiAgICAgICAgSWRlbnRpZmllciAgICAgID0+IFwlSWRlbnRpZmllciwKICAgICAgICBQcmVmaXggICAgICAgICAgPT4gJEtleSwgICAgIyBwYXNzZWQgb25seSBpbiB0aGUgcmVjdXJzaW9uIGNhc2UKICAgICk7Cgo9Y3V0CgpzdWIgX0RGSW1wb3J0U2VhcmNoRGF0YVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKICAgIHJldHVybiB1bmxlc3MgJFBhcmFte0lkZW50aWZpZXJ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0lkZW50aWZpZXJ9IGVxICdIQVNIJzsKCiAgICBteSAlREZTZWFyY2hQYXJhbXM7CiAgICBERl9OQU1FOgogICAgZm9yIG15ICRERk5hbWUgKCBzb3J0IGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPnskREZOYW1lfTsKCiAgICAgICAgIyBjcmVhdGUga2V5CiAgICAgICAgbXkgJEtleSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgKCAkUGFyYW17UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICRQYXJhbXtJZGVudGlmaWVyfS0+eyJEeW5hbWljRmllbGRfJEtleSJ9OwoKICAgICAgICAjIFRPRE86IHRoaXMgaXMgYnJva2VuIGZvciBtdWx0aXZhbHVlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgJERGU2VhcmNoUGFyYW1zeyJEeW5hbWljRmllbGRfJEtleSJ9ID0geyBFcXVhbHMgPT4gWyBzcGxpdCAvIyMjIyMvLCAkUGFyYW17SWRlbnRpZmllcn0tPnsiRHluYW1pY0ZpZWxkXyRLZXkifSBdIH07CgogICAgICAgICMgY2hlY2sgaWYgdmFsdWUgdHJhbnNmb3JtYXRpb24gaXMgbmVjZXNzYXJ5CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICAgICAgbXkgJElzUmVmZXJlbmNlRmllbGQgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzUmVmZXJlbmNlRmllbGQnLAogICAgICAgICk7CiAgICAgICAgaWYgKCRJc1JlZmVyZW5jZUZpZWxkKSB7CgogICAgICAgICAgICBteSAkVmFsdWUgPSAkUGFyYW17SWRlbnRpZmllcn0tPnsiRHluYW1pY0ZpZWxkXyRLZXkifTsKCiAgICAgICAgICAgIG5leHQgREZfTkFNRSB1bmxlc3MgJFZhbHVlOwoKICAgICAgICAgICAgIyBUT0RPIHNraXBwaW5nIG11bHRpdmFsdWUgZmllbGRzCiAgICAgICAgICAgIG5leHQgREZfTkFNRSBpZiByZWYgJFZhbHVlOwoKICAgICAgICAgICAgIyBwZXJmb3JtIHNlYXJjaCBiYXNlZCBvbiB2YWx1ZSBhbmQgcHJldmlvdXNseSBmZXRjaGVkIGRhdGEKICAgICAgICAgICAgbXkgQE9iamVjdElEcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hPYmplY3RzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBUZXJtICAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLCAgICAjIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQYXJhbU9iamVjdCkKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggc2NhbGFyIEBPYmplY3RJRHMgPT0gMSApIHsKICAgICAgICAgICAgICAgICRERlNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRLZXkifSA9IHsgRXF1YWxzID0+IFsgc3BsaXQgLyMjIyMjLywgJE9iamVjdElEc1swXSBdIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVE9ETzogaGFuZGxlIFNldHMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgbXkgJVNldFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZJbXBvcnRTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREeW5hbWljRmllbGRDb25maWctPntTdWJ9LAogICAgICAgICAgICBJZGVudGlmaWVyICAgICAgPT4gJFBhcmFte0lkZW50aWZpZXJ9LAogICAgICAgICAgICBQcmVmaXggICAgICAgICAgPT4gJEtleSwKICAgICAgICApOwogICAgICAgIEBERlNlYXJjaFBhcmFtc3sga2V5cyAlU2V0U2VhcmNoUGFyYW1zIH0gPSB2YWx1ZXMgJVNldFNlYXJjaFBhcmFtczsKICAgIH0KCiAgICByZXR1cm4gJURGU2VhcmNoUGFyYW1zOwp9CgoxOwo=</File>
        <File Location="Kernel/System/LinkObject/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtIC0gTGlua09iamVjdCBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRMaW5rT2JqZWN0SVRTTUNvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW0nKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBMaW5rTGlzdFdpdGhEYXRhKCkKCmZpbGwgdXAgdGhlIGxpbmsgbGlzdCB3aXRoIGRhdGEKCiAgICAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0QmFja2VuZC0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICBMaW5rTGlzdCA9PiAkSGFzaFJlZiwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rTGlzdFdpdGhEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KExpbmtMaXN0IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbGluayBsaXN0CiAgICBpZiAoIHJlZiAkUGFyYW17TGlua0xpc3R9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0xpbmtMaXN0IG11c3QgYmUgYSBoYXNoIHJlZmVyZW5jZSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgbXkgJExpbmtUeXBlICggc29ydCBrZXlzICV7ICRQYXJhbXtMaW5rTGlzdH0gfSApIHsKCiAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0gfSApIHsKCiAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufSB9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGxhc3QgdmVyc2lvbiBkYXRhCiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSBpZCBmcm9tIGhhc2ggaWYgY29uZmlnIGl0ZW0gY2FuIG5vdCBnZXQKICAgICAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtIHx8IHJlZiAkQ29uZmlnSXRlbSBuZSAnSEFTSCcgfHwgISV7JENvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259LT57JENvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgdmVyc2lvbiBkYXRhCiAgICAgICAgICAgICAgICAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259LT57JENvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIE9iamVjdFBlcm1pc3Npb24oKQoKY2hlY2tzIHJlYWQgcGVybWlzc2lvbiBmb3IgYSBnaXZlbiBvYmplY3QgYW5kIFVzZXJJRC4KCiAgICAkUGVybWlzc2lvbiA9ICRMaW5rT2JqZWN0LT5PYmplY3RQZXJtaXNzaW9uKAogICAgICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBLZXkgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdFBlcm1pc3Npb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0IEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjb25maWcgb2YgY29uZmlnaXRlbSB6b29tIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tJyk7CgogICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgbXkgJEFjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5QZXJtaXNzaW9uKAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtLZXl9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICApOwoKICAgIHJldHVybiAkQWNjZXNzOwp9Cgo9aGVhZDIgT2JqZWN0RGVzY3JpcHRpb25HZXQoKQoKcmV0dXJuIGEgaGFzaCBvZiBvYmplY3QgZGVzY3JpcHRpb25zCgogICAgJURlc2NyaXB0aW9uID0gJExpbmtPYmplY3QtPk9iamVjdERlc2NyaXB0aW9uR2V0KAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gIkNvbmZpZ0l0ZW0jIDEyMzQ0NTUiLAogICAgICAgIExvbmcgICA9PiAiQ29uZmlnSXRlbSMgMTIzNDQ1NTogVGhlIENvbmZpZyBJdGVtIFRpdGxlIiwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGVzY3JpcHRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0IEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgbXkgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAnQ29uZmlnSXRlbScsCiAgICAgICAgTG9uZyAgID0+ICdDb25maWdJdGVtJywKICAgICk7CgogICAgcmV0dXJuICVEZXNjcmlwdGlvbiBpZiAkUGFyYW17TW9kZX0gJiYgJFBhcmFte01vZGV9IGVxICdUZW1wb3JhcnknOwoKICAgICMgZ2V0IGxhc3QgdmVyc2lvbiBkYXRhCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkQ29uZmlnSXRlbTsKICAgIHJldHVybiBpZiByZWYgJENvbmZpZ0l0ZW0gbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmICEleyRDb25maWdJdGVtfTsKCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9IiwKICAgICAgICBMb25nICAgPT4gIkNvbmZpZ0l0ZW0jICRDb25maWdJdGVtLT57TnVtYmVyfTogJENvbmZpZ0l0ZW0tPntOYW1lfSIsCiAgICApOwoKICAgIHJldHVybiAlRGVzY3JpcHRpb247Cn0KCj1oZWFkMiBPYmplY3RTZWFyY2goKQoKcmV0dXJuIGEgaGFzaCBsaXN0IG9mIHRoZSBzZWFyY2ggcmVzdWx0cwoKICAgICRTZWFyY2hMaXN0ID0gJExpbmtPYmplY3RCYWNrZW5kLT5PYmplY3RTZWFyY2goCiAgICAgICAgU3ViT2JqZWN0ICAgID0+ICcyNScsICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBTZWFyY2hQYXJhbXMgPT4gJEhhc2hSZWYsICAgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFNlYXJjaExpc3QgPSB7CiAgICAgICAgQzxOT1RMSU5LRUQ+ID0+IHsKICAgICAgICAgICAgU291cmNlID0+IHsKICAgICAgICAgICAgICAgIDEyICA9PiAkRGF0YU9mSXRlbTEyLAogICAgICAgICAgICAgICAgMjEyID0+ICREYXRhT2ZJdGVtMjEyLAogICAgICAgICAgICAgICAgMzMyID0+ICREYXRhT2ZJdGVtMzMyLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIE9iamVjdFNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyYW1zCiAgICAkUGFyYW17U2VhcmNoUGFyYW1zfSB8fD0ge307CgogICAgIyBzZXQgZm9jdXMKICAgIG15ICVTZWFyY2g7CiAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lKSkgewogICAgICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPnskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICRTZWFyY2h7JEVsZW1lbnR9ID0gJyUnIC4gJFBhcmFte1NlYXJjaFBhcmFtc30tPnskRWxlbWVudH0gLiAnJSc7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISRQYXJhbXtTdWJPYmplY3R9ICkgewoKICAgICAgICAjIGdldCB0aGUgY29uZmlnIHdpdGggdGhlIGRlZmF1bHQgc3Vib2JqZWN0cwogICAgICAgIG15ICREZWZhdWx0U3Vib2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpEZWZhdWx0U3ViT2JqZWN0JykgfHwge307CgogICAgICAgICMgZXh0cmFjdCBkZWZhdWx0IGNsYXNzIG5hbWUKICAgICAgICBteSAkRGVmYXVsdENsYXNzID0gJERlZmF1bHRTdWJvYmplY3QtPntJVFNNQ29uZmlnSXRlbX0gfHwgJyc7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiBpZiAhJENsYXNzTGlzdDsKICAgICAgICByZXR1cm4gaWYgcmVmICRDbGFzc0xpc3QgbmUgJ0hBU0gnOwoKICAgICAgICAjIGxvb2t1cCB0aGUgY2xhc3MgaWQKICAgICAgICBteSAlQ2xhc3NMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskQ2xhc3NMaXN0fTsKICAgICAgICAkUGFyYW17U3ViT2JqZWN0fSA9ICRDbGFzc0xpc3RSZXZlcnNleyREZWZhdWx0Q2xhc3N9IHx8ICcnOwogICAgfQoKICAgIHJldHVybiBpZiAhJFBhcmFte1N1Yk9iamVjdH07CgogICAgIyBzZWFyY2ggdGhlIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAleyAkUGFyYW17U2VhcmNoUGFyYW1zfSB9LAogICAgICAgICVTZWFyY2gsCiAgICAgICAgQ2xhc3NJRHMgICAgICAgPT4gWyAkUGFyYW17U3ViT2JqZWN0fSBdLAogICAgICAgIFVzaW5nV2lsZGNhcmRzID0+IDEsCiAgICAgICAgU29ydEJ5ICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICBPcmRlckJ5ICAgICAgICA9PiBbJ1VwJ10sCiAgICAgICAgTGltaXQgICAgICAgICAgPT4gNTAsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgUmVzdWx0ICAgICAgICAgPT4gJ0FSUkFZJywKICAgICk7CgogICAgbXkgJVNlYXJjaExpc3Q7CiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgIyBnZXQgbGFzdCB2ZXJzaW9uIGRhdGEKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJENvbmZpZ0l0ZW07CiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgcmVmICRDb25maWdJdGVtIG5lICdIQVNIJzsKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJXskQ29uZmlnSXRlbX07CgogICAgICAgICMgYWRkIHZlcnNpb24gZGF0YQogICAgICAgICRTZWFyY2hMaXN0e05PVExJTktFRH0tPntTb3VyY2V9LT57JENvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbTsKICAgIH0KCiAgICByZXR1cm4gXCVTZWFyY2hMaXN0Owp9Cgo9aGVhZDIgTGlua0FkZFByZSgpCgpsaW5rIGFkZCBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rQWRkUHJlIHsKICAgIHJldHVybiAxOyAgICAjIG5vdGhpbmcgdG8gZG8KfQoKPWhlYWQyIExpbmtBZGRQb3N0KCkKCmxpbmsgYWRkIHBvc3QgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpvcgoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtBZGRQb3N0KAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtBZGRQb3N0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZG8gbm90IHVwZGF0ZSBjb25maWdpdGVtX2xpbmsgdGFibGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgZW1pdCB0aGUgTGlua0FkZCBldmVudCBmb3IgdGVtcG9yYXJ5IGxpbmtzCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBTeW5jIHRoZSBuZXcgbGluayB0byB0aGUgY29uZmlnaXRlbV9saW5rIHRhYmxlLgogICAgIyBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBsaW5rcyBiZXR3ZWVuIGNvbmZpZyBpdGVtcy4KICAgICMgV2hlbiBhIGxpbmsgaXMgYWRkZWQgdGhlbiBMaW5rQWRkUG9zdCgpIGlzIGNhbGxlZCB0d2ljZS4gQnV0IG9ubHkKICAgICMgb25lIG9mIHRoZSBjYWxscyBoYXMgdG8gYmUgY29uc2lkZXJlZCBoZXJlLCBhcyBvbmx5IG9uZSBlbnRyeSBpbiAnY29uZmlnaXRlbV9saW5rJwogICAgIyBpcyBuZWVkZWQuCiAgICBpZiAoICRQYXJhbXtUYXJnZXRLZXl9ICYmICggJFBhcmFte1RhcmdldE9iamVjdH0gLy8gJycgKSBlcSAnSVRTTUNvbmZpZ0l0ZW0nICkgewogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5BZGRDb25maWdJdGVtTGluaygKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICAgICAgU291cmNlQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBUYXJnZXRDb25maWdJdGVtSUQgPT4gJFBhcmFte1RhcmdldEtleX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFJlY2FsY3VsYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHRoaXMgQ0kgZm9yIGxpbmtzIHRvIHNlcnZpY2VzCiAgICAjIFRoaXMgd2lsbCBpbXBsaWNpdGx5IHVwZGF0ZSB0aGUgc2VydmljZSBpbmNpZGVudCBzdGF0ZQogICAgIyBDb25maWdJdGVtTGlua3Mgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBDb25maWdJdGVtTGluayBvYmplY3QKICAgIGVsc2lmICggKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAkUGFyYW17U291cmNlT2JqZWN0fSApIGVxICdTZXJ2aWNlJyApIHsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRyaWdnZXIgTGlua0FkZCBldmVudCwgdGhlIGNvbW1lbnQgaXMgYSBraW5kIG9mIGhpZGRlbiBjaGFubmVsCiAgICBteSAkQ29tbWVudCA9IGpvaW4gJyUlJywKICAgICAgICAoICRQYXJhbXtUYXJnZXRLZXl9ICAgIHx8ICRQYXJhbXtTb3VyY2VLZXl9ICksCiAgICAgICAgKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSB8fCAkUGFyYW17U291cmNlT2JqZWN0fSApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnTGlua0FkZCcsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkQ29tbWVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBMaW5rRGVsZXRlUHJlKCkKCmxpbmsgZGVsZXRlIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU291cmNlS2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtEZWxldGVQcmUgewogICAgcmV0dXJuIDE7ICAgICMgbm90aGluZyB0byBkbwp9Cgo9aGVhZDIgTGlua0RlbGV0ZVBvc3QoKQoKbGluayBkZWxldGUgcG9zdCBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZVBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0RlbGV0ZVBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkbyBub3Qgbm90ZSB1cGRhdGUgY29uZmlnaXRlbV9saW5rIHRhYmxlIGZvciB0ZW1wb3JhcnkgbGlua3MKICAgICMgZG8gbm90IG5vdGUgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW4gaW5jaWRlbnQgc3RhdGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgdHJpZ2dlciBldmVudCBmb3IgdGVtcG9yYXJ5IGxpbmtzCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBzeW5jIHRoZSBkZWxldGVlIGxpbmsgdG8gdGhlIGNvbmZpZ2l0ZW1fbGluayB0YWJsZS4KICAgICMgVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3Igb25lIGRpcmVjdGlvbi4KICAgIGlmICggJFBhcmFte1RhcmdldEtleX0gJiYgKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAnJyApIGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlbGV0ZUNvbmZpZ0l0ZW1MaW5rKAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgICAgICBTb3VyY2VDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIFRhcmdldENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17VGFyZ2V0S2V5fSwKICAgICAgICApOwogICAgfQoKICAgICMgVE9ETzogVXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHVubGlua2VkIHNlcnZpY2VzCiAgICAjIGVsc2lmICggKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAkUGFyYW17U291cmNlT2JqZWN0fSApIGVxICdTZXJ2aWNlJyApIHsKICAgICMgfQoKICAgICMgdHJpZ2dlciBMaW5rRGVsZXRlIGV2ZW50LCB0aGUgY29tbWVudCBpcyBhIGtpbmQgb2YgaGlkZGVuIGNoYW5uZWwKICAgIG15ICRDb21tZW50ID0gam9pbiAnOjonLAogICAgICAgICggJFBhcmFte1RhcmdldEtleX0gICAgfHwgJFBhcmFte1NvdXJjZUtleX0gKSwKICAgICAgICAoICRQYXJhbXtUYXJnZXRPYmplY3R9IHx8ICRQYXJhbXtTb3VyY2VPYmplY3R9ICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdMaW5rRGVsZXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRDb21tZW50LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="Kernel/System/ProcessManagement/TransitionAction/ConfigItemAdd.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6VHJhbnNpdGlvbkFjdGlvbjo6Q29uZmlnSXRlbUFkZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpUcmFuc2l0aW9uQWN0aW9uOjpDb25maWdJdGVtQWRkIC0gQSBtb2R1bGUgdG8gY3JlYXRlIGEgY29uZmlnIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIENvbmZpZ0l0ZW1DcmVhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkNvbmZpZ0l0ZW1DcmVhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUGFyYW1zKCkKClJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1zIGZvciB0aGlzIHRyYW5zaXRpb24gYWN0aW9uIG1vZHVsZQoKICAgIG15IEBQYXJhbXMgPSAkT2JqZWN0LT5QYXJhbXMoKTsKCkVhY2ggZWxlbWVudCBpcyBhIGhhc2ggcmVmZXJlbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBjb25maWcgcGFyYW1ldGVyLgpDdXJyZW50bHkgb25seSB0aGUga2V5cyBJPEtleT4sIEk8VmFsdWU+IGFuZCBJPE9wdGlvbmFsPiBhcmUgdXNlZC4KCj1jdXQKCnN1YiBQYXJhbXMgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQSBjbGFzcyAocmVxdWlyZWQpJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdUaGUgbnVtYmVyIChyZXF1aXJlZCBpZiBubyBudW1iZXIgbW9kdWxlIGlzIGNvbmZpZ3VyZWQpJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQSBuYW1lIChyZXF1aXJlZCBpZiBubyBuYW1lIG1vZHVsZSBpcyBjb25maWd1cmVkKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdWZXJzaW9uU3RyaW5nJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1RoZSB2ZXJzaW9uIHN0cmluZyAocmVxdWlyZWQgaWYgbm8gdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGlzIGNvbmZpZ3VyZWQpJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdBIGRlcGxveW1lbnQgc3RhdGUgKHJlcXVpcmVkKScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQW4gaW5jaWRlbnQgc3RhdGUgKHJlcXVpcmVkKScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdEeW5hbWljRmllbGRfPE5hbWU+IChyZXBsYWNlIDxOYW1lPiknLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQSB2YWx1ZScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdMaW5rQXMnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQWx0ZXJuYXRpdmUgdG98RGVwZW5kcyBvbnxSZWxldmFudCB0bycsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdTdG9yZUNvbmZpZ0l0ZW1JRER5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdOYW1lWCAobmFtZSBvZiBEeW5hbWljRmllbGQgaG9sZGluZyB0aGUgaWQgb2YgdGhlIGNyZWF0ZWQgQ29uZmlnSXRlbSBpbiB0aGUgb3JpZ2luYWwgdGlja2V0KScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdVc2VySUQnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnMSAoY2FuIG92ZXJ3cml0ZSB0aGUgbG9nZ2VkIGluIHVzZXIpJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gQFBhcmFtczsKfQoKPWhlYWQyIFJ1bigpCgogICAgUnVuIERhdGEKCiAgICBteSAkQ29uZmlnSXRlbUNyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlQWN0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgID0+IDEyMywKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgPT4gXCVUaWNrZXQsICAgIyByZXF1aXJlZAogICAgICAgIFByb2Nlc3NFbnRpdHlJRCAgICAgICAgICA9PiAnUDEyMycsCiAgICAgICAgQWN0aXZpdHlFbnRpdHlJRCAgICAgICAgID0+ICdBMTIzJywKICAgICAgICBUcmFuc2l0aW9uRW50aXR5SUQgICAgICAgPT4gJ1QxMjMnLAogICAgICAgIFRyYW5zaXRpb25BY3Rpb25FbnRpdHlJRCA9PiAnVEExMjMnLAogICAgICAgIENvbmZpZyAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gcmVxdWlyZWQ6CiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ0NsYXNzIG9mIHRoZSBDb25maWcgSXRlbScsCiAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgPT4gJ1NvbWUgRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgPT4gJ1NvbWUgSW5jaWRlbnQgU3RhdGUnLAoKICAgICAgICAgICAgIyBjb25maWcgaXRlbSBvcHRpb25hbDoKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAnU29tZSBDb25maWcgSXRlbSBOYW1lJywKICAgICAgICAgICAgJURhdGFQYXlsb2FkLAoKICAgICAgICAgICAgIyBvdGhlcjoKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+ICRWYWx1ZSwKICAgICAgICAgICAgTGlua0FzID0+ICRMaW5rVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3JtYWwsIFBhcmVudCwgQ2hpbGQsIGV0Yy4gKHJlc3BlY3RpdmUgb3JpZ2luYWwgdGlja2V0KQogICAgICAgICAgICBVc2VySUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0byBvdmVycmlkZSB0aGUgVXNlcklEIGZyb20gdGhlIGxvZ2dlZCB1c2VyCiAgICAgICAgfQogICAgKTsKICAgIFRpY2tldCBjb250YWlucyB0aGUgcmVzdWx0IG9mIFRpY2tldEdldCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkcwogICAgQ29uZmlnIGlzIHRoZSBDb25maWcgSGFzaCBzdG9yZWQgaW4gYSBQcm9jZXNzOjpUcmFuc2l0aW9uQWN0aW9uJ3MgIENvbmZpZyBrZXkKICAgIFJldHVybnM6CgogICAgJENvbmZpZ0l0ZW1DcmVhdGVSZXN1bHQgPSAxOyAjIDAKCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZGVmaW5lIGEgY29tbW9uIG1lc3NhZ2UgdG8gb3V0cHV0IGluIGNhc2Ugb2YgYW55IGVycm9yCiAgICBteSAkQ29tbW9uTWVzc2FnZSA9ICJQcm9jZXNzOiAkUGFyYW17UHJvY2Vzc0VudGl0eUlEfSBBY3Rpdml0eTogJFBhcmFte0FjdGl2aXR5RW50aXR5SUR9IgogICAgICAgIC4gIiBUcmFuc2l0aW9uOiAkUGFyYW17VHJhbnNpdGlvbkVudGl0eUlEfSIKICAgICAgICAuICIgVHJhbnNpdGlvbkFjdGlvbjogJFBhcmFte1RyYW5zaXRpb25BY3Rpb25FbnRpdHlJRH0gLSAiOwoKICAgICMgY2hlY2sgZm9yIG1pc3Npbmcgb3Igd3JvbmcgcGFyYW1zCiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fQ2hlY2tQYXJhbXMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbW1vbk1lc3NhZ2UgPT4gJENvbW1vbk1lc3NhZ2UsCiAgICApOwogICAgcmV0dXJuIGlmICEkU3VjY2VzczsKCiAgICAjIG92ZXJyaWRlIFVzZXJJRCBpZiBzcGVjaWZpZWQgYXMgYSBwYXJhbWV0ZXIgaW4gdGhlIFRBIGNvbmZpZwogICAgJFBhcmFte1VzZXJJRH0gPSAkU2VsZi0+X092ZXJyaWRlVXNlcklEKCVQYXJhbSk7CgogICAgIyB1c2UgdGlja2V0IGF0dHJpYnV0ZXMgaWYgbmVlZGVkCiAgICAkU2VsZi0+X1JlcGxhY2VUaWNrZXRBdHRyaWJ1dGVzKCVQYXJhbSk7CiAgICAkU2VsZi0+X1JlcGxhY2VBZGRpdGlvbmFsQXR0cmlidXRlcyglUGFyYW0pOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJUNsYXNzMklETWFwICAgICA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApLT4lKjsKICAgIG15ICVEZXBsU3RhdGUySURNYXAgPSByZXZlcnNlICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnICktPiUqOwogICAgbXkgJUluY2lTdGF0ZTJJRE1hcCA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnICktPiUqOwoKICAgIG15ICVDb25maWdJdGVtUGFyYW07CgogICAgZm9yIG15ICRPcHRpb25hbEF0dHJpYnV0ZSAocXcvTmFtZSBOdW1iZXIgVmVyc2lvblN0cmluZy8pIHsKICAgICAgICBpZiAoICRQYXJhbXtDb25maWd9eyRPcHRpb25hbEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtUGFyYW17JE9wdGlvbmFsQXR0cmlidXRlfSA9ICRQYXJhbXtDb25maWd9eyRPcHRpb25hbEF0dHJpYnV0ZX07CiAgICAgICAgfQogICAgfQoKICAgICRDb25maWdJdGVtUGFyYW17Q2xhc3NJRH0gICAgID0gJENsYXNzMklETWFweyAkUGFyYW17Q29uZmlnfXtDbGFzc30gfTsKICAgICRDb25maWdJdGVtUGFyYW17RGVwbFN0YXRlSUR9ID0gJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9OwogICAgJENvbmZpZ0l0ZW1QYXJhbXtJbmNpU3RhdGVJRH0gPSAkSW5jaVN0YXRlMklETWFweyAkUGFyYW17Q29uZmlnfXtJbmNpU3RhdGV9IH07CgogICAgZm9yIG15ICROZWVkZWQgKHF3L0NsYXNzIERlcGxTdGF0ZSBJbmNpU3RhdGUvKSB7CiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1QYXJhbXsgJE5lZWRlZCAuICdJRCcgfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuICJDb3VsZCBub3QgcmV0cmlldmUgJE5lZWRlZCIgLiAiSUQgZnJvbSAnJFBhcmFte0NvbmZpZ317ICROZWVkZWQgfScgaW4gVGlja2V0OiIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9IC4gJyEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJFNldE1hcHBpbmcgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHluYW1pY0ZpZWxkU2V0OjpJbm5lckZpZWxkc1RpY2tldFRvQ0knKSAvLyB7fTsKCiAgICAjIGFkZCBkeW5hbWljIGZpZWxkcwogICAgQ09ORklHUEFSQU06CiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtICgga2V5cyAkUGFyYW17Q29uZmlnfS0+JSogKSB7CiAgICAgICAgbXkgJEZpZWxkTmFtZTsKCiAgICAgICAgaWYgKCAkQ29uZmlnUGFyYW0gPX4gL15EeW5hbWljRmllbGRfKC4rKS8gKSB7CiAgICAgICAgICAgICRGaWVsZE5hbWUgPSAkMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5leHQgQ09ORklHUEFSQU07CiAgICAgICAgfQoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdQQVJBTSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CgogICAgICAgICMgZm9yIHNldCBmaWVsZHMgd2UgbmVlZCB0byBtYXAgdGhlIG5hbWUgb2YgdGhlIGlubmVyIGZpZWxkcwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZCAmJiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyAmJiByZWYgJFBhcmFte0NvbmZpZ317JENvbmZpZ1BhcmFtfSApIHsKICAgICAgICAgICAgU0VUVkFMVUU6CiAgICAgICAgICAgIGZvciBteSAkU2V0VmFsdWUgKCAkUGFyYW17Q29uZmlnfXskQ29uZmlnUGFyYW19LT5AKiApIHsKICAgICAgICAgICAgICAgIG5leHQgU0VUVkFMVUUgdW5sZXNzICRTZXRWYWx1ZTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyRmllbGQgKCBrZXlzICRTZXRWYWx1ZS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2V0TWFwcGluZy0+eyRJbm5lckZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNldFZhbHVlLT57ICRTZXRNYXBwaW5nLT57JElubmVyRmllbGR9IH0gPSBkZWxldGUgJFNldFZhbHVlLT57JElubmVyRmllbGR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXskQ29uZmlnUGFyYW19ID0gJFBhcmFte0NvbmZpZ317JENvbmZpZ1BhcmFtfTsKICAgIH0KCiAgICAjIGNyZWF0ZSBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICVDb25maWdJdGVtUGFyYW0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgY3JlYXRlIE5ldyBDb25maWdJdGVtIGZyb20gVGlja2V0OiAiCiAgICAgICAgICAgICAgICAuICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9IC4gJyEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIGNyZWF0ZWQgQ29uZmlnSXRlbUlECiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57U3RvcmVDb25maWdJdGVtSUREeW5hbWljRmllbGR9ICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0NvbmZpZ30tPntTdG9yZUNvbmZpZ0l0ZW1JRER5bmFtaWNGaWVsZH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZENvbmZpZyB8fCAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZykgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgZ2V0IER5bmFtaWNGaWVsZCAkUGFyYW17Q29uZmlnfS0+e1N0b3JlQ29uZmlnSXRlbUlERHluYW1pY0ZpZWxkfSBmb3IgVGlja2V0ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9LiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSB2YWx1ZQogICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZVNldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuICJDb3VsZG4ndCBzZXQgRHluYW1pY0ZpZWxkIFZhbHVlIG9uICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfToiCiAgICAgICAgICAgICAgICAgICAgLiAiIGZvciBUaWNrZXQ6ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbGluayB0aWNrZXQKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9ICkgewoKICAgICAgICAjIGdldCBsaW5rIG9iamVjdAogICAgICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIGFsbCB0eXBlcwogICAgICAgIG15ICVDb25maWd1cmVkVHlwZXMgPSAkTGlua09iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRTZWxlY3RlZFR5cGU7CiAgICAgICAgbXkgJFNlbGVjdGVkRGlyZWN0aW9uOwoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlQ29uZmlndXJlZFR5cGVzICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gbmUgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntTb3VyY2VOYW1lfQogICAgICAgICAgICAgICAgJiYgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IG5lICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57VGFyZ2V0TmFtZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBUWVBFOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxlY3RlZFR5cGUgICAgICA9ICRUeXBlOwogICAgICAgICAgICAkU2VsZWN0ZWREaXJlY3Rpb24gPSAnU291cmNlJzsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gZXEgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntUYXJnZXROYW1lfSApIHsKICAgICAgICAgICAgICAgICRTZWxlY3RlZERpcmVjdGlvbiA9ICdUYXJnZXQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3QgVFlQRTsKICAgICAgICB9CgogICAgICAgIGlmICggISRTZWxlY3RlZFR5cGUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiTGlua0FzICRQYXJhbXtDb25maWd9LT57TGlua0FzfSBpcyBpbnZhbGlkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNvdXJjZU9iamVjdElEICAgPSAkQ29uZmlnSXRlbUlEOwogICAgICAgIG15ICRTb3VyY2VPYmplY3RUeXBlID0gJ0lUU01Db25maWdJdGVtJzsKICAgICAgICBteSAkVGFyZ2V0T2JqZWN0SUQgICA9ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9OwogICAgICAgIG15ICRUYXJnZXRPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgaWYgKCAkU2VsZWN0ZWREaXJlY3Rpb24gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RJRCAgID0gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH07CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgICAgICRUYXJnZXRPYmplY3RJRCAgID0gJENvbmZpZ0l0ZW1JRDsKICAgICAgICAgICAgJFRhcmdldE9iamVjdFR5cGUgPSAnSVRTTUNvbmZpZ0l0ZW0nOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkTGlua09iamVjdC0+TGlua0FkZCgKICAgICAgICAgICAgU291cmNlT2JqZWN0ID0+ICRTb3VyY2VPYmplY3RUeXBlLAogICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJFNvdXJjZU9iamVjdElELAogICAgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJFRhcmdldE9iamVjdFR5cGUsCiAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0T2JqZWN0SUQsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkU2VsZWN0ZWRUeXBlLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgICAgIC4gIkNvdWxkbid0IExpbmsgVGlja2V0cyAkU291cmNlT2JqZWN0SUQgd2l0aCAkVGFyZ2V0T2JqZWN0SUQgYXMgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ProcessManagement/TransitionAction/ConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6VHJhbnNpdGlvbkFjdGlvbjo6Q29uZmlnSXRlbVVwZGF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpUcmFuc2l0aW9uQWN0aW9uOjpDb25maWdJdGVtVXBkYXRlIC0gQSBtb2R1bGUgdG8gY3JlYXRlIGEgY29uZmlnIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIENvbmZpZ0l0ZW1DcmVhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkNvbmZpZ0l0ZW1DcmVhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUGFyYW1zKCkKClJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1zIGZvciB0aGlzIHRyYW5zaXRpb24gYWN0aW9uIG1vZHVsZQoKICAgIG15IEBQYXJhbXMgPSAkT2JqZWN0LT5QYXJhbXMoKTsKCkVhY2ggZWxlbWVudCBpcyBhIGhhc2ggcmVmZXJlbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBjb25maWcgcGFyYW1ldGVyLgpDdXJyZW50bHkgb25seSB0aGUga2V5cyBJPEtleT4sIEk8VmFsdWU+IGFuZCBJPE9wdGlvbmFsPiBhcmUgdXNlZC4KCj1jdXQKCnN1YiBQYXJhbXMgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnQ29uZmlnSXRlbUlEJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0NvbmZpZ0l0ZW1JRCAocmVxdWlyZWQgaWYgbm8gTnVtYmVyIGlzIGdpdmVuKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQ29uZmlnSXRlbSBOdW1iZXIgKHJlcXVpcmVkIGlmIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdBIG5hbWUgKGNhbiBvbmx5IGJlIGNoYW5nZWQgaWYgbm8gbmFtZSBtb2R1bGUgaXMgY29uZmlndXJlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnVmVyc2lvblN0cmluZycsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdUaGUgdmVyc2lvbiBzdHJpbmcgKG9ubHkgaWYgbm8gdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgYW5kIGEgdmVyc2lvbiBpcyBhZGRlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1NldCBhIG5ldyBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdTZXQgYSBuZXcgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnRHluYW1pY0ZpZWxkXzxOYW1lPiAocmVwbGFjZSA8TmFtZT4pJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0EgdmFsdWUnLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTGlua0FzJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0FsdGVybmF0aXZlIHRvfERlcGVuZHMgb258UmVsZXZhbnQgdG8nLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnVXNlcklEJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJzEgKGNhbiBvdmVyd3JpdGUgdGhlIGxvZ2dlZCBpbiB1c2VyKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIEBQYXJhbXM7Cn0KCj1oZWFkMiBSdW4oKQoKICAgIFJ1biBEYXRhCgogICAgbXkgJENvbmZpZ0l0ZW1VcGRhdGVSZXN1bHQgPSAkQ29uZmlnSXRlbVVwZGF0ZUFjdGlvbk9iamVjdC0+UnVuKAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgID0+IFwlVGlja2V0LCAgICMgcmVxdWlyZWQKICAgICAgICBQcm9jZXNzRW50aXR5SUQgICAgICAgICAgPT4gJ1AxMjMnLAogICAgICAgIEFjdGl2aXR5RW50aXR5SUQgICAgICAgICA9PiAnQTEyMycsCiAgICAgICAgVHJhbnNpdGlvbkVudGl0eUlEICAgICAgID0+ICdUMTIzJywKICAgICAgICBUcmFuc2l0aW9uQWN0aW9uRW50aXR5SUQgPT4gJ1RBMTIzJywKICAgICAgICBDb25maWcgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAjIGNvbmZpZyBpdGVtIHJlcXVpcmVkOgogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICdJRCBvZiB0aGUgQ29uZmlnIEl0ZW0nLAogICAgICAgICAgICAjIE9SCiAgICAgICAgICAgIE51bWJlciAgICAgICAgPT4gJ051bWJlciBvZiB0aGUgQ29uZmlnSXRlbScsCgogICAgICAgICAgICAjIGNvbmZpZyBpdGVtIG9wdGlvbmFsOgogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdTb21lIENvbmZpZyBJdGVtIE5hbWUnLAogICAgICAgICAgICBEZXBsU3RhdGUgICAgID0+ICdTb21lIERlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICBJbmNpU3RhdGUgICAgID0+ICdTb21lIEluY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgJURhdGFQYXlsb2FkLAoKICAgICAgICAgICAgIyBvdGhlcjoKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+ICRWYWx1ZSwKICAgICAgICAgICAgTGlua0FzID0+ICRMaW5rVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3JtYWwsIFBhcmVudCwgQ2hpbGQsIGV0Yy4gKHJlc3BlY3RpdmUgb3JpZ2luYWwgdGlja2V0KQogICAgICAgICAgICBVc2VySUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0byBvdmVycmlkZSB0aGUgVXNlcklEIGZyb20gdGhlIGxvZ2dlZCB1c2VyCiAgICAgICAgfQogICAgKTsKICAgIFRpY2tldCBjb250YWlucyB0aGUgcmVzdWx0IG9mIFRpY2tldEdldCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkcwogICAgQ29uZmlnIGlzIHRoZSBDb25maWcgSGFzaCBzdG9yZWQgaW4gYSBQcm9jZXNzOjpUcmFuc2l0aW9uQWN0aW9uJ3MgIENvbmZpZyBrZXkKICAgIFJldHVybnM6CgogICAgJENvbmZpZ0l0ZW1DcmVhdGVSZXN1bHQgPSAxOyAjIDAKCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZGVmaW5lIGEgY29tbW9uIG1lc3NhZ2UgdG8gb3V0cHV0IGluIGNhc2Ugb2YgYW55IGVycm9yCiAgICBteSAkQ29tbW9uTWVzc2FnZSA9ICJQcm9jZXNzOiAkUGFyYW17UHJvY2Vzc0VudGl0eUlEfSBBY3Rpdml0eTogJFBhcmFte0FjdGl2aXR5RW50aXR5SUR9IgogICAgICAgIC4gIiBUcmFuc2l0aW9uOiAkUGFyYW17VHJhbnNpdGlvbkVudGl0eUlEfSIKICAgICAgICAuICIgVHJhbnNpdGlvbkFjdGlvbjogJFBhcmFte1RyYW5zaXRpb25BY3Rpb25FbnRpdHlJRH0gLSAiOwoKICAgICMgY2hlY2sgZm9yIG1pc3Npbmcgb3Igd3JvbmcgcGFyYW1zCiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fQ2hlY2tQYXJhbXMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbW1vbk1lc3NhZ2UgPT4gJENvbW1vbk1lc3NhZ2UsCiAgICApOwogICAgcmV0dXJuIGlmICEkU3VjY2VzczsKCiAgICAjIG92ZXJyaWRlIFVzZXJJRCBpZiBzcGVjaWZpZWQgYXMgYSBwYXJhbWV0ZXIgaW4gdGhlIFRBIGNvbmZpZwogICAgJFBhcmFte1VzZXJJRH0gPSAkU2VsZi0+X092ZXJyaWRlVXNlcklEKCVQYXJhbSk7CgogICAgIyB1c2UgdGlja2V0IGF0dHJpYnV0ZXMgaWYgbmVlZGVkCiAgICAkU2VsZi0+X1JlcGxhY2VUaWNrZXRBdHRyaWJ1dGVzKCVQYXJhbSk7CiAgICAkU2VsZi0+X1JlcGxhY2VBZGRpdGlvbmFsQXR0cmlidXRlcyglUGFyYW0pOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJURlcGxTdGF0ZTJJRE1hcCA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScgKS0+JSo7CiAgICBteSAlSW5jaVN0YXRlMklETWFwID0gcmV2ZXJzZSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KCBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScgKS0+JSo7CgogICAgbXkgJUNvbmZpZ0l0ZW1QYXJhbTsKCiAgICBpZiAoICRQYXJhbXtDb25maWd9e0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgICMgZm9yIHRoZSBwcm9jZXNzZXMgbW9zdGx5IHRoZSBDb25maWdJdGVtcyB3aWxsIGNvbWUgZnJvbSByZWZlcmVuY2UgZmllbGRzCiAgICAgICAgaWYgKCByZWYgJFBhcmFte0NvbmZpZ317Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9ID0gJFBhcmFte0NvbmZpZ317Q29uZmlnSXRlbUlEfVswXTsKICAgICAgICB9CgogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkUGFyYW17Q29uZmlnfXtDb25maWdJdGVtSUR9OwogICAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkUGFyYW17Q29uZmlnfXtOdW1iZXJ9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgIG15ICRNaXNzaW5nID0gJFBhcmFte0NvbmZpZ317TnVtYmVyfQogICAgICAgICAgICA/ICJObyBDb25maWdJdGVtIHdpdGggTnVtYmVyICckUGFyYW17Q29uZmlnfXtOdW1iZXJ9JyEiCiAgICAgICAgICAgIDogIk5lZWQgQ29uZmlnSXRlbUlEIG9yIE51bWJlciEiOwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgIC4gIkNvdWxkIG5vdCB1cGRhdGUgQ0kgaW4gVGlja2V0OiIKICAgICAgICAgICAgICAgIC4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0gLiAiISAkTWlzc2luZyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAuICJObyBDb25maWdJdGVtIHdpdGggSUQgJyRDb25maWdJdGVtUGFyYW17Q29uZmlnSXRlbUlEfSc7IGZhaWxlZCBpbiBUaWNrZXQ6IgogICAgICAgICAgICAgICAgLiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSAuICIhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkUGFyYW17Q29uZmlnfXtOYW1lfSApIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte05hbWV9ID0gJFBhcmFte0NvbmZpZ317TmFtZX07CiAgICB9CiAgICBpZiAoICRQYXJhbXtDb25maWd9e0RlcGxTdGF0ZX0gJiYgJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9ICkgewogICAgICAgICRDb25maWdJdGVtUGFyYW17RGVwbFN0YXRlSUR9ID0gJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9OwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfXtJbmNpU3RhdGV9ICYmICRJbmNpU3RhdGUySURNYXB7ICRQYXJhbXtDb25maWd9e0luY2lTdGF0ZX0gfSApIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0luY2lTdGF0ZUlEfSA9ICRJbmNpU3RhdGUySURNYXB7ICRQYXJhbXtDb25maWd9e0luY2lTdGF0ZX0gfTsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJFNldE1hcHBpbmcgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHluYW1pY0ZpZWxkU2V0OjpJbm5lckZpZWxkc1RpY2tldFRvQ0knKSAvLyB7fTsKCiAgICAjIGFkZCBkeW5hbWljIGZpZWxkcwogICAgQ09ORklHUEFSQU06CiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtICgga2V5cyAkUGFyYW17Q29uZmlnfS0+JSogKSB7CiAgICAgICAgaWYgKCAkQ29uZmlnUGFyYW0gPX4gL15EeW5hbWljRmllbGRfKC4rKS8gKSB7CiAgICAgICAgICAgIG15ICRGaWVsZE5hbWUgICAgPSAkMTsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ09ORklHUEFSQU0gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGQpOwoKICAgICAgICAgICAgIyBmb3Igc2V0IGZpZWxkcyB3ZSBuZWVkIHRvIG1hcCB0aGUgbmFtZSBvZiB0aGUgaW5uZXIgZmllbGRzCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZCAmJiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyAmJiByZWYgJFBhcmFte0NvbmZpZ317JENvbmZpZ1BhcmFtfSApIHsKICAgICAgICAgICAgICAgIFNFVFZBTFVFOgogICAgICAgICAgICAgICAgZm9yIG15ICRTZXRWYWx1ZSAoICRQYXJhbXtDb25maWd9eyRDb25maWdQYXJhbX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgU0VUVkFMVUUgdW5sZXNzICRTZXRWYWx1ZTsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJbm5lckZpZWxkICgga2V5cyAkU2V0VmFsdWUtPiUqICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZXRNYXBwaW5nLT57JElubmVyRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNldFZhbHVlLT57ICRTZXRNYXBwaW5nLT57JElubmVyRmllbGR9IH0gPSBkZWxldGUgJFNldFZhbHVlLT57JElubmVyRmllbGR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkQ29uZmlnSXRlbVBhcmFteyRDb25maWdQYXJhbX0gPSAkUGFyYW17Q29uZmlnfXskQ29uZmlnUGFyYW19OwogICAgICAgIH0KICAgIH0KCiAgICAjIHVwZGF0ZSBjb25maWcgaXRlbQogICAgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAlQ29uZmlnSXRlbVBhcmFtLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAuICJDb3VsZG4ndCB1cGRhdGUgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gZnJvbSBUaWNrZXQ6ICIKICAgICAgICAgICAgICAgIC4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0gLiAnIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbGluayB0aWNrZXQKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9ICkgewoKICAgICAgICAjIGdldCBsaW5rIG9iamVjdAogICAgICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIGFsbCB0eXBlcwogICAgICAgIG15ICVDb25maWd1cmVkVHlwZXMgPSAkTGlua09iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRTZWxlY3RlZFR5cGU7CiAgICAgICAgbXkgJFNlbGVjdGVkRGlyZWN0aW9uOwoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlQ29uZmlndXJlZFR5cGVzICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gbmUgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntTb3VyY2VOYW1lfQogICAgICAgICAgICAgICAgJiYgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IG5lICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57VGFyZ2V0TmFtZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBUWVBFOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxlY3RlZFR5cGUgICAgICA9ICRUeXBlOwogICAgICAgICAgICAkU2VsZWN0ZWREaXJlY3Rpb24gPSAnU291cmNlJzsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gZXEgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntUYXJnZXROYW1lfSApIHsKICAgICAgICAgICAgICAgICRTZWxlY3RlZERpcmVjdGlvbiA9ICdUYXJnZXQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3QgVFlQRTsKICAgICAgICB9CgogICAgICAgIGlmICggISRTZWxlY3RlZFR5cGUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiTGlua0FzICRQYXJhbXtDb25maWd9LT57TGlua0FzfSBpcyBpbnZhbGlkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNvdXJjZU9iamVjdElEICAgPSAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgbXkgJFNvdXJjZU9iamVjdFR5cGUgPSAnSVRTTUNvbmZpZ0l0ZW0nOwogICAgICAgIG15ICRUYXJnZXRPYmplY3RJRCAgID0gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH07CiAgICAgICAgbXkgJFRhcmdldE9iamVjdFR5cGUgPSAnVGlja2V0JzsKICAgICAgICBpZiAoICRTZWxlY3RlZERpcmVjdGlvbiBlcSAnVGFyZ2V0JyApIHsKICAgICAgICAgICAgJFNvdXJjZU9iamVjdElEICAgPSAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfTsKICAgICAgICAgICAgJFNvdXJjZU9iamVjdFR5cGUgPSAnVGlja2V0JzsKICAgICAgICAgICAgJFRhcmdldE9iamVjdElEICAgPSAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICRUYXJnZXRPYmplY3RUeXBlID0gJ0lUU01Db25maWdJdGVtJzsKICAgICAgICB9CgogICAgICAgIG15ICRTdWNjZXNzID0gJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAkU291cmNlT2JqZWN0VHlwZSwKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRTb3VyY2VPYmplY3RJRCwKICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICRUYXJnZXRPYmplY3RUeXBlLAogICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJFRhcmdldE9iamVjdElELAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFNlbGVjdGVkVHlwZSwKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuICJDb3VsZG4ndCBMaW5rIFRpY2tldHMgJFNvdXJjZU9iamVjdElEIHdpdGggJFRhcmdldE9iamVjdElEIGFzICRQYXJhbXtDb25maWd9LT57TGlua0FzfSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Service/PreferencesDB.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBmZjllMjk3YmFmMjg3ZTE2MDcxZDNhYzZhZDdmNmMxM2YxMWFjN2ZhIC0gS2VybmVsL1N5c3RlbS9TZXJ2aWNlL1ByZWZlcmVuY2VzREIucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6U2VydmljZTo6UHJlZmVyZW5jZXNEQjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q2FjaGVUeXBlfSA9ICdTZXJ2aWNlUHJlZmVyZW5jZXNEQic7CiAgICAkU2VsZi0+e0NhY2hlVFRMfSAgPSA2MCAqIDYwICogMjQgKiAyMDsKCiAgICAjIHByZWZlcmVuY2VzIHRhYmxlIGRhdGEKICAgICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gICAgICAgICAgPSAnc2VydmljZV9wcmVmZXJlbmNlcyc7CiAgICAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGVLZXl9ICAgICAgID0gJ3ByZWZlcmVuY2VzX2tleSc7CiAgICAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGVWYWx1ZX0gICAgID0gJ3ByZWZlcmVuY2VzX3ZhbHVlJzsKICAgICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVNlcnZpY2VJRH0gPSAnc2VydmljZV9pZCc7CgogICAgIyBjcmVhdGUgY2FjaGUgcHJlZml4CiAgICAkU2VsZi0+e0NhY2hlUHJlZml4fSA9ICdTZXJ2aWNlUHJlZmVyZW5jZXNEQicKICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0KICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0KICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfQogICAgICAgIC4gJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBTZXJ2aWNlUHJlZmVyZW5jZXNTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhTZXJ2aWNlSUQgS2V5IFZhbHVlKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJF8hIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGVsZXRlIG9sZCBkYXRhCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGV9IFdIRVJFICIKICAgICAgICAgICAgLiAiJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfSA9ID8gQU5EICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0gPSA/IiwKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTZXJ2aWNlSUR9LCBcJFBhcmFte0tleX0gXSwKICAgICk7CgogICAgIyBpbnNlcnQgbmV3IGRhdGEKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gIklOU0VSVCBJTlRPICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gKCRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVNlcnZpY2VJRH0sICIKICAgICAgICAgICAgLiAiICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0sICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfSkgIgogICAgICAgICAgICAuICIgVkFMVUVTICg/LCA/LCA/KSIsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U2VydmljZUlEfSwgXCRQYXJhbXtLZXl9LCBcJFBhcmFte1ZhbHVlfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRTZWxmLT57Q2FjaGVQcmVmaXh9IC4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgU2VydmljZVByZWZlcmVuY2VzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciAocXcoU2VydmljZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KIyAtLS0KIyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAtLS0KIwojICAgICMgY2hlY2sgaWYgc2VydmljZSBwcmVmZXJlbmNlcyBhcmUgYXZhaWxhYmxlCiMgICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NlcnZpY2VQcmVmZXJlbmNlcycpOwojIC0tLQoKICAgICMgcmVhZCBjYWNoZQogICAgbXkgJENhY2hlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRTZWxmLT57Q2FjaGVQcmVmaXh9IC4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICApOwogICAgcmV0dXJuICV7JENhY2hlfSBpZiAkQ2FjaGU7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcHJlZmVyZW5jZXMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiU0VMRUNUICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0sICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfSAiCiAgICAgICAgICAgIC4gIiBGUk9NICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gV0hFUkUgJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfSA9ID8iLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1NlcnZpY2VJRH0gXSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXsgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgIH0KCiAgICAjIHNldCBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntDYWNoZVByZWZpeH0gLiAkUGFyYW17U2VydmljZUlEfSwKICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICApOwoKICAgIHJldHVybiAlRGF0YTsKfQoKMTsK</File>
        <File Location="Kernel/System/Stats/Dynamic/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6SVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgR2V0T2JqZWN0TmFtZSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgIHJldHVybiAnSVRTTUNvbmZpZ0l0ZW0nOwp9CgpzdWIgR2V0T2JqZWN0QmVoYXZpb3VycyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVCZWhhdmlvdXJzID0gKAogICAgICAgIFByb3ZpZGVzRGFzaGJvYXJkV2lkZ2V0ID0+IDEsCiAgICApOwoKICAgIHJldHVybiAlQmVoYXZpb3VyczsKfQoKc3ViIEdldE9iamVjdEF0dHJpYnV0ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CgogICAgIyBnZXQgY3VycmVudCB0aW1lIHRvIGZpeCBidWcjMzgzMAogICAgbXkgJFRpbWVTdGFtcCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Ub1N0cmluZygpOwoKICAgICMgY3JlYXRlIG9iamVjdCBhdHRyaWJ1dGUgYXJyYXkKICAgIG15IEBPYmplY3RBdHRyaWJ1dGVzID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiAgICA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgICAgID0+ICdDbGFzc0lEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBMYW5ndWFnZVRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAxLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbmNpZGVudCBTdGF0ZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAxLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnQ3JlYXRlIFRpbWUnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDcmVhdGVUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnQ2hhbmdlIFRpbWUnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDaGFuZ2VUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFRpbWVTdG9wICAgICAgICAgPT4gJFRpbWVTdGFtcCwKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJ0NvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlJywKICAgICAgICAgICAgICAgIFRpbWVTdG9wICA9PiAnQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIHRoZSB4bWwgZGF0YQogICAgQ0xBU1NJRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewoKICAgICAgICAjIGdldCB4bWwgZGVmaW5pdGlvbiBoYXNoCiAgICAgICAgbXkgJFhNTERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTSUQgaWYgISRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfTsKCiAgICAgICAgJFNlbGYtPl9YTUxBdHRyaWJ1dGVBZGQoCiAgICAgICAgICAgIE9iamVjdEF0dHJpYnV0ZXMgPT4gXEBPYmplY3RBdHRyaWJ1dGVzLAogICAgICAgICAgICBYTUxEZWZpbml0aW9uICAgID0+ICRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJ1hNTDo6JyAuICRDbGFzc0lELAogICAgICAgICAgICBQcmVmaXhOYW1lICAgICAgID0+ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gQE9iamVjdEF0dHJpYnV0ZXM7Cn0KCnN1YiBfWE1MQXR0cmlidXRlQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17T2JqZWN0QXR0cmlidXRlc307CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEZWZpbml0aW9ufTsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1hNTERlZmluaXRpb259IG5lICdBUlJBWSc7CgogICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAkUGFyYW17UHJlZml4fSAuPSAnOjonOwogICAgfQogICAgaWYgKCAkUGFyYW17UHJlZml4TmFtZX0gKSB7CiAgICAgICAgJFBhcmFte1ByZWZpeE5hbWV9IC49ICc6Oic7CiAgICB9CgogICAgJFBhcmFte0xldmVsfSAgICAgIHx8PSAwOwogICAgJFBhcmFte1ByZWZpeH0gICAgIHx8PSAnJzsKICAgICRQYXJhbXtQcmVmaXhOYW1lfSB8fD0gJyc7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICBuZXh0IElURU0gaWYgISRJdGVtLT57U2VhcmNoYWJsZX0gJiYgISRJdGVtLT57U3VifTsKCiAgICAgICAgIyBjcmVhdGUga2V5IGFuZCBuYW1lCiAgICAgICAgbXkgJEtleSAgPSAkUGFyYW17UHJlZml4fSAuICRJdGVtLT57S2V5fTsKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbXtQcmVmaXhOYW1lfSAuICRJdGVtLT57TmFtZX07CgogICAgICAgICMgYWRkIGF0dHJpYnV0ZQogICAgICAgIG15ICRBdHRyaWJ1dGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+WE1MU3RhdHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgICAgIEtleSAgPT4gJEtleSwKICAgICAgICAgICAgSXRlbSA9PiAkSXRlbSwKICAgICAgICAgICAgTmFtZSA9PiAkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IElURU0gaWYgISRBdHRyaWJ1dGU7CiAgICAgICAgbmV4dCBJVEVNIGlmIHJlZiAkQXR0cmlidXRlIG5lICdBUlJBWSc7CiAgICAgICAgbmV4dCBJVEVNIGlmICFzY2FsYXIgQHskQXR0cmlidXRlfTsKCiAgICAgICAgIyBhZGQgYXR0cmlidXRlcyB0byBvYmplY3QgYXJyYXkKICAgICAgICBwdXNoIEB7ICRQYXJhbXtPYmplY3RBdHRyaWJ1dGVzfSB9LCBAeyRBdHRyaWJ1dGV9OwoKICAgICAgICBuZXh0IElURU0gaWYgISRJdGVtLT57U3VifTsKCiAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIHdhcyBmb3VuZAogICAgICAgICRTZWxmLT5fWE1MQXR0cmlidXRlQWRkKAogICAgICAgICAgICBPYmplY3RBdHRyaWJ1dGVzID0+ICRQYXJhbXtPYmplY3RBdHRyaWJ1dGVzfSwKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiAgICA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgIExldmVsICAgICAgICAgICAgPT4gJFBhcmFte0xldmVsfSArIDEsCiAgICAgICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgUHJlZml4TmFtZSAgICAgICA9PiAkTmFtZSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgR2V0U3RhdEVsZW1lbnRQcmV2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICggaW50IHJhbmQgNTAwICkgKyAxOwp9CgpzdWIgR2V0U3RhdEVsZW1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBsaW1pdAogICAgJFBhcmFte0xpbWl0fSA9IDFfMDAwXzAwMDsKCiAgICAjIGV4dHJhY3QgYWxsIHhtbCBwYXJhbSBrZXlzIGZyb20gdGhlIHBhcmFtIGhhc2gKICAgIG15IEBYTUxQYXJhbXMgPSBncmVwIHsgJF8gPX4gbXtcQSBYTUw6On14bXMgfSBzb3J0IGtleXMgJVBhcmFtOwoKICAgIGlmIChAWE1MUGFyYW1zKSB7CiAgICAgICAgcmV0dXJuICdZb3UgbXVzdCBkZWZpbmUgYSBjbGFzcyBpbiBvbmUgYXhpcy4nIGlmICEkUGFyYW17Q2xhc3NJRHN9OwogICAgICAgIHJldHVybiAnWW91IG11c3QgZGVmaW5lIGEgY2xhc3MgaW4gb25lIGF4aXMuJyBpZiByZWYgJFBhcmFte0NsYXNzSURzfSBuZSAnQVJSQVknOwogICAgfQoKICAgICMgdG8gY29sbGVjdCBkYXRlIGZpZWxkcyBzZXBhcmF0ZWx5CiAgICBteSAlWE1MUGFyYW1zRGF0ZUZpZWxkczsKCiAgICBteSAlWE1MQ2xhc3NJRHM7CiAgICBQQVJBTUtFWToKICAgIGZvciBteSAkUGFyYW1LZXkgKEBYTUxQYXJhbXMpIHsKCiAgICAgICAgIyBleHRyYWN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBteSAkU2VhcmNoVmFsdWVzID0gJFBhcmFteyRQYXJhbUtleX07CgogICAgICAgICMgcHJlcGFyZSBwYXJhbSB2YWx1ZQogICAgICAgIGlmICggIXJlZiAkU2VhcmNoVmFsdWVzICkgewogICAgICAgICAgICAkU2VhcmNoVmFsdWVzID0gWyRTZWFyY2hWYWx1ZXNdOwogICAgICAgIH0KCiAgICAgICAgbmV4dCBQQVJBTUtFWSBpZiAhQHskU2VhcmNoVmFsdWVzfTsKCiAgICAgICAgIyBzcGxpdCBwYXJhbSBrZXkKICAgICAgICBteSAoICRDbGFzc0lELCAkU2VhcmNoS2V5ICkgPSAkUGFyYW1LZXkgPX4gbXsgXEEgWE1MOjogKCBcZCsgKSA6OiAoLispIFx6IH14bXM7CgogICAgICAgICMgcHJlcGFyZSBzZWFyY2gga2V5CiAgICAgICAgJFNlYXJjaEtleSA9fiBzWyA6OiBdWyd9WyVdeyddeG1zZzsKCiAgICAgICAgIyBBZGQgY2xhc3MgaWQgdG8geG1sIGNsYXNzIGlkIGhhc2gKICAgICAgICAkWE1MQ2xhc3NJRHN7JENsYXNzSUR9ID0gMTsKCiAgICAgICAgIyBjb2xsZWN0IGRhdGUgZmllbGRzIHNlcGFyYXRlbHkgKGUuZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlTmV3ZXJEYXRlKQogICAgICAgIGlmICggJFNlYXJjaEtleSA9fiBteyAoLispICggTmV3ZXJEYXRlIHwgT2xkZXJEYXRlICkgXHogfXhtcyApIHsKICAgICAgICAgICAgJFhNTFBhcmFtc0RhdGVGaWVsZHN7JDF9LT57JDJ9ID0gJFNlYXJjaFZhbHVlcy0+WzBdOwoKICAgICAgICAgICAgbmV4dCBQQVJBTUtFWTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHNlYXJjaCBoYXNoCiAgICAgICAgbXkgJFNlYXJjaEhhc2ggPSB7CiAgICAgICAgICAgICdbMV17XCdWZXJzaW9uXCd9WzFde1wnJyAuICRTZWFyY2hLZXkgLiAnXCd9WyVde1wnQ29udGVudFwnfScgPT4gJFNlYXJjaFZhbHVlcywKICAgICAgICB9OwoKICAgICAgICBwdXNoIEB7ICRQYXJhbXtXaGF0fSB9LCAkU2VhcmNoSGFzaDsKICAgIH0KCiAgICAjIGJ1aWxkIHNlYXJjaCBoYXNoIGZvciBkYXRlIGZpZWxkcwogICAgZm9yIG15ICREYXRlRmllbGROYW1lICggc29ydCBrZXlzICVYTUxQYXJhbXNEYXRlRmllbGRzICkgewoKICAgICAgICBteSAkU2VhcmNoSGFzaCA9IHsKICAgICAgICAgICAgJ1sxXXtcJ1ZlcnNpb25cJ31bMV17XCcnIC4gJERhdGVGaWVsZE5hbWUgLiAnXCd9WyVde1wnQ29udGVudFwnfScgPT4gewogICAgICAgICAgICAgICAgJy1iZXR3ZWVuJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJFhNTFBhcmFtc0RhdGVGaWVsZHN7JERhdGVGaWVsZE5hbWV9LT57TmV3ZXJEYXRlfSwKICAgICAgICAgICAgICAgICAgICAkWE1MUGFyYW1zRGF0ZUZpZWxkc3skRGF0ZUZpZWxkTmFtZX0tPntPbGRlckRhdGV9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9OwoKICAgICAgICBwdXNoIEB7ICRQYXJhbXtXaGF0fSB9LCAkU2VhcmNoSGFzaDsKICAgIH0KCiAgICBpZiAoJVhNTENsYXNzSURzKSB7CiAgICAgICAgbXkgQEV4aXN0cyA9IGdyZXAgeyAkWE1MQ2xhc3NJRHN7JF99IH0gQHsgJFBhcmFte0NsYXNzSURzfSB9OwoKICAgICAgICByZXR1cm4gMCBpZiAhQEV4aXN0czsKICAgIH0KCiAgICAjIHN0YXJ0IGNvbmZpZyBpdGVtIGV4dGVuZGVkIHNlYXJjaAogICAgbXkgJEFtb3VudE9mQ0lzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgJVBhcmFtLAogICAgICAgIFJlc3VsdCA9PiAnQ09VTlQnLAogICAgKTsKCiAgICByZXR1cm4gJEFtb3VudE9mQ0lzOwp9CgpzdWIgRXhwb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgSW1wb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgoxOwo=</File>
        <File Location="Kernel/System/SysConfig/ValueType/Entity/ConfigItemClass.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTeXNDb25maWc6OlZhbHVlVHlwZTo6RW50aXR5OjpDb25maWdJdGVtQ2xhc3M7CgojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQYXJhbU9iamVjdCkKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZzo6VmFsdWVUeXBlOjpFbnRpdHkpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnOjpWYWx1ZVR5cGU6OkVudGl0eTo6Q29uZmlnSXRlbUNsYXNzIC0gU3lzdGVtIGNvbmZpZ3VyYXRpb24gY29uZmlnIGl0ZW0gY2xhc3MgZW50aXR5IHR5cGUgYmFja2VuZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCkNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEVudGl0eVR5cGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnOjpWYWx1ZVR5cGU6OkVudGl0eTo6Q29uZmlnSXRlbUNsYXNzJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBFbnRpdHlWYWx1ZUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnSXRlbUNsYXNzZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICBteSBAUmVzdWx0OwoKICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJENvbmZpZ0l0ZW1DbGFzc2VzLT4lKiApIHsKICAgICAgICBwdXNoIEBSZXN1bHQsICRDb25maWdJdGVtQ2xhc3Nlcy0+eyRJRH07CiAgICB9CgogICAgcmV0dXJuIEBSZXN1bHQ7Cn0KCnN1YiBFbnRpdHlMb29rdXBGcm9tV2ViUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDbGFzc0lEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1DbGFzc0lEJyApIC8vICcnOwoKICAgIHJldHVybiBpZiAhJENsYXNzSUQ7CgogICAgbXkgJEl0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICApOwoKICAgIHJldHVybiAkSXRlbS0+e05hbWV9Owp9CgoxOwo=</File>
        <File Location="Kernel/System/Ticket/Event/TicketStatusLink.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpUaWNrZXRTdGF0dXNMaW5rOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgQ29uZmlnKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIHJldHVybiAxIGlmICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpTZXRJbmNpZGVudFN0YXRlT25MaW5rJyk7CgogICAgIyBnZXQgdGlja2V0IGlkIGRlcGVuZGluZyBvbiBldmVudAogICAgbXkgJFRpY2tldElEOwogICAgaWYgKCAkUGFyYW17RXZlbnR9IGVxICdMaW5rQWRkJyB8fCAkUGFyYW17RXZlbnR9IGVxICdMaW5rRGVsZXRlJyApIHsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIENvbW1lbnQpKSB7CiAgICAgICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIGluIERhdGEhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnTGlua0FkZCcgKSB7CiAgICAgICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+e1R5cGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUeXBlIGluIERhdGEhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgbGluayBldmVudCBjb25jZXJucyBhIHRpY2tldAogICAgICAgIHJldHVybiAxIHVubGVzcyAkUGFyYW17RGF0YX0tPntDb21tZW50fSA9fiBteyBcQSAoIFxkKyApICUlVGlja2V0IFx6IH14bXM7CgogICAgICAgICRUaWNrZXRJRCA9ICQxOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57VGlja2V0SUR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUaWNrZXRJRCBpbiBEYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldElEID0gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9OwogICAgfQoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAlVGlja2V0ICAgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKICAgIHJldHVybiAxIGlmICElVGlja2V0OwoKICAgICMgY2hlY2sgaWYgdGlja2V0IHR5cGUgaXMgcmVsZXZhbnQgKG9wdGlvbmFsIGZ1bmN0aW9uYWxpdHkpCiAgICBteSAkT2xkVGlja2V0VHlwZVJlbGV2YW50OwogICAgbXkgJE5ld1RpY2tldFR5cGVSZWxldmFudDsKICAgIG15ICRUaWNrZXRUeXBlcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OlRpY2tldFR5cGVzJyk7CiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICkgewoKICAgICAgICAjIHRpY2tldCB0eXBlcyBhcmUgbm90IHVzZWQsIGNoYW5nZXMgZG9uJ3QgYWZmZWN0IENJIGluY2lkZW50IHN0YXRlcwogICAgICAgIHJldHVybiAxIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFRpY2tldFR5cGVzKTsKCiAgICAgICAgIyBkZXRlcm1pbmUgdHlwZSBvZiB0aWNrZXQgYmVmb3JlIGxhc3QgdXBkYXRlCiAgICAgICAgbXkgJE9sZFRpY2tldFR5cGU7CiAgICAgICAgbXkgQEhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgIExJTkU6CiAgICAgICAgZm9yIG15ICRMaW5lICggcmV2ZXJzZSBASGlzdG9yeUxpbmVzICkgewogICAgICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUtPntIaXN0b3J5VHlwZX0gbmUgJ1R5cGVVcGRhdGUnOwogICAgICAgICAgICBteSBAQ29tbWVudFBhcnRzID0gc3BsaXQgLyUlLywgJExpbmUtPntOYW1lfTsKICAgICAgICAgICAgJE9sZFRpY2tldFR5cGUgPSAkQ29tbWVudFBhcnRzWzNdOwogICAgICAgICAgICBsYXN0IExJTkU7CiAgICAgICAgfQogICAgICAgIGlmICggISRPbGRUaWNrZXRUeXBlICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRm91bmQgbm8gcHJldmlvdXMgdGlja2V0IHR5cGUgZm9yIHRpY2tldCBpZCAkVGlja2V0SUQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBvbmx5IGNoYW5nZXMgcmVsZXZhbnQtPmlycmVsZXZhbnQgYW5kIGlycmVsZXZhbnQtPnJlbGV2YW50IGFyZSBvZiBpbnRlcmVzdAogICAgICAgICRPbGRUaWNrZXRUeXBlUmVsZXZhbnQgPSAxIGlmIGdyZXAgeyAkXyBlcSAkT2xkVGlja2V0VHlwZSB9IEB7JFRpY2tldFR5cGVzfTsKICAgICAgICAkTmV3VGlja2V0VHlwZVJlbGV2YW50ID0gMSBpZiBncmVwIHsgJF8gZXEgJFRpY2tldHtUeXBlfSB9IEB7JFRpY2tldFR5cGVzfTsKICAgICAgICByZXR1cm4gMSBpZiAoICRPbGRUaWNrZXRUeXBlUmVsZXZhbnQgfHwgJycgKSBlcSAoICROZXdUaWNrZXRUeXBlUmVsZXZhbnQgfHwgJycgKTsKICAgIH0KCiAgICAjIHNob3J0Y3V0IGZvciBvdGhlciBldmVudHMgKGNoZWNrIGlmIHRpY2tldCB0eXBlIGlzIGluIHNjb3BlKQogICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFRpY2tldFR5cGVzKSApIHsKICAgICAgICByZXR1cm4gMSBpZiAhJFRpY2tldHtUeXBlfTsKICAgICAgICByZXR1cm4gMSBpZiAhZ3JlcCB7ICRfIGVxICRUaWNrZXR7VHlwZX0gfSBAeyRUaWNrZXRUeXBlc307CiAgICB9CgogICAgIyBjaGVjayBpZiB0aWNrZXQgc3RhdGUgaXMgcmVsZXZhbnQKICAgIG15ICRPbGRUaWNrZXRTdGF0ZVJlbGV2YW50OwogICAgbXkgJE5ld1RpY2tldFN0YXRlUmVsZXZhbnQ7CiAgICBteSBAT3BlblN0YXRlVHlwZXMgPSAoICduZXcnLCAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJywgJ3BlbmRpbmcgYXV0bycgKTsKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0U3RhdGVVcGRhdGUnICkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+e09sZFRpY2tldERhdGF9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUaWNrZXRJRCBpbiBPbGRUaWNrZXREYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgb25seSBjaGFuZ2VzIG9wZW4tPmNsb3NlIGFuZCBjbG9zZS0+b3BlbiBhcmUgb2YgaW50ZXJlc3QKICAgICAgICAkTmV3VGlja2V0U3RhdGVSZWxldmFudCA9IDEgaWYgZ3JlcCB7ICRfIGVxICRUaWNrZXR7U3RhdGVUeXBlfSB9IEBPcGVuU3RhdGVUeXBlczsKICAgICAgICAkT2xkVGlja2V0U3RhdGVSZWxldmFudCA9IDEgaWYgZ3JlcCB7ICRfIGVxICRQYXJhbXtEYXRhfS0+e09sZFRpY2tldERhdGF9LT57U3RhdGVUeXBlfSB9IEBPcGVuU3RhdGVUeXBlczsKICAgICAgICByZXR1cm4gMSBpZiAoICROZXdUaWNrZXRTdGF0ZVJlbGV2YW50IHx8ICcnICkgZXEgKCAkT2xkVGlja2V0U3RhdGVSZWxldmFudCB8fCAnJyApOwogICAgfQoKICAgICMgc2hvcnRjdXQgZm9yIG90aGVyIGV2ZW50cyAoY2hlY2sgaWYgdGlja2V0IHN0YXRlIGlzIGluIHNjb3BlKQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIDEgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1N0YXRlVHlwZX0gfSBAT3BlblN0YXRlVHlwZXM7CiAgICB9CgogICAgIyBzaG9ydGN1dCBmb3IgdGlja2V0IGV2ZW50cyAoY2hlY2sgaWYgdGlja2V0IGhhcyBhbnkgcG90ZW50aWFsbHkgcmVsZXZhbnQgbGlua3MpCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFN0YXRlVXBkYXRlJyB8fCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRUeXBlVXBkYXRlJyApIHsKICAgICAgICBteSAlTGlua0tleUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rS2V5TGlzdCgKICAgICAgICAgICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgICAgICAgICAgS2V5MSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgU3RhdGUgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKTsKICAgIH0KCiAgICAjIHByZXBhcmUgaW5jaWRlbnQgc3RhdGVzIGFuZCByZWxldmFudCBsaW5rIHR5cGVzIHBlciBpbmNpZGVudCBzdGF0ZQogICAgbXkgJEluY2lkZW50U3RhdGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6SW5jaWRlbnRTdGF0ZXMnKTsKICAgIG15ICRMaW5rVHlwZXMgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkxpbmtUeXBlcycpOwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJExpbmtUeXBlcykgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIGNvbmZpZ3VyYXRpb24gZm9yICdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6TGlua1R5cGVzJyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbXkgJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZTsKCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0xpbmtBZGQnICkgewogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXskTGlua1R5cGVzfSApIHsKICAgICAgICAgICAgaWYgKCAkTGlua1R5cGUgZXEgJFBhcmFte0RhdGF9LT57VHlwZX0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRMaW5rVHlwZXNCeUluY2lkZW50U3RhdGV7ICRMaW5rVHlwZXMtPnskTGlua1R5cGV9IH0gfSwgJExpbmtUeXBlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAxIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rVHlwZXNCeUluY2lkZW50U3RhdGUgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXskTGlua1R5cGVzfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkTGlua1R5cGVzQnlJbmNpZGVudFN0YXRleyAkTGlua1R5cGVzLT57JExpbmtUeXBlfSB9IH0sICRMaW5rVHlwZTsKICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgYWRkZWQgb3IgcmVtb3ZlZCBsaW5rcwogICAgaWYgKCAkUGFyYW17RXZlbnR9IGVxICdMaW5rQWRkJyB8fCAkUGFyYW17RXZlbnR9IGVxICdMaW5rRGVsZXRlJyApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfTsKICAgICAgICBteSAkVmVyc2lvbiAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgb3B0aW9uYWw6IGNoZWNrIGlmIENJIGRlcGxveW1lbnQgc3RhdGUgaXMgcmVsZXZhbnQKICAgICAgICBteSAkRGVwbG95bWVudFN0YXRlcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkRlcGxveW1lbnRTdGF0ZXMnKTsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkRGVwbG95bWVudFN0YXRlcykgKSB7CiAgICAgICAgICAgIHJldHVybiAxIGlmICFncmVwIHsgJF8gZXEgJFZlcnNpb24tPntEZXBsU3RhdGV9IH0gQHskRGVwbG95bWVudFN0YXRlc307CiAgICAgICAgfQoKICAgICAgICAjIHJhaXNlIGluY2lkZW50IHN0YXRlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnTGlua0FkZCcgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X0NoZWNrUmFpc2VJbmNpZGVudFN0YXRlKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgICAgICAgICAgICAgID0+ICRWZXJzaW9uLAogICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZXMgICAgICAgICAgID0+ICRJbmNpZGVudFN0YXRlcywKICAgICAgICAgICAgICAgIExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSA9PiBcJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGxvd2VyIGluY2lkZW50IHN0YXRlIGlmIG5lY2Vzc2FyeQogICAgICAgIHJldHVybiAkU2VsZi0+X0NoZWNrTG93ZXJJbmNpZGVudFN0YXRlKAogICAgICAgICAgICBWZXJzaW9uICAgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgIEluY2lkZW50U3RhdGVzICAgICAgICAgICA9PiAkSW5jaWRlbnRTdGF0ZXMsCiAgICAgICAgICAgIExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSA9PiBcJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICApOwogICAgfQoKICAgICMgaGFuZGxlIHRpY2tldCBjbG9zdXJlL3JlLW9wZW4gYW5kIHJlbGV2YW50L2lycmVsZXZhbnQgdHlwZSBjaGFuZ2UKICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0U3RhdGVVcGRhdGUnIHx8ICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICkgewoKICAgICAgICAjIHJlbGV2YW50IHRpY2tldCBzdGF0ZSBhbmQgdHlwZSB1cGRhdGVzIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheQogICAgICAgICMgYm90aCBtZWFuIGEgdGlja2V0IGlzIHJlbGV2YW50IGZvciBDSSBpbmNpZGVudCBzdGF0ZSBjaGFuZ2VzIG9yIG5vdAogICAgICAgICMgdGlja2V0IHJlLW9wZW4gb3IgY2hhbmdlIHRvIHJlbGV2YW50IHR5cGUgPSBtaWdodCBoYXZlIHRvIHJhaXNlIGluY2lkZW50IHN0YXRlIG9mIENJcwogICAgICAgICMgdGlja2V0IGNsb3N1cmUgb3IgY2hhbmdlIHRvIGlycmVsZXZhbnQgdHlwZSA9IG1pZ2h0IGhhdmUgdG8gbG93ZXIgaW5jaWRlbnQgc3RhdGUgb2YgQ0lzCiAgICAgICAgbXkgJFJlbGV2YW50Tm93OwogICAgICAgIGlmICgKICAgICAgICAgICAgKCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRTdGF0ZVVwZGF0ZScgJiYgJE5ld1RpY2tldFN0YXRlUmVsZXZhbnQgKQogICAgICAgICAgICB8fCAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICYmICROZXdUaWNrZXRUeXBlUmVsZXZhbnQgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkUmVsZXZhbnROb3cgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBsb29wIHRocm91Z2ggYWxsIGxpbmsgdHlwZXMgYW5kIGNoZWNrIGxpbmtzIHRvIHNlZSBpZiB0aGVyZSBhcmUgcG9zc2libHkgYWZmZWN0ZWQgQ0lzCiAgICAgICAgbXkgJERlcGxveW1lbnRTdGF0ZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzJyk7CiAgICAgICAgSU5DSURFTlRTVEFURToKICAgICAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyRJbmNpZGVudFN0YXRlc30gKSB7CiAgICAgICAgICAgIExJTktUWVBFOgogICAgICAgICAgICBmb3IgbXkgJExpbmtUeXBlICggQHsgJExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZXskSW5jaWRlbnRTdGF0ZX0gfSApIHsKICAgICAgICAgICAgICAgIG15IEBMaW5rZWRDSXMgPSAkU2VsZi0+X0NoZWNrVGlja2V0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICFATGlua2VkQ0lzOwoKICAgICAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChATGlua2VkQ0lzKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFZlcnNpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbDogY2hlY2sgaWYgQ0kgZGVwbG95bWVudCBzdGF0ZSBpcyByZWxldmFudAogICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCREZXBsb3ltZW50U3RhdGVzKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgIWdyZXAgeyAkXyBlcSAkVmVyc2lvbi0+e0RlcGxTdGF0ZX0gfSBAeyREZXBsb3ltZW50U3RhdGVzfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB2cyBzdGF0ZSBjYXVzZWQgYnkgbGluawoKICAgICAgICAgICAgICAgICAgICAjIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgbG93ZXIgdGhhbiBjYXVzZWQgYnkgbGluayAtPiBzZXQKICAgICAgICAgICAgICAgICAgICBpZiAoJFJlbGV2YW50Tm93KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3J0Y3V0OiBub3RoaW5nIHRvIGRvIGlmIENJIGlzIGFscmVhZHkgaW4gaGlnaGVzdCBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gZXEgJEluY2lkZW50U3RhdGVzLT5bMF07CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3J0Y3V0OiBub3RoaW5nIHRvIGRvIGlmIENJIGlzIGFscmVhZHkgaW4gc2FtZSBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gZXEgJEluY2lkZW50U3RhdGU7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIENJIGlzIGluIGhpZ2hlciBpbmNpZGVudCBzdGF0ZSBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgIFRNUElOQ0lERU5UU1RBVEU6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkVG1wSW5jaWRlbnRTdGF0ZSAoIEB7JEluY2lkZW50U3RhdGVzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBmdXJ0aGVyIGluY2lkZW50IHN0YXRlcyBhcmUgbG93ZXIgdGhhbiBjdXJyZW50IG9uZSAtPiBzZXQgbmV3IHN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IFRNUElOQ0lERU5UU1RBVEUgaWYgJFRtcEluY2lkZW50U3RhdGUgZXEgJEluY2lkZW50U3RhdGU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IGVxICRUbXBJbmNpZGVudFN0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNldCBuZXcgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPl9TZXRDSVN0YXR1cygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlID0+ICRJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgc2FtZSBhcyBjYXVzZWQgYnkgbGluayAtPiByZS1jYWxjdWxhdGUKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnRjdXQ6IG5vdGhpbmcgdG8gZG8gaWYgQ0kgaXMgYWxyZWFkeSBpbiBsb3dlc3QgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IGVxICRJbmNpZGVudFN0YXRlcy0+Wy0xXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnRjdXQ6IG5vdGhpbmcgdG8gZG8gaWYgQ0kgaXMgbm90IGluIHNhbWUgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IG5lICRJbmNpZGVudFN0YXRlOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNhbGN1bGF0ZSBpbmNpZGVudCBzdGF0ZSBleGFjdGx5CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT5fQ2hlY2tMb3dlckluY2lkZW50U3RhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uICAgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlcyAgICAgICAgICAgPT4gJEluY2lkZW50U3RhdGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlID0+IFwlTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyB1bmtub3duL2lycmVsZXZhbnQgZXZlbnQKICAgIGVsc2UgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybiAxOwp9CgojIFJhdGlvbmFsZToKIyBTdGFydCBhdCBoaWdoZXN0ICh3b3JzdCkgaW5jaWRlbnQgc3RhdGUgYW5kIGxvb3AgZG93biB0byBjdXJyZW50IGluY2lkZW50IHN0YXRlLAojICAgY2hlY2tpbmcgZm9yIGxpbmtzIG9uIGFsbCB0eXBlcyBjb25maWd1cmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBpbmNpZGVudCBzdGF0ZS4KIyBJZiBhbnkgbGluayBmb3IgYSBoaWdoZXIgaW5jaWRlbnQgc3RhdGUgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgZm91bmQsCiMgICBzZXQgdGhpcyBzdGF0ZSBhbmQgZXhpdC4KIyBEdWUgdG8gdG9wLXRvLWJvdHRvbSBtZXRob2QsIG5vIGhpZ2hlciBpbmNpZGVudCBzdGF0ZSBjYW4gb2NjdXIgbGF0ZXIuCnN1YiBfQ2hlY2tSYWlzZUluY2lkZW50U3RhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFZlcnNpb24gSW5jaWRlbnRTdGF0ZXMgTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlIFRpY2tldElEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9vcCB0aHJvdWdoIHRhcmdldCBzdGF0ZXMgYW5kIGNoZWNrIGlmIGl0IG5lZWRzIHRvIGJlIGNoYW5nZWQKICAgIElOQ0lERU5UU1RBVEU6CiAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyAkUGFyYW17SW5jaWRlbnRTdGF0ZXN9IH0gKSB7CgogICAgICAgICMgQ0kgYWxyZWFkeSBpbiB0YXJnZXQgc3RhdGUgLSBub3RoaW5nIHRvIGRvCiAgICAgICAgcmV0dXJuIDEgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBlcSAkSW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgIyBjaGVjayBpZiB3ZSBoYXZlIGxpbmtlZCB0aWNrZXRzIHRoYXQgbGVhZCB0byBpbmNpZGVudCBzdGF0ZQogICAgICAgIExJTktUWVBFOgogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBAeyAkUGFyYW17TGlua1R5cGVzQnlJbmNpZGVudFN0YXRlfS0+eyRJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICEkU2VsZi0+X0NoZWNrQ29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBsaW5rZWQgdGlja2V0IC0gc2V0IGluY2lkZW50IHN0YXRlIGFuZCBleGl0CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1NldENJU3RhdHVzKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgICA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlID0+ICRJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKIyBSYXRpb25hbGU6CiMgU2hvcnRjdXQgaWYgQ0kgaXMgYWxyZWR5IGluIGxvd2VzdCAoYmVzdCkgaW5jaWRlbnQgc3RhdGUgPSBjYW4ndCBoYXZlIGNoYW5nZWQgYWZ0ZXIgbGluayBkZWxldGUuCiMgU3RhcnQgYXQgaGlnaGVzdCAod29yc3QpIGluY2lkZW50IHN0YXRlIGFuZCBsb29wIGRvd24gdG8gY3VycmVudCBpbmNpZGVudCBzdGF0ZSwKIyAgIGNoZWNraW5nIGZvciBsaW5rcyBvbiBhbGwgdHlwZXMgY29uZmlndXJlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgaW5jaWRlbnQgc3RhdGVzLgojIElmIGEgbGluayBmb3IgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgZm91bmQsIGV4aXQgaW1tZWRpYXRlbHkgKG5vIGNoYW5nZSkuCiMgT3RoZXJ3aXNlIHNldCBpbmNpZGVudCBzdGF0ZSBmb3IgZmlyc3Qgb2NjdXJhbmNlIG9mIGEgbGluaywgdGhlbiBleGl0LgojIElmIG5vIGxpbmsgaXMgZm91bmQsIHNldCB0aGUgbG93ZXN0IHN0YXRlLgojIER1ZSB0byB0b3AtdG8tYm90dG9tIG1ldGhvZCwgZmlyc3QgcmVtZW1iZXJlZCBpbmNpZGVudCBzdGF0ZSBpcyB0aGUgaGlnaGVzdCBwb3NzaWJsZS4Kc3ViIF9DaGVja0xvd2VySW5jaWRlbnRTdGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbiBJbmNpZGVudFN0YXRlcyBMaW5rVHlwZXNCeUluY2lkZW50U3RhdGUgVGlja2V0SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG9ydGN1dCBmb3IgbG93ZXN0IGxldmVsCiAgICByZXR1cm4gMSBpZiAkUGFyYW17VmVyc2lvbn0tPntJbmNpU3RhdGV9IGVxICRQYXJhbXtJbmNpZGVudFN0YXRlc30tPlstMV07CgogICAgIyBsb29wIHRocm91Z2ggdGFyZ2V0IHN0YXRlcyBhbmQgY2hlY2sgaWYgaXQgbmVlZHMgdG8gYmUgY2hhbmdlZAogICAgbXkgJExvd2VySW5jaWRlbnRTdGF0ZTsKICAgIElOQ0lERU5UU1RBVEU6CiAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyAkUGFyYW17SW5jaWRlbnRTdGF0ZXN9IH0gKSB7CgogICAgICAgICMgc2tpcCBsZXZlbCBpZiBjdXJyZW50IENJIGluY2lkZW50IHN0YXRlIGlzIG5vdCBvbiB0aGlzIG9yIGFueSBoaWdoZXIgbGV2ZWwKICAgICAgICBuZXh0IElOQ0lERU5UU1RBVEUgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBuZSAkSW5jaWRlbnRTdGF0ZSAmJiAhJExvd2VySW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgIyBjaGVjayBpZiB3ZSBoYXZlIGxpbmtlZCB0aWNrZXRzIHRoYXQga2VlcCBpbmNpZGVudCBzdGF0ZQogICAgICAgIExJTktUWVBFOgogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBAeyAkUGFyYW17TGlua1R5cGVzQnlJbmNpZGVudFN0YXRlfS0+eyRJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICEkU2VsZi0+X0NoZWNrQ29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBsaW5rZWQgdGlja2V0CgogICAgICAgICAgICAjIGtlZXAgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgcmV0dXJuIDEgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBlcSAkSW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIHNldCBuZXcgKGxvd2VyKSBpbmNpZGVudCBzdGF0ZSBhbmQgZXhpdAogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9TZXRDSVN0YXR1cygKICAgICAgICAgICAgICAgIFZlcnNpb24gICAgICAgPT4gJFBhcmFte1ZlcnNpb259LAogICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAkSW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhhdCBzdGF0ZSBuZWVkcyB0byBiZSBjaGFuZ2VkICg9IGN1cnJlbnQgbGV2ZWwgaXNuJ1QganVzdGlmaWVkIGJ5IGxpbmtzIGFueW1vcmUpCiAgICAgICAgJExvd2VySW5jaWRlbnRTdGF0ZSA9IDE7CiAgICB9CgogICAgIyBubyByZWxldmFudCBsaW5rcyBoYXZlIGJlZW4gZm91bmQsIGJ1dCBDSSB3YXNuJ3QgaW4gbG93ZXN0IGluY2lkZW50IHN0YXRlIGJlZm9yZSAtIHNldCBpdCBub3cgYW5kIGV4aXQKICAgIHJldHVybiAkU2VsZi0+X1NldENJU3RhdHVzKAogICAgICAgIFZlcnNpb24gICAgICAgPT4gJFBhcmFte1ZlcnNpb259LAogICAgICAgIEluY2lkZW50U3RhdGUgPT4gJFBhcmFte0luY2lkZW50U3RhdGVzfS0+Wy0xXSwKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICApOwp9CgojIHNldCBDSSB0byBhIHNwZWNpZmllZCBpbmNpZGVudCBzdGF0ZSBhbmQgbG9nIGNoYW5nZSBpbiBjb3JyZXNwb25kaW5nIHRpY2tldApzdWIgX1NldENJU3RhdHVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhWZXJzaW9uIEluY2lkZW50U3RhdGUgVGlja2V0SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpZGVudFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW5jaWRlbnRTdGF0ZUxpc3QpOwoKICAgICMgY2hlY2sgaWYgaW5jaWRlbnQgc3RhdGUgaXMgdmFsaWQKICAgIG15ICVSZXZlcnNlSW5jaWRlbnRTdGF0ZUxpc3QgPSByZXZlcnNlICV7JEluY2lkZW50U3RhdGVMaXN0fTsKICAgIGlmICggISRSZXZlcnNlSW5jaWRlbnRTdGF0ZUxpc3R7ICRQYXJhbXtJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiSGF2ZSBpbnZhbGlkIGluY2lkZW50IHN0YXRlICckUGFyYW17SW5jaWRlbnRTdGF0ZX0nISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBhZGQgYSBuZXcgdmVyc2lvbiB3aXRoIHRoZSBuZXcgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkFkZCgKICAgICAgICAleyAkUGFyYW17VmVyc2lvbn0gfSwKICAgICAgICBJbmNpU3RhdGVJRCA9PiAkUmV2ZXJzZUluY2lkZW50U3RhdGVMaXN0eyAkUGFyYW17SW5jaWRlbnRTdGF0ZX0gfSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKICAgIHJldHVybiBpZiAhJFZlcnNpb25JRDsKCiAgICAjIGxvZyBjaGFuZ2UgaW4gdGlja2V0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPkhpc3RvcnlBZGQoCiAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICBOYW1lICAgICAgICAgPT4gIlVwZGF0ZWQgaW5jaWRlbnQgc3RhdGUgb2YgY29uZmlnIGl0ZW0gJyRQYXJhbXtWZXJzaW9ufS0+e051bWJlcn0nIHRvICckUGFyYW17SW5jaWRlbnRTdGF0ZX0nLiIsCiAgICAgICAgQ3JlYXRlVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgojIGNoZWNrIGlmIHJlbGV2YW50IENJcyBhcmUgbGlua2VkIHRvIGEgdGlja2V0CnN1YiBfQ2hlY2tUaWNrZXRMaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0SUQgVHlwZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsaW5rIHR5cGUgbG9va3VwCiAgICBteSAkTGlua1R5cGVMb29rdXAgPSAkU2VsZi0+X0xpbmtUeXBlTG9va3VwR2V0KCk7CgogICAgbXkgJUxpbmtLZXlMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0tleUxpc3QoCiAgICAgICAgT2JqZWN0MSAgID0+ICdUaWNrZXQnLAogICAgICAgIEtleTEgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgIE9iamVjdDIgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgIFR5cGUgICAgICA9PiAkTGlua1R5cGVMb29rdXAtPnsgJFBhcmFte1R5cGV9IH0tPntOYW1lfSwKICAgICAgICBEaXJlY3Rpb24gPT4gJExpbmtUeXBlTG9va3VwLT57ICRQYXJhbXtUeXBlfSB9LT57RGlyZWN0aW9ufS0+e1RpY2tldH0sCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApOwogICAgcmV0dXJuICggc29ydCBrZXlzICVMaW5rS2V5TGlzdCApOwp9CgojIGNoZWNrIGlmIHJlbGV2YW50IG9wZW4gdGlja2V0cyBhcmUgbGlua2VkIHRvIGEgQ0kKc3ViIF9DaGVja0NvbmZpZ0l0ZW1MaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIFR5cGUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbGluayB0eXBlIGxvb2t1cAogICAgbXkgJExpbmtUeXBlTG9va3VwID0gJFNlbGYtPl9MaW5rVHlwZUxvb2t1cEdldCgpOwoKICAgIG15ICVMaW5rS2V5TGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtLZXlMaXN0KAogICAgICAgIE9iamVjdDEgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleTEgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICAgID0+ICRMaW5rVHlwZUxvb2t1cC0+eyAkUGFyYW17VHlwZX0gfS0+e05hbWV9LAogICAgICAgIERpcmVjdGlvbiA9PiAkTGlua1R5cGVMb29rdXAtPnsgJFBhcmFte1R5cGV9IH0tPntEaXJlY3Rpb259LT57SVRTTUNvbmZpZ0l0ZW19LAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKTsKCiAgICAjIGxpc3Qgb2YgcmVsZXZhbnQgc3RhdGUgdHlwZXMKICAgIG15IEBPcGVuU3RhdGVUeXBlcyA9ICggJ25ldycsICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInLCAncGVuZGluZyBhdXRvJyApOwoKICAgICMgdXNlIHRpY2tldCB0eXBlIGNoZWNrPwogICAgbXkgJFRpY2tldFR5cGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6VGlja2V0VHlwZXMnKTsKICAgIG15ICRDaGVja1RpY2tldFR5cGVzOwogICAgJENoZWNrVGlja2V0VHlwZXMgPSAxIGlmIElzQXJyYXlSZWZXaXRoRGF0YSgkVGlja2V0VHlwZXMpOwoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBUSUNLRVRJRDoKICAgIGZvciBteSAkVGlja2V0SUQgKCBzb3J0IGtleXMgJUxpbmtLZXlMaXN0ICkgewogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgIG5leHQgVElDS0VUSUQgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1N0YXRlVHlwZX0gfSBAT3BlblN0YXRlVHlwZXM7CiAgICAgICAgaWYgKCRDaGVja1RpY2tldFR5cGVzKSB7CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgISRUaWNrZXR7VHlwZX07CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1R5cGV9IH0gQHskVGlja2V0VHlwZXN9OwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICByZXR1cm47Cn0KCiMgY29tcGlsZSBsaXN0IG9mIGludGVybmFsIGxpbmsgdHlwZSBuYW1lcyBhbmQgZGlyZWN0aW9ucyB0byB1c2UgZm9yIExpbmtLZXlMaXN0CnN1YiBfTGlua1R5cGVMb29rdXBHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHdlIGhhdmUgZ2VuZXJhdGVkIGxvb2t1cCBiZWZvcmUKICAgIHJldHVybiAkU2VsZi0+e0xpbmtUeXBlTG9va3VwfSBpZiAkU2VsZi0+e0xpbmtUeXBlTG9va3VwfTsKCiAgICBteSAlTGlua1R5cGVMb29rdXA7CiAgICBteSAlVHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5UeXBlTGlzdCgpOwogICAgZm9yIG15ICRUeXBlTmFtZUludGVybmFsICggc29ydCBrZXlzICVUeXBlTGlzdCApIHsKICAgICAgICBteSAkU291cmNlTmFtZSA9ICRUeXBlTGlzdHskVHlwZU5hbWVJbnRlcm5hbH0tPntTb3VyY2VOYW1lfTsKICAgICAgICBteSAkVGFyZ2V0TmFtZSA9ICRUeXBlTGlzdHskVHlwZU5hbWVJbnRlcm5hbH0tPntUYXJnZXROYW1lfTsKICAgICAgICAkTGlua1R5cGVMb29rdXB7JFNvdXJjZU5hbWV9ID0gewogICAgICAgICAgICBOYW1lICAgICAgPT4gJFR5cGVOYW1lSW50ZXJuYWwsCiAgICAgICAgICAgIERpcmVjdGlvbiA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiAkU291cmNlTmFtZSBlcSAkVGFyZ2V0TmFtZSA/ICdCb3RoJyA6ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGlja2V0ICAgICAgICAgPT4gJFNvdXJjZU5hbWUgZXEgJFRhcmdldE5hbWUgPyAnQm90aCcgOiAnU291cmNlJywKICAgICAgICAgICAgfSwKICAgICAgICB9OwogICAgICAgICRMaW5rVHlwZUxvb2t1cHskVGFyZ2V0TmFtZX0gPSB7CiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkVHlwZU5hbWVJbnRlcm5hbCwKICAgICAgICAgICAgRGlyZWN0aW9uID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+ICRTb3VyY2VOYW1lIGVxICRUYXJnZXROYW1lID8gJ0JvdGgnIDogJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBUaWNrZXQgICAgICAgICA9PiAkU291cmNlTmFtZSBlcSAkVGFyZ2V0TmFtZSA/ICdCb3RoJyA6ICdUYXJnZXQnLAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9CgogICAgIyByZW1lbWJlciByZXN1bHQKICAgICRTZWxmLT57TGlua1R5cGVMb29rdXB9ID0gXCVMaW5rVHlwZUxvb2t1cDsKCiAgICByZXR1cm4gXCVMaW5rVHlwZUxvb2t1cDsKfQoKMTsK</File>
        <File Location="Kernel/System/UnitTest/ITSMConfigItemHelper.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0ZGFkZTgxZTdlMDQ0MzNjYjJhZWQzNmFmMGM4NzI3ZDgyMmExYzYxIC0gS2VybmVsL1N5c3RlbS9Vbml0VGVzdC9IZWxwZXIucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIFRlc3QyOjpBUEkgcXcvY29udGV4dCBydW5fc3VidGVzdC87CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OllBTUwnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXIgLSB1bml0IHRlc3QgaGVscGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIENNREIKCj1oZWFkMiBERVNDUklQVElPTgoKVG8gYmUgdXNlZCBpbiB0ZXN0IHNjcmlwdHMuIENsZWFudXAgd2lsbCBiZSB0cmlnZ2VyZWQgaW4gdGhlIEVORCBibG9jay4KCj1oZWFkMSBNRVRIT0RTCgo9aGVhZDIgbmV3KCkKCmNvbnN0cnVjdCBhIGhlbHBlciBvYmplY3QuCgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiAgICAjIERvIG5vdCBjYWxsIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXItPm5ldygpLAogICAgIyBpbnN0ZWFkIHBhc3MgcGFyYW1zIHZpYSB0aGUgT2JqZWN0TWFuYWdlci4KICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicgPT4gewogICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwgICAgIyBydW5zIHRoZSB0ZXN0IGluIGEgdHJhbnNhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCByb2xsIGl0IGJhY2sgaW4gdGhlIGRlc3RydWN0b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URTogUm9sbGJhY2sgZG9lcyBub3Qgd29yayBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hhbmdlcyBpbiB0aGUgZGF0YWJhc2UgbGF5b3V0LiBJZiB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2FudCB0byBkbyB0aGlzIGluIHlvdXIgdGVzdHMsIHlvdSBjYW5ub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlIHRoaXMgb3B0aW9uIGFuZCBtdXN0IGhhbmRsZSB0aGUgcm9sbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgeW91cnNlbGYuCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKClZhbGlkIHBhcmFtZXRlcnMgYXJlOgoKPW92ZXIgNAoKPWl0ZW0gU2tpcFNTTFZlcmlmeQoKVW5zZXQgQzwkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9PiB3aGlsZSB0aGlzIGluc3RhbmNlIGV4aXN0cy4KCj1pdGVtIFVzZVRtcEFydGljbGVEaXIKCj1pdGVtIFJlc3RvcmVEYXRhYmFzZQoKPWl0ZW0gRGlzYWJsZUFzeW5jQ2FsbHMKCj1iYWNrCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIGZpbmQgb3V0IHdoZXRoZXIgbG9hZGVyIGZpbGVzIGFyZSBzdG9yZWQgaW4gUzMgb3IgaW4gdGhlIGZpbGUgc3lzdGVtCiAgICAkU2VsZi0+e1MzQWN0aXZlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3RvcmFnZTo6UzM6OkFjdGl2ZScpID8gMSA6IDA7CgogICAgIyBSZW1vdmUgYW55IGxlZnRvdmVyIGN1c3RvbSBmaWxlcyBmcm9tIGFib3J0ZWQgcHJldmlvdXMgcnVucy4KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyktPkN1c3RvbUZpbGVDbGVhbnVwKCk7CgogICAgIyBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gc2tpcCBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGlmIG5lZWRlZAogICAgaWYgKCAkUGFyYW17U2tpcFNTTFZlcmlmeX0gKSB7CgogICAgICAgICMgcmVtZW1iZXIgb3JpZ2luYWwgdmFsdWUsIHNvIHRoYXQgaXQgY2FuIGJlIHJlc2V0IGluIERFU1RST1koKQogICAgICAgICRTZWxmLT57UEVSTF9MV1BfU1NMX1ZFUklGWV9IT1NUTkFNRX0gPSAkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9OwoKICAgICAgICAjIHNldCBlbnZpcm9ubWVudCB2YWx1ZSB0byAwCiAgICAgICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSA9IDA7ICAgICMjIG5vIGNyaXRpYyBxdyhWYXJpYWJsZXM6OlJlcXVpcmVMb2NhbGl6ZWRQdW5jdHVhdGlvblZhcnMpCgogICAgICAgICRTZWxmLT57UmVzdG9yZVNTTFZlcmlmeX0gPSAxOwogICAgfQoKICAgICMgc3dpdGNoIGFydGljbGUgZGlyIHRvIGEgdGVtcG9yYXJ5IG9uZSB0byBhdm9pZCBjb2xsaXNpb25zCiAgICBpZiAoICRQYXJhbXtVc2VUbXBBcnRpY2xlRGlyfSApIHsKICAgICAgICAkU2VsZi0+VXNlVG1wQXJ0aWNsZURpcigpOwogICAgfQoKICAgIGlmICggJFBhcmFte1Jlc3RvcmVEYXRhYmFzZX0gKSB7CiAgICAgICAgJFNlbGYtPntSZXN0b3JlRGF0YWJhc2V9ID0gMTsKICAgICAgICAkU2VsZi0+QmVnaW5Xb3JrKCk7CiAgICB9CgogICAgaWYgKCAkUGFyYW17RGlzYWJsZUFzeW5jQ2FsbHN9ICkgewogICAgICAgICRTZWxmLT5EaXNhYmxlQXN5bmNDYWxscygpOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFRlc3RDb25maWdJdGVtQ2xhc3NDcmVhdGUoKQoKY3JlYXRlcyBhIHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCBpbiB0ZXN0cy4gUmV0dXJucwp0aGUgY2xhc3MgaWQgb2YgdGhlIG5ldyBjb25maWcgaXRlbSBjbGFzcy4KCiAgICBteSAkVGVzdENJQ2xhc3NOYW1lID0gJEhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DbGFzc0NyZWF0ZSgKICAgICAgICBOYW1lICAgICAgICAgICAgICAgID0+ICdTb21lQ2xhc3NOYW1lJywgICAgICMgb3B0aW9uYWwsIHJhbmRvbWx5IGdlbmVyYXRlZCBpZiBub3QgZ2l2ZW4KICAgICAgICBWZXJzaW9uU3RyaW5nTW9kdWxlID0+ICwgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwsIGRlZmF1bHQgaXMgJ0luY3JlbWVudGFsJwogICAgICAgIFZlcnNpb25UcmlnZ2VyICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAnJwogICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIERlZmluaXRpb24gICAgICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBUZXN0Q29uZmlnSXRlbUNsYXNzQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnRleHQgPSBjb250ZXh0KCk7CgogICAgIyBjcmVhdGUgcmFuZG9tIHN1ZmZpeAogICAgbXkgJFRlc3RDbGFzc0lEOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBHZXQgY29uZmlnIGl0ZW0gZ3JvdXAgaWQKICAgIG15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgYmFpbF9vdXQoIkdvdCBubyBncm91cCBpZCBmb3IgZ3JvdXAgbmFtZSAnaXRzbS1jb25maWdpdGVtJyIpIHVubGVzcyAkQ29uZmlnSXRlbUdyb3VwSUQ7CgogICAgbXkgJFZlcnNpb25TdHJpbmdNb2R1bGUgPSBbKCRQYXJhbXtWZXJzaW9uU3RyaW5nTW9kdWxlfSA/ICRQYXJhbXtWZXJzaW9uU3RyaW5nTW9kdWxlfSA6ICdJbmNyZW1lbnRhbCcpXTsKICAgIG15ICRDb2RlID0gc3ViIHsKCiAgICAgICAgQ09VTlQ6CiAgICAgICAgZm9yICggMSAuLiAxMCApIHsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgYSByYW5kb20gbmFtZQogICAgICAgICAgICBteSAkVGVzdENsYXNzTmFtZSA9ICRQYXJhbXtOYW1lfSB8fCAoJ1VuaXRUZXN0JyAuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyktPkdldFJhbmRvbUlEKCkpOwoKICAgICAgICAgICAgIyBhZGQgYm90aCB1bml0dGVzdCBjb25maWcgaXRlbSBjbGFzc2VzCiAgICAgICAgICAgICRUZXN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJFRlc3RDbGFzc05hbWUsCiAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRUZXN0Q2xhc3NJRCApIHsKCiAgICAgICAgICAgICAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkVGVzdENsYXNzSUQsCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbm90ZSgiU2V0IGNvbmZpZyBpdGVtIGNsYXNzIFBlcm1pc3Npb24gdG8gaXRzbS1jb25maWdpdGVtIik7CgogICAgICAgICAgICAgICAgIyBzZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlCiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkVmVyc2lvblN0cmluZ01vZHVsZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBub3RlKCJTZXQgY29uZmlnIGl0ZW0gY2xhc3MgVmVyc2lvblN0cmluZ01vZHVsZSB0byBJbmNyZW1lbnRhbCIpOwoKICAgICAgICAgICAgICAgICMgc2V0IGNhdGVnb3J5CiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ0NhdGVnb3JpZXMnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiBbJ0RlZmF1bHQnXSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBub3RlKCJTZXQgY29uZmlnIGl0ZW0gY2xhc3MgY2F0ZWdvcmllcyB0byBEZWZhdWx0Iik7CgogICAgICAgICAgICAgICAgIyBTZXQgdmVyc2lvbiB0cmlnZ2Vycy4KICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJFRlc3RDbGFzc0lELAogICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiBbICdOYW1lJywgJ0RlcGxTdGF0ZUlEJywgJ0luY2lTdGF0ZUlEJyBdLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgICAgICAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBldmFsICRQYXJhbXtEZWZpbml0aW9ufSwgICAgIyMgbm8gY3JpdGljIHF3KEJ1aWx0aW5GdW5jdGlvbnM6OlByb2hpYml0U3RyaW5neUV2YWwpCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MKICAgICAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmFpbF9vdXQoJ0NvdWxkIG5vdCBhZGQgZGVmaW5pdGlvbiBmb3IgdGVzdCBjb25maWcgaXRlbSBjbGFzcycpIHVubGVzcyAkUmVzdWx0LT57U3VjY2Vzc307CgogICAgICAgICAgICAgICAgbGFzdCBDT1VOVDsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgIGJhaWxfb3V0KCdDb3VsZCBub3QgY3JlYXRlIHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MnKSB1bmxlc3MgJFRlc3RDbGFzc0lEOwogICAgICAgIHBhc3MoIkNyZWF0ZWQgdGVzdCBjb25maWcgaXRlbSBjbGFzcyAkVGVzdENsYXNzSUQiKTsKCiAgICAgICAgIyBSZW1lbWJlciBVc2VySUQgb2YgdGhlIHRlc3QgdXNlciB0byBsYXRlciBzZXQgaXQgdG8gaW52YWxpZAogICAgICAgICMgICBpbiB0aGUgZGVzdHJ1Y3Rvci4KICAgICAgICAkU2VsZi0+e1Rlc3RDb25maWdJdGVtQ2xhc3Nlc30gfHw9IFtdOwogICAgICAgIHB1c2goIEB7ICRTZWxmLT57VGVzdENvbmZpZ0l0ZW1DbGFzc2VzfSB9LCAkVGVzdENsYXNzSUQgKTsKICAgIH07CgogICAgcnVuX3N1YnRlc3QoCiAgICAgICAgJ1Rlc3RDb25maWdJdGVtQ2xhc3MnLAogICAgICAgICRDb2RlLAogICAgICAgIHsKICAgICAgICAgICAgYnVmZmVyZWQgICAgICA9PiAxLAogICAgICAgICAgICBpbmhlcml0X3RyYWNlID0+IDEKICAgICAgICB9CiAgICApOwoKICAgICRDb250ZXh0LT5yZWxlYXNlKCk7CgogICAgcmV0dXJuICRUZXN0Q2xhc3NJRDsKfQoKc3ViIFRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SGVscGVyT2JqZWN0fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGVscGVyT2JqZWN0IScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb250ZXh0ID0gY29udGV4dCgpOwoKICAgIG15ICRIb21lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJyk7CgogICAgbXkgJE1haW5PYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICRZQU1MT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgIyBwcmVsaW1pbmFyeSBjcmVhdGUgbmVlZGVkIG5hbWVzcGFjZXMgdG8gbm90IGludGVyZmVyZSB3aXRoIHN5c2NvbmZpZyBhZnRlcndhcmRzCiAgICAkUGFyYW17SGVscGVyT2JqZWN0fS0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgIEtleSAgID0+ICdOYW1lc3BhY2VzIyMjRHluYW1pY0ZpZWxkJywKICAgICAgICBWYWx1ZSA9PiBbCiAgICAgICAgICAgICdDb21wdXRlcicsCiAgICAgICAgICAgICdIYXJkd2FyZScsCiAgICAgICAgICAgICdMb2NhdGlvbicsCiAgICAgICAgICAgICdOZXR3b3JrJywKICAgICAgICAgICAgJ1NvZnR3YXJlJywKICAgICAgICBdLAogICAgKTsKCiAgICAjIFRPRE8gaW1wb3J0IGNsYXNzZXMgY29tYmluZWQgZnJvbSBvbmUgeWFtbCBmaWxlIGFzIGFycmF5IG9mIGNsYXNzZXMKICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC9MZWdhY3lDbGFzc2VzLnltbCIsCiAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgKTsKCiAgICBteSAkRGVmaW5pdGlvblJhdyA9ICRZQU1MT2JqZWN0LT5Mb2FkKAogICAgICAgIERhdGEgPT4gJHskQ29udGVudH0sCiAgICApOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ID0+ICREZWZpbml0aW9uUmF3LAogICAgKTsKCiAgICAkQ29udGV4dC0+cmVsZWFzZSgpOwoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="doc/itsm-configuration-management-database.dia" Permission="660" Encode="Base64">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</File>
        <File Location="doc/itsm-configuration-management-database.png" Permission="660" Encode="Base64">iVBORw0KGgoAAAANSUhEUgAABh4AAAQuCAIAAACs0tAIAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdeXwUVbrw8eruJJA9HbKvEFZBFBIIEEFEUCC4sAhRZ3QY0XEUl6tzWVTEMAKCoIjo3MsNOIgLF0EiCGEHFQk7AwiBhLAEspHORsjeS71/1LXens7WSbrTSffv+wef7lNVp05VJaTOU885pRBFUQAAAAAAAACaz8nWDQAAoE3pdLrs7GyFQhEZGWmN+vPy8qqrq/39/T08PKxRPwAAANCuEFoCADgWURS1Wq1SqbRS/TqdTqfTWalyAAAAoL2x1o01AADtk7VHghsMBkEQrBe6AgAAANoVbnwBAI5FCi0pFAor1a/X6wVBUKlUVqofAAAAaFcILQEAHIu1Q0tkLQEAAMChcOMLAHAsVg0tiaIo1U/WEgAAABwEoSUAgCOyUmhJGg0nkLUEAAAAh8GNLwDA4SiVSitlFUmj4UhZAgAAgONwsnUDAABoU66urt27d7dS5VLWEilLAAAAcBzc+wIAYDFkLQEAAMDREFoCAMBiyFoCAACAo+HeFwAAi5GylggtAQAAwHFw7wsAgMVIWUsMiAMAAIDjILQEAIDFkLUEAAAAR8O9LwAAFkPWEgAAAByNk60bAACA/XB3d1epVJ07d7Z1QwAAAIA2ohBF0dZtAAAAAAAAQIdE1hIAwLGUl5ffuXPHzc3N29vb1m0BAAAAOjxCSwAAx1JTU1NeXu7kxF9AAAAAwAK4sQYAOBY3NzelUtmpUydbNwQAAACwB8y1BAAAAAAAgBZS2roBAAAAAAAA6KgILQEAAAAAAKCFCC0BAAAAAACghQgtAQBgGaIoMoMhAAAAHA1viAMAwDLKy8vz8/Pd3d1DQkJs3RYAAACgjZC1BACAZej1ekEQFAqFrRsCAAAAtB0FqfsAAFiEKIoGg0EQBJVKZeu2AAAAAG2E0BIAwLHodDpRFFUqlVJJ6i4AAADQWtxVAwAcS35+/vXr1ysrK23dEAAAAMAeEFoCADgWKV2XGZEAAAAAiyC0BABwLISWAAAAAAsitAQAcCxMMggAAABYEKElAIBjIWsJAAAAsCBCSwAAx0JoCQAAALAgQksAAEdEaAkAAACwCEJLAADHYqWsJYPBUFhYWFJSYtlqAQAAgHaO0BIAwLFYaRpvnU5XUlJSXFxsjcoBAACAdovQEgDAsVgva0kQBKWSP6wAAABwLNwBAwAci5VCS3q9XhAElUpl2WoBAACAdo7QEgDAEZG1BAAAAFgEd8AAAAciT7RE1hIAAABgEYSWAAAOxHqhJbKWAAAA4Ji4AwYAOBBrh5bIWgIAAICjIbQEAHAgcmjJ4qQBcWQtAQAAwNFwBwwAcCBWej2cQNYSAAAAHBWhJQCAw7FGaImsJQAAADgm7oABAA6ErCUAAADAsggtAQAciPVCS2QtAQAAwDE52boBAAC0HYVC0alTJycny//5k7KWCC0BAADA0RBaAgA4EBcXl4iICItXK4oiA+IAAADgmHi4CgBAa0lxJYGsJQAAADge7oABAGgteaIla8ziBAAAALRnhJYAAGgtJloCAACAw+ImGACA1mKiJQAAADgsQksAALSWPCDO1g0BAAAA2ho3wQAAtBYD4gAAAOCwFKIo2roNAAB0bDU1NVVVVc7Ozu7u7rZuCwAAANCmCC0BAAAAAACghZxs3QAAANpOWVnZnTt33N3dfXx8bN0WAAAAwB4wKwQAwIHU1tZWVlbqdDpbNwQAAACwEwyIAwA4kJqaGq1W6+zs3KlTJ1u3BQAAALAHhJYAAAAAAADQQgyIAwAAAAAAQAsRWgIAAAAAAEALEVoCAAAAAABACxFaAgCgtaTZwW3dCgAAAMAGCC0BANAqer3+xo0b169f580YAAAAcEBOtm4AAAAdmyiKzs7OoigqFApbtwUAAABoawoesQIAAAAAAKBlyFoCADiQ2tpaKclIqWRIOAAAAGAB3FgDABxITk7OjRs3amtrbd0QAAAAwE4QWgIAOBBpGDiTIgEAAACWQmgJAOBApNASo+EAAAAAS+HeGgDgQMhaAgAAACyL0BIAwFGIokhoCQAAALAsQksAAEchxZUEBsQBAAAAlsO9NQDAURgMBukDWUsAAACApTjZugEAALQRK42G02g0Op1OrVZ37tzZsjUDAAAA7R9ZSwAAR2Gl18NVVVWVl5fr9XrLVgsAAAB0CISWAACOQhoQZ/GsJSmopFKpLFstAAAA0CEQWgIAOAorZS1JESumBgcAAIBj4j4YAOAorJS1RGgJAAAAjoz7YACAo7DGNN7yW+cILQEAAMAxcR8MAHAU1hgQJ2dCEVoCAACAY+I+GADgKKwxIE6aw5u4EgAAABwWt8IAAEdhvQFxhJYAAADgsLgVBgA4CusNiCO0BAAAAIfFrTAAwFFYY0CcVKdKpbJgnQAAAEAHQmgJAOAorJG1xFxLAAAAcHDcCgMAHIX1spYILQEAAMBhcSsMAHAUzs7Obm5uLi4uFqyT0BIAAAAcnJOtGwAAQBtRq9VqtdqydTLXEgAAABwcT1kBAGg55loCAACAg+NWGACAlmNAHAAAABwct8IAALQcoSUAAAA4OG6FAQBoOeZaAgAAgIMjtAQAQMsx1xIAAAAcHLfCAAC0HAPiAAAA4OAUoijaug0AAHRUNTU1er3e1dVVoVDYui0AAACADRBaAgAAAAAAQAs52boBAAC0BVEUs7KyBEGIiIhg/BoAAABgKYSWAAAOwWAwaLVaQRAYuQYAAABYEAPiAAAOQRTFmpoag8Hg5uZm67YAAAAA9oPQEgAAAAAAAFqIySYAAAAAAADQQoSWAAAAAAAA0EKElgAAAAAAANBCvCEOAIAWqqqq0ul0nTp1cnFxsXVbAAAAANsgtAQHkpiYKP8LAK13+/btO3fu+Pn5EVoCAMBSjh49euLEidLSUr1eL/z7PXyHvpO3g0MAGtJhQku1tbUnT57MyMjQaDTV1dWdO3f28/Pr3bv3oEGDjG/ozf9FTUxMNFnZ2dnZx8enR48e9913n4eHh8n6BoPh1KlT58+fLygoqKmp6dSpk5+fX9euXfv16xcUFGTmTrOzs48dO5aVlVVRUeHq6tq1a9fBgwdHRkaa09oWLAIAWJWzs7ObmxtxJQBAc7UsXJKYmGh+r0SudsiQIePHj69bW0pKyvHjx01Wlul0urNnz2ZkZOTl5VVWVqpUKl9f3169esXGxrq7u5vZ4BY4ceLErl27rFe/fWvlRQdarGOElrKysjZt2lReXi6XVFRUVFRUZGVlHT58eNq0aeZEZ5qk1Wo1Go1Go/ntt99mzJihVqvlRbW1tV999dXNmzflkqqqqps3b968efPQoUNm/k7+9NNPP//8syiK0tfy8vLz58+fP3+eX2kA6KC6dOli6yYAABxIy3ol586de+ihh5yc/q3rp9Vqz50719COsrOzN23adPv2bblEp9Pl5eXl5eUdOXIkPj5+wIABrT2YBpw+fVoQhLFjxw4aNMjZ2dlKe7GedpKa1IKLDitpJz8S1tYBQks3b95cv369Xq8PCQm57777IiMjXV1dq6qqbty4cfjw4ZycnPXr1//5z38OCwsT6rtgTV5IeVFFRcXNmzd3795dUlJy4MCBKVOmyOv89NNPN2/edHd3HzVqVM+ePT08PLRabWFh4bVr186fP2/OUZw4ceKnn35SKpVxcXEDBw5Uq9XV1dVXr149duyY+afC7n8cAcB6qqura2trO3Xq1KlTJ1u3BQCA/8/8LsyePXua2ysJDQ3NyclJS0u75557jMvT0tKqq6ulpSabZGdnr1u3TqfThYSEDBkyJDIy0sPDQ6fTFRcXZ2RknDhx4ocffrBeaKmwsFAQhJiYGJO4kh10hdrsEFpw0YFWau+hJb1e//333+v1+gEDBjz22GNK5f+90s7Dw6Nv3759+vTZtm3bmTNnNm/e/Oqrr6pUqtbsy93dvU+fPm5ubl988cXVq1eNF124cEEQhMmTJ3fv3l0qUalUYWFhYWFhI0aMaLLmioqKvXv3CoLw6KOPDhw4UN5d//79+/fv35o2AwDMdOfOndLSUrVaTWgJANBBtaBXEh0dnZOTc+rUKZMog5QcFBMTYxJl0Ov1mzdv1ul0gwYNio+Pl/tfTk5OISEhISEhcXFxKSkpFj80mVarFQSBweat0dyLDrReew8tnTt3rrS01N/f/9FHH5X/X5MplcpHH300JydHGsVmkdi5NES5pqbGuPDOnTuCIISHh7eszrNnz9bW1oaHh8txJWuQouDvvffeqVOnTp8+XVhYqNVq33vvPUEQcnJyzpw5c/369ZKSEoVC4e3t3bt37+HDh7u6utatITEx8cyZMydOnNBoNEqlMjw8fPTo0dJpOXv2rFQuimJ4ePhDDz1Ud56pkpKS1NTUK1eulJWVOTk5BQcHDxkypE+fPvIKn3zySWlp6YsvvhgcHCyVJCcnnz17VhCEe++9d9KkSVJhXl7e6tWr1Wr166+/Lm978+bN1NTUmzdvVlVVubq6RkRExMXFSQlr5pyHumpqarZs2ZKenq5UKsePHz948OBmnnUAHYbBYBAEoe6fEgAAOooW9Er69++/e/furKyswsJCPz8/qbCwsDArK8vFxeXuu+/etm2b8fpS/ysoKMg4rmTMxcVl4sSJxiXm36InJiaePXv22LFjUkcjIiJC7mgI/57UI382+WCS+HP58uXDhw/n5eWJoujn5xcTExMTE1N3zYaywBpas8VdqrrNbvIQLHX2jDX3opt5dM1qiZkVCmZfRMGMnqbQVl1a809F4z8S9qS9h5bS09MFQRg6dGhDGUkqlWrIkCHbt29PT0+3SGgpLy9PEAQvLy/jQk9Pz9u3b2dmZvbt27cFdV65ckUQBJOYsZXs2LHj5MmTJoVJSUnGXwsLCwsLC9PS0l544QU3NzeTlXfu3Gk8TO/y5ctZWVkvvPDCiRMn5CnfBEG4cuVKdnb2iy++6Ovra1y4cePG2tpa6atOp7t27dq1a9fuv//+Bx98UCqMioo6ffr0tWvX5NDStWvXTD4IgiAljnXr1k0uOXHiREpKivFkVWlpaRcvXnzkkUdiYmLMOQ8mSkpKNmzYUFBQ4ObmNnXqVON9AbA/0v8ehJYAAB1XC3olUijh9OnTp0+ffvjhh6VCKXulf//+dZOD5P6XmX8xm3WLvnv37iNHjshfpY7Giy++2LK5C48ePWo84Xdubm5ubm5+fn4LqjLR+i6Vmax09pp70Zt7dOa0xMwKzb+I5vQ0Zdbu0jbrVDiI9h5ays3NFf49vlCXtFRaszUqKyuzsrJ2794tCILJOLV77rnn0KFDW7ZsuXLlSu/evUNDQ5v1WoSCggJBEMLDwy9cuJCamlpQUKBSqQICAgYOHDhgwACFQtHKlhs7depUXFxcdHS0r6+v/Pega9euMTExERERHh4etbW1ubm5Bw4cyMnJOXTo0NixY01qOHHixH333RcdHe3l5XXr1q2tW7dqNJpvvvmmrKysbvmhQ4cef/xxacOysrLvvvuutra2f//+cXFxXbp0qaqqunDhwsGDB3/55Zfu3btLs61369ZNCi3FxcUJglBYWFhWVubh4SGKYllZmRxZl8JM8qXPz8/fuXOnKIoDBw4cPny4j49PaWnpoUOHzpw5k5KSEh4eHhAQ0OR5MHb9+vXvvvuusrIyICDgqaeeMp61HYBdkrKWLPtfLgAAballvZKYmJjTp0+fPXt29OjRKpVKr9efOXNGEITo6Oi6K0sP2s18S1Jzb9GPHTs2YsSIgQMHenh45Ofnb926taio6NChQ1IaVLPempefn79nzx5BEAYPHhwXF+fl5VVWVpaamnrixAlzWt64FnepEhMTzZ+z2bJnz0SzLrqZR9eslphTofkX0cyepszaXVrzT0WzfiQ6tPYeWqqsrBTq5BCZkJZKa7ZA3Wvcv3//+++/37jkgQceKCsrO3v27KlTp06dOiXttGvXrvfee688zrkRVVVVgiCcP3/+119/lUq0Wu2NGzdu3Lhx+fLlqVOnmtnVaSiH09jgwYPlyLRs+vTp8mdXV9fu3bv7+fmtWLEiIyOj7v8U99133+jRo6XPYWFh8fHxX375ZWlp6YgRI+qWG+cZHT16tKamxnhQm4uLS1xcnEql2rlz5/Hjx+XQkiAIWVlZer1epVLJISRRFM+fP3/t2jU/Pz+9Xp+VlSUYhZaOHTtmMBh69eol/9p36dJl4sSJ5eXlmZmZR48efeyxx5o8D7KTJ0+mpKQYDIbevXtPnjyZiVcAR8CAOABAR9eyXkloaGhgYOCtW7cuXbrUr1+/S5cuVVZWBgUFhYaG1l25oqJCEARPT09z2tPcW/QRI0aMGjVK+hwRETFhwoT169dfv37drIP/d8ePHzcYDH379p0wYYJUolarJ0yYUFFRkZaW1oIKjbW+S2UOq569Zl305h6dOS0xp0LzL6KZPU2Ztbu0zToVDqK9h5banre398iRI03G36lUqkmTJsXFxZ0/fz4rKys/P7+srOzcuXPnzp3r27fvlClTGp9BXEpxPHz4cOfOnceOHdurVy9BEDIyMnbt2pWWlnbixInY2FhLtX/QoEF1C6Xo79WrV0tLS+XUPkEQjN8nKjOJZIeEhDRSLo33lmRmZgqCMGTIEJMK+/Xrt3PnTvklqR4eHgEBAQUFBTk5OREREcYD386fP3/16tXBgwdnZ2drtdqAgAAPDw9pKynSNHz4cJPKR4wYkZmZWfe3t97zINmxY4cUCB8+fPjo0aNJYQAcBAPiAAAdXYt7JTExMSkpKadPn+7Xr58Uk6o73qoFmnuLbjKBiRTmMO5QmE+qXBoGYWzYsGGtDy21vktlDmufvWZd9GYdnTktMadC8y+imT1NmbW7tDIL/kh3dO09tOTm5lZWVlZWVmY8+tFEWVmZtGbLdiEl/uh0uoKCgr179167du2bb755+eWXTd52KQhCYGBgYGCgIAiiKN66dSstLe3o0aNpaWl+fn51R10ac3FxqaqqEkVx3Lhx8g+fNKX31q1bz5w5Y2ZoyZwkuroDuzQazRdffCFlTpnQ6XR1C318fIy/yhk99Zbr9Xq5pKSkRBCENWvWCL934STSZ+kBiKRbt24FBQVXr14NDw+X/kOJioqSVrt+/booinUnWpKusr+/v0lrpTTRur+9jQxwk+JKo0aNGjlyZEPrALA/DIgDANiHFvRK7rnnnr179169evXq1avXrl1zdnZu6EXV7u7ut2/fvnPnjjnzRTT3Fr3JDoX5pF3XndFGnrW6NVrfpTKHtc+e+RfdIh1G45aYWaH5F9H8nmYjLTSn5RbZUct+pDu69h5aCgkJKSsru3btWiOhJSmBTY5Etoz0Ns2nn376f/7nfzQazdGjRxt6f6cgCAqFIigoKCgoKDg4eOPGjefOnWs8tKRWq6XfKylfSSZ91Wg0rWm5iboRsX379lVVVYWGho4ePTowMNDV1VWpVOp0uoULF9ZbQ0P9rib7Y9Lvm9R5q8v4F6xbt27Hjh27du1a7969q6qqfH19pd9JtVpdUlKSl5cnXdOoqKjG99iIuudB1rVr1+vXrx87dqxHjx4NZYQCsD8WHxBXXV2dn5/fqVMn+aUEAAC0JfN7JZ07d+7bt+/Zs2c3b94simK/fv06d+5c75rBwcG3b9/OysqyxlSk7eoBj3HgwETru1TW0NyzZ/5Ft1SHscUVNsn8nmbjLbRgl9bMCh1Hew8t9e7d+9KlS0ePHh0wYEC96Z16vV6a+713796t352zs/PYsWO//vrro0ePDhs2zMmpifPTo0cPwYyEt+Dg4EZmGbf2j6OUFvTEE08Y/3koKiqy+I68vb2LiopeffXVJufD79q1q1KpzM7Olt5AIWcnRUVFnTp1Kj09PScnR6lUGg9k9fLyKi4u1mg0ERERxlVJU6SbORpc8oc//GHDhg1Xr15dv379U0891bVrV/O3BdBxWTy0pNPptFpt4wOiAQBoA+b0SmJiYs6ePStNUNvQXM6CUf/rnnvuafKPpgVv0ZtL2nVRUVFYWJhxeWFhYd2VpXmsa2pqjKdYLS0tNX931uhStcHZM/OiW/zozKzQ/Itofk+zldpsR/anvU85cc899/j4+Gg0mh9//LFu7NBgMPz4448ajcbHx6eh7L7m6tGjR0hISEVFhTSFfuOys7MFQZDnA2rIXXfdJX24fPmycXlGRoZQXw6kZUmxVZMwWWpqqsV3JCVhHT58uMk1O3fuHBwcrNfrjx49KhhlJ0kxpqNHj+r1+uDgYOOwuhRmqlu5NDN6s8JDzs7OTz/9dI8ePWpqar7++mvpKgCwexYPLTEvOACgnTCnVxIRESH1O/z9/U1iGcak/ld+fr700pu6K9TW1v7www/SZwveojeXVHndTo3xm+Bl0pnJyckxLvzXv/5l/u7M71JJ69TU1DRZZxucPTMvusU7jGZWaP5FNL+n2UrW2JH5PxIdWnu/IVapVNJ0dGfOnFmzZs2FCxfKy8v1er00afzatWvPnDkjr2Opnd53332CIBw5ckROkvz888/379+fmZl5+/Zt6TF1cXFxamrqpk2bBEHo27dv4xV2795dGq+3a9cuKWxcWVl55syZ3bt3CxaaQq8R0khs6cWKWq22oKBg69atZ8+etfiO4uLi3NzcTp8+vWHDhitXrty5c8dgMFRXV+fm5qampq5evdp4ZSmKVF1drVAo5P83u3XrplAopN86k9FwQ4YMUSqV6enpP/74Y3FxsV6vLy4u3rp16+XLl1UqVd2J1hrn5OT05JNP9urVS6fT/e///u9vv/3WmgMH0P7JN8eElgAAHVcreyUzZ85MTEycOXNmI+uoVKonnnjCycnp5MmTa9asOXfu3O3bt6WUn7y8vJ9//nnlypXyM3jL3qI3S2xsrFKpTEtLS0lJKSkp0ev1JSUlKSkp9c7hLXU9UlJSbt68KZ20AwcOyC/vNof5XSpvb29BEP71r38Zz11dr7Y5e+ZcdIt3GM2s0PyL2KyeZmtYY0fm/0h0aO19QJwgCOHh4c8+++x3332Xm5sr/adpzN3dferUqeHh4Rbc41133aVWq4uKitLT0/v06SMIgkaj0Wg0hw4dqrd5DzzwQOMVKhSKJ5544osvvigvL09OTjZedO+990rzeVvPAw888O2332ZmZkrT3UtiY2OPHz9u2R15eno+/fTTGzduTE9Pl0a6NSIqKkr63zwwMNDd3V0qdHd3DwgIuHXrlvDvc3gLghAUFDR+/PiUlBT5TasShUIRHx8v/efVLE5OTgkJCZs2bbp06dKWLVtqamoaeakcgI5OflRAaAkA0HG1sldiprCwsOnTp2/atCk3N3fLli0mS11cXCZOnCh9tvgtuvmCgoIeeuih3bt3Hz9+3LhfM2jQoJMnT5qkHQwfPjwtLa2wsHDt2rVy4dChQ6UhFOYwv0vVt2/fQ4cO7dq1a9euXVJJQ+9isuHZM2HxDqOZFZp/EZvV02wNa+zI/B+JDq0DhJYEQYiMjHz99ddPnjyZnp6u0Wiqq6s7d+7s7+/fq1evQYMGGY+YtQilUjls2LCUlJTDhw9LoaWZM2deunQpKyuroKBAmhbezc0tMDCwX79+9957rzn9Cl9f35deeunQoUPp6ellZWXOzs5BQUExMTGWGsfXiJ49ez799NO//PJLXl6eUqn09/ePiYmJjo62eGhJEISwsLCXX35ZulKFhYW1tbUuLi5dunTp2bOnyVOU8PBwJycnnU5nEkKKioq6deuWk5NT3YzNwYMHBwYGHjly5MaNG1VVVa6urhEREXFxcS0OLKpUqmnTpn3//fcXLlzYvn17dXV13Xd/ArAPUmK2ZcNAhJYAAG2s9b0SM4WFhb366qtnz55NT0/Pz8+vrKxUqVS+vr69evWKjY2VHwwLVrhFN9+wYcP8/PwOHz4sTWvr5+cXExPTt2/fkydPmvQQ/fz8/vznPx84cODGjRsGg8HPzy82NnbgwIHmh5bM71KNHDlSFMW0tDQp26vxam149oxZvMNofoXmX0Tze5qtZPEdNetHouNSNDIxPgAA9qGmpubGjRtOTk4m4ezWKCgouH37tq+vLxM9AgDQTly5cuWrr74KDw+fMWOGrduCFuIidkQ8awUA2D9rZBiRtQQAQLsiiqI0WtBk2lZ0IFzEDqpjDIgDAKA1CC0BAGBnvvjii5iYmNDQUG9vb4PBkJub+8svv1y/ft3FxSU6OtrWrYNZuIh2g9ASAMD+EVoCAMDO3Lhx48aNGyaFKpXq8ccfl97JhfaPi2g3VHY5OTkAAMaqq6srKipcXFw8PT0tVWdpaaler/fy8nJxcbFUnQAAwExRUVEGg8FgMOj1eoVC4e3tfdddd02cONGC8yrC2riIdoOsJQCA/SNrCQAAOxMREVH3pdLoWLiIdoMbYgCA/SO0BAAAAFgJWUsAAPvXuXNnHx8fV1dXC9ZJaAkAAAAQCC0BAByBu7u7u7u7BSsURVEURYHQEgAAABweN8QAADSblLIkEFoCAACAw+OGGACAZpNHwykUClu3BQAAALAlQksAADQbEy0BAAAAEu6JAQBoNkJLAAAAgIR7YgAAmo3QEgAAACDhnhgAgGYjtAQAAABIFNK7kwEAgPlEUZT+gBJdAgAAgIMjtAQAsH8Gg4EYEAAAAGANTrZuAAAA1qXT6a5duyYIQs+ePW3dFgAAAMDe8AgXAGDnmBcJAAAAsB4GxAEA7J9erxdF0cmJXF0AAADAwggtAQAAAAAAoIUYHQAAAAAAAIAWIrQEAAAAAACAFiK0BAAAAAAAgBZiQlMAAJqtuLhYEARvb2+VSmXrtgAAAAC2RGgJAIBmKy4uFkXR09OT0BIAAAAcHKElAACazcfHx2AwEFcCAAAAFKIo2roNAAAAAAAA6JDIWgIA2LnS0lKDweDp6ens7GzrtgAAAAD2htASAMDO3b59u9Ngi8UAACAASURBVLa21tXVldASAAAAYHFKWzcAAADr0uv1giAolfzJAwAAACyP+2wAgJ0zGAwCoSUAAADAOrjPBgDYM1EUpRdW8DY3AAAAwBoILQEA7Jk0Gk4gawkAAACwDu6zAQD2jNFwAAAAgFVxqw0AsGdSaInRcAAAAICVONm6AQAAWJE1Xg+n0WhKS0t9fX27dOliwWoBAACAjoisJQCAPbPGgDipToVCYcE6AQAAgA6KrCUAgD2zXmiJ+ZsAABb31FNPHT9+3NatQIc0Z86cv/zlL7ZuBRwUoSUAgD2TBsRZdq4lQksAACvJzc195513HnjgAVs3BB3Me++9V1paautWwHERWgIA2DNrhJZEURQILQEArCMoKCgqKsrWrUAH4+XlZesmwKFxWwwAsGcMiAMAAACsittiAIA9s96AOKbxBgAAAARCSwAA+8ZcSwAAtF5rHqh0xIcxHbHNgA1xWwwAsGcMiAMAoEnJyckuLi7Ozs5hYWHjxo2zdXOsRaFQEDMCrIHbYgCAPbN41pIoikzjDQCwMwkJCRs3btRqtdnZ2bt27aq7gvS3r2Ua2jYkJKTFdVq2Ja1Z01jbHxHQTnBbDACwZ9YILUkfCC0BAOyGVqudNGlSG+80Ly+v8RVqamrapiWW0uQRAfaK22IAgN2SRq4JFg0tyXN4k1EPAGgz6enpU6ZMUavVrq6uI0aM2L9/f69eveSlFy9enDhxYmhoaGho6OTJk9PT0+VF0h+s8vLyiRMnuri4uLi4JCcnG9ccGRkp/UVT/G7UqFHGK1y+fLmhv3pbtmzp2bOnh4fHH//4x8rKyrqrNbRtjx49THZqss7GjRtDQ0M7d+7s4eExduzYU6dOGR/OP/7xD09Pz9TU1MWLF7u7u5scUZOysrJGjhzp5ORU92w00mZpzKBCofD29p48efLBgwfvvvtu84+okWskGN1X7Nmz59577+3Vq9eOHTsaqk362rNnz2YdNWBVhJYAAHZLSlmybBiI18MBANrYxYsXx40bN27cuAsXLpSVlW3YsOHy5cvFxcXy0j/96U8rVqzIycnJycn5+OOPp0+fLkcupGTbWbNm/e1vf6upqdm4cWNCQoJx5VlZWdI64u8OHjxovELPnj3rHR129OjRd999d9OmTUVFRa+88kpiYqJQZxxZQ9tmZmaa7NR4tYMHD65fv3779u2VlZX5+flvv/32zJkzT548Kdd/+fLldevWPf7444WFhevXrzc5oia9+OKLH3/8sVarrXs2GmmzNGZQFMWSkpLVq1fn5OQUFBSYeUSNXyP5uFauXHn8+PGdO3emp6evW7dOKt+2bdvEiRONa6usrIyKijpy5EizjhqwKkVrBs0CANCeGQyGiooKURS9vLwsVWd1dfXNmzednJy6detmqToBAJCMHDlyzpw58fHxxoWPP/74lClTnn322Xo3eeyxx1566aXx48fLJTt37ly9evUPP/wgfVUoFN99993UqVPlr3X7gPUWNr7CuHHj3njjjbFjx0pft2zZMmXKlHoraajyhspHjhz55Zdfdu3aVS757bff3nzzzb1790pb3b5928vLS6FQlJWVeXp6Ntl4k52eOXPm3nvvbW7bvLy8vvvuu7i4uEZuKhqqrclrJG27Z8+ehx56SPqq1+vlnOv77rtvxYoVsbGx0tdPPvkkJydn2bJlxruYOXNmZGTk7NmzGz50wIoILQEA0AxVVVXZ2dkuLi6RkZG2bgsAwN7UG1ry8vK6cuWKv79/vZt4enpmZWX5+vrKJUVFRd26dSsrK5O+msQ7LBVa8vPzy8zM9PHxkXfq5+dnkdCSq6trdXW1SaGbm1tFRYXxVnU/mMOcs1FveVpa2quvvvrrr78GBQXdfffdrq6uq1atCg4ONueImrxGjR/FTz/9tHDhwn379gmCUFNT069fv8OHDwcGBhqvQ2gJtsWAOAAAmkEaEMcc3gCANqPX6xsfiF03JNGhEwhcXV2vXbsm/jsprmRDffv23b9/f01NTVZW1o4dOzZv3vz888+bv3lrrtEDDzygUqn2798vCMLatWsnTJhgElcCbI47YwAAmoG5lgAAbWzYsGHbtm1raOmoUaOOHj1qXHLkyJHRo0dbu1WDBg06ceKE/FXKqWkN+X1wEyZM+Oabb1pZWxtISUlpfAX5iFp/jRYtWvTOO+/U1tZ+8sknc+bMaW5TAWsjtAQAQDOQtQQAaGOLFy9+99139+3bJ4piVVVVenr6mjVrnnvuOWnp0qVL582bl5qaqtPpdDpdamrq/Pnzly5dau1WJSYm/ud//mdGRoZWq01NTf3555+bW4Ozs7P0gra8vLxVq1bFxcVJ5R988EFSUtLChQuvX7+u1WqLi4t37949YcIECx9AM/n7+2/durWkpET6mpqa6uzsbLJOQ0fU+ms0aNCgsLCwadOmjRkzJiQkxBIHBFgSd8YAADQDoSUAQBuLjY1NTk5eunSpWq0OCQl55plnqqurP/vsM2npXXfd9e233y5ZskStVqvV6qVLl27YsKF3797SUinNVk62NfkqCMK5c+fkQonxTE9yoclnQRCGDh06f/78+Ph4Hx+fVatW1Q2UNLKtRHpBm1KpHDJkSGZm5vbt26XysLCww4cPZ2ZmDh482MPDIy4u7uDBg9Ib0+o9HMHsbOImz0Yjbe7WrVtISMjLL78cEhISExPz5JNPbty40aT+ho6o8Wtk3JJ6T5TkvffeS0lJmTt3rjlHCrQxpvEGAKAZiouLi4qKvL29AwICbN0WAIC9qXca7w5Bo9F0797deF5qWNYXX3xx5MiRpKSkepcyjTdsy8nWDQAAoCMRRVGpVMrvAwYAALm5uQsWLJg1a5atG2K39Hr98uXL5TQooL0hnx8AgGbo0qVL9+7du3TpYuuGAABgYx9++KE0emvAgAH9+/d/9913bd0iOySdYScnp4sXL3bv3t3WzQHqR9YSAMBuVVdXK5VKZ2dnXugGAIDFzZ49mxFY1sYMNugQyFoCANit3NzcrKys2tpaWzcEAABYXWRkpKIBkZGRtm4dYM/IWgIA2C0nJyf5XwAAYN+ysrJs3QTAQXG3DQCwWxEREbZuAgAAAGDnGBAHAAAAAACAFiJrCQAAAADahaysrBkzZjCUG81VWVk5fvx4W7cCjov/swAAAACgXfD39580aVJsbKytG4IOZuXKleHh4bZuBRwXoSUAAAAAaBfc3NwGDBgwZswYWzcEHUxycrJarbZ1K+C4CC0BAGAuURTz8/MFQQgKClIoFLZuDgAAAGB7hJYAADCXwWAoLy8XBIG4EgAAACAhtAQAgLkUCkVAQIDBYLB1QwAAAID2gtASAADmUiqV3t7etm4FAACCQqEQRbGhRYIgNLS08Tqb3LCR/VpkfQAdkdLWDQAAwCry8vJyc3Nra2tt3RAAAFouODi43vJG4jUtDuWYs2FzKzd/fU9Pz2bVDKD9ILQEALBPVVVVFRUVPCkFAHRo0usjjKWkpCgUCpNZ/yoqKqZPn+7h4TFw4MDz58+bbBIbGxsbG2vmHm/cuDF06FC1Wv3cc89VVFQ0vt/KysoXXnhBrVZHR0enp6cbr1Dv+lLJqlWrwsLCXFxckpOTpXJfX9/y8nLF78xsKoB2gtASAMAOiaKo1+sFQXByYug3AMCuxMfH131wMmfOnODg4OLi4r179/74448mS0VRNP9Zy7p16zZv3nzlyhUPD4/Zs2c3uV9fX9/8/PxDhw7t2rVLMEpTqnd9qSQ3NzctLW3jxo0JCQlSeXFxsdxOHgsBHQ4DXwEAdkiv11+9elUQhB49evDwEwDQUYwcOXLOnDnx8fGhoaG5ubnGi0JCQnJycuSvJnMY+fr6ZmZm+vr6CoJQVFTk5+fXso6eQqHIzs4ODQ0VBKG4uLhPnz4FBQUmKxjXHBAQcOnSJWm/Go0mICDAZL9151oyLmnoM5pr5syZkZGRxqFAoC3xLBcAYIeklCWVSkVcCQDQEclRpBYEXCw1z6DBYFAqmxjmYvx31oKBodraWhcXF0vVBsDaGBAHALBDcmjJ1g0BAKAtPPnkkx999JFWq83NzV26dKnJ0mbNtZSUlJSdnV1SUrJo0aJp06Y1vnJCQsKKFSsMBkN5efmaNWta0vTfOTs7Jycna7XanTt3jhkzpjVVAWhjhJYAAHaI0BIAwD4EBASYlMgTXRvPeL1s2bLs7Gy1Wj1+/PjnnntO+Pd8Ir1eb05KkbTJ9OnTJ0+eHBUVVV5evmTJksb3u2TJkvz8fD8/v+HDhz/66KNNtlMuMflXEARp6iW1Wr1mzZq1a9ead3oAtAsMiANgFYsXL05NTd2+fXsj68gJ3vHx8ffff//cuXPbqnWwfzqdTrBCaEmn0xkMBicnpyYHCAAAYBG3bt0yKak3SOTu7v7ll19++eWX9a5z6tQpc/Ylb3X8+PFGlhpzc3NLSkpKSkrSarXbt2/v27dv4+sbF5qsMGnSJEsN5QPQxrgzBmB5FRUVK1asWLFihfS1ycluPv74448//riqqsr6TYOjsFLWUlFRUVZWVmlpqWWrBQCg43rnnXcUCoWHh8f69esPHDhg6+YAsAFCSwAsb8uWLXFxcT179pS+NpmA3adPn0GDBm3dutWCbdBqtRasDR2OlUJLBoNBEARSlgAAkC1atEgUxZqamuTk5MDAQFs3B4ANcHMMwPJ+/PHHqVOnNmuTadOmbdu2zSJ7r6mp+cc//vH+++9bpDZ0UNKAOCcnC4/7JrQEAAAAmODmGLBzJoPR5K/79++Pjo52dXXt2rWr/DoPg8GwcOHCbt26+fr6PvfccxUVFfJWK1asCA8Pl3rU9W5r7OTJk8OGDau709ra2pkzZ3bp0iUoKGjZsmXGm9x33331jupvlpqams8++yw0NPS1116bPn16K2tDh2alrCUpBY/QEgAAACBjGm/AQT3zzDOrVq165JFHbt269fe///35558XBOGTTz756aefDhw44OPj89prr82fP/+jjz6S1v/555+PHTsWEhLS0LbG8vPzg4OD6+508eLFGRkZ586dE0Xx2WefNV4UEhKSm5vb4sOprq5evXp1YmJidXW1VqudNm1aVFRUi2uDHSBrqRF5eXlMbQYAxry9vbt06WLrVgBAR0VoCXBQTk5Oubm5BQUFERERcuZRUlLSDz/80K1bN0EQli9fPmTIEDm0tHLlSimu1NC2xhqaXOnrr7/etm1baGioIAiffvpp//79LXIsJ0+efOSRRzQajdzt37Fjh6+vr7S0qqqqurraIjsC7IOvr685r6AGAAdRXV39l7/85ZNPPrF1QwCgoyK0BDioH3744f3331+wYIGvr+/KlSvHjx8vCEJWVlafPn3kdYxTMyIiIhrf1lhwcHBubm6PHj1MynNycuRkIpOlubm59SY6mWPQoEE7dux45513fvnlF51Op1AoZsyY8corr0hLNRrN119/3cjmHh4ezs7OLds12idRFEtKSgRBkCOMllJSUiKKopeXl8XzodrM+++/37VrVzPfQg0AjmDRokUajcbWrQCADqyj3hkDMFPnzp0rKyvd3NwEQcjPz5fLo6Ojk5OTRVFMSUl57rnn8vLyBEGIiIjYtWtX165d69ZjPGdTvdsaGzRo0OHDh+uGlkJDQ69evdq3b19BEK5cuWK86PDhw7GxsS0+zJiYmF27dv3rX/965513du3alZSUtGDBAk9PT0EQoqKihgwZ0uKa0RHV1tZmZWUplcru3btbtubMzExRFLt27dpxw5HMcA8AkCUnJyckJHh4eNx7770H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Y8cmTZrEFv78889Go7GsrGzq1KncLtzWFwqFmzdvvnXrVkdHx1dffdVnXslT/FKp9ODBgwaD4ccff/zVr37ldGtXrlzxfrkln56zp/sCGDWcdqv0tPuk1WrNycmZMmXK5MmTX3/9dXZeKne0juux97suetpNklTr6OhYt25dWFhYdnY2N1ovRyw6def00u2ul5765dmdk6Kob775xul+fW2fVVhYuGjRoj5vzWw2k7wSRVFz587ljjydP3/+vn37+mwBxo6xnlpqaWlpampqa2vr6upis0gCgYBkkZRKJckiJSYmJiYmxsfHR0dHK5XKsLCw4OBgrLcNAAAAAADgJXb3yZs3b0qlUnb3yTfffDM2NraqqurGjRuxsbHsZCtuktf1mOy6SIb+kXLSoGvum+wmabFYamtr58+fz6ZaSJ0VK1akpKRotdrHHnuMG603CXRSbc6cORUVFeRlRUXFQw89xF6Yl5dXVVXV0dGRk5OzfPly/n49PR+ivLy8qqqKe7++ts86derUvffeyy0JCQkhCSlu6qqurs7TXU+dOtXvS93BiDaatzu1WCw6nY6iqNjYWE91dDqd2WwW/5JQKBzCMAEAAIaOSCR6+umn9+/fH+hA/E8ulxsMBrvdHuhAAuDZZ59NTk7OysoKdCAwAhw6dOjIkSPHjx8PdCDg3qRJk44cOTJt2rT+XR4dHX3hwoWAbBbEMIxAIDAYDFKplLtbJUF2q9RoNOzuk1zR0dHXr18fN24cRVHt7e333XcfO42OOzvV12NWREQEN00TFRXV0tLC1u/u7h7gSianTp3avXv36dOnKYpauHDh66+/vnDhQspl18vz589z43Tt19PzIfWtViuZNMPeo6/ts+RyuVardXv2zp07EydOJAPHnB4m92VXV9f48eM7Ojp8elCDbcmSJc8880xGRkagAxmLRvC4G5vN1tvby7N7K03TRqOxt7eXp5GoqKi4uDi1Ws2ORUJeCQAAAMB7arWadqFWqxEPwJil1WqdJoGS/St5dp/sc8RDP1brZyfWJScnc2eqsnklYuAr5C5atKi3t/f8+fPnz583mUwkr0RRVEZGxrx583766aeOjo7PPvvM6SrXfvl353RdjMXX9lk8T3v8+PE8b7G5n9+M4kEq0A8jILXkcDjY3dlaWlq0Wu3PP/9cU1Nz69at+vp6T4u0URQlEonU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8ePHfU0tAYxNyCuNEViyHQAAeMjl8oFcLhAI5HK5QqHwVzzeG0hqZtWqVe++++7WrVt1Ot2uXbuczvq01lJhYeHzzz8vlUq3bduWkZHBXzkzM3PPnj1vvfWW0WgsKirqX/CEWCwuLS1dunTpmTNn8vLyzp07N5DWAEYcrLU0IFartbS0lGGY3/72t88888y9994bFhYmFApDQkLi4+MXLFiwYcOGUZxXstvtR48etdlsM2bMeP7553/961+PGzdOJBKRfdYffvjhDRs2IK8EAAAAADA2qVQqpxKapslYIfaAoqjdu3fX19crFIrU1NTnnnuO+uV4IjKXvM++yCVr165dsWJFYmKiwWDYsWMHf787duxoamqKjIycN2/esmXL+oyTLXH6SlEUWXpJoVAUFRUVFxd793gARg98SD4gP/zwQ09Pz/jx4x955BG3FYKDg1esWOFa3t7eXlFRUVtb29XVJRKJNBrN7NmzyZYELHZe2I8//vj3v/9dp9MJBILx48fPnz8/Ojq63w3+6U9/unLlyv/+7/+2trZardY//elPFEVptdoffvjh559/bm9vp2laLpdPmTJl3rx5/J+u//Of/+zo6IiOjk5LS3M73FQikTzxxBPsS296YefBcSfEscf9i5Ooq6urqKioq6vr7e0NCQkZP3783Llz4+LinKpVV1dfuHChsbGRYZjIyMjk5OTk5GTM0YPAMhqNOp0uKioKq/MAAADACNLc3OxU4jZJJJVKDx48ePDgQbd1rly54k1f7FVuxze57Tc0NLSwsLCwsNBqtZ48efK+++7jr88tdKqQnp7ur6l8ACMRUksDUl1dTVHUzJkzfbqqtra2pKSE/dFjs9lu3bp169at3/zmN48++qhT5a+++urixYvcHm/fvv1v//Zv7ExmXxv84osvvv/+e6fCwsJC7svW1tbW1tbKysrf//73PG9lq6qqKIqaM2eOlysF9q8Xv7Rw+fLlsrIy9heAwWCorKz86aefli5dmpyczFb77rvvyN4QRENDQ0NDg+ueqQBDTK/XWyyWnp4epJYAAAAA/OiNN97Yvn27RCJJS0v75ptvAh0OwEiF1NKAkKRDfHy895d0dXV99tlnFovlgQcemDt3bkRERG9v77Vr186ePXvu3LmkpKQJEyZw6//9739PSUl58MEHZTJZU1PTiRMn2trazp8/z44G8rXBK1euzJ07d/r06Uqlkk0J3XPPPcnJyePHj5fJZBaLpaGh4ZtvvtFqtefPn1+8eLGne2lsbKQoyql9Ht70snXrVp4hQv2Ls6mpqby8nGGYBx98cN68eePGjevo6Dh//vwPP/xQVlYWHx9PRuo2NTWdOnWKoqiZM2fOnTs3PDy8q6uroqLCpz0pAAaDRqNpb28PyLoJAAAAAKPYtm3btm3bFugoAEY8pJYGxGg0UhTlul+4a1qELfnuu+/MZvOvf/3r9PR0UiKRSObOnSsUCsvLyy9duuSUqUlJSWFn240fP37JkiUfffTRzz//zFbwtcGZM2cuWrTIKby1a9eyxyEhIUlJSZGRkXv27Llx4wZPyqanp4eiqLCwME8V/NLLwFv4+9//7nA4Jk+e/Pjjj5OSiIiIJ554wmAw1NTUfPfdd8uXL6co6tKlSw6H47777luyZAmpplAolixZ0tPTU1lZ6eU9AgwGoVAYGRkZ6CgAAAAAAADcQGppqNXU1FAUNXv2bKfy+++/v7y8vK6uzqn8/7F373FO1Xf+x78n15lkMplkJnMfEFRAsbYi4KVQragUXF1FFLyxCNtu64qsPAqioo+fXURcsLayu5YVqn10qw9a25Fa0WqrVipW6rVFFAVUmMx9ksxMkklOkpPfH2eJMTPJZK4nmXk9/5hH8j0n3+/nZGrJvPP9fk/KNtg1NTVCiO7u7kF3OHPmzN5VqdNzjh496vP5khcJd3Z2ZnFN2Rr6KIPr4fPPPxdCzJkzJ6V97ty5hw8fTuR06oPzzz8/5bTzzjuPaAkAAAAAgD4RLQ2JxWLp6urq7u5OWajS5xbUKq/XK4RQ723Zex84dR5QspKSkuSnZrNZCBGLxQbdYe81NW1tbT/96U97enp6X2A0Gu3dmGC1Wjs7O3tffp8GPcrQe+jq6hJCuFyulHZ1HVwip1NPS97ESsVsEeQ+RVGy3PIMAAAAAIYX0dKQVFVVdXV1ff7559nvgaImPoqi9Hk0OTNSJd93c1g6NBqNKS1/+MMfenp6ampq5s2bV1FRUVhYqNPpotHoxo0bMw9dVVXV2dmZ5eUPepRh7AEYkzo7Oz0eT3l5udVq1boWZCsajba3t0ej0d73qQQAAADyC9HSkEydOvXQoUNvvvnmmWeemeWUAbvd3tHRsWrVqt6zYwZn6B2qC8EWL16cnBB1dHT0+8KpU6d+9NFHf/nLX7K5/EGPMvQeiouLPR5PW1vbhAkTkttbW1tF0l5R6mkdHR0pf+m1t7dnXyQw+jo7O6PRaGNjo81mc7lcer1e64rQP51O5/f74/F4JBLpnfgDAAAAeYQFFENy5plnFhcXNzU17dmzJ928oRRTpkwRQrz++uvDVcPQO1RnNhkMX8oZ9+3b1+8LzzzzzJKSkubm5nSXL8vyM888M9BR1HPC4fBw1aluZN77Lfrzn/8shDjppJPUp+qD3h2+8cYb/Q4BaKiurs7pdEqS1N3d/dlnn/l8Pq0rQv90Op26wFm9HQQAAACQv4iWhsRgMFxzzTV6vf6tt976n//5n3feeaejoyMSiSiKEgwGjx49unv37pSXnH/++RaL5Z133nnqqaeOHDnS3d2tKEooFGpsbNy3b9/27dsHWsPQO6yoqBBC7N69u62tLRKJtLa27t69+/333+/3hXq9fvHixQaD4a233tqxY8ff/va3zs7OWCwWDoebmpr+9Kc//fjHP37vvfcGOordbhdCvPvuu8kbdQ+lznPOOUen0x06dOjZZ5/1eDyxWMzj8ezevfuTTz7R6/WJHdBnz56t0+kOHjy4Z88er9cbi8W8Xu+ePXvYwxs5TpKk0tLSurq6goICRVHa2toaGhpS/vNBDrJYLIJoCQCAEyRJ6nczkJEbOsOhoVel1XUBo4YFcUNVV1e3fPnyp59+urm5+be//W3vE2w228KFC5OfXn/99bt27Tp06NChQ4eGXsDQO7zwwguffPLJw4cPqzebU82ePXv//v39vra2tnb58uW/+tWvGhsbf/Ob36QcNZlMV1555UBHOf300/fu3fvCCy+88MILaou6Ffqg66ysrFywYMGePXvefvvtt99+O9EuSdLChQvVxEo97ZJLLvn973+/f//+5D5nzpz51ltvscgIOc5sNtfW1nq9Xo/H09PTc/z48dLS0pT7ACCnWK1Wj8dDtAQAGMOqqqqampqyPDkej2sVwSTfDan3oaFXlaH/FDabLflu4EC+YNbSMKirq1u1atUVV1wxderU4uJig8FgNBrtdvtpp5125ZVXrl69+rTTTks+v7a29pZbbpk3b15tbW1BQYFOpysoKKipqbnwwgtvueWWQRQwxA5PPfXU66+/vq6uzmAwmEymmpqaK664IjkO63f0VatWXX755VOmTFEv32w2V1VVXXDBBatXr/7a17420FEuuOCCOXPmOJ3OlDRnKHXOmjXr5ptvPu2006xWq06ns1qtp5122ooVK84+++zk084777wbbrjhpJNOMplMJpOpurr68ssvnzdvnjhxbz4gl0mS5HQ6J0yYUFhYmJi+FIlEtK4LfSsoKNDr9eo8U61rAQBgRDQ3Nyc/DYVCq1evrqioqKqqeuKJJ9SdPTJbtWrV1KlTrVbrJZdc8sorr6iN9fX1JpNJkqTi4uI5c+Yk+knXnsGePXt6z0sKBALLly8vKio666yzDhw4kPKS2bNnz549u9+eM/Svtmzbtq22ttZkMtXX16vtTqfT7/dLJ2Q5BJALpOwDVGB8OnLkyM9//vO6urqVK1dqXQuQrc7Ozvb2dkVRdDqdy+UqLi7WuiL0oampye/3l5aWOp3OURt0zpw599xzz/z580dtxFFjt9v9fn/vW6MCwPhRWVm5fft2TW4/Go/HZ82a5ff7k29ZK0lf+ntzzZo1PT09P/jBD4qKin73u99973vfS7lhTsr5Qgi/319UVBSJRF577bUrr7xSndFjs9kuueSSX/7yl7Isv/jii9/5zncS9+fps71fKePeeuutNpvtvvvu6+rqeuyxx+66667ko7NmzRJC/PWvf83+zel9XZIkrV+//s477/zjH/+4ZMmSxFYGvc9E/tq8ebPb7d62bZvWhYwGFsQBmcTj8b179wohJk+erHUtwADY7Xar1drc3NzT09PS0tLd3V1RUZGyCz40Z7FY/H5/MBgczWgJADCGTZw4cc2aNVpXIWpqahobG9XH6uyb6upqt9v91FNPffDBB+q/etdcc80111yTuZ9PPvlkzZo1+/btC4fDM2bM8Pv9avuTTz559dVXG43GsrIyl8v13HPPZW4fKHUXDpPJVFZW9p3vfOeuu+5KPjqgUCmDBx54QAhx1VVXMcccYwB/ZgBf+OlPf3r22WfX1NTY7XZFURobG1977bXPPvvMZDLNmDFD6+qAgTEYDLW1tT6fr729PRgMfv755+Xl5TabTeu68AV1J+9QKKTOL9O6HABA3nvzzTe1Gjoejyf+LXO73eqDlDk40Wh0QH1ee+21S5cu3blzp9PpbG9vr6qqUtsvv/xyWZYDgYDH4/nf//3fSy+91Ov1ZmgfCg1vjSLLsslk0mp0YED4IAt84dixY/X19f/5n/95//33P/DAAz/72c8+/fRTvV7/j//4j+p964C8U1JSMmHCBLPZrChKc3NzU1OToihaF4X/YzQajUZjPB5nM28AwHiwePHirVu3CiHa2trq6+tvvPHGzOe73e6ZM2cWFxcfPHjwkUceSbS7XK79+/frdLq6urpp06YFAoHM7QO1dOnShx56KBKJNDY2PvjggylHB7TX0kAZjcb6+vpIJPL8889ffPHFIzQKMOyIloAvrFix4qtf/arL5TKbzQaDweFwnHXWWf/yL/8yffp0rUsDBs9kMtXV1anxqN/vP3bsGPtG5w51Q4pBf/YFACCXlZeXJz/dunWrz+crLy+fPn367t27t2zZkjiU2Lg6eQfr7du3r1y50ul0rl+/ftmyZeLE8rpJkya99957U6ZMkSRpyZIlu3btUs9P155Bn+Nu2bKloaHB4XAsWLBgxYoViXFVsVgs++2Q+uw/0ZLyUwixa9euJUuWOByOHTt27Ny5M8tRAM2xSRgAjBfBYLClpSUajUqSpN5QUuuKIILBoNvt1uv1o7ahG9t4AwBGgrogLmUbb2A8G1fbeDNrCQDGC4vFMmHCBKvVWlBQYDabtS4HQghRWFio0+lisRhTyQAAAJCn2MYbAMYRvV5fXV2tKEryvG5oSJIk9T5xgUCAeWQAAADIR8xaAoBxh5uR5RS2WwIAYORUVFRIvVRUVGhdFzCmMGsJAAAtqdFSOByORqMGA/8uAwAwnFpaWrQuARj7+OIaAAAt6fV6dSlcMBjUuhYAAABgwIiWAAD/R5blnp4erasYjywWi2BNHAAAAPIT0RIAQAghYrFYY2Oj2+0m4Bh96pq4YDAYj8e1rgUAAAAYGKIlAIAQQuh0usLCQqPRWFhYqHUt405BQYFer1cUhTVxAABkqb6+3mQyOZ3Ob37zmymHBnonXA3vnKtuK57NmRperybvT/bvzPB2m+W4I1Re/iJaAgAIIYR6t5Ta2lruH6cJp9PpcrnUTZcAABgbqqqqRq7zJUuW7Nq1y+PxvPLKKymHBjoLuPf5Npst3cnD+z1Q76HT9a/V9Q6i/2ExQoP2222W4zLTPAV/PwAAvqDX67UuYZwqKSkpKSnh/QcAjCXNzc3JT0Oh0OrVqysqKqqqqp544okpU6ao7ZFIZP369VOnTp0yZcq6detkWVbb1Ykh27Ztq62tNZlM9fX1avvEiRMlSYpEIosWLUqZPLJnz57e00mCweC3v/1th8MxY8aMQ4cOJZ/Q5/lOp9Pv90snJNrb2tpmzZpltVorKipuvfVWNQNSz3n44YdtNtu+fft27txps9kSpfYpEAgsX768qKjorLPOOnDgQOb+B3G96d63gV5vuvMH+vtSzZ49e/bs2Rneln4NdNwMv/djx46de+65DodjxYoV/e4FkW7cgfYzthEtAQAAAABG3F133SXL8oEDB44ePWq1Wj0ej9q+YcOGmpqaQ4cOffzxxzU1NRs2bFDb1YkhjY2NBw8e3LVr15IlS9T2zz//XD0UPyExxMKFC3tPJ7njjjucTmdzc/PevXtfeOEFkTTlpM/z1cJ6d7527dqtW7fKsnzkyJF58+atXbs20VUsFnv88ccvu+yyAwcOPP7444lS+3THHXdUVVV5PJ6XXnrp2Wefzdz/IK433fs20OtNd/5Af1+Jo0Oc6TPQcTP83p944omnn376yJEjRUVF69atG9y4A+1nbJOYxwVgdEjSaP8fznCNuGnTpn379v3ud7/LZqyFCxd+4xvfWL9+/dDHBUbCnDlz7rnnnvnz52tdyPCz2+1+vz8Wi2ldCACMR/F4XKfT+f1+q9VaU1PT2NiYfLS6utrtdldVVX3wwQdOpzPltZWVlR999FFJSYkQwuv1nn766U1NTeqh5I9zKR/tMnzSSzlUXl7+0UcfqeO2tbWVl5envLB3V312XlpamojDhBAul6u1tTX55N4P+uR0Og8fPqzW09HRUVZWpp6crv+BXq/I+L5lf73pjg7u9zUIQxw33e9dkqSGhoaamhohhMfjmTZtWvL7nP24/fazefNmt9u9bdu2obwJ+YJZSwCQSSAQePjhhx9++GH1ab/b9f3whz/84Q9/2NPTM/KljSq+hwAAAFlyu92JKSrqA7fbLYSIRqPpXjKinzSSP78NYqDEAqizzz47niQlRxic5NVVI9H/EEtKR6tPhgMaN5vfu6Io2Wwz2u+4WfYzho3riweQp0bzdgy/+c1vzj///FNPPVV92u+/K9OmTZs5c+bu3btHrqT29vaurq6R6783RVEaGho6OjpGc1AAADDGLF68eOvWrUKItra2+vr6G2+8UW1ftmzZY489puYp27dvv+mmm4Z33CVLljz88MOKovj9/h07dmTzEqPRWF9fH4lEnn/++YsvvlhtXLBgwY4dOxoaGhRFGUo9S5cufeihhyKRSGNj44MPPphoH67+B6HP601ncL+voe+1NNBxM/zeH3vssYaGBq/Xe//991977bWDHndA/YxtREsAkMmzzz57zTXXDOgl11577W9/+9uRKMbj8dx5551XX3115rt4DLtAIBAKhTwej1bfngEAgHxUXl6e/HTr1q0+n6+8vHz69Om7d+/esmWL2r5x48a2tra6urq6urqOjo6NGzeq7eq3ib1/qntLixP7Nyd/6Zh4mty+efPm5ubmsrKyOXPmXH755ckl9Xm+EELdssfhcOzYsWPnzp1q42233dbW1jZ37lyn0zl//vzNmzenFCay+wZ0y5YtDQ0NDodjwYIFK1asSLyqz/4Hcb3p3reBXm+68wf6+1LFYrHs5xwNy7h9/t7VQ8uXL1+0aNHkyZP9fn/ifR7QuJn7GY/iAMa6UCj03e9+1+l0VlRUqF+MqO2xWOzf//3fTzrpJIfDcfPNN/v9frVdCPHoo49OnDixoKDg3HPP/fvf/97v+T/84Q9ra2vVZcmHDh26+uqrnU5ncXHxVVdd1dbWljgtQ5GRSOSee+6ZMGFCSUnJ1q1b1cY+u+r9/2D9jpi4HUlFRcXq1atDoVDmdybZpEmTDh8+nHiaOCccDt9yyy3qa//jP/4j+bUff/zxySefnPF3MmDt7e3f//73zWazEOKZZ54Z3s6z0dXV9cknn3z88cdut1tRlNEvAMPl61//+gsvvKB1FSOiuLhYp9NpXQUAjFPqRJvE58PcJMvyb37zm9NPP13rQjCqtPq9P/DAA7feeusoD6oVw+gGWQA0sHHjxs8///zvf/+7EOLmm29OtP/oRz969dVXX3755ZKSkttuu+3ee+996KGH1EO///3vX331VZfL9dBDD333u9/985//nPn8P/3pT2+++WZ1dbUQ4pprrvnRj37085//XJblDRs23HnnnY899li/RT744IN79+59+eWXnU7nD37wA7Wxz67i8XjK1nr9jnj//fd/8MEHb731lhBi2bJlmzZtuu+++zK8M8mam5urqqp6t2/atOnjjz/+29/+Fo/Hly1blnyouro6ZevKoWhvb9+0adN///d/CyHC4fDEiRNramrefvtt9eivfvWrzs7OdK+NRCI+n2+4KonFYmoqZzAYCgoKhqtbjLKPPvpo48aN2fxXmXfG3h5nAIDhcvfdd2/atMlkMi1cuPDll1/WuhyMEn7vo4Y7xAFj38knn/zcc89NmzZNCHHw4MHp06er/+GfdtppzzzzzNSpU4UQLS0t55xzzmeffSaEkCSpqampsrJSCBEMBsvKyoLBYObzP/vss4kTJ/Yeuqura/r06cePHxf93STi1FNPra+vP+OMM9KdkGVXfZ528sknP/vss6effroQ4sCBA1deeeXhw4czvDPJCgsLOzo6LBaL+jTR5w3v4zQAACAASURBVCmnnPLb3/420edXvvKVxGsDgYDL5VLftCHy+/2LFy/+/e9/rz41mUwWiyX5viqffvop/zcOJJhMpnA4rHUVADAexZPuEKd1LUBOGFd3iCNaAsa+wsJCn8+nrqUKhUKFhYXqf/gWiyX5S36dTqfetFtKc2PXDOcripJYjfzWW2/dcccd7777rtfrFULo9Xr1biCZo6XCwkKv15syFybLrvo9LbnzUCjkcDjUC0n3ziSbPHnyiy++eMopp6S8Gyl9Jr/2k08++da3vnXkyJFMv5WBePnll++8886DBw8Gg0Gr1drU1KThh7ZQKNTY2BiLxUwmU01NjcHA7Ndh1t3d3dzcbDQaTzrppJHof86cOffcc8/8+fNHonMAwLhFtJSioqKi9yaV5eXlLS0tmtSD0TeuoiW28QbGvurq6k8//VR9fPTo0UT7hAkT1DkvKjUnyiDD+clb9C1duvSf/umfDh8+HI1GOzo6+u1WVVdXp84kSpauq5T9Efsdsbq6OnHhhw8frqmpSbT3+c4kmzlz5uuvv967vaamJvGSlBTp9ddfH+L9L1JcdNFFb7755rPPPnv22Wd3d3c/+uijw9j5QBUUFNTW1hoMBlmW3W53lr9fZM9qtdrt9oqKCq0LAQAAg9fS0tJ7PxpyJYxVREvA2HfdddetWbOmsbGxsbFxzZo1ifbvfe973/72tz/88ENZlv/+978vXbo0cz9Znh8IBIqLi61W6+eff/6d73wnyyKXL1++atWqo0ePer3e22+/PXNXZWVlH374YfYjXnfddatXr25oaGhoaFi9evV1112XaO/znUl2+eWXP/30073br7/++ttvv93tdrvd7n/7t39LPvT000+n3HxkWFx44YX79+9/9dVX9+/fPyyr7QbNZDLV1dUZjUZZlo8fP67OEcNw0el05eXlhYWFWhcCAAAAZIVoCRj7NmzYUFdXd8YZZ5x11llf//rXjUaj2r5q1aorrrhi0aJFxcXFN9xwQyJwSSfL83fu3Ll+/XqbzfbNb37zggsuyLLItWvXnn/++RdccMHJJ588YcKEzF2tX7/+/PPPT8xd6nfEDRs2nHbaaTNnzpw5c+b06dPvvvvuzO9Msquvvvovf/nLxx9/nNJ+9913T548+Stf+cqMGTMuvfTSRPuhQ4f2799/1VVXZXnhA3XBBRf88pe/7LPU0WQwGGpra41GYyQSaWhoIF0CAAAAxi32WgLGl7/97W9XXnllusVf41mGd+aBBx7485///Nxzz2XTz2WXXTZ37tz169cPd4G5KBqNNjQ0RCIRo9GorpLTuiL0j72WAAAjgb2WgBTstQRgrLn99tubm5s///zzNWvWXHnllVqXk0OyeWfuvPPOLHMlIcRzzz03TnIlcWLuksFgYO4SAAAAMG4RLQHjwkknnTRr1qzZs2dPnjx548aNGlYi9UXDenLnnclTyemS2+0mXQIAAJrT6uOlth9rAQ2xeAEYF1avXr169WqtqxBCiFxbhJs770z+MhqN1dXVbrdbluWmpqaamhqdju8tAACAqKqqampqyvLkYDBosViGZVytPnBmP67NZuvu7h7RYoDRxKd/AMBQmc3mmpoavV4fCoWamppyLUAEAACaaG5uTjxOma6e/LStrW3WrFlWq7WiouLWW29N3AlXPcHn861cudJms61du1Ztr6+vN5lMkiQVFxfPmTNnypQpiVH27NnTe1J8JBJZv3791KlTp0yZsm7dOlmWk/vftm1bbW2tyWSqr69PftXs2bNnz56d5ZX2OW66/p1Op9/vz4X5+8BwIVoCAAwDs9lcXV2t0+mCwaDH49G6HAAAkFvi8fi55567b98+9em+ffvOO+889euotWvXbt26VZblI0eOzJs3LxEhqUcXLVo0d+5ct9v9rW99S21ftmzZP/zDP0Qikebm5u9///s+ny8xysKFC3t/xbVhw4aamppDhw59/PHHNTU1GzZsSO6/sbHx4MGDu3btWrJkSUrB2X9b1ue46fpXPynFT8hyCCCXcYc4AMCwCQQCPp+vqqqKNXHDoqury+v1lpSU2O324eqTO8QBAEZC8h3iampqGhsbk4+qa+dffPHFLVu2vPTSS0KISy65ZN26dZdccokQorS0NPl7KZfL1draqj6WJKm7u7uoqCi5t2efffbqq6+ORCJlZWUul+tnP/vZrFmzkk+QpC/9nVtZWfnRRx+VlJQIIbxe7+mnn55Yppd8ZsqrBqF3D+n6H/pYyH3cIQ4AgMFQP02SKw2XWCwmy3JXV5fWhQAAMAButzsxH0d94Ha7hRCXXnppT0/P3r179+7dGwqF1FxJCHH22WfHkyRyJVVKriSEuPzyy2VZ9vv977zzzk033XTppZf2W1Iu5ziJBXpA/uLTPwAAOaq4uFiSpFAoxIdOAMDYcN99991777333nvvfffdl2hcsGDBjh07GhoaFEXJphOXy7V//36dTldXVzdt2rRAIJD5/GXLlj322GNqbrV9+/abbropm1EGtNfSQBmNxvr6+kgk8vzzz1988cUjNAowaoiWAADIUXq9Xr1XDhOXAAD5qLy8PKVl3rx5iqLE4/GLLroo0Xjbbbe1tbXNnTvX6XTOnz9/8+bNaru6xXXv7a4nTZr03nvvTZkyRZKkJUuW7Nq1K3EocWbySzZu3NjW1lZXV1dXV9fR0bFx48aU/lN+qmKxWPZznfocN0P/6tZLDodjx44dO3fuzHIUIGexwhMAgNzl9/ubmpoMBsOkSZOGpUP2WgIAjITkvZa0rgXICey1BAAAcoLVatXr9dFoNHEnZgAAACCnEC0BAEYc99YdNEmSbDabYE0cAAAAchXREgBgZEWj0YaGhpS7vSB7arTk9/uz3NwUAAAAGE1ESwCAkSXLcigUCgQC0WhU61ryUkFBgclkisfjTFwCAABADiJaAgCMLIvFUllZWVdXZzAYtK4lX9ntdiFEZ2en1oUAAAAAqYiWAAAjzmazGY1GravIY8XFxTqdTpblnp4erWsBAAAAvoRoCQCAXKfT6YqKigQTlwAAAJB7iJYAAMgD6po4v98fi8W0rgUAAAD4AtESAAB5oKCgwGw2s5k3AACakyRJw6E1HB1Ih2gJAID8wGbeAID8UlVVNfROgsFg9ifbbLaR7kcIEY/Hs+9qQOP2K8uhh+t9ALJEtAQA0MyAPpnBZrPpdLpIJMKHQgBAXmhubk5+GgqFVq9eXVFRUVVV9cQTT0yZMkVtV2fi+Hy+lStX2my2tWvXqu1tbW2zZs2yWq0VFRW33npr8j9/q1atmjp1qtVqveSSS1555RW10el0+v1+6YTEyRn66VO6foQQe/bsSWlUnz788MM2m23fvn07d+602Wz19fX9jjt79uzZs2dn8zYGAoHly5cXFRWdddZZBw4cSD40ou8DkD2iJQCABhRFaW5uTvnEicx0Op36JSQTlwAA+eiuu+6SZfnAgQNHjx61Wq0ej0dtV79qWrRo0dy5c91u97e+9S21fe3atVu3bpVl+ciRI/PmzUtETkKIBx544NChQz6fb/369VdccYXaqHYYPyFxcoZ++pSuHyHEwoULU1rUp7FY7PHHH7/ssssOHDjw+OOPL1mypN9xe3eezh133FFVVeXxeF566aVnn302+dCIvg9A9iS+MQYAjL5QKNTQ0BCPx10uV0lJidbl5I1wOHzs2DFJkiZOnGg0GgfRw5w5c+6555758+cPe20AgPEsHo/rdDq/32+1WmtqahobG5OPVldXu93uqqqqDz74wOl09n65JEnd3d3q7VATSktLE/GTEMLlcrW2tgohPvnkkzVr1uzbty8cDs+YMWPv3r2Jv2olqY+/cNP1k0Gf/aQ7mnia8mAQ4/bJ6XQePnxYfd86OjrKysrUUUbhfcBQbN682e12b9u2TetCRgOzlgAAGigoKCgtLRVCtLe3h0IhrcvJG2az2WKxxONxn8+ndS0AAPTN7XYn5suoD9xutxAiGo1meFVKriSEOPvss+NJEjnItddeO2fOnA8//NDn8/3yl79M16Esy5n7yVKin4Ea4rj9FjPK7wOQAdESAEAbDofDarXG4/Hm5mam0GavpKREr9cPbsoSAAAaWrx48datW4UQbW1t9fX1N954Y+bzFyxYsGPHjoaGBkVRktvdbvfMmTOLi4sPHjz4yCOPJB8yGo319fWRSOT555+/+OKLM/eTQZ/9DFTmcbPfa2np0qUPPfRQJBJpbGx88MEHE+2j8D4AWSJaAgBoprKy0mAwRCKRtrY2rWvJG1arddKkSawiBADkvvLy8uSnW7du9fl85eXl06dP371795YtW9R2davp3ttO33bbbW1tbXPnznU6nfPnz9+8ebPavn379pUrVzqdzvXr1y9btizRgxBi165dS5YscTgcO3bs2LlzZ+Z+Muizn0SRKQ+SC8imflUsFsvyq7UtW7Y0NDQ4HI4FCxasWLEiMcoovA9AlthrCQCgpWAwqE6Sr66utlqtWpcz9rHXEgBgJCTvtaR1LUBOYK8lAABGicViUSfg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zFoCACATnU6nflhh4hIAABhpP/7xj9evX68oysqVK998883u7u5AILB///5//ud/VhTljjvueOSRRxInx78sQ2Pvl7S2tj7zzDOTJ09uaWnZsGFD8jnr1q374IMPampqHn/88ePHj4fDYZ/P98Ybb2zatOnMM88c+jVmX/ZAK7noootCodCTTz6Z3PiLX/wiFArNmzcvy/LuvvvuRx991GAwrFu37qOPPgqHwy0tLb/4xS/OOeecIVz0GMesJQAA+vHpp59Go9G6urqCggKtawEAAGPW8ePHTznlFFmWf/rTn958880pRx9//PEVK1aYTKYjR47U1tb2fnnyzKAsj77++utz5swpLy9vaWlJNJaWlno8njfeeOPcc88d4hVlU1uGQ9lXonby5JNPXn/99TNmzHj77bcTh2bMmPHuu+8+9dRT1113XbqBEj7++OPTTjtNUZQ+fwVIh1lLAAD0g+2WAADAKPjJT34iy/LixYv7DDVuvvnmq6++Wpbln/zkJ8M14le/+lUhRGdnZ3JjIBAQQpx66qn9vrzP3YsGtKVRZtlXolq0aJHT6XznnXfee+89teXdd9999913nU7nVVddlU0P27dvVxTl/PPPJ1caEKIlAAD6QbQEAABGwUsvvSSE+Pa3v53uBPXQH/7wh+Ea8Z133hFCpMyBOuuss4QQK1euPHz48HANNDgDrcRsNqvbeO/cuVNtUR/ceOONZrM5mx5effVVIcRNN900qHrHLxbEAQDQj+bm5u7u7rKyMofDoXUtAABgzHI6nV6vt6Ojw+l09nlCe3u7y+UqLS1tb2/vfXRAC+La29v37t27Zs2azz777N57773vvvsSZ+7du/fSSy8NhUJCiMmTJ3/ta18744wzvvGNb1x44YXq922ZR8y+sd9Dg6jk/fff/9rXvuZwOBobG4UQVVVVPp/v/fffP/PMMzO/PyqHw+Hz+d57771Dhw5t3br1wIEDBoPh9NNPX7p06b/+678a/397dxrU1PU+cPwELwGqKLIM1qLIOgpO3bWW6qh1GZeqVamFilq0Flu3jtVanKHTOv60tS9sa10Hp+rIWLVI3WVRpFJcwEGrlbrhigqyJhocQvJ7kf/v/jOBhEuwRvT7eeEk55z7nOcc3pgn5944O9u49mVGaQkAgAaUlJRUVFS0bdvW29vb0bkAAIAXlrOzs16vr6mp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</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/Delete.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKbXkgJENvbW1hbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkRlbGV0ZScpOwoKIyBnZXQgaGVscGVyIG9iamVjdCwgZGF0YWJhc2UgY2hhbmdlcyBzaG91bGQgYmUgcmVzdG9yZWQKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZQpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCm15ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlOwppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiQWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkRlbGV0ZSBleGl0IGNvZGUgd2l0aG91dCBvcHRpb25zIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIG9wdGlvbiAtLWFsbCBhbmQgYXJndW1lbnQgLS1hY2NlcHQgbiAoIGNhbmNlbCBkZWxldGluZyBhbGwgY29uZmlnIGl0ZW0pCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1hbGwnLCAnbicgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJPcHRpb24gJy0tYWxsJyBuIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIGNsYXNzIG9wdGlvbnMgKGludmFsaWQgY2xhc3MpCm15ICRSYW5kb21DbGFzcyA9ICdUZXN0Q2xhc3MnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgJFJhbmRvbUNsYXNzICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiT3B0aW9uICdjbGFzcycgKGJ1dCBjbGFzcyAkUmFuZG9tQ2xhc3MgZG9lc24ndCBleGlzdCkgIiwKKTsKCiMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgpteSAkQ29uZmlnSXRlbUdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBhZGQgdGVzdCBnZW5lcmFsIGNhdGFsb2cgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dJdGVtSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21DbGFzcywKICAgIFZhbGlkSUQgPT4gMSwKICAgIENvbW1lbnQgPT4gJ0NvbW1lbnQnLAogICAgVXNlcklEICA9PiAxLAopOwoKJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRHZW5lcmFsQ2F0YWxvZ0l0ZW1JRCwKICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCik7CiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCm9rKAogICAgJEdlbmVyYWxDYXRhbG9nSXRlbUlELAogICAgIlRlc3QgZ2VuZXJhbCBjYXRhbG9nIGl0ZW0gaXMgY3JlYXRlZCAtICRHZW5lcmFsQ2F0YWxvZ0l0ZW1JRCAiLAopOwoKIyBBZGQgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMKbXkgJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbiA9IHsKICAgIFBhZ2VzID0+IFsKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnRGVzY3JpcHRpb24nLCAgICAjIHdpbGwgYmUgcmV1c2VkIGluIGNsYXNzIG5hbWUKICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICB9LAogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgIH0KICAgIF0sCiAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgfQogICAgfSwKfTsKCiMgZ2V0IENvbmZpZ0l0ZW0gb2JqZWN0Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgojIGdldCBsaXN0IG9mIGFsbCBkZXBsb3ltZW50IHN0YXRlcwpteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKCiMgZ2V0IGxpc3Qgb2YgYWxsIGluY2lkZW50IHN0YXRlcwpteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgpteSBAQ29uZmlnSXRlbU51bWJlcnM7Cm15ICRDb25maWdJdGVtSUQ7CgpteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgojIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCm15ICRZQU1MRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgRGF0YSA9PiAkQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uLAopOwpvayggJFlBTUxEZWZpbml0aW9uLCAnZ290IHNvbWUgWUFNTCcgKTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJEdlbmVyYWxDYXRhbG9nSXRlbUlELAogICAgRGVmaW5pdGlvbiA9PiAkWUFNTERlZmluaXRpb24sCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwpvayggJFJlc3VsdC0+e0RlZmluaXRpb25JRH0sICdnb3QgRGVmaW5pdGlvbklEJyApOwoKZm9yICggMSAuLiAxMCApIHsKCiAgICAjIGNyZWF0ZSBDb25maWdJdGVtIG51bWJlcgogICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgQ2xhc3NJRCA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICApOwoKICAgICMgYWRkIHRlc3QgQ29uZmlnSXRlbQogICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NJJyAuICRSYW5kb21JRCsrLAogICAgICAgIENsYXNzSUQgICAgICA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9LAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUmV2ZXJzZURlcGxTdGF0ZUxpc3R7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHtPcGVyYXRpb25hbH0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIHB1c2ggQENvbmZpZ0l0ZW1OdW1iZXJzLCAkQ29uZmlnSXRlbU51bWJlcjsKCiAgICAjIGFkZCBuZXcgdmVyc2lvbnMgZm9yIHRoZSBsYXN0IGFkZGVkIGluIHByZXZpb3VzIGxvb3AKICAgIG15ICRDb25maWdJdGVtTmFtZSA9ICdUZXN0Q29uZmlnSXRlbScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgIENPVU5UOgogICAgZm9yIG15ICRDb3VudCAoIDEgLi4gNTAgKSB7CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICctJyAuICRDb3VudCwKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUmV2ZXJzZURlcGxTdGF0ZUxpc3R7UGxhbm5lZH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkUmV2ZXJzZUluY2lTdGF0ZUxpc3R7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uICRDb3VudCBmb3IgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1JRCBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OYW1lIiwKICAgICAgICApOwoKICAgICAgICAjIGNoYW5nZSB0aGUgZGF0ZSBpbnRvIHBhc3QgZm9yIHRoZSBmaXJzdCAyMCB2ZXJzaW9ucwogICAgICAgIG5leHQgQ09VTlQgaWYgJENvdW50ID4gMTA7CgogICAgICAgIG15ICRWZXJzaW9uVGVzdENyZWF0ZVRpbWUgPSAnMjAxMC0wMS0wMSAwMDowMDowMCc7CgogICAgICAgICMgaW5zZXJ0IG5ldyB2ZXJzaW9uCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW1fdmVyc2lvbgogICAgICAgICAgICAgICAgU0VUIGNyZWF0ZV90aW1lID0gPwogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJFZlcnNpb25UZXN0Q3JlYXRlVGltZSwKICAgICAgICAgICAgICAgIFwkVmVyc2lvbklELAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBjb21tYW5kIHdpdGggYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyBvcHRpb25zIChkZWxldGUgYWxsIHZlcnNpb25zIG9sZGVyIHRoYW4gb25lIGRheSkKICAgICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJywgMSApOwoKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIDEiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiByZW1haW5pbmcgdmVyc2lvbnMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgbXkgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIHJlc3VsdCBzaG91bGQgb25seSBiZSA0MCB2ZXJzaW9ucyBub3cKICAgIGlzKAogICAgICAgIHNjYWxhciBAeyRWZXJzaW9uTGlzdH0sCiAgICAgICAgNDEsCiAgICAgICAgIk51bWJlciBvZiByZW1haW5pbmcgdmVyc2lvbnMgYWZ0ZXIgcnVubmluZyBjb21tYW5kIHdpdGggT3B0aW9ucyAtLWFsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMgMSIsCiAgICApOwoKICAgICMgY2hlY2sgY29tbWFuZCB3aXRoIGFsbC1idXQta2VlcC1sYXN0LXZlcnNpb25zIG9wdGlvbnMgKGRlbGV0ZSBhbGwgdmVyc2lvbnMgYnV0IGtlZXAgdGhlIGxhc3QgMzAgdmVyc2lvbnMpCiAgICAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMnLCAzMCApOwoKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyAzMCIsCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaXN0IG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgICMgcmVzdWx0IHNob3VsZCBvbmx5IGJlIDQwIHZlcnNpb25zIG5vdwogICAgaXMoCiAgICAgICAgc2NhbGFyIEB7JFZlcnNpb25MaXN0fSwKICAgICAgICAzMCwKICAgICAgICAiTnVtYmVyIG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBhZnRlciBydW5uaW5nIGNvbW1hbmQgd2l0aCBPcHRpb25zIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgMzAiLAogICAgKTsKCiAgICAjIGNoZWNrIGNvbW1hbmQgd2l0aCBhbGwtb2xkLXZlcnNpb25zIG9wdGlvbnMgKGRlbGV0ZSBhbGwgb2xkIHZlcnNpb25zIGV4Y2VwdCB0aGUgbGFzdCBvbmUpCiAgICAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgnLS1hbGwtb2xkLXZlcnNpb25zJyk7CgogICAgaXMoCiAgICAgICAgJEV4aXRDb2RlLAogICAgICAgIDAsCiAgICAgICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWFsbC1vbGQtdmVyc2lvbnMiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiByZW1haW5pbmcgdmVyc2lvbnMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIHJlc3VsdCBzaG91bGQgb25seSBiZSA0MCB2ZXJzaW9ucyBub3cKICAgIGlzKAogICAgICAgIHNjYWxhciBAeyRWZXJzaW9uTGlzdH0sCiAgICAgICAgMSwKICAgICAgICAiTnVtYmVyIG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBhZnRlciBydW5uaW5nIGNvbW1hbmQgd2l0aCBPcHRpb25zIC0tYWxsLW9sZC12ZXJzaW9ucyIsCiAgICApOwp9CgojIGNoZWNrIGNvbW1hbmQgd2l0aCBjbGFzcyBvcHRpb25zICgkUmFuZG9tQ2xhc3MgY2xhc3MpIGFuZCBkZXBsb3ltZW50LXN0YXRlICdQbGFubmVkJwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY2xhc3MnLCAkUmFuZG9tQ2xhc3MsICctLWRlcGxveW1lbnQtc3RhdGUnLCAnUGxhbm5lZCcgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1jbGFzcyAkUmFuZG9tQ2xhc3MgLS1kZXBsb3ltZW50LXN0YXRlJyBQbGFubmVkIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIGNvbmZpZ2l0ZW0tbnVtYmVyIG9wdGlvbnMKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoCiAgICAnLS1jb25maWdpdGVtLW51bWJlcicsICRDb25maWdJdGVtTnVtYmVyc1swXSwgJy0tY29uZmlnaXRlbS1udW1iZXInLAogICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdCik7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiRXhpdCBjb2RlOiBPcHRpb25zIC0tY29uZmlnaXRlbS1udW1iZXIiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY2xhc3Mgb3B0aW9ucyAoJFJhbmRvbUNsYXNzIGNsYXNzKQojIHRocmVlIGNvbmZpZyBJdGVtcyBvZiB0ZW4gY3JlYXRlZCBpbiB0ZXN0IHdlcmUgZGVsZXRlZCB3aXRoIHRoZSBwcmV2aW91cyBjb21tYW5kcwojIHdpdGggdGhlIG5leHQgY29tbWFuZCBvdGhlciBzZXZlbiB3aWxsIGJlIGRlbGV0ZWQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgJFJhbmRvbUNsYXNzICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiRXhpdCBjb2RlOiBPcHRpb24gLS1jbGFzcyAkUmFuZG9tQ2xhc3MiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY29uZmlnaXRlbS1udW1iZXIgb3B0aW9ucyBhbmQgbm90IGFsbG93ZWQgYWRkaXRpb25hbCBjbGFzcyBvcHRpb24KJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNvbmZpZ2l0ZW0tbnVtYmVyJywgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLCAnLS1jbGFzcycsICRSYW5kb21DbGFzcyApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWNvbmZpZ2l0ZW0tbnVtYmVyIC0tY2xhc3MiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY29uZmlnaXRlbS1udW1iZXIgb3B0aW9ucyBhbmQgbm90IGFsbG93ZWQgYWRkaXRpb25hbCBkZXBsb3ltZW50IHN0YXRlIG9wdGlvbgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY29uZmlnaXRlbS1udW1iZXInLCAkQ29uZmlnSXRlbU51bWJlcnNbMF0sICctLWRlcGxveW1lbnQtc3RhdGUnLCAnUGxhbm5lZCcgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1jb25maWdpdGVtLW51bWJlciAtLWRlcGxveW1lbnQtc3RhdGUiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggLS1hbGwsIC0tYWxsLW9sZC12ZXJzaW9ucywgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucywgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIG1peGVkIHRvZ2V0aGVyLgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgKICAgICctLWFsbCcsICctLWFsbC1vbGQtdmVyc2lvbnMnLCAgICAgICAgICAgICAnLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycsCiAgICAyLCAgICAgICAnLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJywgJzEwJwopOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWFsbCAtLWFsbC1vbGQtdmVyc2lvbnMgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyAyIC0tYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyAxMCIsCik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/ListDuplicates.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKCm91ciAkU2VsZjsKCiMgZ2V0IGNvbW1hbmQgb2JqZWN0Cm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcycpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBjaGVjayBjb21tYW5kIHdpdGhvdXQgYW55IG9wdGlvbnMKbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiTm8gb3B0aW9ucyAtIGxpc3QgYWxsIGNvbmZpZyBpdGVtcyBpbiBwcm9kdWN0aXZlIHN0YXRlcyIsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCAtLWNsYXNzIG9wdGlvbnMgKGludmFsaWQgY2xhc3MpCm15ICRSYW5kb21DbGFzcyA9ICdOb25FeGlzdGluZ0NsYXNzJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1jbGFzcycsICRSYW5kb21DbGFzcyApOwoKJFNlbGYtPklzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJPcHRpb24gJ2NsYXNzJyAoYnV0IGNsYXNzICRSYW5kb21DbGFzcyBkb2Vzbid0IGV4aXN0KSAiLAopOwoKIyBhZGQgdGVzdCBjb25maWcgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAxLAopOwoKIyBhZGQgdGVzdCBnZW5lcmFsIGNhdGFsb2cgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dIYXJkd2FyZUlEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tQ2xhc3MgLiAnSGFyZHdhcmUnLAogICAgVmFsaWRJRCA9PiAxLAogICAgQ29tbWVudCA9PiAnQ29tbWVudCcsCiAgICBVc2VySUQgID0+IDEsCik7CgokR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICBJdGVtSUQgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCik7CiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dIYXJkd2FyZUlELAogICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10sCik7CgojIGFkZCB0ZXN0IGdlbmVyYWwgY2F0YWxvZyBpdGVtCm15ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21DbGFzcyAuICdTb2Z0d2FyZScsCiAgICBWYWxpZElEID0+IDEsCiAgICBDb21tZW50ID0+ICdDb21tZW50JywKICAgIFVzZXJJRCAgPT4gMSwKKTsKCiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dTb2Z0d2FyZUlELAogICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgIFZhbHVlICA9PiBbJENvbmZpZ0l0ZW1Hcm91cElEXSwKKTsKJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCiMgZ2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcwpteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKbXkgJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCA9ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH07CgojIGdldCBDb25maWdJdGVtIG9iamVjdApteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIKbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgIENsYXNzSUQgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKKTsKCm15ICRDb25maWdJdGVtTmFtZSA9ICdUZXN0Q29uZmlnSXRlbScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgQENvbmZpZ0l0ZW1JRDsKCiMgYWRkIHRoZSBuZXcgQ29uZmlnSXRlbQpteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgIENsYXNzSUQgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ0hhcmR3YXJlSUQsCiAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CnB1c2ggQENvbmZpZ0l0ZW1JRCwgJENvbmZpZ0l0ZW1JRDsKCiMgYWRkIHRoZSBuZXcgZHVwbGljYXRlIENvbmZpZ0l0ZW0KJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgTmFtZSAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgQ2xhc3NJRCAgICAgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKcHVzaCBAQ29uZmlnSXRlbUlELCAkQ29uZmlnSXRlbUlEOwoKIyBhZGQgdGhlIG5ldyBkdXBsaWNhdGUgQ29uZmlnSXRlbSBpbiBTb2Z0d2FyZSBjYXRhbG9nIGNsYXNzCiRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgIENsYXNzSUQgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQsCiAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CnB1c2ggQENvbmZpZ0l0ZW1JRCwgJENvbmZpZ0l0ZW1JRDsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tY2xhc3MgSGFyZHdhcmUgb3B0aW9ucwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY2xhc3MnLCAiJHtSYW5kb21DbGFzc31IYXJkd2FyZSIgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdjbGFzcycgKCR7UmFuZG9tQ2xhc3N9SGFyZHdhcmUpICIsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCAtLXNjb3BlIG9wdGlvbnMgKGludmFsaWQgc2NvcGUpCm15ICRSYW5kb21TY29wZSA9ICdzY29wZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tc2NvcGUnLCAkUmFuZG9tU2NvcGUgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiT3B0aW9uICdzY29wZScgKGJ1dCBwcm92aWRlZCBpbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gJy0tc2NvcGUnIC0gJFJhbmRvbVNjb3BlICkgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tc2NvcGUgY2xhc3Mgb3B0aW9ucwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tc2NvcGUnLCAnY2xhc3MnICk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAnc2NvcGUnIChjbGFzcykgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tc2NvcGUgZ2xvYmFsIG9wdGlvbnMKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXNjb3BlJywgJ2dsb2JhbCcgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdzY29wZScgKGdsb2JhbCkgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tYWxsLXN0YXRlcyBvcHRpb25zCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCctLWFsbC1zdGF0ZXMnKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdzY29wZScgKGFsbC1zdGF0ZXMpICIsCik7CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJzZQoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/UpgradeTo11.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGRlY29kZV9iYXNlNjQpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBUT0RPOiB0ZXN0IHRoZSBjb21tYW5kCiNteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTEnKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QsIGRhdGFiYXNlIGNoYW5nZXMgc2hvdWxkIGJlIHJlc3RvcmVkCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7ICAgICMjIG5vIGNyaXRpYyBxdyhWYXJpYWJsZXM6OlByb2hpYml0VW51c2VkVmFyc1N0cmljdGVyKQoKI215ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlOwojaXMoCiMgICAgJEV4aXRDb2RlLAojICAgIDEsCiMgICAgIkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpVcGdyYWRlVG8xMSBleGl0IGNvZGUgd2l0aG91dCBvcHRpb25zIiwKIyk7CgpteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiMgU2V0dXAgb2YgdGVzdCBkYXRhLCB3aGljaCBjb25mb3JtcyB0byB0aGUgT1RPQk8gMTAuMSBmb3JtYXQKCiMgdGFibGUgZ2VuZXJhbF9jYXRhbG9nCm15ICVDb25maWdJdGVtQ2xhc3NOYW1lMklEOwp7CiAgICAjIFRoZSBuYW1lcyBvZiB0aGUgY29uZmlnIGl0ZW0gY2xhc3NlcyBhcmUga2VwdCBpbiB0aGUgZ2VuZXJhbCBjYXRhbG9nLgogICAgIyBMZXQncyBhZGQgY2xhc3NlcyB3aXRoIG5hbWVzIHRoYXQgaGF2ZSB0aGUgcHJlZml4ICdUZXN0VXBncmFkZScsCiAgICAjIFRyeSB0byBub3cgbWVkZGxlIHdpdGggZXhpc3RpbmcgZGF0YS4KICAgIG15ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzID0gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJzsKICAgIG15ICRWYWxpZElEICAgICAgICAgICAgID0gMTsKICAgIG15IEBOYW1lcyAgICAgICAgICAgICAgID0gbWFwIHsgam9pbiAnXycsICdUZXN0VXBncmFkZScsICRfIH0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayBTb2Z0d2FyZSk7CiAgICBteSAkTnVtUm93cyAgICAgICAgICAgICA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGdlbmVyYWxfY2F0YWxvZyAoCiAgICBnZW5lcmFsX2NhdGFsb2dfY2xhc3MsCiAgICBuYW1lLAogICAgdmFsaWRfaWQsCiAgICBjcmVhdGVfdGltZSwKICAgIGNyZWF0ZV9ieSwKICAgIGNoYW5nZV90aW1lLAogICAgY2hhbmdlX2J5CiAgKQogIFZBTFVFUyAoPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsIDEsIGN1cnJlbnRfdGltZXN0YW1wLCAxKQpFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLCBcQE5hbWVzLCAkVmFsaWRJRCBdLAogICAgKTsKICAgIGlzKCAkTnVtUm93cywgc2NhbGFyIEBOYW1lcywgJ251bWJlciBvZiByb3dzIGluc2VydGVkIGludG8gZ2VuZXJhbF9jYXRhbG9nJyApOwoKICAgICVDb25maWdJdGVtQ2xhc3NOYW1lMklEID0gJERCT2JqZWN0LT5TZWxlY3RNYXBwaW5nKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIG5hbWUsIGlkIEZST00gZ2VuZXJhbF9jYXRhbG9nIFdIRVJFIG5hbWUgTElLRSAiVGVzdFVwZ3JhZGVfJSInLAogICAgKTsKICAgIG15ICVFeHBlY3RlZENvbmZpZ0l0ZW1DbGFzc05hbWUySUQgPSBtYXAgeyAkXyA9PiBtYXRjaChxci9bMC05XSsvKSB9IEBOYW1lczsKICAgIGlzKAogICAgICAgIFwlQ29uZmlnSXRlbUNsYXNzTmFtZTJJRCwKICAgICAgICBcJUV4cGVjdGVkQ29uZmlnSXRlbUNsYXNzTmFtZTJJRCwKICAgICAgICAnY29uZmlnIGl0ZW0gbmFtZXMgd2VyZSBpbnNlcnRlZCcKICAgICk7Cn0KCiMgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uCnsKICAgICMgYWRkIHNhbXBsZSBkYXRhIGZvciB0aGUgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgICBteSAkUm93cyA9IEdldENvbmZpZ0l0ZW1EZWZpbml0aW9uUm93cygpOwoKICAgICMgQWRkIHRoZSBjbGFzc19pZCBmb3IgdGhpcyBydW4gb2YgdGhlIHRlc3Qgc2NyaXB0CiAgICBteSBAQ2xhc3NJRHMgICAgPSBtYXAgeyAwICsgJENvbmZpZ0l0ZW1DbGFzc05hbWUySUR7ICRfLT57Y2xhc3NfbmFtZX0gfSB9ICRSb3dzLT5AKjsKICAgIG15IEBEZWZpbml0aW9ucyA9IG1hcCB7ICRfLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufSB9ICRSb3dzLT5AKjsKCiAgICBteSAkTnVtUm93cyA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiAoCiAgICBjbGFzc19pZCwKICAgIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwKICAgIGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uLAogICAgdmVyc2lvbiwKICAgIGNyZWF0ZV90aW1lLAogICAgY3JlYXRlX2J5CiAgKQogIFZBTFVFUyAoID8sID8sICctLS0ge30nLCAxLCBjdXJyZW50X3RpbWVzdGFtcCwgMSApCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXEBDbGFzc0lEcywgXEBEZWZpbml0aW9ucyBdLAogICAgKTsKICAgIGlzKCAkTnVtUm93cywgc2NhbGFyIEBDbGFzc0lEcywgJ251bWJlciBvZiByb3dzIGluc2VydGVkIGludG8gY29uZmlnaXRlbV9kZWZpbml0aW9uJyApOwoKICAgICMgcmV0cmlldmUgdGhlIGRlZmluaXRpb25zIGFzIGEgc2FuaXR5IGNoZWNrCiAgICBteSAkUGxhY2Vob2xkZXJzICAgICAgICAgPSBqb2luICcsICcsIG1hcCB7Jz8nfSBAQ2xhc3NJRHM7CiAgICBteSBAQmluZHMgICAgICAgICAgICAgICAgPSBtYXAgeyBcJF8gfSBAQ2xhc3NJRHM7CiAgICBteSBAUmV0cmlldmVkRGVmaW5pdGlvbnMgPSAkREJPYmplY3QtPlNlbGVjdENvbEFycmF5KAogICAgICAgIFNRTCA9PiA8PCJFTkRfU1FMIiwKU0VMRUNUIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbgogIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgV0hFUkUgY2xhc3NfaWQgSU4gKCAkUGxhY2Vob2xkZXJzICkKICBPUkRFUiBCWSBjb25maWdpdGVtX2RlZmluaXRpb24KRU5EX1NRTAogICAgICAgIEJpbmQgPT4gXEBCaW5kcywKICAgICk7CiAgICBpcygKICAgICAgICBcQFJldHJpZXZlZERlZmluaXRpb25zLAogICAgICAgIFsgc29ydCBARGVmaW5pdGlvbnMgXSwKICAgICAgICAnaW5zZXJ0IGludG8gY29uZmlnaXRlbV9kZWZpbml0aW9uJwogICAgKTsKfQoKc3ViIEdldENvbmZpZ0l0ZW1EZWZpbml0aW9uUm93cyB7CgogICAgIyBUaGlzIGlzIGJhc2VkIG9uIHRoZSBKU09OIGR1bXAgb2YgY29uZmlnaXRlbV9kZWZpbml0aW9uIGZyb20gREJlYXZlci4KICAgICMgVGhlIGNsYXNzIG5hbWUgd2FzIGFkZGVkIG1hbnVhbGx5LCBiZWNhdXNlIHRoZSBjbGFzc19pZCBjaGFuZ2VzIGZvciBldmVyeSBydW4uCiAgICAjIFJlbWVtYmVyIHRoYXQgSlNPTiBkb2VzIG5vdCBhbGxvdyB0cmFpbGluZyBjb21tYXMuCiAgICBteSAkSlNPTiA9IDw8J0VORF9KU09OJzsKewoiY29uZmlnaXRlbV9kZWZpbml0aW9uIjogWwogICAgewogICAgICAgICJjbGFzc19uYW1lIiA6ICJUZXN0VXBncmFkZV9Db21wdXRlciIsCiAgICAgICAgImNsYXNzX2lkIiA6IG51bGwsCiAgICAgICAgImNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiIgOiAiTFMwdENpMGdTMlY1T2lCV1pXNWtiM0lLSUNCT1lXMWxPaUJXWlc1a2IzSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQlRhWHBsT2lBMU1Bb2dJQ0FnVFdGNFRHVnVaM1JvT2lBMU1Bb2dJQ0FnSXlCRmVHRnRjR3hsSUdadmNpQkRTU0JoZEhSeWFXSjFkR1VnYzNsdWRHRjRJR05vWldOcklHWnZjaUIwWlhoMElHRnVaQ0IwWlhoMFlYSmxZU0JtYVdWc1pITUtJQ0FnSUNOU1pXZEZlRG9nWGtGQ1F5NHFDaUFnSUNBalVtVm5SWGhGY25KdmNrMWxjM05oWjJVNklGWmhiSFZsSUcxMWMzUWdjM1JoY25RZ2QybDBhQ0JCUWtNaENnb3RJRXRsZVRvZ1RXOWtaV3dLSUNCT1lXMWxPaUJOYjJSbGJBb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURVd0Nnb3RJRXRsZVRvZ1JHVnpZM0pwY0hScGIyNEtJQ0JPWVcxbE9pQkVaWE5qY21sd2RHbHZiZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhSQmNtVmhDZ290SUV0bGVUb2dWSGx3WlFvZ0lFNWhiV1U2SUZSNWNHVUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkhaVzVsY21Gc1EyRjBZV3h2WndvZ0lDQWdRMnhoYzNNNklFbFVVMDA2T2tOdmJtWnBaMGwwWlcwNk9rTnZiWEIxZEdWeU9qcFVlWEJsQ2lBZ0lDQlVjbUZ1YzJ4aGRHbHZiam9nTVFvS0xTQkxaWGs2SUVOMWMzUnZiV1Z5U1VRS0lDQk9ZVzFsT2lCRGRYTjBiMjFsY2lCRGIyMXdZVzU1Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nUTNWemRHOXRaWEpEYjIxd1lXNTVDZ290SUV0bGVUb2dUM2R1WlhJS0lDQk9ZVzFsT2lCUGQyNWxjZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlDZ290SUV0bGVUb2dVMlZ5YVdGc1RuVnRZbVZ5Q2lBZ1RtRnRaVG9nVTJWeWFXRnNJRTUxYldKbGNnb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFOXdaWEpoZEdsdVoxTjVjM1JsYlFvZ0lFNWhiV1U2SUU5d1pYSmhkR2x1WnlCVGVYTjBaVzBLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUUtJQ0FnSUZOcGVtVTZJRFV3Q2lBZ0lDQk5ZWGhNWlc1bmRHZzZJREV3TUFvS0xTQkxaWGs2SUVOUVZRb2dJRTVoYldVNklFTlFWUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2lBZ1EyOTFiblJOWVhnNklERTJDZ290SUV0bGVUb2dVbUZ0Q2lBZ1RtRnRaVG9nVW1GdENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQlRhWHBsT2lBMU1Bb2dJQ0FnVFdGNFRHVnVaM1JvT2lBeE1EQUtJQ0JEYjNWdWRFMWhlRG9nTVRBS0NpMGdTMlY1T2lCSVlYSmtSR2x6YXdvZ0lFNWhiV1U2SUVoaGNtUWdSR2x6YXdvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTVRBd0NpQWdRMjkxYm5STllYZzZJREV3Q2lBZ1UzVmlPZ29nSUMwZ1MyVjVPaUJEWVhCaFkybDBlUW9nSUNBZ1RtRnRaVG9nUTJGd1lXTnBkSGtLSUNBZ0lFbHVjSFYwT2dvZ0lDQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQWdJRk5wZW1VNklESXdDaUFnSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEFLQ2kwZ1MyVjVPaUJHVVVST0NpQWdUbUZ0WlRvZ1JsRkVUZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhRS0lDQWdJRk5wZW1VNklEVXdDaUFnSUNCTllYaE1aVzVuZEdnNklERXdNQW9LTFNCTFpYazZJRTVKUXdvZ0lFNWhiV1U2SUU1bGRIZHZjbXNnUVdSaGNIUmxjZ29nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2lBZ0lDQlNaWEYxYVhKbFpEb2dNUW9nSUVOdmRXNTBUV2x1T2lBd0NpQWdRMjkxYm5STllYZzZJREV3Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF4Q2lBZ1UzVmlPZ29nSUMwZ1MyVjVPaUJKVUc5MlpYSkVTRU5RQ2lBZ0lDQk9ZVzFsT2lCSlVDQnZkbVZ5SUVSSVExQUtJQ0FnSUVsdWNIVjBPZ29nSUNBZ0lDQlVlWEJsT2lCSFpXNWxjbUZzUTJGMFlXeHZad29nSUNBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNldXVnpUbThLSUNBZ0lDQWdWSEpoYm5Oc1lYUnBiMjQ2SURFS0lDQWdJQ0FnVW1WeGRXbHlaV1E2SURFS0lDQXRJRXRsZVRvZ1NWQkJaR1J5WlhOekNpQWdJQ0JPWVcxbE9pQkpVQ0JCWkdSeVpYTnpDaUFnSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnSUNCSmJuQjFkRG9LSUNBZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ0lDQlRhWHBsT2lBME1Bb2dJQ0FnSUNCTllYaE1aVzVuZEdnNklEUXdDaUFnSUNBZ0lGSmxjWFZwY21Wa09pQXhDaUFnSUNCRGIzVnVkRTFwYmpvZ01Bb2dJQ0FnUTI5MWJuUk5ZWGc2SURJd0NpQWdJQ0JEYjNWdWRFUmxabUYxYkhRNklEQUtDaTBnUzJWNU9pQkhjbUZ3YUdsalFXUmhjSFJsY2dvZ0lFNWhiV1U2SUVkeVlYQm9hV01nUVdSaGNIUmxjZ29nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2dvdElFdGxlVG9nVDNSb1pYSkZjWFZwY0cxbGJuUUtJQ0JPWVcxbE9pQlBkR2hsY2lCRmNYVnBjRzFsYm5RS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFJCY21WaENpQWdJQ0JTWlhGMWFYSmxaRG9nTVFvZ0lFTnZkVzUwVFdsdU9pQXdDaUFnUTI5MWJuUkVaV1poZFd4ME9pQXdDZ290SUV0bGVUb2dWMkZ5Y21GdWRIbEZlSEJwY21GMGFXOXVSR0YwWlFvZ0lFNWhiV1U2SUZkaGNuSmhiblI1SUVWNGNHbHlZWFJwYjI0Z1JHRjBaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRVJoZEdVS0lDQWdJRmxsWVhKUVpYSnBiMlJRWVhOME9pQXlNQW9nSUNBZ1dXVmhjbEJsY21sdlpFWjFkSFZ5WlRvZ01UQUtDaTBnUzJWNU9pQkpibk4wWVd4c1JHRjBaUW9nSUU1aGJXVTZJRWx1YzNSaGJHd2dSR0YwWlFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUVSaGRHVUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdJQ0JaWldGeVVHVnlhVzlrVUdGemREb2dNakFLSUNBZ0lGbGxZWEpRWlhKcGIyUkdkWFIxY21VNklERXdDaUFnUTI5MWJuUk5hVzQ2SURBS0lDQkRiM1Z1ZEVSbFptRjFiSFE2SURBS0NpMGdTMlY1T2lCT2IzUmxDaUFnVG1GdFpUb2dUbTkwWlFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUkJjbVZoQ2lBZ0lDQlNaWEYxYVhKbFpEb2dNUW9nSUVOdmRXNTBUV2x1T2lBd0NpQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0NnPT0iLAogICAgICAgICJkeW5hbWljZmllbGRfZGVmaW5pdGlvbiIgOiAiTFMwdElIdDlDZz09IiwKICAgICAgICAidmVyc2lvbiIgOiAxLAogICAgICAgICJjcmVhdGVfdGltZSIgOiAiMjAyMy0wNy0xM1QxMDoyNTo1OS4wMDBaIiwKICAgICAgICAiY3JlYXRlX2J5IiA6IDEKICAgIH0sCiAgICB7CiAgICAgICAgImNsYXNzX25hbWUiIDogIlRlc3RVcGdyYWRlX0hhcmR3YXJlIiwKICAgICAgICAiY2xhc3NfaWQiIDogbnVsbCwKICAgICAgICAiY29uZmlnaXRlbV9kZWZpbml0aW9uIiA6ICJMUzB0Q2kwZ1MyVjVPaUJXWlc1a2IzSUtJQ0JPWVcxbE9pQldaVzVrYjNJS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUExTUFvS0xTQkxaWGs2SUUxdlpHVnNDaUFnVG1GdFpUb2dUVzlrWld3S0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUExTUFvS0xTQkxaWGs2SUVSbGMyTnlhWEIwYVc5dUNpQWdUbUZ0WlRvZ1JHVnpZM0pwY0hScGIyNEtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwUVhKbFlRb0tMU0JMWlhrNklGUjVjR1VLSUNCT1lXMWxPaUJVZVhCbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1IyVnVaWEpoYkVOaGRHRnNiMmNLSUNBZ0lFTnNZWE56T2lCSlZGTk5PanBEYjI1bWFXZEpkR1Z0T2pwSVlYSmtkMkZ5WlRvNlZIbHdaUW9nSUNBZ1ZISmhibk5zWVhScGIyNDZJREVLQ2kwZ1MyVjVPaUJEZFhOMGIyMWxja2xFQ2lBZ1RtRnRaVG9nUTNWemRHOXRaWElnUTI5dGNHRnVlUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlRMjl0Y0dGdWVRb0tMU0JMWlhrNklFOTNibVZ5Q2lBZ1RtRnRaVG9nVDNkdVpYSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkRkWE4wYjIxbGNnb0tMU0JMWlhrNklGTmxjbWxoYkU1MWJXSmxjZ29nSUU1aGJXVTZJRk5sY21saGJDQk9kVzFpWlhJS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUF4TURBS0NpMGdTMlY1T2lCWFlYSnlZVzUwZVVWNGNHbHlZWFJwYjI1RVlYUmxDaUFnVG1GdFpUb2dWMkZ5Y21GdWRIa2dSWGh3YVhKaGRHbHZiaUJFWVhSbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1JHRjBaUW9nSUNBZ1dXVmhjbEJsY21sdlpGQmhjM1E2SURJd0NpQWdJQ0JaWldGeVVHVnlhVzlrUm5WMGRYSmxPaUF4TUFvS0xTQkxaWGs2SUVsdWMzUmhiR3hFWVhSbENpQWdUbUZ0WlRvZ1NXNXpkR0ZzYkNCRVlYUmxDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dSR0YwWlFvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lGbGxZWEpRWlhKcGIyUlFZWE4wT2lBeU1Bb2dJQ0FnV1dWaGNsQmxjbWx2WkVaMWRIVnlaVG9nTVRBS0lDQkRiM1Z1ZEUxcGJqb2dNQW9nSUVOdmRXNTBUV0Y0T2lBeENpQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0Nnb3RJRXRsZVRvZ1RtOTBaUW9nSUU1aGJXVTZJRTV2ZEdVS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBRWEpsWVFvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNCRGIzVnVkRTFwYmpvZ01Bb2dJRU52ZFc1MFRXRjRPaUF4Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF3Q2c9PSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfTG9jYXRpb24iLAogICAgICAgICJjbGFzc19pZCIgOiBudWxsLAogICAgICAgICJjb25maWdpdGVtX2RlZmluaXRpb24iIDogIkxTMHRDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlRHOWpZWFJwYjI0Nk9sUjVjR1VLSUNBZ0lGUnlZVzV6YkdGMGFXOXVPaUF4Q2dvdElFdGxlVG9nUTNWemRHOXRaWEpKUkFvZ0lFNWhiV1U2SUVOMWMzUnZiV1Z5SUVOdmJYQmhibmtLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJEZFhOMGIyMWxja052YlhCaGJua0tDaTBnUzJWNU9pQlBkMjVsY2dvZ0lFNWhiV1U2SUU5M2JtVnlDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dRM1Z6ZEc5dFpYSUtDaTBnUzJWNU9pQlFhRzl1WlRFS0lDQk9ZVzFsT2lCUWFHOXVaU0F4Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2dvdElFdGxlVG9nVUdodmJtVXlDaUFnVG1GdFpUb2dVR2h2Ym1VZ01nb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFWmhlQW9nSUU1aGJXVTZJRVpoZUFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUUtJQ0FnSUZOcGVtVTZJRFV3Q2lBZ0lDQk5ZWGhNWlc1bmRHZzZJREV3TUFvS0xTQkxaWGs2SUVVdFRXRnBiQW9nSUU1aGJXVTZJRVV0VFdGcGJBb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFRmtaSEpsYzNNS0lDQk9ZVzFsT2lCQlpHUnlaWE56Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRFRnlaV0VLQ2kwZ1MyVjVPaUJPYjNSbENpQWdUbUZ0WlRvZ1RtOTBaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhSQmNtVmhDaUFnSUNCU1pYRjFhWEpsWkRvZ01Rb2dJRU52ZFc1MFRXbHVPaUF3Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF3Q2c9PSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfTmV0d29yayIsCiAgICAgICAgImNsYXNzX2lkIiA6IG51bGwsCiAgICAgICAgImNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiIgOiAiTFMwdENpMGdTMlY1T2lCRVpYTmpjbWx3ZEdsdmJnb2dJRTVoYldVNklFUmxjMk55YVhCMGFXOXVDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlRtVjBkMjl5YXpvNlZIbHdaUW9nSUNBZ1ZISmhibk5zWVhScGIyNDZJREVLQ2kwZ1MyVjVPaUJEZFhOMGIyMWxja2xFQ2lBZ1RtRnRaVG9nUTNWemRHOXRaWElnUTI5dGNHRnVlUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlRMjl0Y0dGdWVRb0tMU0JMWlhrNklFOTNibVZ5Q2lBZ1RtRnRaVG9nVDNkdVpYSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkRkWE4wYjIxbGNnb0tMU0JMWlhrNklFNWxkSGR2Y210QlpHUnlaWE56Q2lBZ1RtRnRaVG9nVG1WMGQyOXlheUJCWkdSeVpYTnpDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEFvZ0lDQWdVMmw2WlRvZ016QUtJQ0FnSUUxaGVFeGxibWQwYURvZ01qQUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdRMjkxYm5STmFXNDZJREFLSUNCRGIzVnVkRTFoZURvZ01UQXdDaUFnUTI5MWJuUkVaV1poZFd4ME9pQXhDaUFnVTNWaU9nb2dJQzBnUzJWNU9pQlRkV0p1WlhSTllYTnJDaUFnSUNCT1lXMWxPaUJUZFdKdVpYUWdUV0Z6YXdvZ0lDQWdTVzV3ZFhRNkNpQWdJQ0FnSUZSNWNHVTZJRlJsZUhRS0lDQWdJQ0FnVTJsNlpUb2dNekFLSUNBZ0lDQWdUV0Y0VEdWdVozUm9PaUF5TUFvZ0lDQWdJQ0JXWVd4MVpVUmxabUYxYkhRNklESTFOUzR5TlRVdU1qVTFMakFLSUNBZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lFTnZkVzUwVFdsdU9pQXdDaUFnSUNCRGIzVnVkRTFoZURvZ01Rb2dJQ0FnUTI5MWJuUkVaV1poZFd4ME9pQXdDaUFnTFNCTFpYazZJRWRoZEdWM1lYa0tJQ0FnSUU1aGJXVTZJRWRoZEdWM1lYa0tJQ0FnSUVsdWNIVjBPZ29nSUNBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNBZ0lGTnBlbVU2SURNd0NpQWdJQ0FnSUUxaGVFeGxibWQwYURvZ01qQUtJQ0FnSUNBZ1VtVnhkV2x5WldRNklERUtJQ0FnSUVOdmRXNTBUV2x1T2lBd0NpQWdJQ0JEYjNWdWRFMWhlRG9nTVRBS0lDQWdJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bb0tMU0JMWlhrNklFNXZkR1VLSUNCT1lXMWxPaUJPYjNSbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lGUjVjR1U2SUZSbGVIUkJjbVZoQ2lBZ1EyOTFiblJOYVc0NklEQUtJQ0JEYjNWdWRFMWhlRG9nTVFvZ0lFTnZkVzUwUkdWbVlYVnNkRG9nTUFvPSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfU29mdHdhcmUiLAogICAgICAgICJjbGFzc19pZCIgOiBudWxsLAogICAgICAgICJjb25maWdpdGVtX2RlZmluaXRpb24iIDogIkxTMHRDaTBnUzJWNU9pQldaVzVrYjNJS0lDQk9ZVzFsT2lCV1pXNWtiM0lLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJVWlhoMENpQWdJQ0JUYVhwbE9pQTFNQW9nSUNBZ1RXRjRUR1Z1WjNSb09pQTFNQW9LTFNCTFpYazZJRlpsY25OcGIyNEtJQ0JPWVcxbE9pQldaWEp6YVc5dUNpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTlRBS0NpMGdTMlY1T2lCRVpYTmpjbWx3ZEdsdmJnb2dJRTVoYldVNklFUmxjMk55YVhCMGFXOXVDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlUyOW1kSGRoY21VNk9sUjVjR1VLSUNBZ0lGUnlZVzV6YkdGMGFXOXVPaUF4Q2dvdElFdGxlVG9nUTNWemRHOXRaWEpKUkFvZ0lFNWhiV1U2SUVOMWMzUnZiV1Z5SUVOdmJYQmhibmtLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJEZFhOMGIyMWxja052YlhCaGJua0tDaTBnUzJWNU9pQlBkMjVsY2dvZ0lFNWhiV1U2SUU5M2JtVnlDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dRM1Z6ZEc5dFpYSUtDaTBnUzJWNU9pQlRaWEpwWVd4T2RXMWlaWElLSUNCT1lXMWxPaUJUWlhKcFlXd2dUblZ0WW1WeUNpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTlRBS0NpMGdTMlY1T2lCTWFXTmxibU5sVkhsd1pRb2dJRTVoYldVNklFeHBZMlZ1WTJVZ1ZIbHdaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRWRsYm1WeVlXeERZWFJoYkc5bkNpQWdJQ0JEYkdGemN6b2dTVlJUVFRvNlEyOXVabWxuU1hSbGJUbzZVMjltZEhkaGNtVTZPa3hwWTJWdVkyVlVlWEJsQ2lBZ0lDQlVjbUZ1YzJ4aGRHbHZiam9nTVFvS0xTQkxaWGs2SUV4cFkyVnVZMlZMWlhrS0lDQk9ZVzFsT2lCTWFXTmxibU5sSUV0bGVRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURVd0NpQWdJQ0JTWlhGMWFYSmxaRG9nTVFvZ0lFTnZkVzUwVFdsdU9pQXdDaUFnUTI5MWJuUk5ZWGc2SURFd01Bb2dJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bb2dJRk4xWWpvS0lDQXRJRXRsZVRvZ1VYVmhiblJwZEhrS0lDQWdJRTVoYldVNklGRjFZVzUwYVhSNUNpQWdJQ0JKYm5CMWREb0tJQ0FnSUNBZ1ZIbHdaVG9nU1c1MFpXZGxjZ29nSUNBZ0lDQldZV3gxWlUxcGJqb2dNUW9nSUNBZ0lDQldZV3gxWlUxaGVEb2dNVEF3TUFvZ0lDQWdJQ0JXWVd4MVpVUmxabUYxYkhRNklERUtJQ0FnSUNBZ1VtVnhkV2x5WldRNklERUtJQ0FnSUVOdmRXNTBUV2x1T2lBd0NpQWdJQ0JEYjNWdWRFMWhlRG9nTVFvZ0lDQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0NpQWdMU0JMWlhrNklFVjRjR2x5WVhScGIyNUVZWFJsQ2lBZ0lDQk9ZVzFsT2lCRmVIQnBjbUYwYVc5dUlFUmhkR1VLSUNBZ0lFbHVjSFYwT2dvZ0lDQWdJQ0JVZVhCbE9pQkVZWFJsQ2lBZ0lDQWdJRkpsY1hWcGNtVmtPaUF4Q2lBZ0lDQWdJRmxsWVhKUVpYSnBiMlJRWVhOME9pQXlNQW9nSUNBZ0lDQlpaV0Z5VUdWeWFXOWtSblYwZFhKbE9pQXhNQW9nSUNBZ1EyOTFiblJOYVc0NklEQUtJQ0FnSUVOdmRXNTBUV0Y0T2lBeENpQWdJQ0JEYjNWdWRFUmxabUYxYkhRNklEQUtDaTBnUzJWNU9pQk5aV1JwWVFvZ0lFNWhiV1U2SUUxbFpHbGhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJVWlhoMENpQWdJQ0JUYVhwbE9pQTBNQW9nSUNBZ1RXRjRUR1Z1WjNSb09pQXlNQW9LTFNCTFpYazZJRTV2ZEdVS0lDQk9ZVzFsT2lCT2IzUmxDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdRMjkxYm5STmFXNDZJREFLSUNCRGIzVnVkRTFoZURvZ01Rb2dJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bbz0iLAogICAgICAgICJkeW5hbWljZmllbGRfZGVmaW5pdGlvbiIgOiAiTFMwdElIdDlDZz09IiwKICAgICAgICAidmVyc2lvbiIgOiAxLAogICAgICAgICJjcmVhdGVfdGltZSIgOiAiMjAyMy0wNy0xM1QxMDoyNTo1OS4wMDBaIiwKICAgICAgICAiY3JlYXRlX2J5IiA6IDEKICAgIH0KXX0KRU5EX0pTT04KCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAkVGhhd2VkICAgICA9ICRKU09OT2JqZWN0LT5EZWNvZGUoIERhdGEgPT4gJEpTT04gKTsKCiAgICAjIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBhbmQgZHluYW1pY2ZpZWxkX2RlZmluaXRpb24gYXJlIHN0b3JlZCBhcyBMT05HQkxPQgogICAgIyBpbiB0aGUgZGF0YWJhc2UuIER1bXBpbmcgdGhlIGJpbmFyeSBjb250ZW50IGJyZWFrcyB0aGUgSlNPTiBleHBvcnQsCiAgICAjIHRoZXJlZm9yZSB0aGVzZSBjb2x1bXMgYXJlIHNlcmlhbGl6ZWQgYXMgYmFzZTY0LgogICAgZm9yIG15ICRSb3cgKCAkVGhhd2VkLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufS0+QCogKSB7CiAgICAgICAgJFJvdy0+e2NvbmZpZ2l0ZW1fZGVmaW5pdGlvbn0gICA9IGRlY29kZV9iYXNlNjQoICRSb3ctPntjb25maWdpdGVtX2RlZmluaXRpb259ICk7CiAgICAgICAgJFJvdy0+e2R5bmFtaWNmaWVsZF9kZWZpbml0aW9ufSA9IGRlY29kZV9iYXNlNjQoICRSb3ctPntkeW5hbWljZmllbGRfZGVmaW5pdGlvbn0gKTsKICAgIH0KCiAgICAjIHJldHVybiB0aGUgYXJyYXlyZWYKICAgIHJldHVybiAkVGhhd2VkLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ImportExport/Export.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgUGF0aDo6Q2xhc3MgcXcoZGlyIGZpbGUpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbW1hbmRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbXBvcnRFeHBvcnQ6OkV4cG9ydCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKb2soICRSYW5kb21JRCwgJ2dvdCBhIHJhbmRvbSBJRCcgKTsKZGlhZygiUmFuZG9tSUQ6ICRSYW5kb21JRCIpOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCAtLXRlbXBsYXRlLW51bWJlciBvcHRpb24KbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGU7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gLS10ZW1wbGF0ZS1udW1iZXIgIC0gZXhpdCBjb2RlIiwKKTsKCiMgY3JlYXRlIGRlZmF1bHQgY29uZmlnIGl0ZW0gY2xhc3NlcwokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyktPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyLAopOwoKIyBnZXQgJ0hhcmR3YXJlJyBjYXRhbG9nIGNsYXNzIElECm15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAopOwpyZWZfb2soICRDb25maWdJdGVtRGF0YVJlZiwgJ0hBU0gnLCAnQ29uZmlnSXRlbURhdGFSZWYnICk7Cm15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07Cm9rKCAkSGFyZHdhcmVDb25maWdJdGVtSUQsICdnb3QgYW4gSUQgZm9yIGNvbmZpZyBpdGVtIGNsYXNzIEhhcmR3YXJlJyApOwoKIyBnZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzCm15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwpyZWZfb2soICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiwgJ0hBU0gnICk7Cm15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwpvayggJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwgJ2dvdCBhbiBJRCBmb3IgZGVwbG95bWVudCBzdGF0ZSBQcm9kdWN0aW9uJyApOwoKIyBhZGQgdGVzdCBjb25maWcgaXRlbXMKbXkgQENvbmZpZ0l0ZW1JRHM7CnN1YnRlc3QgJ2NyZWF0ZSBzYW1wbGUgY29uZmlnIGl0ZW1zJyA9PiBzdWIgewogICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMTAgKSB7CgogICAgICAgICMgY3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICApOwogICAgICAgIGRpYWcoIkNvbmZpZ0l0ZW1OdW1iZXI6ICckQ29uZmlnSXRlbU51bWJlciciKTsKICAgICAgICBvayggJENvbmZpZ0l0ZW1OdW1iZXIsICdnb3QgYSBjb25maWcgaXRlbSBudW1iZXInICk7CgogICAgICAgICMgYWRkIHNhbXBsZSBDb25maWdJdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICA9PiBqb2luKCAnXycsICdUZXN0Q29uZmlnSXRlbfCfjJ4nLCAkUmFuZG9tSUQsICRDb3VudCApLAogICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWcgaXRlbSBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1JRCIgKTsKCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgIH0KfTsKCiMgZ2V0IEltcG9ydEV4cG9ydCBvYmplY3QKbXkgJEltcG9ydEV4cG9ydE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKTsKCiMgYWRkIHRlc3QgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdUZW1wbGF0ZScgLiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBDb21tZW50ID0+ICdDb21tZW50JywKICAgIFVzZXJJRCAgPT4gMSwKKTsKb2soICRUZW1wbGF0ZUlELCAiSW1wb3J0L0V4cG9ydCB0ZW1wbGF0ZSBpcyBjcmVhdGVkIiApOwpkaWFnKCJUZW1wbGF0ZUlEOiAkVGVtcGxhdGVJRCIpOwoKIyBnZXQgb2JqZWN0IGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUKbXkgJVRlbXBsYXRlUmVmID0gKAogICAgJ0NsYXNzSUQnICA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAnQ291bnRNYXgnID0+IDEwLAopOwpteSAkT2JqZWN0RGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgT2JqZWN0RGF0YSA9PiBcJVRlbXBsYXRlUmVmLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKb2soICRPYmplY3REYXRhU2F2ZVN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIGFkZGVkIiApOwoKIyBhZGQgdGhlIGZvcm1hdCBkYXRhIG9mIHRoZSB0ZXN0IHRlbXBsYXRlCm15ICVGb3JtYXREYXRhID0gKAogICAgQ2hhcnNldCAgICAgICAgICAgICAgPT4gJ1VURi04JywKICAgIENvbHVtblNlcGFyYXRvciAgICAgID0+ICdDb21tYScsCiAgICBJbmNsdWRlQ29sdW1uSGVhZGVycyA9PiAxLAopOwpteSAkRm9ybWF0RGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+Rm9ybWF0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgRm9ybWF0RGF0YSA9PiBcJUZvcm1hdERhdGEsCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkRm9ybWF0RGF0YVNhdmVTdWNjZXNzLCAiZm9ybWF0IGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIHNhdmUgdGhlIHNlYXJjaCBkYXRhIG9mIGEgdGVtcGxhdGUKbXkgJVNlYXJjaERhdGEgPSAoCiAgICBOYW1lID0+ICdUZXN0Q29uZmlnSXRlbSonLAopOwpteSAkU2VhcmNoRGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+U2VhcmNoRGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgU2VhcmNoRGF0YSA9PiBcJVNlYXJjaERhdGEsCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkU2VhcmNoRGF0YVNhdmVTdWNjZXNzLCAic2VhcmNoIGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIGFkZCBtYXBwaW5nIGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUKZm9yIG15ICRPYmplY3REYXRhVmFsdWUgKHF3KCBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUgKSkgewoKICAgIG15ICRNYXBwaW5nSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nQWRkKAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhU2F2ZSgKICAgICAgICBNYXBwaW5nSUQgICAgICAgICA9PiAkTWFwcGluZ0lELAogICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IHsgS2V5ID0+ICRPYmplY3REYXRhVmFsdWUgfSwKICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIG1hcHBlZCAtICRPYmplY3REYXRhVmFsdWUiICk7Cn0KCiMgbWFrZSBkaXJlY3RvcnkgZm9yIGV4cG9ydCBmaWxlCm15ICRIb21lICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKbXkgJFRlbXBEaXIgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGVtcERpcicpOwpteSAkRGVzdGluYXRpb25QYXRoID0gam9pbiAnLycsICRUZW1wRGlyLCAnSW1wb3J0RXhwb3J0JzsKbXkgJEV4cG9ydEZpbGVuYW1lICA9ICIkRGVzdGluYXRpb25QYXRoL1RlbXBsYXRlRXhwb3J0XyRSYW5kb21JRC5jc3YiOwpvayggIS1mICRFeHBvcnRGaWxlbmFtZSwgJ25vIGxlZnRvdmVyIGV4cG9ydCBmaWxlJyApOwpkaXIoJERlc3RpbmF0aW9uUGF0aCktPm1rcGF0aDsKb2soIC1kICREZXN0aW5hdGlvblBhdGgsICdleHBvcnQgZGlyIHdhcyBjcmVhdGVkJyApOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aCB3cm9uZyB0ZW1wbGF0ZSBudW1iZXIKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoCiAgICAnLS10ZW1wbGF0ZS1udW1iZXInLCAkSGVscGVyLT5HZXRSYW5kb21OdW1iZXIsCiAgICAkRXhwb3J0RmlsZW5hbWUKKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJDb21tYW5kIHdpdGggd3JvbmcgdGVtcGxhdGUgbnVtYmVyIC0gZXhpdCBjb2RlIiwKKTsKb2soICEtZSAkRXhwb3J0RmlsZW5hbWUsICdubyBleHBvcnQgZmlsZSB3YXMgZ2VuZXJhdGVkJyApOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCBkZXN0aW5hdGlvbiBhcmd1bWVudAokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJFRlbXBsYXRlSUQgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJObyBkZXN0aW5hdGlvbiBhcmd1bWVudCAtIGV4aXQgY29kZSIsCik7Cm9rKCAhLWUgJEV4cG9ydEZpbGVuYW1lLCAnbm8gZXhwb3J0IGZpbGUgd2FzIGdlbmVyYXRlZCcgKTsKCiMgdGVzdCBjb21tYW5kIHdpdGggLS10ZW1wbGF0ZS1udW1iZXIgb3B0aW9uIGFuZCBkZXN0aW5hdGlvbiBhcmd1bWVudAokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJFRlbXBsYXRlSUQsICRFeHBvcnRGaWxlbmFtZSApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAtIC0tdGVtcGxhdGUtbnVtYmVyIG9wdGlvbiBhbmQgZGVzdGluYXRpb24gYXJndW1lbnQiLAopOwpvayggLWUgJEV4cG9ydEZpbGVuYW1lLCAnZXhwb3J0IGZpbGUgd2FzIGZpbmFsbHkgZ2VuZXJhdGVkJyApOwoKIyBDb250ZW50IG9mIHRoZSBleHBvcnRlZCBmaWxlLCB3aXRoIGNvbnNpZGVyaW5nIHRoZSByYW5kb20gaWQgaW4gdGhlIGNvbmZpZyBpdGVtIG5hbWUKewogICAgbXkgJEV4cGVjdGVkUmVzdWx0RmlsZSA9IGRpcigkSG9tZSktPmZpbGUoJ3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlRXhwb3J0LmNzdicpOwogICAgbXkgQEV4cGVjdGVkTGluZXMgICAgICA9IG1hcCB7cy88PFJBTkRPTV9JRD4+LyRSYW5kb21JRC9yfSAkRXhwZWN0ZWRSZXN1bHRGaWxlLT5zbHVycDsKICAgIGlzKCBzY2FsYXIgQEV4cGVjdGVkTGluZXMsIDExLCAnZ290IHNvbWUgZXhwZWN0ZWQgY29udGVudCcgKTsKICAgIGlzKAogICAgICAgIFsgZmlsZSgkRXhwb3J0RmlsZW5hbWUpLT5zbHVycCBdLAogICAgICAgIFxARXhwZWN0ZWRMaW5lcywKICAgICAgICAiQ29udGVudCBvZiAkRXhwb3J0RmlsZW5hbWUiCiAgICApOwp9CgojIHJlbW92ZSB0ZXN0IGRlc3RpbmF0aW9uIHBhdGgKZGlhZygiZGVsZXRpbmcgJERlc3RpbmF0aW9uUGF0aCIpOwpkaXIoJERlc3RpbmF0aW9uUGF0aCktPnJtdHJlZTsKb2soICEtZCAkRGVzdGluYXRpb25QYXRoLCAndGVzdCBkaXJlY3RvcnkgZGVsZXRlZCcgKTsKCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ImportExport/Import.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbW1hbmRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbXBvcnRFeHBvcnQ6OkltcG9ydCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJEltcG9ydEV4cG9ydE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCAtLXRlbXBsYXRlLW51bWJlciBvcHRpb24KbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGU7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gLS10ZW1wbGF0ZS1udW1iZXIgIC0gZXhpdCBjb2RlIiwKKTsKCiMgYWRkIHRlc3QgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdUZW1wbGF0ZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpLAogICAgVmFsaWRJRCA9PiAxLAogICAgQ29tbWVudCA9PiAnQ29tbWVudCcsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAkVGVtcGxhdGVJRCwgIkltcG9ydC9FeHBvcnQgdGVtcGxhdGUgaXMgY3JlYXRlZCAtICRUZW1wbGF0ZUlEIiApOwoKIyBjcmVhdGUgZGVmYXVsdCBjb25maWcgaXRlbSBjbGFzc2VzCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKS0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIsCik7CgojIGdldCAnSGFyZHdhcmUnIGNhdGFsb2cgY2xhc3MgSUQKbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdIYXJkd2FyZScsCik7Cm15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgojIGdldCBvYmplY3QgZGF0YSBmb3IgdGVzdCB0ZW1wbGF0ZQpteSAlVGVtcGxhdGVSZWYgPSAoCiAgICAnQ2xhc3NJRCcgID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICdDb3VudE1heCcgPT4gMTAsCik7Cm15ICRTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgT2JqZWN0RGF0YSA9PiBcJVRlbXBsYXRlUmVmLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKb2soICRTdWNjZXNzLCAiT2JqZWN0RGF0YSBmb3IgdGVzdCB0ZW1wbGF0ZSBpcyBhZGRlZCIgKTsKCiMgYWRkIHRoZSBmb3JtYXQgZGF0YSBvZiB0aGUgdGVzdCB0ZW1wbGF0ZQpteSAlRm9ybWF0RGF0YSA9ICgKICAgIENoYXJzZXQgICAgICAgICAgICAgID0+ICdVVEYtOCcsCiAgICBDb2x1bW5TZXBhcmF0b3IgICAgICA9PiAnQ29tbWEnLAogICAgSW5jbHVkZUNvbHVtbkhlYWRlcnMgPT4gMSwKKTsKJFN1Y2Nlc3MgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5Gb3JtYXREYXRhU2F2ZSgKICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICBGb3JtYXREYXRhID0+IFwlRm9ybWF0RGF0YSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCm9rKCAkU3VjY2VzcywgIkZvcm1hdERhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIHNhdmUgdGhlIHNlYXJjaCBkYXRhIG9mIGEgdGVtcGxhdGUKbXkgJVNlYXJjaERhdGEgPSAoCiAgICBOYW1lID0+ICdUZXN0Q29uZmlnSXRlbSonLAopOwokU3VjY2VzcyA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFTYXZlKAogICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRCwKICAgIFNlYXJjaERhdGEgPT4gXCVTZWFyY2hEYXRhLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKIyBhZGQgbWFwcGluZyBkYXRhIGZvciB0ZXN0IHRlbXBsYXRlCmZvciBteSAkT2JqZWN0RGF0YVZhbHVlIChxdyggTmFtZSBEZXBsU3RhdGUgSW5jaVN0YXRlICkpIHsKCiAgICBteSAkTWFwcGluZ0lEID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ0FkZCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgbXkgJU1hcHBpbmdPYmplY3REYXRhID0gKCBLZXkgPT4gJE9iamVjdERhdGFWYWx1ZSApOwogICAgbXkgJFN1Y2Nlc3MgICAgICAgICAgID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFTYXZlKAogICAgICAgIE1hcHBpbmdJRCAgICAgICAgID0+ICRNYXBwaW5nSUQsCiAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gXCVNYXBwaW5nT2JqZWN0RGF0YSwKICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIG1hcHBlZCAtICRPYmplY3REYXRhVmFsdWUiICk7Cn0KCiMgbWFrZSBkaXJlY3RvcnkgZm9yIGV4cG9ydCBmaWxlCm15ICRTb3VyY2VQYXRoID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJykgLiAiL3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlRXhwb3J0LmNzdiI7CgojIHRlc3QgY29tbWFuZCB3aXRoIHdyb25nIHRlbXBsYXRlIG51bWJlcgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJEhlbHBlci0+R2V0UmFuZG9tSUQoKSwgJFNvdXJjZVBhdGggLiAnVGVtcGxhdGVFeHBvcnQuY3N2JyApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkNvbW1hbmQgd2l0aCB3cm9uZyB0ZW1wbGF0ZSBudW1iZXIgLSBleGl0IGNvZGUiLAopOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCBTb3VyY2UgYXJndW1lbnQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXRlbXBsYXRlLW51bWJlcicsICRUZW1wbGF0ZUlEICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gU291cmNlIGFyZ3VtZW50IC0gZXhpdCBjb2RlIiwKKTsKCiMgdGVzdCBjb21tYW5kIHdpdGggLS10ZW1wbGF0ZS1udW1iZXIgb3B0aW9uIGFuZCBTb3VyY2UgYXJndW1lbnQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXRlbXBsYXRlLW51bWJlcicsICRUZW1wbGF0ZUlELCAkU291cmNlUGF0aCApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAtIC0tdGVtcGxhdGUtbnVtYmVyIG9wdGlvbiBhbmQgU291cmNlIGFyZ3VtZW50IiwKKTsKCiMgZ2V0IG51bWJlciBvZiBjb25maWcgaXRlbSBJRHMKbXkgJE51bUNvbmZpZ0l0ZW1zSW1wb3J0ZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgIE5hbWUgICA9PiAnVGVzdENvbmZpZ0l0ZW0qJywKICAgIFJlc3VsdCA9PiAnQ09VTlQnLAopOwoKIyBjaGVjayBpZiB0aGUgY29uZmlnIGl0ZW1zIGFyZSBpbXBvcnRlZAojIDEwIGl0ZW1zIHNob3VsZCBiZSBleHBvcnRlZCwgYXMgdGhhdCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBzYW1wbGUgZmlsZQppcygKICAgICROdW1Db25maWdJdGVtc0ltcG9ydGVkLAogICAgMTAsCiAgICAiVGhlcmUgYXJlIHRlbiBpbXBvcnRlZCBjb25maWcgaXRlbXMiCik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/IncidentState/Recalculate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKCm91ciAkU2VsZjsKCm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbmNpZGVudFN0YXRlOjpSZWNhbGN1bGF0ZScpOwoKbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiQWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlIGV4aXQgY29kZSIsCik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemCreate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXI7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMgU2tpcCBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBTa2lwU1NMVmVyaWZ5ID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgojIENoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQuCmlzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0LgpteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CmlzKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgIHJlZiAkV2Vic2VydmljZU9iamVjdCwKICAgICJDcmVhdGUgd2Vic2VydmljZSBvYmplY3QiLAopOwoKIyBTZXQgd2Vic2VydmljZSBuYW1lLgpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAkV2Vic2VydmljZUlELCAiYWRkZWQgd2ViIHNlcnZpY2UiICk7CgojIEdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMuCm15ICRIb3N0ID0gJEhlbHBlci0+R2V0VGVzdEhUVFBIb3N0bmFtZTsKCiMgcHJlcGFyZSB3ZWJzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewogICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAnVGVzdCBmb3IgQ29uZmlnSXRlbSBDb25uZWN0b3IgdXNpbmcgU09BUCB0cmFuc3BvcnQgYmFja2VuZC4nLAogICAgRGVidWdnZXIgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBQcm92aWRlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiAxMF8wMDBfMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnU2Vzc2lvbjo6U2Vzc2lvbkNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBSZXF1ZXN0ZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuY29kaW5nICA9PiAnVVRGLTgnLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBJbnZva2VyID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgVXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZy4KbXkgJFdlYnNlcnZpY2VVcGRhdGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgIElEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIE5hbWUgICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnICA9PiAkV2Vic2VydmljZUNvbmZpZywKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKb2soICRXZWJzZXJ2aWNlVXBkYXRlLCAidXBkYXRlZCB3ZWIgc2VydmljZSAkV2Vic2VydmljZUlEIC0gJFdlYnNlcnZpY2VOYW1lIiApOwoKIyBEZWJ1Z2dlciBvYmplY3QuCm15ICREZWJ1Z2dlck9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXItPm5ldygKICAgIERlYnVnZ2VyQ29uZmlnID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgV2Vic2VydmljZUlEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIENvbW11bmljYXRpb25UeXBlID0+ICdQcm92aWRlcicsCik7CmlzYV9vaygKICAgICREZWJ1Z2dlck9iamVjdCwKICAgIFsnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlciddLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlZCBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklELgojIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0LgpteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CmlzYV9vaygKICAgICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgWydLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlciddLAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgQ3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdC4KbXkgJFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKTsKbXkgJFBhc3N3b3JkID0gJFVzZXJMb2dpbjsKCiMgU3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UuCm15ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0ID0gJFJlcXVlc3RlclNlc3Npb25PYmplY3QtPlJ1bigKICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgSW52b2tlciAgICAgID0+ICdTZXNzaW9uQ3JlYXRlJywKICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgIH0sCik7CnJlZl9vayggJFJlcXVlc3RlclNlc3Npb25SZXN1bHQsICdIQVNIJywgJ2dvdCByZXN1bHQgZnJvbSBTZXNzaW9uSUQnICk7CgpteSAkTmV3U2Vzc2lvbklEID0gJFJlcXVlc3RlclNlc3Npb25SZXN1bHQtPntEYXRhfS0+e1Nlc3Npb25JRH07Cmxpa2UoICROZXdTZXNzaW9uSUQsIHFyL1xBW1s6YWxudW06XV17MzJ9XHovLCAnc2FuZSBzZXNzaW9uIElEJyApOwoKIyBBY3R1YWwgdGVzdHMuCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnRW1wdHkgUmVxdWVzdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHt9LAogICAgICAgIEV4cGVjdGVkRGF0YSAgID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbSBwYXJhbWV0ZXIgaXMgbWlzc2luZyBvciBub3QgdmFsaWQhJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0nLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gMSwgICAgIyBzaG91bGQgYmUgYSBoYXNocmVmCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtIHBhcmFtZXRlciBpcyBtaXNzaW5nIG9yIG5vdCB2YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgVG9kbyAgICAgICAgICAgPT4gJ21hbmRhdG9yeSBjaGVja3MgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQnLAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENJWE1MRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdCcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5EeW5hbWljRmllbGQtPk5JQy0+SVBvdmVyREhDUCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ0lYTUxEYXRhJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhIGlzIG1pc3Npbmcgb3IgaW52YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQ2xhc3MnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q2xhc3MgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5OYW1lIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBEZXBsU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5EZXBsU3RhdGUgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIEluY2lTdGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5JbmNpU3RhdGUgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNsYXNzIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgRGVwbFN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+RGVwbFN0YXRlIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+SW5jaVN0YXRlIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOSUMtPk5JQycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPk5JQyBwYXJhbWV0ZXIgdmFsdWUgaXMgcmVxdWlyZWQgYW5kIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+SXBPdmVyREhDUCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTklDID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5OSUMtPklQb3ZlckRIQ1AgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+TklDIGluIGFycmF5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5OSUMgcGFyYW1ldGVyIHZhbHVlIGlzIHJlcXVpcmVkIGFuZCBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5JcE92ZXJESENQIGluIGFycmF5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDWzFdLT5JUG92ZXJESENQIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE5JQy0+SXBPdmVyREhDUCBHZW5lcmFsIENhdGFsb2cgaW4gSGFzaCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDLT5JUG92ZXJESENQIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nIFwnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm9cJyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBOSUMtPklwT3ZlckRIQ1AgR2VuZXJhbCBDYXRhbG9nIGluIEFycmF5IEhhc2gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDWzFdLT5JUG92ZXJESENQIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nIFwnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm9cJyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBWZW5kb3IgTG9uZyBUZXh0ICcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdhJyB4IDUxLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPlZlbmRvciBwYXJhbWV0ZXIgdmFsdWUgZXhjZWRlcyB0aGUgbWF4aXVtIGxlbmd0aCEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlIERhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTkzMC0zMC0zMCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5XYXJyYW50eUV4cGlyYXRpb25EYXRlIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBEYXRlIGZvcm1hdCEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBPd25lciBDdXN0b21lcicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5Pd25lciBwYXJhbWV0ZXIgdmFsdWUgaXMgbm90IGEgdmFsaWQgY3VzdG9tZXIhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgUmFtIFRvbyBNYW55JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgICAgICAgICAgNSwKICAgICAgICAgICAgICAgICAgICAgICAgNiwKICAgICAgICAgICAgICAgICAgICAgICAgNywKICAgICAgICAgICAgICAgICAgICAgICAgOCwKICAgICAgICAgICAgICAgICAgICAgICAgOSwKICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIDExLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5SYW0gcGFyYW1ldGVyIHJlcGV0aXRpb25zIGlzIGhpZ2hlciB0aGFuIHRoZSBtYXhpdW0gdmFsdWUhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQXR0YWNobWVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5BdHRhY2htZW50IHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+Q29udGVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IEF0dGFjaG1lbnQtPkNvbnRlbnQgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBBdHRhY2htZW50LT5Db250ZW50VHlwZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+RmlsZW5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBBdHRhY2htZW50LT5GaWxlbmFtZSBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW0nLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3QnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgICAgICAgICAgTW9kZWwgICAgICAgICAgID0+ICdUaGlua3BhZCcsCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgID0+ICdUaGlua3BhZCBYMzAwJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFNlcmlhbE51bWJlciAgICA9PiAnYWJjMTIzNDVhYmMnLAogICAgICAgICAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgICAgICAgICAgQ1BVICAgICAgICAgICAgID0+ICdJbnRlbCBDb3JlIGkzJywKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAnNDAwMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICcyMDAwJywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIEhhcmREaXNrID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgICAgICAgICBDYXBhY2l0eSA9PiAnNTAwMDAnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgRlFETiA9PiAnaG90cy5leGFtcGxlLmNvbScsCiAgICAgICAgICAgICAgICAgICAgTklDICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzIwMC4zNC41Ni43OCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBHcmFwaGljQWRhcHRlciAgICAgICAgID0+ICdBVEkgUmFkZW9uIDMwMCcsCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgICAgICAgICA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgTm90ZSAgICAgICAgICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1pc28tODg1OS0xJywKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQyLnR4dCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtIHdpdGhvdXQgWFNMRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0xvY2F0aW9uJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdCcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKKTsKCiMgU3RhcnQgdGVzdGluZy4KZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIHN1YnRlc3QgJFRlc3QtPntOYW1lfSA9PiBzdWIgewoKICAgICAgICBteSAkVG9kbyA9IGRlZmluZWQgJFRlc3QtPntUb2RvfSA/IHRvZG8oICRUZXN0LT57VG9kb30gKSA6IHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoVmFyaWFibGVzOjpQcm9oaWJpdFVudXNlZFZhcnNTdHJpY3RlcikKCiAgICAgICAgIyBDcmVhdGUgbG9jYWwgb2JqZWN0LgogICAgICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgKTsKICAgICAgICBpc2Ffb2soCiAgICAgICAgICAgICRMb2NhbE9iamVjdCwKICAgICAgICAgICAgWyJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Il0sCiAgICAgICAgICAgICJDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICAgICApOwoKICAgICAgICAjIE1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24uCiAgICAgICAgbXkgJENsb25lZFJlcXVlc3REYXRhID0gU3RvcmFibGU6OmRjbG9uZSggJFRlc3QtPntSZXF1ZXN0RGF0YX0gKTsKCiAgICAgICAgIyBTdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZSBsb2NhbGx5CiAgICAgICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgICAgICBQYXNzd29yZCAgPT4gJFBhc3N3b3JkLAogICAgICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIFJlc3RvcmUgY2xvbmVkIGRhdGEuCiAgICAgICAgJFRlc3QtPntSZXF1ZXN0RGF0YX0gPSAkQ2xvbmVkUmVxdWVzdERhdGE7CgogICAgICAgICMgQ2hlY2sgcmVzdWx0LgogICAgICAgIHJlZl9vaygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAnSEFTSCcsCiAgICAgICAgICAgICJMb2NhbCByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0LgogICAgICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgICAgIGlzYV9vaygKICAgICAgICAgICAgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAgICAgWydLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlciddLAogICAgICAgICAgICAiQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAogICAgICAgICk7CgogICAgICAgICMgU3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UuCiAgICAgICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgICAgICV7ICRUZXN0LT57UmVxdWVzdERhdGF9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayByZXN1bHQuCiAgICAgICAgcmVmX29rKAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAnSEFTSCcsCiAgICAgICAgICAgICJSZXF1ZXN0ZXIgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICAgICAgKTsKCiAgICAgICAgaXMoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAgICAgJFRlc3QtPntTdWNjZXNzUmVxdWVzdH0sCiAgICAgICAgICAgICJSZXF1ZXN0ZXIgc3VjY2Vzc2Z1bCByZXN1bHQiLAogICAgICAgICk7CgogICAgICAgICMgVGVzdHMgc3VwcG9zZWQgdG8gc3VjY2VlZC4KICAgICAgICBpZiAoICRUZXN0LT57U3VjY2Vzc0NyZWF0ZX0gKSB7CgogICAgICAgICAgICAjIExvY2FsIHJlc3VsdHMuCiAgICAgICAgICAgIG9rKCAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sICJMb2NhbCByZXN1bHQgZ290IENvbmZpZ0l0ZW1JRCIgKTsKICAgICAgICAgICAgb2soICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSwgICAgICAgIkxvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBUcnVlLiIgKTsKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUmVxdWVzdGVyIHJlc3VsdHMuCiAgICAgICAgICAgIG9rKCAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LCAiUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBUcnVlLiIgKTsKICAgICAgICAgICAgb2soICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e051bWJlcn0sICAgICAgICJSZXF1ZXN0ZXIgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIlJlcXVlc3RlciByZXN1bHQgRXJyb3IgaXMgdW5kZWZpbmVkLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEdldCB0aGUgQ29uZmlnSXRlbSBlbnRyeSAoZnJvbSBsb2NhbCByZXN1bHQpLgogICAgICAgICAgICBteSAkTG9jYWxWZXJzaW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgkTG9jYWxWZXJzaW9uRGF0YSksCiAgICAgICAgICAgICAgICAiY3JlYXRlZCBsb2NhbCB2ZXJzaW9uIHN0cmN0dXJlIHdpdGggVHJ1ZS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgdGhlIGNvbmZpZyBpdGVtIGVudHJ5IChmcm9tIHJlcXVlc3RlciByZXN1bHQpLgogICAgICAgICAgICBteSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKCRSZXF1ZXN0ZXJWZXJzaW9uRGF0YSksCiAgICAgICAgICAgICAgICAiY3JlYXRlZCByZXF1ZXN0ZXIgY29uZmlnIGl0ZW0gc3RyY3R1cmUgd2l0aCBUcnVlLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgdGVzdC4KICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KE51bWJlciBDbGFzcyBOYW1lIEluY2lTdGF0ZSBEZXBsU3RhdGUgRGVwbFN0YXRlVHlwZSkpIHsKICAgICAgICAgICAgICAgIGlmICggJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgICAgICAkTG9jYWxWZXJzaW9uRGF0YS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbCBDb25maWdJdGVtLT4kQXR0cmlidXRlIiAuICIgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57Q0lYTUxEYXRhfSApIHsKCiAgICAgICAgICAgICAgICAjIFRyYW5zZm9ybSBYTUwgZGF0YSB0byBhIGNvbXBhcmFibGUgZm9ybWF0LgogICAgICAgICAgICAgICAgbXkgJERlZmluaXRpb24gPSAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERlZmluaXRpb259OwoKICAgICAgICAgICAgICAgICMgTWFrZSBhIGRlZXAgY29weSB0byBhdm9pZCBjaGFuZ2luZyB0aGUgcmVzdWx0LgogICAgICAgICAgICAgICAgbXkgJENsb25lZFhNTERhdGEgPSBTdG9yYWJsZTo6ZGNsb25lKCAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERhdGF9ICk7CgogICAgICAgICAgICAgICAgbXkgJEZvcm1hdGVkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+SW52ZXJ0Rm9ybWF0WE1MRGF0YSgKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhID0+ICRDbG9uZWRYTUxEYXRhLT5bMV0tPntWZXJzaW9ufSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+SW52ZXJ0UmVwbGFjZVhNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICA9PiAkRm9ybWF0ZWRYTUxEYXRhLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgQ29tcGFyZSBYTUwgZGF0YS4KICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgICRSZXBsYWNlZFhNTERhdGEsCiAgICAgICAgICAgICAgICAgICAgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0NJWE1MRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgImxvY2FsIENvbmZpZ0l0ZW0tPkNJWE1MRGF0YSBtYXRjaCB0ZXN0IGRlZmluaXRpb24uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0F0dGFjaG1lbnR9ICkgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgYXR0YWNobWVudHMuCiAgICAgICAgICAgICAgICBteSBAQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSBAQXR0YWNobWVudHM7CiAgICAgICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWxlTmFtZSAoQEF0dGFjaG1lbnRMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkRmlsZU5hbWU7CgogICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIE5leHQgaWYgbm90IGF0dGFjaG1lbnQuCiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQXR0YWNobWVudCk7CgogICAgICAgICAgICAgICAgICAgICMgQ29udmVydCBjb250ZW50IHRvIGJhc2U2NC4KICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudC0+e0NvbnRlbnR9ID0gZW5jb2RlX2Jhc2U2NCggJEF0dGFjaG1lbnQtPntDb250ZW50fSwgJycgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBEZWxldGUgbm90IG5lZWRlZCBhdHRpYnV0ZXMuCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KFByZWZlcmVuY2VzIEZpbGVzaXplIFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgJEF0dGFjaG1lbnQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgQFJlcXVlc3RlZEF0dGFjaG1lbnRzOwogICAgICAgICAgICAgICAgaWYgKCByZWYgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntBdHRhY2htZW50fSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUmVxdWVzdGVkQXR0YWNobWVudHMsICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbX0tPntBdHRhY2htZW50fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEBSZXF1ZXN0ZWRBdHRhY2htZW50cyA9IEB7ICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbX0tPntBdHRhY2htZW50fSB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgIFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgXEBSZXF1ZXN0ZWRBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAibG9jYWwgQ29uZmlnSXRlbS0+QXR0YWNobWVudCBtYXRjaCB0ZXN0IGRlZmluaXRpb24uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUmVtb3ZlIGF0dHJpYnV0ZXMgdGhhdCBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSBsb2NhbCBhbmQgcmVxdWVzdGVyIHJlc3BvbnNlcy4KICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKAogICAgICAgICAgICAgICAgcXcoQ29uZmlnSXRlbUlEIE51bWJlciBDcmVhdGVUaW1lIFZlcnNpb25JRCBMYXN0VmVyc2lvbklEKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkZWxldGUgJExvY2FsVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkTG9jYWxWZXJzaW9uRGF0YSwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJWZXJzaW9uRGF0YSwKICAgICAgICAgICAgICAgICJMb2NhbCBjb25maWcgaXRlbSByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgRGVsZXRlIHRoZSBjb25maWcgaXRlbXMuCiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICgKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGVsZXRlID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgU2FuaXR5IGNoZWNrLgogICAgICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1EZWxldGUoKSBzdWNjZXNzZnVsIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBUZXN0cyBzdXBwb3NlZCB0byBmYWlsLgogICAgICAgIGVsc2UgewogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICEkTG9jYWxSZXN1bHQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBmYWxzZS4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICEkTG9jYWxSZXN1bHQtPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBmYWxzZS4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgICAgICAuICc6ICcKICAgICAgICAgICAgICAgICAgICAuICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIChvdXRzaWRlIERhdGEgaGFzaCkgbWF0Y2hlZCB3aXRoIGNvbmNhdGVuYXRpb24iCiAgICAgICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbC4KICAgICAgICAgICAgIyBSZXN1bHQgdG8gYmUgY29uc2lzdGVudCB3aXRoIFNPQVAgY2FsbCByZXN1bHQuCiAgICAgICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFNhbml0eSBjaGVjay4KICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAhJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgICAgIC4gIiBsb2NhbCBhbmQgcmVtb3RlIHRlc3RzLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgICAgICAgICAiTG9jYWwgcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQoKIyBDbGVhbiB1cCB3ZWJzZXJ2aWNlLgpteSAkV2Vic2VydmljZURlbGV0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlRGVsZXRlKAogICAgSUQgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRXZWJzZXJ2aWNlRGVsZXRlLCAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiICk7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemDelete.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXI7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGU7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQ7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkU2VsZjsKCiMgc2V0IFVzZXJJRCB0byByb290Cm15ICRVc2VySUQgPSAxOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VJRCwKICAgICJBZGRlZCBXZWJzZXJ2aWNlIiwKKTsKCiMgR2V0IHJlbW90ZSBob3N0IHdpdGggc29tZSBwcmVjYXV0aW9ucyBmb3IgY2VydGFpbiB1bml0IHRlc3Qgc3lzdGVtcy4KbXkgJEhvc3QgPSAkSGVscGVyLT5HZXRUZXN0SFRUUEhvc3RuYW1lOwoKIyBwcmVwYXJlIHdlYnNlcnZpY2UgY29uZmlnCm15ICRSZW1vdGVTeXN0ZW0gPQogICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAuICc6Ly8nCiAgICAuICRIb3N0CiAgICAuICcvJwogICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykKICAgIC4gJy9ucGgtZ2VuZXJpY2ludGVyZmFjZS5wbC9XZWJzZXJ2aWNlSUQvJwogICAgLiAkV2Vic2VydmljZUlEOwoKbXkgJFdlYnNlcnZpY2VDb25maWcgPSB7CiAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICdUZXN0IGZvciBDb25maWdJdGVtIENvbm5lY3RvciB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwXzAwMF8wMDAsCiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbURlbGV0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdTZXNzaW9uOjpTZXNzaW9uQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5jb2RpbmcgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEludm9rZXIgPT4gewogICAgICAgICAgICBDb25maWdJdGVtRGVsZXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAp9OwoKIyB1cGRhdGUgd2Vic2VydmljZSB3aXRoIHJlYWwgY29uZmlnCm15ICRXZWJzZXJ2aWNlVXBkYXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICBJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyAgPT4gJFdlYnNlcnZpY2VDb25maWcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VVcGRhdGUsCiAgICAiVXBkYXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQgLSAkV2Vic2VydmljZU5hbWUiLAopOwoKIyBkZWJ1Z2dlciBvYmplY3QKbXkgJERlYnVnZ2VyT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlci0+bmV3KAogICAgRGVidWdnZXJDb25maWcgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBXZWJzZXJ2aWNlSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgQ29tbXVuaWNhdGlvblR5cGUgPT4gJ1Byb3ZpZGVyJywKKTsKJFNlbGYtPklzKAogICAgcmVmICREZWJ1Z2dlck9iamVjdCwKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyJywKICAgICdEZWJ1Z2dlck9iamVjdCBpbnN0YW5jaWF0ZSBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklECiMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKbXkgJFJlcXVlc3RlclNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInLAogICAgcmVmICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgY3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdApteSAkVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwoKbXkgJFBhc3N3b3JkID0gJFVzZXJMb2dpbjsKCiMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKbXkgJFJlcXVlc3RlclNlc3Npb25SZXN1bHQgPSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdC0+UnVuKAogICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBJbnZva2VyICAgICAgPT4gJ1Nlc3Npb25DcmVhdGUnLAogICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICBQYXNzd29yZCAgPT4gJFBhc3N3b3JkLAogICAgfSwKKTsKCm15ICROZXdTZXNzaW9uSUQgPSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdC0+e0RhdGF9LT57U2Vzc2lvbklEfTsKCiNDb25maWdJdGVtdHMgY29udGFpbmVyICh1c2VmdWxsIGZvciBsb29rdXAgY29tcGFyZSkKbXkgJUFkZGVkQ29uZmlnSXRlbXM7Cm15IEBBZGRlZENvbmZpZ0l0ZW1JRHM7CgojIENvbmZpZ0l0ZW0gc2V0dGluZ3MKbXkgQENvbmZpZ0l0ZW1zID0gKAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTEtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdMbzAnLAogICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTItJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1JlcGFpcicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdXYXJuaW5nJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ1RoaW5rcGFkIFgzMDAnLAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyICAgID0+ICdhYmMxMjM0NWFiYycsCiAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycsCiAgICAgICAgICAgIFJhbSAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgMjAwMCwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSGFyZERpc2sgPT4gewogICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gNTAwMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOSUMgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ0FUSSBSYWRlb24gMzAwJywKICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICBOb3RlICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgIH0sCiAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMScsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dDIudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0hhcmR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0zLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ0hhcmR3YXJlIFZlbmRvcicsCiAgICAgICAgICAgIE1vZGVsICAgICAgICA9PiAnSGFyZHdhcmUgTW9kZWwnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1Rlc2l0bmcgSGFucmR3YXJlJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdDYW1lcmEnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNhbWM0NTYnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnTG9jYXRpb24nLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTQtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgID0+ICdCdWlsZGluZycsCiAgICAgICAgICAgIFBob25lMSAgID0+ICcxMjMnLAogICAgICAgICAgICBQaG9uZTIgICA9PiAnNDU2JywKICAgICAgICAgICAgRmF4ICAgICAgPT4gJzc4OScsCiAgICAgICAgICAgICdFLU1haWwnID0+ICdzb2Vtb25lQGV4YW1wbGUuY29tJywKICAgICAgICAgICAgQWRkcmVzcyAgPT4gJ1NvbWUgYWRkcmVzcycsCiAgICAgICAgICAgIE5vdGUgICAgID0+ICdUaGlzIGlzIGEgdGVzdCBsb2NhdGlvbicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdOZXR3b3JrJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS01LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAnTmV0d29yayBDSSBmb3IgdGVzdGluZycsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICdMQU4nLAogICAgICAgICAgICBOZXR3b3JrQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FkZHJlc3MgPT4gJzE5Mi4xLjEuMScsCiAgICAgICAgICAgICAgICAgICAgU3VibmV0TWFzayAgICAgPT4gJzI1NS4yNTUuMjU1LjAnLAogICAgICAgICAgICAgICAgICAgIEdhdGV3YXkgICAgICAgID0+ICcxOTIuMS4xLjI1NCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5ldHdvcmtBZGRyZXNzID0+ICcxOTIuMS41MC4xJywKICAgICAgICAgICAgICAgICAgICBTdWJuZXRNYXNrICAgICA9PiAnMjU1LjI1NS4yNTUuMCcsCiAgICAgICAgICAgICAgICAgICAgR2F0ZXdheSAgICAgICAgPT4gJzE5Mi4xLjUwLjI1NCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBOb3RlID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktNi0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgID0+ICdTb21lIHNvZnR3YXJlIHZlbmRvcicsCiAgICAgICAgICAgIFZlcnNpb24gICAgICA9PiAnMS4xLjEnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1NvbWUgc29mdHdhcmUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0FkbWluIFRvb2wnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNBQkM0NTYnLAogICAgICAgICAgICBMaWNlbmNlVHlwZSAgPT4gJ09wZW4gU291cmNlJywKICAgICAgICAgICAgTGljZW5jZUtleSAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnMTIzNCcsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzQ1NjcnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0yNScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBNZWRpYSA9PiAnRG93bmxvYWQnLAogICAgICAgICAgICBOb3RlICA9PiAnVGhpcyBpcyBhIHRlc3QgQ0knLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnU29mdHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTctJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnU29tZSBzb2Z0d2FyZSB2ZW5kb3InLAogICAgICAgICAgICBWZXJzaW9uICAgICAgPT4gJzEuMS4xJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gID0+ICdTb21lIHNvZnR3YXJlIGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdBZG1pbiBUb29sJywKICAgICAgICAgICAgT3duZXIgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciA9PiAnMTIzQUJDNDU2JywKICAgICAgICAgICAgTGljZW5jZVR5cGUgID0+ICdPcGVuIFNvdXJjZScsCiAgICAgICAgICAgIExpY2VuY2VLZXkgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzEyMzQnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICc0NTY3JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMjUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTWVkaWEgPT4gJ0Rvd25sb2FkJywKICAgICAgICAgICAgTm90ZSAgPT4gJ1RoaXMgaXMgYSB0ZXN0IENJJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS04LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ1NvbWUgc29mdHdhcmUgdmVuZG9yJywKICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+ICcxLjEuMScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnU29tZSBzb2Z0d2FyZSBkZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnQWRtaW4gVG9vbCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM0FCQzQ1NicsCiAgICAgICAgICAgIExpY2VuY2VUeXBlICA9PiAnT3BlbiBTb3VyY2UnLAogICAgICAgICAgICBMaWNlbmNlS2V5ICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICcxMjM0JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnNDU2NycsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTI1JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE1lZGlhID0+ICdEb3dubG9hZCcsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENsYXNzTGlzdCAgICAgICAgICAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwpteSAkSW5jaVN0YXRlTGlzdCAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07Cm15ICREZXBsU3RhdGVMaXN0ICAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRDb25maWdJdGVtID0gU3RvcmFibGU6OmRjbG9uZSgkQ29uZmlnSXRlbSk7CgogICAgIyBjcmVhdGUgbmV3IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIiwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICk7CgogICAgbXkgJExvY2FsT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUtPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+UmVwbGFjZVhNTERhdGEoCiAgICAgICAgWE1MRGF0YSAgICA9PiAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0sCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uUmVmfSwKICAgICk7CgogICAgbXkgJFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkZvcm1hdFhNTERhdGEoCiAgICAgICAgWE1MRGF0YSA9PiAkUmVwbGFjZWRYTUxEYXRhLAogICAgKTsKCiAgICAjIFRPRE86IHN3aXRjaCB0byBDb25maWdJdGVtVXBkYXRlKCkgPz8/CiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICRSZXZlcnNlRGVwbFN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGV9IH0sCiAgICAgICAgWE1MRGF0YSAgICAgID0+ICRYTUxEYXRhLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVja3MKICAgIG9rKCAkVmVyc2lvbklELCAiQWRkZWQgdmVyc2lvbiAkVmVyc2lvbklEIiApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7JENvbmZpZ0l0ZW1JRH0gPSAkQ2xvbmVkQ29uZmlnSXRlbTsKICAgICAgICBwdXNoIEBBZGRlZENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICB9Cn0KCiMgYWN0dWFsIHRlc3RzIGZvciBDb25maWdJdGVtRGVsZXRlIG9wZXJhdGlvbgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0RlbGV0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtSUQgZm9ybWF0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gewogICAgICAgICAgICAgICAgVGVzdDEgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW1JRCBBcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtRGVsZXRlLkFjY2Vzc0RlbmllZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgMScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzBdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEIDEgKHdhcyBhbHJlYWR5IGRlbGV0ZWQgYmVmb3JlKScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUuQWNjZXNzRGVuaWVkJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbICRBZGRlZENvbmZpZ0l0ZW1JRHNbMV0gXSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1syXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbM10sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzRdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzRdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNV0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzVdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNy04JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbUlEc1s2XSwKICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1JRHNbN10sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbUlEc1s2XSwKICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1JRHNbN10sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKKTsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgIyBjcmVhdGUgbG9jYWwgb2JqZWN0CiAgICBteSAkTG9jYWxPYmplY3QgPSAiS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OiRUZXN0LT57T3BlcmF0aW9ufSItPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259IiwKICAgICAgICByZWYgJExvY2FsT2JqZWN0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3JlYXRlIGxvY2FsIG9iamVjdCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzRGVsZXRlfSApIHsKCiAgICAgICAgIyByZXF1ZXN0ZXIgcmVzdWx0cwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgaXMgbm90IHVuZGVmaW5lZC4iLAogICAgICAgICk7CgogICAgICAgIG15ICRFeHBlY3RlZFJlc3VsdFR5cGUgPSByZWYgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtSUR9OwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAkRXhwZWN0ZWRSZXN1bHRUeXBlLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbUlEIHJlZmVyZW5jZS4iLAogICAgICAgICk7CgogICAgICAgIGlmICggJEV4cGVjdGVkUmVzdWx0VHlwZSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSApLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW1JRCByZWZlcmVuY2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdGVzdHMgc3VwcG9zZWQgdG8gZmFpbAogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZERhdGF9LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBFcnJvck1lc3NhZ2Ugd2l0aCB0cnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICB9Cn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwCgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemGet.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7Cgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBzZXQgVXNlcklEIHRvIHJvb3QKbXkgJFVzZXJJRCA9IDE7CgojIGhlbHBlciBvYmplY3QKIyBza2lwIFNTTCBjZXJ0aWNpYXRlIHZlcmlmaWNhdGlvbgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBTa2lwU1NMVmVyaWZ5ID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgY2hlY2sgaWYgU1NMIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBpcyBkaXNhYmxlZAokU2VsZi0+SXMoCiAgICAkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9LAogICAgMCwKICAgICdEaXNhYmxlZCBTU0wgY2VydGl0aWNhdGVzIHZlcmlmaWNhdGlvbiBpbiBlbnZpcm9ubWVudCcsCik7CgojIGNyZWF0ZSBDb25maWdJdGVtIG9iamVjdApteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgY3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0Cm15ICRXZWJzZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKTsKJFNlbGYtPklzKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgIHJlZiAkV2Vic2VydmljZU9iamVjdCwKICAgICJDcmVhdGUgd2Vic2VydmljZSBvYmplY3QiLAopOwoKIyBzZXQgd2Vic2VydmljZSBuYW1lCm15ICRXZWJzZXJ2aWNlTmFtZSA9ICctVGVzdC0nIC4gJFJhbmRvbUlEOwoKbXkgJFdlYnNlcnZpY2VJRCA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlQWRkKAogICAgTmFtZSAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyA9PiB7CiAgICAgICAgRGVidWdnZXIgPT4gewogICAgICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIH0sCiAgICAgICAgUHJvdmlkZXIgPT4gewogICAgICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZUlELAogICAgIkFkZGVkIFdlYnNlcnZpY2UiLAopOwoKIyBnZXQgcmVtb3RlIGhvc3Qgd2l0aCBzb21lIHByZWNhdXRpb25zIGZvciBjZXJ0YWluIHVuaXQgdGVzdCBzeXN0ZW1zCm15ICRIb3N0OwpteSAkRlFETiA9ICRDb25maWdPYmplY3QtPkdldCgnRlFETicpOwoKIyB0cnkgdG8gcmVzb2x2ZSBmcWRuIGhvc3QKaWYgKCAkRlFETiBuZSAneW91cmhvc3QuZXhhbXBsZS5jb20nICYmIGdldGhvc3RieW5hbWUoJEZRRE4pICkgewogICAgJEhvc3QgPSAkRlFETjsKfQoKIyB0cnkgdG8gcmVzb2x2ZSBsb2NhbGhvc3QgaW5zdGVhZAppZiAoICEkSG9zdCAmJiBnZXRob3N0YnluYW1lKCdsb2NhbGhvc3QnKSApIHsKICAgICRIb3N0ID0gJ2xvY2FsaG9zdCc7Cn0KCiMgdXNlIGhhcmRjb2RlZCBsb2NhbGhvc3QgaXAgYWRkcmVzcwppZiAoICEkSG9zdCApIHsKICAgICRIb3N0ID0gJzEyNy4wLjAuMSc7Cn0KCiMgcHJlcGFyZSB3ZWJzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewoKICAgICMgICAgTmFtZSA9PiAnJywKICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgJ1Rlc3QgZm9yIENvbmZpZ0l0ZW0gQ29ubmVjdG9yIHVzaW5nIFNPQVAgdHJhbnNwb3J0IGJhY2tlbmQuJywKICAgIERlYnVnZ2VyID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgUHJvdmlkZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTBfMDAwXzAwMCwKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Nlc3Npb246OlNlc3Npb25DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgUmVxdWVzdGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmNvZGluZyAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgSW52b2tlciA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCn07CgojIHVwZGF0ZSB3ZWJzZXJ2aWNlIHdpdGggcmVhbCBjb25maWcKbXkgJFdlYnNlcnZpY2VVcGRhdGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgIElEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIE5hbWUgICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnICA9PiAkV2Vic2VydmljZUNvbmZpZywKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZVVwZGF0ZSwKICAgICJVcGRhdGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCAtICRXZWJzZXJ2aWNlTmFtZSIsCik7CgojIGRlYnVnZ2VyIG9iamVjdApteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlIGNvcnJlY3RseScsCik7CgojIEdldCBTZXNzaW9uSUQKIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdApteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICByZWYgJFJlcXVlc3RlclNlc3Npb25PYmplY3QsCiAgICAiU2Vzc2lvbklEIC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAopOwoKIyBjcmVhdGUgYSBuZXcgdXNlciBmb3IgY3VycmVudCB0ZXN0Cm15ICRVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7CgpteSAkUGFzc3dvcmQgPSAkVXNlckxvZ2luOwoKIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQpteSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdCA9ICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnU2Vzc2lvbkNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiA9PiAkVXNlckxvZ2luLAogICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICB9LAopOwoKbXkgJE5ld1Nlc3Npb25JRCA9ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0LT57RGF0YX0tPntTZXNzaW9uSUR9OwoKI0NvbmZpZ0l0ZW10cyBjb250YWluZXIgKHVzZWZ1bGwgZm9yIGxvb2t1cCBjb21wYXJlKQpteSAlQWRkZWRDb25maWdJdGVtczsKbXkgQEFkZGVkQ29uZmlnSXRlbUlEczsKCiMgQ29uZmlnSXRlbSBzZXR0aW5ncwpteSBAQ29uZmlnSXRlbXMgPSAoCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMS0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0xvMCcsCiAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMi0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUmVwYWlyJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ1dhcm5pbmcnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICAgICA9PiAnTGVub3ZvJywKICAgICAgICAgICAgTW9kZWwgICAgICAgICAgID0+ICdUaGlua3BhZCcsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICA9PiAnVGhpbmtwYWQgWDMwMCcsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAnRGVza3RvcCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgICAgPT4gJ2FiYzEyMzQ1YWJjJywKICAgICAgICAgICAgT3BlcmF0aW5nU3lzdGVtID0+ICdDZW50T1MgNi4wJywKICAgICAgICAgICAgQ1BVICAgICAgICAgICAgID0+ICdJbnRlbCBDb3JlIGkzJywKICAgICAgICAgICAgUmFtICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAyMDAwLAogICAgICAgICAgICBdLAogICAgICAgICAgICBIYXJkRGlzayA9PiB7CiAgICAgICAgICAgICAgICBIYXJkRGlzayA9PiAnL2RldicsCiAgICAgICAgICAgICAgICBDYXBhY2l0eSA9PiA1MDAwMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRlFETiA9PiAnaG90cy5leGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5JQyAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcxOTIuMTY4LjMwLjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzIwMC4zNC41Ni43OCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBHcmFwaGljQWRhcHRlciA9PiAnQVRJIFJhZGVvbiAzMDAnLAogICAgICAgICAgICBJbnN0YWxsRGF0ZSAgICA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgIE5vdGUgICAgICAgICAgID0+ICdUaGlzIGlzIGEgRGVtbyBDSScsCiAgICAgICAgfSwKICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdNeSBUZXh0LnR4dCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xJywKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdNeSBUZXh0Mi50eHQnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnSGFyZHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTMtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnSGFyZHdhcmUgVmVuZG9yJywKICAgICAgICAgICAgTW9kZWwgICAgICAgID0+ICdIYXJkd2FyZSBNb2RlbCcsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnVGVzaXRuZyBIYW5yZHdhcmUnLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0NhbWVyYScsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM2FtYzQ1NicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdMb2NhdGlvbicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktNC0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0J1aWxkaW5nJywKICAgICAgICAgICAgUGhvbmUxICAgPT4gJzEyMycsCiAgICAgICAgICAgIFBob25lMiAgID0+ICc0NTYnLAogICAgICAgICAgICBGYXggICAgICA9PiAnNzg5JywKICAgICAgICAgICAgJ0UtTWFpbCcgPT4gJ3NvZW1vbmVAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBBZGRyZXNzICA9PiAnU29tZSBhZGRyZXNzJywKICAgICAgICAgICAgTm90ZSAgICAgPT4gJ1RoaXMgaXMgYSB0ZXN0IGxvY2F0aW9uJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ05ldHdvcmsnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTUtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdOZXR3b3JrIENJIGZvciB0ZXN0aW5nJywKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ0xBTicsCiAgICAgICAgICAgIE5ldHdvcmtBZGRyZXNzID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOZXR3b3JrQWRkcmVzcyA9PiAnMTkyLjEuMS4xJywKICAgICAgICAgICAgICAgICAgICBTdWJuZXRNYXNrICAgICA9PiAnMjU1LjI1NS4yNTUuMCcsCiAgICAgICAgICAgICAgICAgICAgR2F0ZXdheSAgICAgICAgPT4gJzE5Mi4xLjEuMjU0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FkZHJlc3MgPT4gJzE5Mi4xLjUwLjEnLAogICAgICAgICAgICAgICAgICAgIFN1Ym5ldE1hc2sgICAgID0+ICcyNTUuMjU1LjI1NS4wJywKICAgICAgICAgICAgICAgICAgICBHYXRld2F5ICAgICAgICA9PiAnMTkyLjEuNTAuMjU0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE5vdGUgPT4gJ1RoaXMgaXMgYSB0ZXN0IENJJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS02LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ1NvbWUgc29mdHdhcmUgdmVuZG9yJywKICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+ICcxLjEuMScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnU29tZSBzb2Z0d2FyZSBkZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnQWRtaW4gVG9vbCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM0FCQzQ1NicsCiAgICAgICAgICAgIExpY2VuY2VUeXBlICA9PiAnT3BlbiBTb3VyY2UnLAogICAgICAgICAgICBMaWNlbmNlS2V5ICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICcxMjM0JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnNDU2NycsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTI1JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE1lZGlhID0+ICdEb3dubG9hZCcsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENsYXNzTGlzdCAgICAgICAgICAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwpteSAkSW5jaVN0YXRlTGlzdCAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07Cm15ICREZXBsU3RhdGVMaXN0ICAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRDb25maWdJdGVtID0gU3RvcmFibGU6OmRjbG9uZSgkQ29uZmlnSXRlbSk7CgogICAgIyBjcmVhdGUgbmV3IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIiwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICk7CgogICAgbXkgJExvY2FsT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUtPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+UmVwbGFjZVhNTERhdGEoCiAgICAgICAgWE1MRGF0YSAgICA9PiAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0sCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uUmVmfSwKICAgICk7CgogICAgbXkgJFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkZvcm1hdFhNTERhdGEoCiAgICAgICAgWE1MRGF0YSA9PiAkUmVwbGFjZWRYTUxEYXRhLAogICAgKTsKCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICRSZXZlcnNlRGVwbFN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGV9IH0sCiAgICAgICAgWE1MRGF0YSAgICAgID0+ICRYTUxEYXRhLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVja3MKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgIkFkZGVkIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCIsCiAgICApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7JENvbmZpZ0l0ZW1JRH0gPSAkQ2xvbmVkQ29uZmlnSXRlbTsKICAgICAgICBwdXNoIEBBZGRlZENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICB9Cn0KCiMgYWN0dWFsIHRlc3RzIGZvciBDb25maWdJdGVtR2V0IG9wZXJhdGlvbgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtSUQgZm9ybWF0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gewogICAgICAgICAgICAgICAgVGVzdDEgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW1JRCBBcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwgXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgMycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMl0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzNdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCA1JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1s0XSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNV0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDEtNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFxAQWRkZWRDb25maWdJdGVtSURzLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzR2V0fSApIHsKCiAgICAgICAgIyBsb2NhbCByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbSBpcyBub3QgdW5kZWZpbmVkLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAnQVJSQVknLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIHJlZmVyZW5jZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSApLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIHJlZmVyZW5jZSBpcyBub3QgZW1wdHkuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtIGlzIG5vdCB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBteSAkRXhwZWN0ZWRSZXN1bHRUeXBlID0gcmVmICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbUlEfSB8fCAnSEFTSCc7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgcmVmICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAkRXhwZWN0ZWRSZXN1bHRUeXBlLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbSByZWZlcmVuY2UuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICRFeHBlY3RlZFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBJc0FycmF5UmVmV2l0aERhdGEoICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19ICksCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbSByZWZlcmVuY2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKCAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSApLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW0gcmVmZXJlbmNlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICRFeHBlY3RlZFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICMgbG9vcCBhbGwgQ29uZmlnSXRlbUlEcyBpbiB0aGUgcmVzcG9uc2UKICAgICAgICAgICAgZm9yIG15ICRDb3VudGVyICggMCAuLiBzY2FsYXIgQHsgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtSUR9IH0gLSAxICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgc3BlY2lmaWMgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENJWE1MRGF0YSBDbGFzcyBEZXBsU3RhdGUgSW5jaVN0YXRlIE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LT5bJENvdW50ZXJdLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1zeyAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW1JRH0tPlskQ291bnRlcl0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IG1hdGNoIENvbmZpZ0l0ZW0tPlskQ291bnRlcl0gJEF0dHJpYnV0ZSBjcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICIgZGF0YS4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgY2hlY2sgc3BlY2lmaWMgYXR0cmlidXRlcyBmb3IgdGhlIG9ubHkgMSByZXN1bHQKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENJWE1MRGF0YSBDbGFzcyBEZXBsU3RhdGUgSW5jaVN0YXRlIE5hbWUpKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfS0+WzBdLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7ICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbUlEfSB9LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2ggQ29uZmlnSXRlbSAkQXR0cmlidXRlIGNyZWF0ZSBkYXRhLiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbWFrZSBSZXF1ZXN0ZXIgcmVzdWx0IGFuIGFycmF5IGZvciBlYXN5IGNvbXBhcmUKICAgICAgICAgICAgbXkgJFJlcXVlc3RlckNvbmZpZ0l0ZW0gPSBkZWxldGUgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbX07CiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19ID0gWyRSZXF1ZXN0ZXJDb25maWdJdGVtXTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIGNvbmZpZyBpdGVtIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9CgogICAgIyB0ZXN0cyBzdXBwb3NlZCB0byBmYWlsCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntOdW1iZXJ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIHdpdGggdHJ1ZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvck1lc3NhZ2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfQogICAgICAgICAgICAgICAgLiAnOiAnCiAgICAgICAgICAgICAgICAuICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIChvdXRzaWRlIERhdGEgaGFzaCkgbWF0Y2hlZCB3aXRoIGNvbmNhdGVuYXRpb24iCiAgICAgICAgICAgICAgICAuICIgb2YgRXJyb3JDb2RlIGFuZCBFcnJvck1lc3NhZ2Ugd2l0aGluIERhdGEgaGFzaC4iLAogICAgICAgICk7CgogICAgICAgICMgcmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbAogICAgICAgICMgcmVzdWx0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBTT0FQIGNhbGwgcmVzdWx0CiAgICAgICAgaWYgKCAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9ICkgewogICAgICAgICAgICBkZWxldGUgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfTsKICAgICAgICB9CgogICAgICAgICMgc2FuaXR5IGNoZWNrCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvTWVzc2FnZSAob3V0c2lzZSBEYXRhIGhhc2gpIGdvdCByZW1vdmVkIHRvIGNvbXBhcmUiCiAgICAgICAgICAgICAgICAuICIgbG9jYWwgYW5kIHJlbW90ZSB0ZXN0cy4iLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9Cn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwCgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJUFkZGVkQ29uZmlnSXRlbXMgKSB7CgogICAgIyBkZWxldGUgdGhlIENvbmZpZ0l0ZW1zCiAgICBteSAkU3VjY2Vzc0RlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVjawogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3NEZWxldGUsCiAgICAgICAgIlN1Y2Nlc3NEZWxldGUoKSBzdWNjZXNzZnVsIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQiLAogICAgKTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemSearch.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgU3RvcmFibGU7CgojIENQQU4gbW9kdWxlcwp1c2UgVGVzdDI6OlYwOwoKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgR2VuZXJpYyBJbnRlcmZhY2UgdGVzdHMgdGVtcG9yYXJpbHkuJyk7CmRvbmVfdGVzdGluZzsKZXhpdDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVNlYXJjaDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBzZXQgVXNlcklEIHRvIHJvb3QKIyBUT0RPOiB3aHkgaXMgJFNlbGYtPntVc2VySUR9IHVzZWQgYXMgd2VsbD8KbXkgJFRlc3RVc2VySUQgPSAxOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlSUQsCiAgICAiQWRkZWQgV2Vic2VydmljZSIsCik7CgojIGdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMKbXkgJEhvc3Q7Cm15ICRGUUROID0gJENvbmZpZ09iamVjdC0+R2V0KCdGUUROJyk7CgojIHRyeSB0byByZXNvbHZlIGZxZG4gaG9zdAppZiAoICRGUUROIG5lICd5b3VyaG9zdC5leGFtcGxlLmNvbScgJiYgZ2V0aG9zdGJ5bmFtZSgkRlFETikgKSB7CiAgICAkSG9zdCA9ICRGUUROOwp9CgojIHRyeSB0byByZXNvbHZlIGxvY2FsaG9zdCBpbnN0ZWFkCmlmICggISRIb3N0ICYmIGdldGhvc3RieW5hbWUoJ2xvY2FsaG9zdCcpICkgewogICAgJEhvc3QgPSAnbG9jYWxob3N0JzsKfQoKIyB1c2UgaGFyZGNvZGVkIGxvY2FsaG9zdCBpcCBhZGRyZXNzCmlmICggISRIb3N0ICkgewogICAgJEhvc3QgPSAnMTI3LjAuMC4xJzsKfQoKIyBwcmVwYXJlIHdlYnNlcnZpY2UgY29uZmlnCm15ICRSZW1vdGVTeXN0ZW0gPQogICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAuICc6Ly8nCiAgICAuICRIb3N0CiAgICAuICcvJwogICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykKICAgIC4gJy9ucGgtZ2VuZXJpY2ludGVyZmFjZS5wbC9XZWJzZXJ2aWNlSUQvJwogICAgLiAkV2Vic2VydmljZUlEOwoKbXkgJFdlYnNlcnZpY2VDb25maWcgPSB7CgogICAgIyAgICBOYW1lID0+ICcnLAogICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAnVGVzdCBmb3IgQ29uZmlnSXRlbSBDb25uZWN0b3IgdXNpbmcgU09BUCB0cmFuc3BvcnQgYmFja2VuZC4nLAogICAgRGVidWdnZXIgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBQcm92aWRlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiAxMF8wMDBfMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1TZWFyY2ggPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnU2Vzc2lvbjo6U2Vzc2lvbkNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBSZXF1ZXN0ZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuY29kaW5nICA9PiAnVVRGLTgnLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBJbnZva2VyID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbVNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgdXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZwpteSAkV2Vic2VydmljZVVwZGF0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgTmFtZSAgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlQ29uZmlnLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZVVwZGF0ZSwKICAgICJVcGRhdGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCAtICRXZWJzZXJ2aWNlTmFtZSIsCik7CgojIGRlYnVnZ2VyIG9iamVjdApteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlIGNvcnJlY3RseScsCik7CgojIEdldCBTZXNzaW9uSUQKIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdApteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICByZWYgJFJlcXVlc3RlclNlc3Npb25PYmplY3QsCiAgICAiU2Vzc2lvbklEIC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAopOwoKIyBjcmVhdGUgYSBuZXcgdXNlciBmb3IgY3VycmVudCB0ZXN0Cm15ICRVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7Cm15ICRQYXNzd29yZCA9ICRVc2VyTG9naW47CgojIHN0YXJ0IHJlcXVlc3RlciB3aXRoIG91ciB3ZWJzZXJ2aWNlCm15ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0ID0gJFJlcXVlc3RlclNlc3Npb25PYmplY3QtPlJ1bigKICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgSW52b2tlciAgICAgID0+ICdTZXNzaW9uQ3JlYXRlJywKICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgIH0sCik7CgpteSAkTmV3U2Vzc2lvbklEID0gJFJlcXVlc3RlclNlc3Npb25SZXN1bHQtPntEYXRhfS0+e1Nlc3Npb25JRH07CgojQ29uZmlnSXRlbXRzIGNvbnRhaW5lciAodXNlZnVsbCBmb3IgbG9va3VwIGNvbXBhcmUpCm15IEBBZGRlZENvbmZpZ0l0ZW1JRHM7CgojIENvbmZpZ0l0ZW0gc2V0dGluZ3MKbXkgQENvbmZpZ0l0ZW1zID0gKAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTEtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1JlcGFpcicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdXYXJuaW5nJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ1RoaW5rcGFkIFgzMDAnLAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyICAgID0+ICdhYmMxMjM0NWFiYycsCiAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIFJhbSAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgMjAwMCwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSGFyZERpc2sgPT4gewogICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gNTAwMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOSUMgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ0FUSSBSYWRlb24gMzAwJywKICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICBOb3RlICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgIH0sCiAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMScsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dDIudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0yLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdSZXBhaXInLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICAgICA9PiAnQXBwbGUnLAogICAgICAgICAgICBNb2RlbCAgICAgICAgICAgPT4gJ2lNYWMnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ0FwcGxlIENvbXB1dGVyJywKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdEZXNrdG9wJywKICAgICAgICAgICAgT3duZXIgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciAgICA9PiAnYWJjMTIzNDVhYmMnLAogICAgICAgICAgICBPcGVyYXRpbmdTeXN0ZW0gPT4gJ09TWCAxMC44LjMnLAogICAgICAgICAgICBDUFUgICAgICAgICAgICAgPT4gJ0ludGVsIENvcmUgaTMnIC4gJFJhbmRvbUlELAogICAgICAgICAgICBSYW0gICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgIDIwMDAsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEhhcmREaXNrID0+IHsKICAgICAgICAgICAgICAgIEhhcmREaXNrID0+ICcvZGV2JywKICAgICAgICAgICAgICAgIENhcGFjaXR5ID0+IDgwMDAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBGUUROID0+ICdob3RzLmV4YW1wbGUuY29tJywKICAgICAgICAgICAgTklDICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRW4wJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzE5Mi4xNjguMzAuMScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0VuMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ252aWRpYScsCiAgICAgICAgICAgIEluc3RhbGxEYXRlICAgID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgTm90ZSAgICAgICAgICAgPT4gJ1RoaXMgaXMgYSBEZW1vIENJJywKICAgICAgICB9LAogICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTEnLAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQyLnR4dCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMy0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgID0+ICdTb21lIHNvZnR3YXJlIHZlbmRvcicsCiAgICAgICAgICAgIFZlcnNpb24gICAgICA9PiAnMS4xLjEnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1NvbWUgc29mdHdhcmUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0FkbWluIFRvb2wnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNBQkM0NTYnLAogICAgICAgICAgICBMaWNlbmNlVHlwZSAgPT4gJ09wZW4gU291cmNlJywKICAgICAgICAgICAgTGljZW5jZUtleSAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnMTIzNCcsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzQ1NjcnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0yNScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBNZWRpYSA9PiAnRG93bmxvYWQnLAogICAgICAgICAgICBOb3RlICA9PiAnVGhpcyBpcyBhIHRlc3QgQ0knLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnU29mdHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTQtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnU29tZSBzb2Z0d2FyZSB2ZW5kb3InLAogICAgICAgICAgICBWZXJzaW9uICAgICAgPT4gJzEuMS4xJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gID0+ICdTb21lIHNvZnR3YXJlIGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdBZG1pbiBUb29sJywKICAgICAgICAgICAgT3duZXIgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciA9PiAnMTIzQUJDNDU2JywKICAgICAgICAgICAgTGljZW5jZVR5cGUgID0+ICdPcGVuIFNvdXJjZScsCiAgICAgICAgICAgIExpY2VuY2VLZXkgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzEyMzQnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICc0JywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICc0NTY3JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMjUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTWVkaWEgPT4gJ0NELVJPTScsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgojIGNyZWF0ZSBsb2NhbCBvYmplY3QKbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZS0+bmV3KAogICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKKTsKCmZvciBteSAkQ29uZmlnSXRlbSAoQENvbmZpZ0l0ZW1zKSB7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkQ29uZmlnSXRlbSA9IFN0b3JhYmxlOjpkY2xvbmUoJENvbmZpZ0l0ZW0pOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgICMgYWRkIG5ldyBDb25maWdJdGVtcwogICAgbXkgJENyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkICAgPT4gJFBhc3N3b3JkLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICRDbG9uZWRDb25maWdJdGVtLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ3JlYXRlUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9IHx8ICcnOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIC0gJENyZWF0ZVJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSIsCiAgICApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgcHVzaCBAQWRkZWRDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgfQp9CgojIGFjdHVhbCB0ZXN0cyBmb3IgQ29uZmlnSXRlbVNlYXJjaCBvcGVyYXRpb24KbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdFbXB0eSBSZXF1ZXN0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWREYXRhICAgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBUZXN0ID0+IDEKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtIGZvcm1hdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAxCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtLT5DbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5DbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTm9uRXhpc3RpbmcnIC4gJFJhbmRvbUlELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q0lYTUxEYXRhJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5JbmNpU3RhdGVzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgPT4gJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5JbmNpU3RhdGVzIEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+SW5jaVN0YXRlcyBBUlJBWScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IFsgJ0luY2lkZW50JywgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEIF0sCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPkRlcGxTdGF0ZXMnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5EZXBsU3RhdGVzIEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+RGVwbFN0YXRlcyBBUlJBWScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgPT4gWyAnUHJvZHVjdGlvbicsICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCBdLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5PcmRlckJ5IEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzID0+IFsgJ1Byb2R1Y3Rpb24nLCAnUmV0aXJlZCcgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLldyb25nU3RydWN0dXJlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPk9yZGVyQnlEaXJlY3Rpb24gSEFTSCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q3JlYXRlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q3JlYXRlVGltZU9sZGVyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q2hhbmdlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q2hhbmdlVGltZU9sZGVyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+TGltaXQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ1Byb2R1Y3Rpb24nLCAnUmV0aXJlZCcgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICAgICAgICAgID0+IFsnTnVtYmVyJ10sCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgICAgICAgICAgICA9PiBbJ0Rvd24nXSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbmxpbWl0ZWQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ0lYTUxEYXRhIEdlbmVyYWwgQ2F0YWxvZycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEgRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbERhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENJWE1MRGF0YSBUZXh0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnYScgeCA1MSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEgTnVtYmVyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciAgICAgPT4gJ2EnIHggNTAsCiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ID0+ICdOb3RFeGlzdGluZycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb21wdXRlciBObyBMaW1pdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJywgJ1JlcGFpcicgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ1BVID0+ICdJbnRlbCBDb3JlIGkzJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1swXSwgJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb21wdXRlciBMaW1pdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJywgJ1JlcGFpcicgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ1BVID0+ICdJbnRlbCBDb3JlIGkzJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1swXSBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBTb2Z0d2FyZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSA9PiBbICczJywgJzQnIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzJdLCAkQWRkZWRDb25maWdJdGVtSURzWzNdIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkUmVxdWVzdERhdGEgPSBTdG9yYWJsZTo6ZGNsb25lKCAkVGVzdC0+e1JlcXVlc3REYXRhfSApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRMb2NhbFJlc3VsdCA9ICRMb2NhbE9iamVjdC0+UnVuKAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICAgICAgICAgICV7ICRUZXN0LT57UmVxdWVzdERhdGF9IH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZXN0b3JlIGNsb25lZCBkYXRhCiAgICAkVGVzdC0+e1JlcXVlc3REYXRhfSA9ICRDbG9uZWRSZXF1ZXN0RGF0YTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzU2VhcmNofSApIHsKCiAgICAgICAgIyBsb2NhbCByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEcyBpcyBub3QgdW5kZWZpbmVkLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9LAogICAgICAgICAgICAnQVJSQVknLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSURzIHJlZmVyZW5jZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSApLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIGlzIGEgbm9uIGVtcHRyeSBhcnJheSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSURzIGlzIG5vdCB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEc30gKSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSURzIGlzIGEgbm9uIGVtcHRyeSBhcnJheSB3aXRoIHRydWUuIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgSXNOdW1iZXIoICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9ICksCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbUlEcyBpcyBudW1iZXIgd2l0aCB0cnVlLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG1ha2UgUmVxdWVzdGVyIHJlc3VsdCBhbiBhcnJheSBmb3IgZWFzeSBjb21wYXJlCiAgICAgICAgICAgIG15ICRSZXF1ZXN0ZXJDb25maWdJdGVtSURzID0gZGVsZXRlICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9OwogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSA9IFskUmVxdWVzdGVyQ29uZmlnSXRlbUlEc107CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZERhdGF9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaCBleHBlY3RlZCBkYXRhLiIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQsCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgY29uZmlnIGl0ZW0gcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRlc3RzIHN1cHBvc2VkIHRvIGZhaWwKICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgTnVtYmVyIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkRGF0YX0tPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yQ29kZSBtYXRjaGVkIHdpdGggZXhwZWN0ZWQgbG9jYWwgY2FsbCByZXN1bHQuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAnJywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgIC4gJzogJwogICAgICAgICAgICAgICAgLiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSAob3V0c2lkZSBEYXRhIGhhc2gpIG1hdGNoZWQgd2l0aCBjb25jYXRlbmF0aW9uIgogICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICApOwoKICAgICAgICAjIHJlbW92ZSBFcnJvck1lc3NhZ2UgcGFyYW1ldGVyIGZyb20gZGlyZWN0IGNhbGwKICAgICAgICAjIHJlc3VsdCB0byBiZSBjb25zaXN0ZW50IHdpdGggU09BUCBjYWxsIHJlc3VsdAogICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgZGVsZXRlICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX07CiAgICAgICAgfQoKICAgICAgICAjIHNhbml0eSBjaGVjawogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgLiAiIGxvY2FsIGFuZCByZW1vdGUgdGVzdHMuIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQp9ICAgICNlbmQgbG9vcAoKIyBjbGVhbiB1cAoKIyBjbGVhbiB1cCB3ZWJzZXJ2aWNlCm15ICRXZWJzZXJ2aWNlRGVsZXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VEZWxldGUoCiAgICBJRCAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IEBBZGRlZENvbmZpZ0l0ZW1JRHMgKSB7CgogICAgIyBkZWxldGUgdGhlIENvbmZpZ0l0ZW1zCiAgICBteSAkU3VjY2Vzc0RlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkU3VjY2Vzc0RlbGV0ZSwKICAgICAgICAiU3VjY2Vzc0RlbGV0ZSgpIHN1Y2Nlc3NmdWwgZm9yIENvbmZpZ0l0ZW0gSUQgJENvbmZpZ0l0ZW1JRCIsCiAgICApOwp9CgojZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemUpdate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwp1c2UgU3RvcmFibGUgICAgIHF3KGRjbG9uZSk7CgojIENQQU4gbW9kdWxlcwp1c2UgVGVzdDI6OlYwOwoKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgR2VuZXJpYyBJbnRlcmZhY2UgdGVzdHMgdGVtcG9yYXJpbHkuJyk7CmRvbmVfdGVzdGluZzsKZXhpdDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VJRCwKICAgICJBZGRlZCBXZWJzZXJ2aWNlIiwKKTsKCiMgZ2V0IHJlbW90ZSBob3N0IHdpdGggc29tZSBwcmVjYXV0aW9ucyBmb3IgY2VydGFpbiB1bml0IHRlc3Qgc3lzdGVtcwpteSAkSG9zdDsKbXkgJEZRRE4gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZRRE4nKTsKCiMgdHJ5IHRvIHJlc29sdmUgZnFkbiBob3N0CmlmICggJEZRRE4gbmUgJ3lvdXJob3N0LmV4YW1wbGUuY29tJyAmJiBnZXRob3N0YnluYW1lKCRGUUROKSApIHsKICAgICRIb3N0ID0gJEZRRE47Cn0KCiMgdHJ5IHRvIHJlc29sdmUgbG9jYWxob3N0IGluc3RlYWQKaWYgKCAhJEhvc3QgJiYgZ2V0aG9zdGJ5bmFtZSgnbG9jYWxob3N0JykgKSB7CiAgICAkSG9zdCA9ICdsb2NhbGhvc3QnOwp9CgojIHVzZSBoYXJkY29kZWQgbG9jYWxob3N0IGlwIGFkZHJlc3MKaWYgKCAhJEhvc3QgKSB7CiAgICAkSG9zdCA9ICcxMjcuMC4wLjEnOwp9CgojIHByZXBhcmUgd2Vic2VydmljZSBjb25maWcKbXkgJFJlbW90ZVN5c3RlbSA9CiAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0h0dHBUeXBlJykKICAgIC4gJzovLycKICAgIC4gJEhvc3QKICAgIC4gJy8nCiAgICAuICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKQogICAgLiAnL25waC1nZW5lcmljaW50ZXJmYWNlLnBsL1dlYnNlcnZpY2VJRC8nCiAgICAuICRXZWJzZXJ2aWNlSUQ7CgpteSAkV2Vic2VydmljZUNvbmZpZyA9IHsKCiAgICAjICAgIE5hbWUgPT4gJycsCiAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICdUZXN0IGZvciBDb25maWdJdGVtIENvbm5lY3RvciB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwXzAwMF8wMDAsCiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtVXBkYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdTZXNzaW9uOjpTZXNzaW9uQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5jb2RpbmcgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEludm9rZXIgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtVXBkYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAp9OwoKIyB1cGRhdGUgd2Vic2VydmljZSB3aXRoIHJlYWwgY29uZmlnCm15ICRXZWJzZXJ2aWNlVXBkYXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICBJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyAgPT4gJFdlYnNlcnZpY2VDb25maWcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VVcGRhdGUsCiAgICAiVXBkYXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQgLSAkV2Vic2VydmljZU5hbWUiLAopOwoKIyBkZWJ1Z2dlciBvYmplY3QKbXkgJERlYnVnZ2VyT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlci0+bmV3KAogICAgRGVidWdnZXJDb25maWcgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBXZWJzZXJ2aWNlSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgQ29tbXVuaWNhdGlvblR5cGUgPT4gJ1Byb3ZpZGVyJywKKTsKJFNlbGYtPklzKAogICAgcmVmICREZWJ1Z2dlck9iamVjdCwKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyJywKICAgICdEZWJ1Z2dlck9iamVjdCBpbnN0YW5jaWF0ZSBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklECiMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKbXkgJFJlcXVlc3RlclNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInLAogICAgcmVmICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgY3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdApteSAkVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwpteSAkUGFzc3dvcmQgPSAkVXNlckxvZ2luOwoKIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQpteSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdCA9ICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnU2Vzc2lvbkNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiA9PiAkVXNlckxvZ2luLAogICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICB9LAopOwoKbXkgJE5ld1Nlc3Npb25JRCA9ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0LT57RGF0YX0tPntTZXNzaW9uSUR9OwoKIyBjcmVhdGUgYSBuZXcgY29uZmlnIGl0ZW0gd2l0aCB0aGUgYmFzaWMgb3B0aW9ucwpteSAkQ29uZmlnSXRlbSA9IHsKICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICBOSUMgPT4gewogICAgICAgICAgICBOSUMgICAgICAgID0+ICdMbzAnLAogICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgfSwKICAgIH0sCn07CgojIGNyZWF0ZSBsb2NhbCBvYmplY3QKbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZS0+bmV3KAogICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKKTsKCiMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKbXkgJENyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiAgPT4gJFVzZXJMb2dpbiwKICAgICAgICBQYXNzd29yZCAgID0+ICRQYXNzd29yZCwKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgfSwKKTsKCm15ICRDb25maWdJdGVtSUQgPSAkQ3JlYXRlUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9IHx8ICcnOwoKJFNlbGYtPlRydWUoCiAgICAkQ29uZmlnSXRlbUlELAogICAgIkFkZGVkIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCAtICRDcmVhdGVSZXN1bHQtPntEYXRhfS0+e051bWJlcn0iLAopOwoKIyBhY3R1YWwgdGVzdHMKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdFbXB0eSBSZXF1ZXN0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWREYXRhICAgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IDEsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtSUQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENJWE1MRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOYW1lJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgRGVwbFN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBEZXBsU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5OSUMnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5JcE92ZXJESENQJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOSUMgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOSUMtPk5JQyBpbiBhcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+SXBPdmVyREhDUCBpbiBhcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgTklDLT5JcE92ZXJESENQIEdlbmVyYWwgQ2F0YWxvZyBpbiBIYXNoJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE5JQy0+SXBPdmVyREhDUCBHZW5lcmFsIENhdGFsb2cgaW4gQXJyYXkgSGFzaCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIFZlbmRvciBMb25nIFRleHQgJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ2EnIHggNTEsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlIERhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTkzMC0zMC0zMCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE93bmVyIEN1c3RvbWVyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgUmFtIFRvbyBNYW55JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgICAgICAgICAgNSwKICAgICAgICAgICAgICAgICAgICAgICAgNiwKICAgICAgICAgICAgICAgICAgICAgICAgNywKICAgICAgICAgICAgICAgICAgICAgICAgOCwKICAgICAgICAgICAgICAgICAgICAgICAgOSwKICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIDExLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIEF0dGFjaG1lbnQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+Q29udGVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+RmlsZW5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yICAgICAgICAgID0+ICdMZW5vdm8nLAogICAgICAgICAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICA9PiAnVGhpbmtwYWQgWDMwMCcsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdEZXNrdG9wJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBTZXJpYWxOdW1iZXIgICAgPT4gJ2FiYzEyMzQ1YWJjJywKICAgICAgICAgICAgICAgICAgICBPcGVyYXRpbmdTeXN0ZW0gPT4gJ0NlbnRPUyA2LjAnLAogICAgICAgICAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycsCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJzQwMDAnLAogICAgICAgICAgICAgICAgICAgICAgICAnMjAwMCcsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBIYXJkRGlzayA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhhcmREaXNrID0+ICcvZGV2JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gJzUwMDAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICAgICAgICAgIE5JQyAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzE5Mi4xNjguMzAuMScsCgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgICAgICAgICA9PiAnQVRJIFJhZGVvbiAzMDAnLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIEluc3RhbGxEYXRlICAgICAgICAgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE5vdGUgICAgICAgICAgICAgICAgICAgPT4gJ1RoaXMgaXMgYSBEZW1vIENJJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCik7CgojIHN0YXJ0IHRlc3RpbmcKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkUmVxdWVzdERhdGEgPSBkY2xvbmUoICRUZXN0LT57UmVxdWVzdERhdGF9ICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHJlc3RvcmUgY2xvbmVkIGRhdGEKICAgICRUZXN0LT57UmVxdWVzdERhdGF9ID0gJENsb25lZFJlcXVlc3REYXRhOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkTG9jYWxSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdAogICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICAgICByZWYgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFVwZGF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkTmV3U2Vzc2lvbklELAogICAgICAgICAgICAleyAkVGVzdC0+e1JlcXVlc3REYXRhfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBzdHJ1Y3R1cmUgaXMgdmFsaWQiLAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e1N1Y2Nlc3N9LAogICAgICAgICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHN1Y2Nlc3NmdWwgcmVzdWx0IiwKICAgICk7CgogICAgIyB0ZXN0cyBzdXBwb3NlZCB0byBzdWNjZWVkCiAgICBpZiAoICRUZXN0LT57U3VjY2Vzc1VwZGF0ZX0gKSB7CgogICAgICAgICMgbG9jYWwgcmVzdWx0cwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IENvbmZpZ0l0ZW1JRCB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e051bWJlcn0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBUcnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IEVycm9yIGlzIHVuZGVmaW5lZC4iLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBDb25maWdJdGVtIGVudHJ5IChmcm9tIGxvY2FsIHJlc3VsdCkKICAgICAgICBteSAkTG9jYWxWZXJzaW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoJExvY2FsVmVyc2lvbkRhdGEpLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGNyZWF0ZWQgbG9jYWwgdmVyc2lvbiBzdHJjdHVyZSB3aXRoIFRydWUuIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aGUgY29uZmlnIGl0ZW0gZW50cnkgKGZyb20gcmVxdWVzdGVyIHJlc3VsdCkKICAgICAgICBteSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgkUmVxdWVzdGVyVmVyc2lvbkRhdGEpLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGNyZWF0ZWQgcmVxdWVzdGVyIGNvbmZpZyBpdGVtIHN0cmN0dXJlIHdpdGggVHJ1ZS4iLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgY29uZmlnIGl0ZW0gYXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSB0ZXN0CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KE51bWJlciBDbGFzcyBOYW1lIEluY2lTdGF0ZSBEZXBsU3RhdGUgRGVwbFN0YXRlVHlwZSkpIHsKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAgICAgJExvY2FsVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBsb2NhbCBDb25maWdJdGVtLT4kQXR0cmlidXRlIiAuICIgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHRyYW5zZm9ybSBYTUwgZGF0YSB0byBhIGNvbXBhcmFibGUgZm9ybWF0CiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERlZmluaXRpb259OwoKICAgICAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIHJlc3VsdAogICAgICAgIG15ICRDbG9uZWRYTUxEYXRhID0gZGNsb25lKCAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERhdGF9ICk7CgogICAgICAgIG15ICRGb3JtYXRlZFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkludmVydEZvcm1hdFhNTERhdGEoCiAgICAgICAgICAgIFhNTERhdGEgPT4gJENsb25lZFhNTERhdGEtPlsxXS0+e1ZlcnNpb259LAogICAgICAgICk7CgogICAgICAgIG15ICRSZXBsYWNlZFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkludmVydFJlcGxhY2VYTUxEYXRhKAogICAgICAgICAgICBYTUxEYXRhICAgID0+ICRGb3JtYXRlZFhNTERhdGEsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgKTsKCiAgICAgICAgIyBjb21wYXJlIFhNTCBkYXRhCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkUmVwbGFjZWRYTUxEYXRhLAogICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57Q0lYTUxEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBsb2NhbCBDb25maWdJdGVtLT5DSVhNTERhdGEgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBhdHRhY2htZW50cwogICAgICAgIGlmICggZGVmaW5lZCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0F0dGFjaG1lbnR9ICkgewogICAgICAgICAgICBteSBAQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAQXR0YWNobWVudHM7CiAgICAgICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkRmlsZU5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkRmlsZU5hbWU7CgogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlTmFtZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBuZXh0IGlmIG5vdCBhdHRhY2htZW50CiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50KTsKCiAgICAgICAgICAgICAgICAjIGNvbnZlcnQgY29udGVudCB0byBiYXNlNjQKICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+e0NvbnRlbnR9LCAnJyApOwoKICAgICAgICAgICAgICAgICMgZGVsZXRlIG5vdCBuZWVkZWQgYXR0aWJ1dGVzCiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoUHJlZmVyZW5jZXMgRmlsZXNpemUgVHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEF0dGFjaG1lbnQtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRzLCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgQFJlcXVlc3RlZEF0dGFjaG1lbnRzOwogICAgICAgICAgICBpZiAoIHJlZiAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0F0dGFjaG1lbnR9IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJlcXVlc3RlZEF0dGFjaG1lbnRzLCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBAUmVxdWVzdGVkQXR0YWNobWVudHMgPSBAeyAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgIFxAUmVxdWVzdGVkQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGxvY2FsIENvbmZpZ0l0ZW0tPkF0dGFjaG1lbnQgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFZlcnNpb25EYXRhLAogICAgICAgICAgICAkUmVxdWVzdGVyVmVyc2lvbkRhdGEsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgY29uZmlnIGl0ZW0gcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRlc3RzIHN1cHBvc2VkIHRvIGZhaWwKICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgTnVtYmVyIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkRGF0YX0tPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yQ29kZSBtYXRjaGVkIHdpdGggZXhwZWN0ZWQgbG9jYWwgY2FsbCByZXN1bHQuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAnJywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgIC4gJzogJwogICAgICAgICAgICAgICAgLiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSAob3V0c2lkZSBEYXRhIGhhc2gpIG1hdGNoZWQgd2l0aCBjb25jYXRlbmF0aW9uIgogICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICApOwoKICAgICAgICAjIHJlbW92ZSBFcnJvck1lc3NhZ2UgcGFyYW1ldGVyIGZyb20gZGlyZWN0IGNhbGwKICAgICAgICAjIHJlc3VsdCB0byBiZSBjb25zaXN0ZW50IHdpdGggU09BUCBjYWxsIHJlc3VsdAogICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgZGVsZXRlICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX07CiAgICAgICAgfQoKICAgICAgICAjIHNhbml0eSBjaGVjawogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgLiAiIGxvY2FsIGFuZCByZW1vdGUgdGVzdHMuIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQp9CgojIGNsZWFuIHVwIGNvbmZpZyBpdGVtcwpteSAkQ29uZmlnSXRlbURlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiMgc2FuaXR5IGNoZWNrCiRTZWxmLT5UcnVlKAogICAgJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAiQ29uZmlnSXRlbURlbGV0ZSgpIHN1Y2Nlc3NmdWwgZm9yIENvbmZpZ0l0ZW0gSUQgJENvbmZpZ0l0ZW1JRCIsCik7CgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKb3VyICRTZWxmOwoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJERCT2JqZWN0ICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkVXNlck9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgY3JlYXRlIG5lZWRlZCB1c2VycwpteSBAVXNlcklEczsKewoKICAgICMgZGlzYWJsZSBlbWFpbCBjaGVja3MgdG8gY3JlYXRlIG5ldyB1c2VyCiAgICBteSAkQ2hlY2tFbWFpbEFkZHJlc3Nlc09yZyA9ICRDb25maWdPYmplY3QtPkdldCgnQ2hlY2tFbWFpbEFkZHJlc3NlcycpIHx8IDE7CiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgICAgIFZhbHVlID0+IDAsCiAgICApOwoKICAgIGZvciBteSAkQ291bnRlciAoIDEgLi4gMyApIHsKCiAgICAgICAgIyBjcmVhdGUgbmV3IHVzZXJzIGZvciB0aGUgdGVzdHMKICAgICAgICBteSAkVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJBZGQoCiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gJ0lUU01Db25maWdJdGVtJyAuICRDb3VudGVyLAogICAgICAgICAgICBVc2VyTGFzdG5hbWUgID0+ICdVbml0VGVzdCcsCiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgPT4gJ1VuaXRUZXN0LUlUU01Db25maWdJdGVtLScgLiAkQ291bnRlciAuICRSYW5kb21JRCwKICAgICAgICAgICAgVXNlckVtYWlsICAgICA9PiAnVW5pdFRlc3QtSVRTTUNvbmZpZ0l0ZW0tJyAuICRDb3VudGVyIC4gJ0Bsb2NhbGhvc3QnLAogICAgICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgICAgIENoYW5nZVVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBVc2VySURzLCAkVXNlcklEOwogICAgfQoKICAgICMgcmVzdG9yZSBvcmlnaW5hbCBlbWFpbCBjaGVjayBwYXJhbQogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgICAgICBWYWx1ZSA9PiAkQ2hlY2tFbWFpbEFkZHJlc3Nlc09yZywKICAgICk7Cn0KCm15ICRUZXN0SURTdWZmaXggPSAnVW5pdFRlc3QnIC4gJFJhbmRvbUlEOwpteSAkT3JkZXIgICAgICAgID0gMTAwMDA7CgpteSAlRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnMgPSAoCiAgICBUZXN0MSA9PiB7CiAgICAgICAgJ0RlZmF1bHRWYWx1ZScgPT4gJycsCiAgICAgICAgJ1JlZ0V4TGlzdCcgICAgPT4gW10sCiAgICAgICAgJ011bHRpVmFsdWUnICAgPT4gJzAnLAogICAgICAgICdMaW5rJyAgICAgICAgID0+ICcnLAogICAgICAgICdUb29sdGlwJyAgICAgID0+ICcnLAogICAgICAgICdMaW5rUHJldmlldycgID0+ICcnLAogICAgICAgICdGaWVsZFR5cGUnICAgID0+ICdUZXh0JwogICAgfSwKICAgIFRlc3QyID0+IHsKICAgICAgICAnTGluaycgICAgICAgICAgICAgICA9PiAnJywKICAgICAgICAnVG9vbHRpcCcgICAgICAgICAgICA9PiAnJywKICAgICAgICAnUG9zc2libGVOb25lJyAgICAgICA9PiAnMScsCiAgICAgICAgJ011bHRpVmFsdWUnICAgICAgICAgPT4gJzEnLAogICAgICAgICdEZWZhdWx0VmFsdWUnICAgICAgID0+ICcnLAogICAgICAgICdUcmFuc2xhdGFibGVWYWx1ZXMnID0+ICcwJywKICAgICAgICAnUG9zc2libGVWYWx1ZXMnICAgICA9PiB7CiAgICAgICAgICAgICdWQUxVRSAxJyA9PiAnVkFMVUUgMScsCiAgICAgICAgICAgICdWQUxVRSAyJyA9PiAnVkFMVUUgMicKICAgICAgICB9LAogICAgICAgICdUcmVlVmlldycgICAgPT4gJzEnLAogICAgICAgICdMaW5rUHJldmlldycgPT4gJycsCiAgICAgICAgJ0ZpZWxkVHlwZScgICA9PiAnRHJvcGRvd24nCiAgICB9LAogICAgVGVzdDMgPT4gewogICAgICAgICdZZWFyc0luRnV0dXJlJyAgID0+ICc1JywKICAgICAgICAnRGF0ZVJlc3RyaWN0aW9uJyA9PiAnJywKICAgICAgICAnWWVhcnNQZXJpb2QnICAgICA9PiAnMCcsCiAgICAgICAgJ0xpbmtQcmV2aWV3JyAgICAgPT4gJycsCiAgICAgICAgJ1llYXJzSW5QYXN0JyAgICAgPT4gJzUnLAogICAgICAgICdNdWx0aVZhbHVlJyAgICAgID0+ICcwJywKICAgICAgICAnRGVmYXVsdFZhbHVlJyAgICA9PiAwLAogICAgICAgICdMaW5rJyAgICAgICAgICAgID0+ICcnLAogICAgICAgICdUb29sdGlwJyAgICAgICAgID0+ICcnLAogICAgICAgICdGaWVsZFR5cGUnICAgICAgID0+ICdEYXRlJwogICAgfSwKICAgIFRlc3Q0ID0+IHsKICAgICAgICAnQ29scycgICAgICAgICA9PiAnJywKICAgICAgICAnUm93cycgICAgICAgICA9PiAnJywKICAgICAgICAnRGVmYXVsdFZhbHVlJyA9PiAnJywKICAgICAgICAnUmVnRXhMaXN0JyAgICA9PiBbXSwKICAgICAgICAnTXVsdGlWYWx1ZScgICA9PiAnMCcsCiAgICAgICAgJ1Rvb2x0aXAnICAgICAgPT4gJycsCiAgICAgICAgJ0ZpZWxkVHlwZScgICAgPT4gJ1RleHRBcmVhJwogICAgfSwKICAgIFRlc3Q1ID0+IHsKICAgICAgICAnWWVhcnNJbkZ1dHVyZScgICA9PiAnNScsCiAgICAgICAgJ0RhdGVSZXN0cmljdGlvbicgPT4gJycsCiAgICAgICAgJ1llYXJzUGVyaW9kJyAgICAgPT4gJzAnLAogICAgICAgICdMaW5rUHJldmlldycgICAgID0+ICcnLAogICAgICAgICdZZWFyc0luUGFzdCcgICAgID0+ICc1JywKICAgICAgICAnTXVsdGlWYWx1ZScgICAgICA9PiAnMCcsCiAgICAgICAgJ0RlZmF1bHRWYWx1ZScgICAgPT4gMCwKICAgICAgICAnTGluaycgICAgICAgICAgICA9PiAnJywKICAgICAgICAnVG9vbHRpcCcgICAgICAgICA9PiAnJywKICAgICAgICAnRmllbGRUeXBlJyAgICAgICA9PiAnRGF0ZVRpbWUnCiAgICB9LAopOwoKIyBBZGQgZHluYW1pYyBmaWVsZHMgZm9yIHRlc3RpbmcuIFRoZXNlIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgcmVmZXJlbmNlZAojIGJ5IG5hbWUgaW4gZHluYW1pYyBmaWVsZCBkZWZpbml0aW9ucy4KZm9yIG15ICROYW1lICggc29ydCBrZXlzICVEeW5hbWljRmllbGREZWZpbml0aW9ucyApIHsKICAgIG15ICRERk5hbWUgPSAkTmFtZSAuICRUZXN0SURTdWZmaXg7CiAgICBteSAkSXRlbUlEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBOYW1lICAgICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAkREZOYW1lLAogICAgICAgIEZpZWxkT3JkZXIgICAgPT4gJE9yZGVyKyssCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LT57RmllbGRUeXBlfSwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LAogICAgICAgIFJlb3JkZXIgICAgICAgPT4gMSwKICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkSXRlbUlELCAiY3JlYXRlZCBkeW5hbWljIGZpZWxkICRERk5hbWUiICk7Cn0KCm15IEBDb25maWdJdGVtUGVybERlZmluaXRpb25zOwoKIyBkZWZpbmUgdGhlIGZpcnN0IHRlc3QgZGVmaW5pdGlvbiAoYmFzaWMgZGVmaW5pdGlvbiB3aXRob3V0IER5bmFtaWNGaWVsZHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzBdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QxJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QyJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlY3Rpb24yID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QzJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q0JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAp9CiI7CgojIGRlZmluZSB0aGUgc2Vjb25kIHRlc3QgZGVmaW5pdGlvbiAoZGVmaW5pdGlvbiB3aXRoIER5bmFtaWNGaWVsZHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzFdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgU2VjdGlvbnMgPT4gewogICAgICAgICAgICBTZWN0aW9uMSA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdUZXN0MSRUZXN0SURTdWZmaXgnCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdUZXN0MiRUZXN0SURTdWZmaXgnCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKfQoiOwoKIyBkZWZpbmUgdGhlIHRoaXJkIHRlc3QgZGVmaW5pdGlvbiAoZXNwZWNpYWxseSBmb3Igc2VhcmNoIHRlc3RzIHdpdGggWE1MRGF0YSkKJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMl0gPSAiCnsKICAgICAgICBQYWdlcyAgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50JywKICAgICAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA9PiAyLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnIgMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24yJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMiwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDEkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDIkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VjdGlvbjIgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDMkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDQkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIH0sCn0KIjsKCiMgZGVmaW5lIHRoZSBmb3VydGggdGVzdCBkZWZpbml0aW9uIChvbmx5IGZvciBzZWFyY2ggdGVzdHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzNdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QxJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QyJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlY3Rpb24yID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QzJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q0JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAp9CiI7CgojIGRlZmluZSB0aGUgZmlmdGggdGVzdCBkZWZpbml0aW9uIChvbmx5IGZvciBzZWFyY2ggdGVzdHMpCgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1s0XSA9ICIKewogICAgICAgIFBhZ2VzICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q1JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgIH0sCn0KIjsKCiMgZGVmaW5lIHRoZSBzaXh0aCB0ZXN0IGRlZmluaXRpb24gKG9ubHkgZm9yIHNlYXJjaCB0ZXN0cykKCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzVdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDEkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDQkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAp9CiI7CgpteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgpteSBAQ29uZmlnSXRlbURlZmluaXRpb25zOwpmb3IgbXkgJFBlcmxEZWZpbml0aW9uIChAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucykgewogICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgRGF0YSA9PiBldmFsICRQZXJsRGVmaW5pdGlvbiwgICAgIyMgbm8gY3JpdGljIHF3KEJ1aWx0aW5GdW5jdGlvbnM6OlByb2hpYml0U3RyaW5neUV2YWwpCiAgICApOwogICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25zLCAkWUFNTERlZmluaXRpb247Cn0KCiMgYWRkIGEgZ2VuZXJhbCBjYXRhbG9nIHRlc3QgbGlzdApteSAkQ29uZmlnSXRlbUdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBhZGQgdGhlIHRlc3QgY2xhc3NlcwpteSBAQ29uZmlnSXRlbUNsYXNzSURzOwpteSBAQ29uZmlnSXRlbUNsYXNzZXM7Cm15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKZm9yIG15ICREZWZpbml0aW9uIChAQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBpZAogICAgaWYgKCAhJENsYXNzSUQgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiQ2FuJ3QgYWRkIG5ldyBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgICAgICk7CiAgICB9CgogICAgIyBTZXQgcGVybWlzc2lvbi4KICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCiAgICApOwoKICAgICMgU2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZS4KICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXJzLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25UcmlnZ2VyJywKICAgICAgICBWYWx1ZSAgPT4gWyAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcgXSwKICAgICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ2xhc3NJRDsKICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc2VzLCAgJENsYXNzTmFtZTsKCiAgICAjIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFJlc3VsdC0+e1N1Y2Nlc3N9LCAgICAgICdhZGRlZCBuZXcgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbicgKTsKICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgJ2dvdCBhIGRlZmluaXRpb24gSUQnICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMsICRSZXN1bHQtPntEZWZpbml0aW9uSUR9Owp9CgojIHRlc3QgRGVmaW5pdGlvbkxpc3QgZm9yIHRob3NlIHNpbXBsZSBjYXNlcwpteSAkQ291bnRlciA9IDA7CmZvciBteSAkQ2xhc3NJRCAoQENvbmZpZ0l0ZW1DbGFzc0lEcykgewogICAgbXkgJERlZmluaXRpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25MaXN0KAogICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICApOwoKICAgICMgZXhwZWN0IGEgc2luZ2xlIGRlZmluaXRpb24gcGVyIGNvbmZpZyBpdGVtIGNsYXNzCiAgICAkU2VsZi0+SXMoCiAgICAgICAgc2NhbGFyIEB7JERlZmluaXRpb25MaXN0UmVmfSwKICAgICAgICAxLAogICAgICAgICJEZWZpbml0aW9uTGlzdCgpIGZvciBjbGFzcyBpZCAkQ2xhc3NJRDogZ290IGEgc2luZ2xlIHJlc3VsdCIsCiAgICApOwoKICAgICMgZXhwZWN0IHRoZSByZW1lbWJlcmVkIGRlZmluaXRpb24gaWQgaW4gdGhlIGZpcnN0IGRlZmluaXRpb24KICAgICRTZWxmLT5JcygKICAgICAgICAkRGVmaW5pdGlvbkxpc3RSZWYtPlswXS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWyRDb3VudGVyXSwKICAgICAgICAiRGVmaW5pdGlvbkxpc3QoKSBmb3IgY2xhc3MgaWQgJENsYXNzSUQ6IGdvdCBleHBlY3RlZCBkZWZpbml0aW9uIGlkIiwKICAgICk7CgogICAgJENvdW50ZXIrKzsKfQoKIyBjcmVhdGUgc29tZSByYW5kb20gbnVtYmVycwpteSBAQ29uZmlnSXRlbU51bWJlcnM7CmZvciAoIDEgLi4gMTAwICkgewogICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRIZWxwZXItPkdldFJhbmRvbU51bWJlcigpOwp9CgojIGdldCBjbGFzcyBsaXN0Cm15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKKTsKCiMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdApteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJURlcGxTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKCiMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKbXkgJEluY2lTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAopOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIGRlZmluZSBnZW5lcmFsIGNvbmZpZyBpdGVtIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRDb25maWdJdGVtVGVzdHMgPSBbCgogICAgI0NvbmZpZ0l0ZW1BZGQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIENvbmZpZ0l0ZW1BZGQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChjaGVjayByZXR1cm4gZmFsc2UpCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWy0xXSArIDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgY29uZmlnIGl0ZW0gdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgcmV0dXJuZWQgY29uZmlnIGl0ZW0gdmFsdWVzKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSAxIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgY29uZmlnIGl0ZW0gdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgbnVtYmVyIGF0dHJpYnV0ZSkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gMiIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIHdpdGggdGhpcyBudW1iZXIgYWxyZWFkeSBleGlzdHMgKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gMyIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIGNvbmZpZyBpdGVtIHZhbHVlcyBhcmUgZ2l2ZW4gcGx1cyBub3QgZGVmaW5lZCBEeW5hbWljRmllbGRzCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzM1XSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSAzNSIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1szNV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBDb25maWdJdGVtVXBkYXRlIGRvZXNuJ3QgY29udGFpbnMgYWxsIGRhdGEgKGNoZWNrIHJlcXVpcmVkIGF0dHJpYnV0ZXMpIChNaXNzaW5nIFVzZXJJRCkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgSW52YWxpZCBkZXBsb3ltZW50IHN0YXRlIGlkIGlzIGdpdmVuIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSA1IiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtVXBkYXRlID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIDUiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgSW52YWxpZCBpbmNpZGVudCBzdGF0ZSBpZCBpcyBnaXZlbiAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNiIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChnZW5lcmFsIGNoZWNrIHdpdGggdHdvIHZlcnNpb25zKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSA3IiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDkgVmVyc2lvbiAyIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIDgiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1BsYW5uZWR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMTBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIENvbmZpZ0l0ZW0gMTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQbGFubmVkJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcmVwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMTBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGQgY29uZmlnIGl0ZW0gb25seSBmb3IgbGF0ZXIgc2VhcmNoIHRlc3RzCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0gLSA1MCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSBDb25maWdJdGVtIDUwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFkZCBjb25maWcgaXRlbSBvbmx5IGZvciBsYXRlciBzZWFyY2ggdGVzdHMKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gfSAtIDUxIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDIiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTEgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSBDb25maWdJdGVtIDUxIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWRkIGNvbmZpZyBpdGVtIG9ubHkgZm9yIGxhdGVyIHNlYXJjaCB0ZXN0cywgaW5jbHVkaW5nIER5bmFtaWNGaWVsZERhdGEKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0gfSAtIDUzIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzVdIENvbmZpZ0l0ZW0gNTMgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDEkVGVzdElEU3VmZml4IiA9PiAnVGVzdCB2YWx1ZSBmb3IgdGV4dCBmaWVsZCBUZXN0MScsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1s1XSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzVdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzVdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1s1XSBDb25maWdJdGVtIDUzIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1s1XSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDQkVGVzdElEU3VmZml4IiA9PiAnVGVzdCB2YWx1ZSBmb3IgdGV4dCBhcmVhIGZpZWxkIFRlc3Q0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGQgY29uZmlnIGl0ZW0gb25seSBmb3IgbGF0ZXIgc2VhcmNoIHRlc3RzLCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkRGF0YQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9IC0gNTIiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTIgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDIkVGVzdElEU3VmZml4IiA9PiBbICdWQUxVRTEnLCAnVkFMVUUyJyBdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wOS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTIgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzJdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgICAgICAgICAgICAgICAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgICAgICAgICAgICAgICAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDIkVGVzdElEU3VmZml4IiA9PiBbICdWQUxVRTEnLCAnVkFMVUUyJyBdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wOS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFkZCBjb25maWcgaXRlbSBvbmx5IGZvciBsYXRlciBzZWFyY2ggdGVzdHMsIGluY2x1ZGluZyBEeW5hbWljRmllbGREYXRhCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzgwXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzRdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzRdIH0gLSA4MCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbNF0gQ29uZmlnSXRlbSA4MCBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDUkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wMS0wMSAxMjowMDowMCcKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbNF0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1s0XSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbODBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzRdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1s0XSBDb25maWdJdGVtIDgwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1s0XSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NSRUZXN0SURTdWZmaXgiID0+ICcyMDIzLTAxLTAxIDEyOjAwOjAwJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjYWRkIGNvbmZpZyBpdGVtIG9ubHkgZm9yIGxhdGVyIHNlYXJjaCB0ZXN0cwogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSB9IC0gNjAiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbM10gQ29uZmlnSXRlbSA2MCBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBDb25maWdJdGVtIDYwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbM10sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCB0byBjaGVjayBoaXN0b3J5IGZ1bmN0aW9ucwogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNzAiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSGlzdG9yeVRlc3QnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdVbml0VGVzdCAtIEhpc3RvcnlUZXN0IFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBIaXN0b3J5VGVzdCcsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UGxhbm5lZH0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUGxhbm5lZCcsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJlcHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcwXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEhpc3RvcnlUZXN0IFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEhpc3RvcnlHZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ1ZlcnNpb25DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNiwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ1ZlcnNpb25DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNiwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ05hbWVVcGRhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnVmVyc2lvbkNyZWF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiA2LAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnSW5jaWRlbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMCwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ05hbWVVcGRhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnNDE5NgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MV0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIEJ1Z2ZpeDQxOTYiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1BsYW5uZWR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NiBWMicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzFdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MV0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0MTk2JywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQbGFubmVkJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcmVwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzFdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NiBWMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnIDQzNzcgLSBDSS1BCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcyXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSBCdWcgNDM3NyAtIENJLUEiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnIDQzNzcgLSBDSS1CCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzczXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSBCdWcgNDM3NyAtIENJLUIiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUInLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUInLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgpdOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHJ1biBnZW5lcmFsIGNvbmZpZyBpdGVtIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRUZXN0Q291bnQgPSAxOwpteSBAQ29uZmlnSXRlbUlEczsKClRFU1Q6CmZvciBteSAkVGVzdCAoIEB7JENvbmZpZ0l0ZW1UZXN0c30gKSB7CgogICAgIyBjaGVjayBTb3VyY2VEYXRhIGF0dHJpYnV0ZQogICAgaWYgKCAhJFRlc3QtPntTb3VyY2VEYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VEYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBObyBTb3VyY2VEYXRhIGZvdW5kIGZvciB0aGlzIHRlc3QuIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgIyBleHRyYWN0IHNvdXJjZSBkYXRhCiAgICBteSAkU291cmNlRGF0YSA9ICRUZXN0LT57U291cmNlRGF0YX07CgogICAgIyBhZGQgYSBuZXcgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICBpZiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbUFkZH0gKSB7CgogICAgICAgICMgYWRkIHRoZSBuZXcgY29uZmlnIGl0ZW0KICAgICAgICAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICV7ICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbUFkZH0gfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbQogICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICYmICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fSApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IENvbmZpZ0l0ZW1BZGQoKSAtIEFkZCBuZXcgY29uZmlnIGl0ZW0uIEluc2VydCBzdWNjZXNzLiIsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUIGlmICEkQ29uZmlnSXRlbUlEOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUFkZCgpIC0gQWRkIG5ldyBjb25maWcgaXRlbS4gUmV0dXJuIGZhbHNlLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFkZCBhbGwgZGVmaW5lZCB2ZXJzaW9ucwogICAgbXkgQFZlcnNpb25JRHM7CiAgICBteSAlVmVyc2lvbklEc1NlZW47CiAgICBpZiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbVVwZGF0ZX0gKSB7CgogICAgICAgIGZvciBteSAkVmVyc2lvbiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbVVwZGF0ZX0tPkAqICkgewoKICAgICAgICAgICAgaWYgKCRDb25maWdJdGVtSUQpIHsKICAgICAgICAgICAgICAgICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSA9ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHRoZSBsYXN0IHZlcnNpb24gaWQgYmVmb3JlIENvbmZpZ0l0ZW1VcGRhdGUKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbklEID0gJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICV7JFZlcnNpb259LAogICAgICAgICAgICAgICAgRm9yY2VBZGQgPT4gMQogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIGxhc3QgdmVyc2lvbiBpZCBhZnRlciBDb25maWdJdGVtVXBkYXRlCiAgICAgICAgICAgICRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICBpZiAoICRWZXJzaW9uSUQgbmUgJExhc3RWZXJzaW9uSUQgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBWZXJzaW9uSURzLCAkVmVyc2lvbklEIGlmICEkVmVyc2lvbklEc1NlZW57JFZlcnNpb25JRH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW1EYXRhOwogICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICYmICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fSApIHsKCiAgICAgICAgIyBnZXQgdGhlIGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAkQ29uZmlnSXRlbURhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1EYXRhICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldCgpIC0gZ2V0IGNvbmZpZyBpdGVtIGRhdGEuIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBhbGwgY29uZmlnIGl0ZW0gYXR0cmlidXRlcwogICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57Q29uZmlnSXRlbUdldH0gfSApIHsKCiAgICAgICAgICAgICMgc2V0IGNvbnRlbnQgaWYgdmFsdWVzIGFyZSB1bmRlZgogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRDb25maWdJdGVtRGF0YS0+eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EYXRhLT57JEF0dHJpYnV0ZX0gPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0NvbmZpZ0l0ZW1HZXR9LT57JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57Q29uZmlnSXRlbUdldH0tPnskQXR0cmlidXRlfSA9ICdVTkRFRi11bml0dGVzdCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgYXR0cmlidXRlcwogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbURhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldCgpIC0gJEF0dHJpYnV0ZSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSB2ZXJzaW9ucwogICAgaWYgKAogICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0KICAgICAgICAmJiAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0KICAgICAgICAmJiBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0gfQogICAgICAgICkKICAgIHsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQFZlcnNpb25JRHMsCiAgICAgICAgICAgIHNjYWxhciBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0gfSwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbVVwZGF0ZSgpIC0gY29ycmVjdCBudW1iZXIgb2YgdmVyc2lvbnMiLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVCBpZiAhJENvbmZpZ0l0ZW1JRDsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgIHNjYWxhciBAVmVyc2lvbklEcywKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkFkZCgpIC0gbm8gdmVyc2lvbnMgZXhpdHMiLAogICAgICAgICk7CiAgICB9CgogICAgbmV4dCBURVNUIHVubGVzcyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9OwogICAgbmV4dCBURVNUIHVubGVzcyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH07CgogICAgbXkgJENvdW50ZXIgICAgICAgICAgID0gMDsKICAgIG15ICRMYXN0VmVyc2lvbklETXVzdCA9ICdVTkRFRi11bml0dGVzdCc7CgogICAgIyBSZWZyZXNoIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCBjYWNoZSB0byBhdm9pZCBpc3N1ZXMgd2l0aCBwcmV2aW91c2x5IGNhY2hlZCB2YWx1ZXMuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQnLAogICAgKTsKCiAgICBWRVJTSU9OSUQ6CiAgICBmb3IgbXkgJFZlcnNpb25JRCAoQFZlcnNpb25JRHMpIHsKCiAgICAgICAgIyBnZXQgdGhpcyB2ZXJzaW9uCiAgICAgICAgbXkgJFZlcnNpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFZlcnNpb25EYXRhICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldChWZXJzaW9uIEdldCkgLSBnZXQgdmVyc2lvbiBkYXRhLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVkVSU0lPTklEOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIGxhc3QgdmVyc2lvbiBpZAogICAgICAgICRMYXN0VmVyc2lvbklETXVzdCA9ICRWZXJzaW9uRGF0YS0+e1ZlcnNpb25JRH07CgogICAgICAgICMgY2hlY2sgYWxsIHZlcnNpb24gYXR0cmlidXRlcwogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICV7ICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntWZXJzaW9uR2V0fS0+WyRDb3VudGVyXSB9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBuZWVkZWQgYXR0cmlidXRlcwogICAgICAgICAgICBteSAkVmVyc2lvbkF0dHJpYnV0ZSAgID0gJFZlcnNpb25EYXRhLT57JEF0dHJpYnV0ZX07CiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VBdHRyaWJ1dGUgPSAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0tPlskQ291bnRlcl0tPnskQXR0cmlidXRlfTsKCiAgICAgICAgICAgICMgc2V0IGNvbnRlbnQgaWYgdmFsdWVzIGFyZSB1bmRlZgogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRWZXJzaW9uQXR0cmlidXRlICkgewogICAgICAgICAgICAgICAgJFZlcnNpb25BdHRyaWJ1dGUgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFJlZmVyZW5jZUF0dHJpYnV0ZSApIHsKICAgICAgICAgICAgICAgICRSZWZlcmVuY2VBdHRyaWJ1dGUgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGF0dHJpYnV0ZXMKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgJFZlcnNpb25BdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAkUmVmZXJlbmNlQXR0cmlidXRlLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldChWZXJzaW9uIEdldCkgLSAkQXR0cmlidXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgIyBwcmVwYXJlIGxhc3QgdmVyc2lvbiBpZAogICAgbXkgJExhc3RWZXJzaW9uSURBY3R1YWwgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgaWYgKCAkQ29uZmlnSXRlbURhdGEtPntMYXN0VmVyc2lvbklEfSApIHsKICAgICAgICAkTGFzdFZlcnNpb25JREFjdHVhbCA9ICRDb25maWdJdGVtRGF0YS0+e0xhc3RWZXJzaW9uSUR9OwogICAgfQoKICAgICMgY2hlY2sgbGFzdCB2ZXJzaW9uIGlkCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgJExhc3RWZXJzaW9uSURNdXN0LAogICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IGxhc3QgdmVyc2lvbiBpZCBpZGVudGljYWwiLAogICAgKTsKCiAgICAjIGNoZWNrIGhpc3RvcnkgZW50cmllcwogICAgaWYgKAogICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0KICAgICAgICAmJiAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0KICAgICAgICAmJiBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0gfQogICAgICAgICkKICAgIHsKICAgICAgICBteSAkQ29tcGxldGVIaXN0b3J5ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbnIgb2YgaGlzdG9yeSBlbnRyaWVzCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0hpc3RvcnlHZXR9IH0sCiAgICAgICAgICAgIHNjYWxhciBAeyRDb21wbGV0ZUhpc3Rvcnl9LAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBuciBvZiBoaXN0b3J5IGVudHJpZXMiLAogICAgICAgICk7CgogICAgICAgICMgQ0hFQ0tOUjogZm9yIG15ICRDaGVja05yICggMCAuLiAkI3skQ29tcGxldGVIaXN0b3J5fSApIHsKICAgICAgICAjICAgICBteSAkQ2hlY2sgPSAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0tPlskQ2hlY2tOcl07CiAgICAgICAgIyAgICAgbXkgJERhdGEgID0gJENvbXBsZXRlSGlzdG9yeS0+WyRDaGVja05yXTsKCiAgICAgICAgIyAgICAgbmV4dCBDSEVDS05SIGlmICEoICRDaGVjayAmJiAkRGF0YSApOwoKICAgICAgICAjICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRDaGVja30gKSB7CgogICAgICAgICMgICAgICAgICAjIGNoZWNrIGhpc3RvcnkgZGF0YQogICAgICAgICMgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgIyAgICAgICAgICAgICAkQ2hlY2stPnskS2V5fSwKICAgICAgICAjICAgICAgICAgICAgICREYXRhLT57JEtleX0sCiAgICAgICAgIyAgICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiAkS2V5IiwKICAgICAgICAjICAgICAgICAgKTsKICAgICAgICAjICAgICB9CiAgICAgICAgIyB9CiAgICB9Cn0KY29udGludWUgewogICAgJFRlc3RDb3VudCsrOwp9CgojIEZvbGxvd2luZyBzZWN0aW9uIGlzIHBlbmRpbmcgZm9yIGNoZWNrIGFmdGVyIG5vcm1hbGl6ZSBkZQojIEluY2lkZW50IHJlY2FsY3VsYXRpb24gZnVuY2lvbgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZm9yIGJ1Z2ZpeCA0Mzc3CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgewoKIyAgICAgbXkgJENJMSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAojICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAojICAgICApOwoKIyAgICAgbXkgJENJMiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAojICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAojICAgICApOwoKIyAgICAgIyBsaW5rIHRoZSBDSSB3aXRoIGEgQ0kKIyAgICAgbXkgJExpbmtSZXN1bHQgPSAkTGlua09iamVjdC0+TGlua0FkZCgKIyAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAojICAgICAgICAgU291cmNlS2V5ICAgID0+ICRDSTEsCiMgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKIyAgICAgICAgIFRhcmdldEtleSAgICA9PiAkQ0kyLAojICAgICAgICAgVHlwZSAgICAgICAgID0+ICdEZXBlbmRzT24nLAojICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgdXBkYXRlIGluY2lkZW50IHN0YXRlIG9mIENJMQojICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0Mzc3IC0gQ0ktQScsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yICRDSTEgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMQojICAgICBteSAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMSBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTEiLAojICAgICApOwoKIyAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZvciBDSTIKIyAgICAgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kyLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgaXMgJ1dhcm5pbmcnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdXYXJuaW5nJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMiIsCiMgICAgICk7CgojICAgICAjIHVwZGF0ZSBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgdG8gJ0luY2lkZW50JwojICAgICAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMiwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0Mzc3IC0gQ0ktQicsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yIENJICRDSTIgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMgojICAgICAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTIsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMiBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTIiLAojICAgICApOwoKIyAgICAgIyB1cGRhdGUgaW5jaWRlbnQgc3RhdGUgb2YgQ0kxIHRvICdPcGVyYXRpb25hbCcKIyAgICAgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAojICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKIyAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAojICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIHZlcnNpb24gY291bGQgYmUgYWRkZWQKIyAgICAgJFNlbGYtPlRydWUoCiMgICAgICAgICAkVmVyc2lvbklELAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkFkZCgpIGZvciBDSSAkQ0kxIC0gU2V0IHRvICdPcGVyYXRpb25hbCciLAojICAgICApOwoKIyAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZvciBDSTEKIyAgICAgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kxLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBvZiBDSTEgaXMgJ1dhcm5pbmcnIChiZWNhdXNlIG9mIGxpbmtlZCBDSTIgaW4gc3RhdGUgJ2luY2lkZW50JykKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ1dhcm5pbmcnLAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiBDSSAkQ0kxIiwKIyAgICAgKTsKCiMgICAgICMgdXBkYXRlIGluY2lkZW50IHN0YXRlIG9mIENJMiB0byAnT3BlcmF0aW9uYWwnCiMgICAgICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kyLAojICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIEJ1Z2ZpeDQzNzcgLSBDSS1CJywKIyAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiMgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKIyAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiB2ZXJzaW9uIGNvdWxkIGJlIGFkZGVkCiMgICAgICRTZWxmLT5UcnVlKAojICAgICAgICAgJFZlcnNpb25JRCwKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IFZlcnNpb25BZGQoKSBmb3IgQ0kgJENJMiAtIFNldCB0byAnT3BlcmF0aW9uYWwnIiwKIyAgICAgKTsKCiMgICAgICMgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmb3IgQ0kxCiMgICAgICRWZXJzaW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgaW5jaWRlbnQgc3RhdGUgb2YgQ0kxIGlzICdPcGVyYXRpb25hbCcKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ09wZXJhdGlvbmFsJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMSIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMgojICAgICAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTIsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMiBpcyAnV2FybmluZycKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ09wZXJhdGlvbmFsJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMiIsCiMgICAgICk7CgojICAgICAjIGluY3JlYXNlIHRoZSB0ZXN0IGNvdW50ZXIKIyAgICAgJFRlc3RDb3VudCsrOwojIH0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGZvciBidWdmaXggMTAzNTYKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyB7CgojICAgICBteSAkQ0kxID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiMgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1s3Ml0sCiMgICAgICk7CgojICAgICAjIGFkZCBhIHZlcnNpb24sIHNldCBpbmNpZGVudCBzdGF0ZSB0byBpbmNpZGVudAojICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXgxMDM1NicsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yICRDSTEgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMQojICAgICBteSAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMSBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTEiLAojICAgICApOwoKIyAgICAgIyBkZWxldGUgdGhlIGxhc3QgdmVyc2lvbgojICAgICBteSAkVmVyc2lvbkRlbGV0ZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKIyAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvblJlZi0+e1ZlcnNpb25JRH0sCiMgICAgICAgICBVc2VySUQgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBkZWxldGVkCiMgICAgICRTZWxmLT5UcnVlKAojICAgICAgICAgJFZlcnNpb25EZWxldGVTdWNjZXNzLAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkRlbGV0ZSgpIGZvciAkQ0kxJyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgaGlzdG9yeQojICAgICBteSAkSGlzdG9yeVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5R2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICBteSAkTGFzdEhpc3RvcnlFbnRyeSA9IHBvcCBAeyRIaXN0b3J5UmVmfTsKCiMgICAgICMgY2hlY2sgaWYgbGFzdCBoaXN0b3J5IGVudHJ5IGhhcyB0aGUgY29ycmVjdCBoaXN0b3J5IHR5cGUKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJExhc3RIaXN0b3J5RW50cnktPntIaXN0b3J5VHlwZX0sCiMgICAgICAgICAnVmVyc2lvbkRlbGV0ZScsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBIaXN0b3J5VHlwZSBvZiBsYXN0IHZlcnNpb24gb2YgQ0kgJENJMSIsCiMgICAgICk7CgojICAgICAjIGluY3JlYXNlIHRoZSB0ZXN0IGNvdW50ZXIKIyAgICAgJFRlc3RDb3VudCsrOwojIH0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBkZWZpbmUgZ2VuZXJhbCBjb25maWcgaXRlbSBzZWFyY2ggdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKbXkgQFNlYXJjaFRlc3RzID0gKAoKICAgICMgc2VhcmNoIEFMTCBjb25maWcgaXRlbXMgaW4gdGhlIHR3byB0ZXN0IGNsYXNzZXMKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBudW1iZXIgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG51bWJlciBwYXJhbSB3aXRoIHdpbGRjYXJkcwogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE51bWJlciA9PiAnJScgLiAkQ29uZmlnSXRlbU51bWJlcnNbNTBdIC4gJyUnLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbnVtYmVyIHBhcmFtIHdpdGggd2lsZGNhcmRzIGJ1dCB3aXRoIGludmFsaWQgQ29uZmlnSXRlbSBudW1iZXIKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOdW1iZXIgPT4gJyVkdW1teW5hbWUlJywKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0gaW4gY29tYmluYXRpb24gb2YgdGhlIGNsYXNzIGlkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBSZXN1bHQgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgI3Rlc3QgdGhlIGluY2lkZW50IHN0YXRlIHBhcmFtIGluIGNvbWJpbmF0aW9uIG9mIHRoZSBjbGFzcyBpZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgSW5jaVN0YXRlSURzID0+IFsgJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSBdLAogICAgICAgICAgICBSZXN1bHQgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICN0ZXN0IHRoZSBpbmNpZGVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0gaW4gY29tYmluYXRpb24gb2YgdGhlIGNsYXNzIGlkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBJbmNpU3RhdGVJRHMgPT4gWwogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFJlc3VsdCAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDEwMCwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAzLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICBPcmRlckJ5ICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDIsCiAgICAgICAgICAgIFJlc3VsdCAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgID0+ICdVcCcKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbGltaXQgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgTGltaXQgICAgPT4gMSwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAwLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICBPcmRlckJ5ICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjc2VhcmNoIEFMTCBjb25maWcgaXRlbXMgaW4gdGhlIHR3byB0ZXN0IGNsYXNzZXMgdXNpbmcgdGhlIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG5hbWUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOYW1lICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgbmFtZSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MiBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbmFtZSBwYXJhbSB3aXRoIGFuIHdpbGRjYXJkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ1VuaXRUZXN0IC0gKiAxJywKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG5hbWUgcGFyYW0gd2l0aCBhbiB3aWxkY2FyZCBhbmQgYSBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSAqIDEnLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBuYW1lIHBhcmFtIHdpdGggd2lsZGNhcmRzCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSoiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbmFtZSBwYXJhbSB3aXRoIHdpbGRjYXJkcyBidXQgd2l0aCBkZWFjdGl2YXRlZCB3aWxkY2FyZCBmZWF0dXJlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSoiLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgVXNpbmdXaWxkY2FyZHMgPT4gMCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbGFzdCB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgUHJldmlvdXNWZXJzaW9uU2VhcmNoIHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAxMDAsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDMsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDIsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFsgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtIHdpdGggYWN0aXZhdGVkIHByZXZpb3VzIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWwogICAgICAgICAgICAgICAgJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0gd2l0aCBhY3RpdmF0ZWQgcHJldmlvdXMgdmVyc2lvbiBzZWFyY2gKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyAgICAgICAgICA9PiBbICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSB3aXRoIGFjdGl2YXRlZCBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzICAgICAgICAgID0+IFsgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0gd2l0aCBhY3RpdmF0ZWQgcHJldmlvdXMgdmVyc2lvbiBzZWFyY2gKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGluY2lkZW50IHN0YXRlIHBhcmFtIHdpdGggYWN0aXZhdGVkIHByZXZpb3VzIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBJbmNpU3RhdGVJRHMgICAgICAgICAgPT4gWyAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9IF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBpbmNpZGVudCBzdGF0ZSBwYXJhbSB3aXRoIGFjdGl2YXRlZCBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgSW5jaVN0YXRlSURzICAgICAgICAgID0+IFsgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBUZXh0IHR5cGUgRHluYW1pY0ZpZWxkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggVGV4dCB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBMaWtlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdUZXN0IHZhbHVlIGZvcionIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggVGV4dCB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBMaWtlIChub3QgZXhpc3RpbmcpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdVbmtub3duIGRhdGEqJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIFRleHRBcmVhIHR5cGUgRHluYW1pY0ZpZWxkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q0JFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgYXJlYSBmaWVsZCBUZXN0NCcgfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBUlJBWScKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBUZXh0QXJlYSB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBsaWtlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q0JFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEqJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1M10sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIFRleHRBcmVhIHR5cGUgRHluYW1pY0ZpZWxkIHVzaW5nIGxpa2UgKG5vdCBleGlzdGluZykKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDQkVGVzdElEU3VmZml4IiA9PiB7IExpa2UgPT4gJ1Vua25vd24gZGF0YSonIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggRGF0ZSB0eXBlIER5bmFtaWNGaWVsZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0MyRUZXN0SURTdWZmaXgiID0+IHsgRXF1YWxzID0+ICcyMDIzLTA5LTAxIDAwOjAwOjAwJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGUgdHlwZSBEeW5hbWljRmllbGQgKG5vdCBtYXRjaGluZykKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiB7IEVxdWFscyA9PiAnMjAyMy0wOS0xMiAwMDowMDowMCcgfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBUlJBWScKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBEYXRlVGltZSB0eXBlIER5bmFtaWNGaWVsZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NSRUZXN0SURTdWZmaXgiID0+IHsgRXF1YWxzID0+ICcyMDIzLTAxLTAxIDEyOjAwOjAwJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGVUaW1lIHR5cGUgRHluYW1pY0ZpZWxkIChub3QgbWF0Y2hpbmcpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q1JFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJzIwMjMtMDktMDEgMTI6MDA6MDAnIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggRGF0ZVRpbWUgdHlwZSBEeW5hbWljRmllbGQgLSBCZXR3ZWVuCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q1JFRlc3RJRFN1ZmZpeCIgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJzIwMjMtMDEtMDEgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzIwMjMtMDEtMDIgMDA6MDA6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGVUaW1lIHR5cGUgRHluYW1pY0ZpZWxkIC0gQmV0d2VlbiBub3QgbWF0Y2hpbmcKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDUkVGVzdElEU3VmZml4IiA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnMjAyMi0wMS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAnMjAyMi0wMS0wMiAwMDowMDowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcnVuIGdlbmVyYWwgY29uZmlnIGl0ZW0gc2VhcmNoIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgJFNlYXJjaFRlc3RDb3VudCBwcm92aWRlcyBncm91cGluZyBvZiB0ZXN0IGNhc2VzCm15ICRTZWFyY2hUZXN0Q291bnQgPSAxOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAU2VhcmNoVGVzdHMpIHsKCiAgICAjIGNoZWNrIFNlYXJjaERhdGEgYXR0cmlidXRlCiAgICBpZiAoICEkVGVzdC0+e1NlYXJjaERhdGF9IHx8IHJlZiAkVGVzdC0+e1NlYXJjaERhdGF9IG5lICdIQVNIJyApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJTZWFyY2hUZXN0ICRTZWFyY2hUZXN0Q291bnQ6IE5vIFNlYXJjaERhdGEgZm91bmQgZm9yIHRoaXMgdGVzdC4iLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBpZiAoICEkVGVzdC0+e0Z1bmN0aW9ufSB8fCByZWYgJFRlc3QtPntGdW5jdGlvbn0gbmUgJ0FSUkFZJyB8fCAhQHsgJFRlc3QtPntGdW5jdGlvbn0gfSApIHsKICAgICAgICAkVGVzdC0+e0Z1bmN0aW9ufSA9IFsnQ29uZmlnSXRlbVNlYXJjaCddOwogICAgfQoKICAgIGZvciBteSAkRnVuY3Rpb24gKCBAeyAkVGVzdC0+e0Z1bmN0aW9ufSB9ICkgewoKICAgICAgICAjIHN0YXJ0IHNlYXJjaAogICAgICAgIG15ICRDb25maWdJdGVtTGlzdDsKCiAgICAgICAgaWYgKCAkRnVuY3Rpb24gZXEgJ0NvbmZpZ0l0ZW1TZWFyY2gnICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbUxpc3QgPSBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+JEZ1bmN0aW9uKAogICAgICAgICAgICAgICAgICAgICV7ICRUZXN0LT57U2VhcmNoRGF0YX0gfSwKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRDb25maWdJdGVtTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT4kRnVuY3Rpb24oCiAgICAgICAgICAgICAgICAleyAkVGVzdC0+e1NlYXJjaERhdGF9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbSBsaXN0CiAgICAgICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUxpc3QgJiYgcmVmICRDb25maWdJdGVtTGlzdCBlcSAnQVJSQVknLAogICAgICAgICAgICAgICAgIlNlYXJjaFRlc3QgJFNlYXJjaFRlc3RDb3VudDogJEZ1bmN0aW9uKCkgLSBMaXN0IGlzIGFuIGFycmF5IHJlZmVyZW5jZS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBURVNUIGlmICEkQ29uZmlnSXRlbUxpc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1MaXN0LAogICAgICAgICAgICAgICAgIlNlYXJjaFRlc3QgJFNlYXJjaFRlc3RDb3VudDogJEZ1bmN0aW9uKCkgLSBSZXR1cm4gZmFsc2UuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVEVTVCBpZiAhJENvbmZpZ0l0ZW1MaXN0OwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBudW1iZXIgb2YgZm91bmQgY29uZmlnIGl0ZW1zCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQHskQ29uZmlnSXRlbUxpc3R9LAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfSB9LAogICAgICAgICAgICAiU2VhcmNoVGVzdCAkU2VhcmNoVGVzdENvdW50OiAkRnVuY3Rpb24oKSAtIGNvcnJlY3QgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFJlZmVyZW5jZUxpc3Q7CiAgICAgICAgZm9yIG15ICROdW1iZXIgKCBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9IH0gKSB7CgogICAgICAgICAgICAjIGZpbmQgaWQgb2YgdGhlIGl0ZW0KICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFICIKICAgICAgICAgICAgICAgICAgICAuICJjb25maWdpdGVtX251bWJlciA9ICckTnVtYmVyJyAiCiAgICAgICAgICAgICAgICAgICAgLiAiT1JERVIgQlkgaWQgREVTQyIsCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQFJlZmVyZW5jZUxpc3QsICRDb25maWdJdGVtSUQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGFycmF5cwogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1MaXN0LAogICAgICAgICAgICBcQFJlZmVyZW5jZUxpc3QsCiAgICAgICAgICAgICJTZWFyY2hUZXN0ICRTZWFyY2hUZXN0Q291bnQ6ICRGdW5jdGlvbigpIC0gTGlzdCIsCiAgICAgICAgKTsKICAgIH0KfQpjb250aW51ZSB7CiAgICAkU2VhcmNoVGVzdENvdW50Kys7Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0aW5nIGFkZGluZyBvZiBpbnZhbGlkIGRlZmluaXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCnsKICAgICMgZGVmaW5lIHNvbWUgaW52YWxpZCBkZWZpbml0aW9ucwogICAgbXkgQEludmFsaWRDb25maWdJdGVtRGVmaW5pdGlvbnM7CgogICAgIyBEYXRhIHNjdHJ1Y3R1cmUgaGFzaCBlbGVtZW50cyBjb250YWluIG5vIGRhdGEuCiAgICBwdXNoIEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zLCAiIjsKCiAgICAjIERhdGEgd2l0aCBTeW50YXggZXJyb3JzCiAgICBwdXNoIEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zLCAiIFsKICAgIHsKICAgICAgICBQYWdlcyBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDIsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmciAxZnInCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXQogICAgfQogICAgXSI7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBpZAogICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGNsYXNzLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAVGVzdENvbmZpZ0l0ZW1EZWZpbml0aW9uczsKICAgIGZvciBteSAkUGVybERlZmluaXRpb24gKEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CiAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgIERhdGEgPT4gZXZhbCAkUGVybERlZmluaXRpb24sICAgICMjIG5vIGNyaXRpYyBxdyhCdWlsdGluRnVuY3Rpb25zOjpQcm9oaWJpdFN0cmluZ3lFdmFsKQogICAgICAgICk7CgogICAgICAgIHB1c2ggQFRlc3RDb25maWdJdGVtRGVmaW5pdGlvbnMsICRZQU1MRGVmaW5pdGlvbjsKICAgIH0KCiAgICBmb3IgbXkgJERlZmluaXRpb24gKEBUZXN0Q29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgICAgICMgYWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGRlZmluaXRpb24gaWQsIG11c3QgYmUgZmFsc2UsIGJlY2F1c2UgYWxsIGRlZmluaXRpb25zIGhhdmUgZXJyb3JzCiAgICAgICAgb2soICEkUmVzdWx0LT57U3VjY2Vzc30sICJBcyBleHBlY3RlZCwgY291bGQgbm90IGFkZCBuZXcgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbi4iICk7CiAgICB9Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0aW5nIHN1cHBvcnQgZm9yIGF0dGFjaG1lbnRzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRBdHRhY2htZW50VGVzdENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSURzWzBdOwoKIyB2ZXJpZnkgdGhhdCBpbml0aWFsbHkgbm8gYXR0YWNobWVudCBleGlzdHMKbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIgQEF0dGFjaG1lbnRMaXN0LAogICAgMCwKICAgICdObyBhdHRhY2htZW50cyBpbml0aWFsbHknLAopOwoKbXkgQFRlc3RGaWxlTGlzdCA9ICgKICAgIHsKICAgICAgICBGaWxlbmFtZSAgICA9PiAnZmlyc3QgYXR0YWNobWVudCcsCiAgICAgICAgQ29udGVudCAgICAgPT4gJ0ZpcnN0IGF0dGFjaG1lbnQgZnJvbSBJVFNNQ29uZmlnSXRlbS50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICB9LAogICAgewogICAgICAgIEZpbGVuYW1lICAgID0+ICdzZWNvbmQgYXR0YWNobWVudCcsCiAgICAgICAgQ29udGVudCAgICAgPT4gJ1NlY29uZCBhdHRhY2htZW50IGZyb20gSVRTTUNvbmZpZ0l0ZW0udCcsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgfSwKKTsKCm15ICRGaWxlQ291bnQ7CmZvciBteSAkVGVzdEZpbGUgKEBUZXN0RmlsZUxpc3QpIHsKCiAgICAkRmlsZUNvdW50Kys7CgogICAgbXkgJEFkZE9rID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICV7JFRlc3RGaWxlfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRBZGRPaywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGFkZGVkIiwKICAgICk7CgogICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5JcygKICAgICAgICBzY2FsYXIgQEF0dGFjaG1lbnRMaXN0LAogICAgICAgICRGaWxlQ291bnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogbnVtYmVyIG9mIGF0dGFjaG1lbnRzIGFmdGVyIGFkZGluZyIsCiAgICApOwoKICAgICMgY2hlY2sgd2hldGhlciB0aGUgbGFzdCBhZGRlZCBhdHRhY2htZW50IGlzIGluIHRoZSBsaXN0CiAgICBteSAlQXR0YWNobWVudExvb2t1cCA9IG1hcCB7ICRfID0+IDEgfSBAQXR0YWNobWVudExpc3Q7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudExvb2t1cHsgJFRlc3RGaWxlLT57RmlsZW5hbWV9IH0sCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogZmlsZW5hbWUgZnJvbSBDb25maWdJdGVtQXR0YWNobWVudExpc3QoKSIsCiAgICApOwoKICAgICMgZ2V0IHRoZSBhdHRhY2htZW50CiAgICBteSAkQXR0YWNobWVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIEZpbGVuYW1lICAgICA9PiAkVGVzdEZpbGUtPntGaWxlbmFtZX0sCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEF0dGFjaG1lbnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogQ29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoKSByZXR1cm5lZCB0cnVlIiwKICAgICk7CgogICAgIyBjaGVjayBhdHRhY2htZW50IGZpbGUgYXR0cmlidXRlcwogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KEZpbGVuYW1lIENvbnRlbnQgQ29udGVudFR5cGUpKSB7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAkVGVzdEZpbGUtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogJEF0dHJpYnV0ZSBmcm9tIENvbmZpZ0l0ZW1BdHRhY2htZW50R2V0IiwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgZXhpc3RlbmNlIG9mIGF0dGFjaG1lbnQKICAgIG15ICRBdHRhY2htZW50RXhpc3RzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RXhpc3RzKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICRUZXN0RmlsZS0+e0ZpbGVuYW1lfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudEV4aXN0cywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGV4aXN0cyIsCiAgICApOwoKfQoKIyBub3cgZGVsZXRlIHRoZSBhdHRhY2htZW50cwokRmlsZUNvdW50ID0gMDsKbXkgJE1heFRlc3RGaWxlcyA9IHNjYWxhciBAVGVzdEZpbGVMaXN0Owpmb3IgbXkgJFRlc3RGaWxlIChAVGVzdEZpbGVMaXN0KSB7CgogICAgJEZpbGVDb3VudCsrOwoKICAgIG15ICREZWxldGVPayA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIEZpbGVuYW1lICAgICA9PiAkVGVzdEZpbGUtPntGaWxlbmFtZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJERlbGV0ZU9rLAogICAgICAgICJBdHRhY2htZW50ICRGaWxlQ291bnQ6IGF0dGFjaG1lbnQgZGVsZXRlZCIsCiAgICApOwoKICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBdHRhY2htZW50VGVzdENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgIHNjYWxhciBAQXR0YWNobWVudExpc3QsCiAgICAgICAgJE1heFRlc3RGaWxlcyAtICRGaWxlQ291bnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogbnVtYmVyIG9mIGF0dGFjaG1lbnRzIGFmdGVyIGRlbGV0aW9uIiwKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRFeGlzdHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRFeGlzdHMoCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICRUZXN0RmlsZS0+e0ZpbGVuYW1lfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAkQXR0YWNobWVudEV4aXN0cywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGlzIGdvbmUiLAogICAgKTsKfQoKIyBjaGVjayBjb25maWcgaXRlbSBkZWxldGUKbXkgJERlbGV0ZVRlc3RDb3VudCA9IDE7CmZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewogICAgbXkgJERlbGV0ZU9rID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJERlbGV0ZU9rLAogICAgICAgICJEZWxldGVUZXN0ICREZWxldGVUZXN0Q291bnQgLSBDb25maWdJdGVtRGVsZXRlKCkgKENvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEKSIKICAgICk7CgogICAgIyBkb3VibGUgY2hlY2sgaWYgY29uZmlnIGl0ZW0gaXMgcmVhbGx5IGRlbGV0ZWQKICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgIENhY2hlICAgICAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAkQ29uZmlnSXRlbURhdGEtPntDb25maWdJdGVtSUR9LAogICAgICAgICJEZWxldGVUZXN0ICREZWxldGVUZXN0Q291bnQgLSBkb3VibGUgY2hlY2sgKENvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEKSIsCiAgICApOwoKICAgICREZWxldGVUZXN0Q291bnQrKzsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/CIAutoLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IGF1dG8gaW5rcwojIGJldHdlZW4gQ0kgaXRlbXMgYW5kIFRpY2tldHMKIyBleGFtcGxlIGlzCiMgIFN1YnNpZGlhcnkgLT4gVGlja2V0UmVmCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwpteSAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCAgID0gX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBzdWJzaWRpYXJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRTdWJzaWRpYXJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdTdWJzaWRpYXJ5JywKKTsKb2soICRTdWJzaWRpYXJ5Q2xhc3NJRCwgIlN1YnNpZGlhcnkgY2xhc3MgZm91bmQuIiApOwoKIyBwb3NzaWJsZSBsaW5rIHR5cGVzIGNvbmZpZ3VyZWQKbXkgJVBvc3NpYmxlVHlwZXNMaXN0ID0gJExpbmtPYmplY3QtPlBvc3NpYmxlVHlwZXNMaXN0KAogICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0aW5nIExpbmtUeXBlPSRMaW5rVHlwZSIgPT4gc3ViIHsKCiAgICAgICAgbXkgJFR5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBteSAlVHlwZURhdGEgPSAkTGlua09iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgVHlwZUlEID0+ICRUeXBlSUQsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJElzUG9pbnRlZCA9ICRUeXBlRGF0YXtQb2ludGVkfTsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9IF9DcmVhdGVERlJlZmVyZW5jZVRvVGlja2V0KCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKICAgICAgICBvayggJER5bmFtaWNGaWVsZENvbmZpZywgIlJlZmVyZW5jZVRvVGlja2V0IERGICRMaW5rVHlwZSBjcmVhdGVkLiIgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvbkFkZFRpY2tldFJlZkRGKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKSwKICAgICAgICAgICAgJ1VwZGF0ZWQgU3Vic2lkaWFyeSBEZWZpbml0aW9uIHRvIGluY2x1ZGUgUmVmZXJlbmNlVG9UaWNrZXQgREYgc3VjY2Vzc2Z1bGx5LicKICAgICAgICApOwogICAgICAgIF9TeW5jQ29uZmlnSXRlbURGcyggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGNyZWF0ZSB0ZXN0IGNvbmZpZyBpdGVtcwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgbXkgJFRlc3RUaWNrZXQxSUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBhIHRlc3Qgc3Vic2lkaWFyeSB3aXRoIGEgREYgcmVmZXJlbmNlIHRvIFRpY2tldAogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0RlckJhdWVybmhvZicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UaWNrZXRSZWYiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RUaWNrZXQxSUQKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICBzdWJ0ZXN0ICJTaW5nbGUgTGluayBoYXMgYmVlbiBjcmVhdGVkIGZvciBMaW5rVHlwZT0kTGlua1R5cGUiID0+IHN1YiB7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5ICdEZXJCYXVlcm5ob2YkTGlua1R5cGUkUmFuZG9tSUQnICgkVGVzdFN1YnNpZGlhcnlJRCkgd2l0aCBsaW5rIHRvIFRpY2tldCAkVGVzdFRpY2tldDFJRCBjcmVhdGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAogICAgICAgICAgICAgICAgICAgIFN1YnNpZGlhcnlJRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgICAgIExpbmtzICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RUaWNrZXQxSUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFRpY2tldDFJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiSGFzIE9uZSBMaW5rIFNvdXJjZSA9PiBUaWNrZXRJRDokVGVzdFRpY2tldDFJRC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgc3VidGVzdCAiQ2hhbmdlIGxpbmsgZGlyZWN0aW9uIGRvZXMgbm90IGNoYW5nZSBleGlzdGluZyBsaW5rcyIgPT4gc3ViIHsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSBfVXBkYXRlUmVmZXJlbmNlVG9UaWNrZXRERkxpbmtEaXJlY3Rpb24oCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgT25lIExpbmsgU291cmNlID0+IFRpY2tldElEOiRUZXN0VGlja2V0MUlELiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICBteSAkVGVzdFRpY2tldDJJRDsKICAgICAgICBzdWJ0ZXN0ICJBZGQgYW5vdGhlciBsaW5rIiA9PiBzdWIgewoKICAgICAgICAgICAgJFRlc3RUaWNrZXQySUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDJfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGlja2V0UmVmIiAuICRMaW5rVHlwZSAuICIkUmFuZG9tSUQiID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJFRlc3RUaWNrZXQySUQKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJVcGRhdGVkIENvbmZpZ0l0ZW0gdG8gcG9pbnQgdG8gVGVzdFRpY2t0IDIiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MklEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgVHdvIExpbmtzICgkVGVzdFRpY2tldDFJRCwgJFRlc3RUaWNrZXQySUQpLiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICAjIGFkZCBsaW5rcyB0d2ljZQogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gZmlyc3QgbGlua2VkIG9iamVjdCwKICAgICAgICAjIGFuZCBhZ2FpbiB0byBzZWNvbmQgb25lLiBubyBuZXcKICAgICAgICAjIGxpbmtzIGV4cGVjdGVkIHRvIGJlIGNyZWF0ZWQKCiAgICAgICAgc3VidGVzdCAiQWRkIGxpbmtzIHR3aWNlIC0gbm8gZHVwbGljYXRpb24gb2YgZXhpc3RpbmcgbGlua3MiID0+IHN1YiB7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UaWNrZXRSZWYiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAkVGVzdFRpY2tldDFJRAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlVwZGF0ZWQgQ29uZmlnSXRlbSB0byBwb2ludCB0byBUZXN0VGlja2V0IDEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MklEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgVHdvIExpbmtzICgkVGVzdFRpY2tldDFJRCwgJFRlc3RUaWNrZXQySUQpLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1RpY2tldFJlZiIgLiAkTGlua1R5cGUgLiAiJFJhbmRvbUlEIiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRUZXN0VGlja2V0MklECiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVXBkYXRlZCBDb25maWdJdGVtIHRvIHBvaW50IHRvIFRlc3RUaWNrZXQgMSIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcygKICAgICAgICAgICAgICAgICAgICBTdWJzaWRpYXJ5SUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAkSXNQb2ludGVkCiAgICAgICAgICAgICAgICAgICAgICAgID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgVGFyZ2V0ID0+ICRUZXN0VGlja2V0MUlEIF0KICAgICAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBTb3VyY2UgPT4gJFRlc3RUaWNrZXQxSUQgXSwKICAgICAgICAgICAgICAgICAgICAgICAgWyBTb3VyY2UgPT4gJFRlc3RUaWNrZXQySUQgXSwKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkhhcyBUd28gTGlua3MgKCRUZXN0VGlja2V0MUlELCAkVGVzdFRpY2tldDJJRCkuIgogICAgICAgICAgICApOwoKICAgICAgICB9OwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgb2soCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5IGRlbGV0ZWQiCiAgICAgICAgKTsKCiAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhbmQgbGlua19yZWxhdGlvbnMKICAgICAgICBteSAkRmluYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwogICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKICAgICAgICBteSAkRmluYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKICAgICAgICBpcygKICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAkRmluYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICApOwoKICAgICAgICBpcygKICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICJObyBDSSBsaW5rcyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgJEZpbmFsTGlua1JlbGF0aW9uc0NvdW50LAogICAgICAgICAgICAiTm8gTGlua09iamVjdHMgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICApOwogICAgfTsKfQoKZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2NlZHVyYWwgaGVscGVyIG1ldGhvZHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBQcmVwYXJlIHRoZSBHZW5lcmFsIENhdGFsb2cgY2xhc3NlcyBieSByZWxvYWRpbmcKIyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbGUKCnN1YiBfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzIHsKCiAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICBteSAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKCiAgICAgICAgIyAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMi55bWwiLAogICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC9MaW5rcy91bml0dGVzdC55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkLiIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAqIEZST00gbGlua19yZWxhdGlvbicsCiAgICApOwoKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgcmV0dXJuICRDb3VudDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfQ3JlYXRlREZSZWZlcmVuY2VUb1RpY2tldCB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSB7CiAgICAgICAgRGlzcGxheVR5cGUgICAgICAgICAgICAgICAgPT4gJ1RpY2tldE51bWJlclRpdGxlJywKICAgICAgICBFZGl0RmllbGRNb2RlICAgICAgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSAgICAgID0+ICcnLAogICAgICAgIExpbmtEaXJlY3Rpb24gICAgICAgICAgICAgID0+ICdSZWZlcmVuY2luZ0lzU291cmNlJywKICAgICAgICBMaW5rT2JqZWN0Rm9yUmVmZXJlbmNlVHlwZSA9PiAkUGFyYW17TGlua1R5cGV9LCAgICAgICAgIydSZWxldmFudFRvJywKICAgICAgICBNdWx0aVZhbHVlICAgICAgICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgTXVsdGlzZWxlY3QgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgICAgICAgICA9PiAnMScsCiAgICAgICAgUXVldWUgICAgICAgICAgICAgICAgICAgICAgPT4gWyAxLCAyLCAzLCA0IF0sCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdCAgICAgICAgPT4gW10sCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGUgICAgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgICAgICA9PiAnJywKICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRJRCAgICAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgTGFiZWwgICAgICA9PiAnVGlja2V0IFJlZmVyZW5jZScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIEZpZWxkT3JkZXIgPT4gNDcxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgZGlzcGxheSBvcmRlcgogICAgICAgIEZpZWxkVHlwZSAgPT4gJ1RpY2tldCcsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsCiAgICAgICAgUmVvcmRlciAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCwgdG8gdHJpZ2dlciByZW9yZGVyIGZ1bmN0aW9uLCBkZWZhdWx0IDEKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBJRCA9PiAkSUQgKTsKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkQ29uZmlnOwp9CgpzdWIgX0NoYW5nZVN1YnNpZGlhcnlEZWZpbml0aW9uQWRkVGlja2V0UmVmREYgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICApOwoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKCiAgICAjIGFkZCB0aGUgVGlja2V0UmVmIERGCgogICAgJERlZmluaXRpb25SZWYtPntTZWN0aW9uc30tPntBZGRyZXNzfS0+e0NvbnRlbnR9ID0gWwogICAgICAgIHsKICAgICAgICAgICAgJ0hlYWRlcicgPT4gJ0FkZHJlc3MnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLVN0cmVldCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tQ2l0eScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1MYXRpdHVkZScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTG9uZ2l0dWRlJwogICAgICAgIH0sCgogICAgICAgICMgYWRkIHRoaXMgb25lOgogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQKICAgICAgICB9LAogICAgXTsKCiAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CiAgICBteSAkWUFNTFN0cmluZyA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb25SZWYsCiAgICApOwoKICAgIHJldHVybiAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICBDbGFzc0lEICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MU3RyaW5nLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKCiAgICAgICAgIyAgICBGb3JjZSAgICAgID0+IDEsICAgICAgICAjIGhtCiAgICApLT57U3VjY2Vzc307Cn0KCnN1YiBfQ3JlYXRlVGVzdFRpY2tldCB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgIFRpdGxlICAgICAgICA9PiAkUGFyYW17VGl0bGV9LAogICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAndW5pdHRlc3RAb3RvYm8ub3JnJywKICAgICAgICBPd25lcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgb2soICRUaWNrZXRJRCwgIlRpY2tldCAnJFBhcmFte1RpdGxlfScgKCRUaWNrZXRJRCkgY3JlYXRlZCIgKTsKCiAgICByZXR1cm4gJFRpY2tldElEOwp9CgojIGNhbGwgYXMKIyBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAojICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAojICAgTGlua1R5cGUgPT4gJExpbmtUeXBlLAojICAgTGlua3MgPT4gWwojICAgICAgIFsgU291cmNlID0+ICRTb21lSUQgXSwKIyAgICAgICBbIFNvdXJjZSA9PiAkU29tZUlEIF0sCiMgICAgICAgWyBUYXJnZXQgPT4gJFNvbWVJRCBdLAojIC4uLi4KIyAgIF0KIyApCgpzdWIgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlICAgICA9ICRQYXJhbXtMaW5rVHlwZX07CiAgICBteSAkU3Vic2lkaWFyeUlEID0gJFBhcmFte1N1YnNpZGlhcnlJRH07CgogICAgbXkgQExpbmtzICAgICAgICAgICAgID0gJFBhcmFte0xpbmtzfS0+QCo7CiAgICBteSAkRXhwZWN0ZWRMaW5rQ291bnQgPSBzY2FsYXIgQExpbmtzOwoKICAgIG15ICRMaW5rUmVsYXRpb25zQ291bnQgPSBfRmV0Y2hMaW5rUmVsYXRpb25zQ291bnQoKSAtICRJbml0aWFsTGlua1JlbGF0aW9uc0NvdW50OwogICAgaXMoICRMaW5rUmVsYXRpb25zQ291bnQsICRFeHBlY3RlZExpbmtDb3VudCwgIlRoZXJlIGFyZSAgJExpbmtSZWxhdGlvbnNDb3VudCBMaW5rT2JqZWN0LUxpbmtzIG9mIFR5cGUgJExpbmtUeXBlLiIgKTsKCiAgICBteSAkTGlua0xpc3QgPSAkTGlua09iamVjdC0+TGlua0xpc3QoCiAgICAgICAgT2JqZWN0ICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgICAgID0+ICRTdWJzaWRpYXJ5SUQsCiAgICAgICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgIFR5cGUgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgRGlyZWN0aW9uID0+ICdCb3RoJywKICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgZm9yIG15ICRMaW5rIChATGlua3MpIHsKCiAgICAgICAgbXkgJExpbmtEZXN0ID0gJExpbmstPlswXTsKICAgICAgICBteSAkTGlua2VkSUQgPSAkTGluay0+WzFdOwogICAgICAgIGlmICggZXhpc3RzICRMaW5rTGlzdC0+eydUaWNrZXQnfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9ICkgewoKICAgICAgICAgICAgbXkgJElEcyA9ICRMaW5rTGlzdC0+eydUaWNrZXQnfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9OwoKICAgICAgICAgICAgcmV0dXJuIDAgaWYgIWV4aXN0cyAkSURzLT57JExpbmtlZElEfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9VcGRhdGVSZWZlcmVuY2VUb1RpY2tldERGTGlua0RpcmVjdGlvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlICAgICAgPSAkUGFyYW17TGlua1R5cGV9OwogICAgbXkgJExpbmtEaXJlY3Rpb24gPSAkUGFyYW17TGlua0RpcmVjdGlvbn0gfHwgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnOwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ1RpY2tldFJlZicgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlEICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICBzdWJ0ZXN0ICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgPT4gc3ViIHsKCiAgICAgICAgb2soICREeW5hbWljRmllbGQsICdUaWNrZXRSZWYgREYgZm91bmQuJyApOwoKICAgICAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sICAgICAgIyBtYW5kYXRvcnkKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJ2EgZGVzY3JpcHRpb24nLCAgICAgICAgICAjIG1hbmRhdG9yeSwgbGFiZWwgdG8gc2hvdwogICAgICAgICAgICBGaWVsZE9yZGVyID0+IDQ3MTEsICAgICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnksIGRpc3BsYXkgb3JkZXIKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAnVGlja2V0JywgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsICAgICAgICAgIyB0aGlzIGNvbnRyb2xzIHdoaWNoIG9iamVjdCB0aGUgZHluYW1pYyBmaWVsZCBsaW5rcyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGxvdyBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzCiAgICAgICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBpbmRpdmlkdWFsIGFydGljbGVzLCBvdGhlcndpc2UgdG8gdGlja2V0cwogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgaXMgb25seSB1c2VkIGludGVybmFsbHkgdG8gcHJldmVudCByZWR1bmRhbnQgZXhlY3V0aW9uIG9uIG9yZGVyIGNoYW5nZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBubyB1cGRhdGUgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQgZm9yIDAKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIG9rKCAkU3VjY2VzcywgIlRpY2tldFJlZiBERiBkZWZpbml0aW9uIHVwZGF0ZWQsIGxpbmsgZGlyZWN0aW9uIGNoYW5nZWQgdG8gJExpbmtEaXJlY3Rpb24uIiApOwoKICAgICAgICBfU3luY0NvbmZpZ0l0ZW1ERnMoIExpbmtUeXBlID0+ICRMaW5rVHlwZSApOwoKICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBJRCA9PiAkRHluYW1pY0ZpZWxkLT57SUR9ICk7CiAgICB9OwoKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkQ29uZmlnOwp9CgpzdWIgX1N5bmNDb25maWdJdGVtREZzIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTGlua1R5cGUgPSAkUGFyYW17TGlua1R5cGV9OwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0T3V0T2ZTeW5jKAogICAgICAgIENsYXNzZXMgPT4gewogICAgICAgICAgICAkU3Vic2lkaWFyeUNsYXNzSUQgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9IF0sCiAgICAgICAgfSwKICAgICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblN5bmMoKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICByZXR1cm47Cn0K</File>
        <File Location="scripts/test/ITSMConfigItem/ConfigItemLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGJvaWxlcnBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKCm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCiMgYXNzdXJlIHN0ZCBjbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZApfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzKCk7CgojIGdsb2JhbCBPTSBvYmplY3RzCm15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkTGlua09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2F0Y2ggc3RhdGUgYmVmb3JlIHRlc3QgcnVuCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCm15ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKbXkgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBjb3VudHJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRDb3VudHJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdDb3VudHJ5JywKKTsKb2soICRDb3VudHJ5Q2xhc3NJRCwgIkNvdW50cnkgY2xhc3MgZm91bmQiICk7CgojIGFkZCBhIHZlcnNpb24gdHJpZ2dlciB0byBDb3VudHJ5IG9uIE5hbWUgYXR0cmlidXRlCm9rKAogICAgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MoKSwKICAgICdVcGRhdGVkIFZlcnNpb25UcmlnZ2VyJwopOwoKbXkgJVBvc3NpYmxlVHlwZXNMaXN0ID0gJExpbmtPYmplY3QtPlBvc3NpYmxlVHlwZXNMaXN0KAogICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGNyZWF0ZSB0ZXN0IGNvbmZpZyBpdGVtcwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjEKICAgIG15ICRUZXN0TG9jYXRpb24xSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1dlbGxibGVjaHNIYXVzZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICk7CiAgICBvayggJFRlc3RMb2NhdGlvbjFJRCwgIlRlc3RMb2NhdGlvbjEgY3JlYXRlZCIgKTsKCiAgICAjIGFzc2VydCB0aGVyZSBpcyAxIHZlcnNpb24gd2l0aCBnaXZlbiBuYW1lCiAgICBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uKAogICAgICAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgXQogICAgKTsKCiAgICAjIGNyZWF0ZSB0ZXN0IHRpY2tldAoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUaXRsZSAgICAgICAgPT4gIlRlc3RUaWNrZXQxXyRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd1bml0dGVzdEBvdG9iby5vcmcnLAogICAgICAgIE93bmVySUQgICAgICA9PiAkVXNlcklELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFRpY2tldElELCAnVGlja2V0IGNyZWF0ZWQnICk7CgogICAgIyBjcmVhdGUgbGluayB0byBUaWNrZXQKICAgIG9rKAogICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgVGFyZ2V0S2V5ICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRMaW5rVHlwZSwgICAgICAgICAgIydSZWxldmFudFRvJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICksCiAgICAgICAgJ0NJIFRlc3RMb2NhdGlvbjEgTGlua2VkIHRvIFRpY2tldCcKICAgICk7CgogICAgIyBpbnNwZWN0IGxpbmsgZGF0YQoKICAgIG15ICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgKTsKCiAgICBteSAkU291cmNlID0gJExpbmtMaXN0LT57VGlja2V0fS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9CiAgICAgICAgPwogICAgICAgICRMaW5rTGlzdC0+e1RpY2tldH0tPnskTGlua1R5cGV9LT57U291cmNlfS0+eyRUaWNrZXRJRH0KICAgICAgICA6CiAgICAgICAgJExpbmtMaXN0LT57VGlja2V0fS0+eyRMaW5rVHlwZX0tPntUYXJnZXR9LT57JFRpY2tldElEfTsKCiAgICBvayggJFNvdXJjZSwgJ0ZvdW5kIExpbmsnICk7CgogICAgb2soCiAgICAgICAgJFNvdXJjZS0+e1RpY2tldE51bWJlcn0sCiAgICAgICAgJ0xpbmtlZCBpdGVtIGxvb2tzIGxpa2UgdGlja2V0JwogICAgKTsKCiAgICBpcygKICAgICAgICAkU291cmNlLT57VGl0bGV9LAogICAgICAgICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICdDb25maWdJdGVtIGlzIGxpbmtlZCB0byBjb3JyZWN0IFRpY2tldCcKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjbGVhbnVwCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICksCiAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICk7CgogICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcwogICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiAgICBpcygKICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7CgogICAgaXMoCiAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAiTm8gQ0kgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkIiApOwoKICAgIHJldHVybjsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1Db3VudCB7CiAgICBteSAoJENvdW50KSA9ICREQk9iamVjdC0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbScsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQgLy8gMDsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDb3VudChpZCkgRlJPTSBjb25maWdpdGVtX2xpbmsnLAogICAgKTsKCiAgICBpZiAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgcmV0dXJuICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgWyJOaWVkZXJrYWx0ZW5raXJjaGVuJFJhbmRvbUlEIiA9PiAyIF0sCiMgXSk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9ufTsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25Db3VudCA9IEAkVmVyc2lvbnM7CgogICAgaXMoCiAgICAgICAgc2NhbGFyIEAkVmVyc2lvbkxpc3RSZWYsCiAgICAgICAgJFZlcnNpb25Db3VudCwKICAgICAgICAiQ291bnQgb2YgVmVyc2lvbnMgaXMgJFZlcnNpb25Db3VudCBmb3IgTG9jYXRpb24gSUQgJExvY2F0aW9uSUQiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionAdd.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJENsYXNzSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJFJhbmRvbUlELAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwpvayggJENsYXNzSUQsICJDbGFzcyBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWlzc2luZyBDbGFzc3NJRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiA8PCdFT0YnLAotLS0KLSBQYWdlczoKICAtIENvbnRlbnQ6CiAgICAtIENvbHVtblN0YXJ0OiAxCiAgICAgIFJvd1N0YXJ0OiAxCiAgICAgIFNlY3Rpb246IFNlY3Rpb24xCiAgICAtIENvbHVtblN0YXJ0OiAyCiAgICAgIFJvd1N0YXJ0OiAxCiAgICAgIFNlY3Rpb246IFNlY3Rpb24yCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyCiAgICAgIENvbHVtbnM6IDIKICAgIE5hbWU6IENvbnRlbnQKRU9GCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgRGVmaW5pdGlvbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgVXNlcklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIFBhZ2VzOgogIC0gQ29udGVudDoKICAgIC0gQ29sdW1uU3RhcnQ6IDEKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjEKICAgIC0gQ29sdW1uU3RhcnQ6IDIKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjIKICAgIExheW91dDoKICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIKICAgICAgQ29sdW1uczogMgogICAgTmFtZTogQ29udGVudApFT0YKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdXcm9uZyBEZWZpbml0aW9uIChMZWdhY3kgUGVybCknLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwnRU9GJywKWwp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXQp9Cl07CkVPRgogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdXcm9uZyBEZWZpbml0aW9uIChJbnZhbGlkIFlBTUwpJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIFBhZ2VzOgogIC0gQ29udGVudDoKICAgIENvbHVtblN0YXJ0OiAxCiAgICAgIFJvd1N0YXJ0IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjEKICAgIENvbHVtblN0YXJ0IDIKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjIKICAgIExheW91dDoKICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIKICAgICAgQ29sdW1uczogMgogICAgTmFtZTogQ29udGVudApFT0YKICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ29ycmVjdCBZQU1MJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQpQYWdlczoKICAtIE5hbWU6IFBhZ2UxCiAgICBJbnRlcmZhY2VzOiBbXQogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjIKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCgpTZWN0aW9uczoKICBTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgogIFNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVPRgogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCgopOwoKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKClRFU1Q6CmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgICRUZXN0LT57Q29uZmlnfS0+JSoKICAgICk7CiAgICBteSAkRGVmaW5pdGlvbklEID0gJFJlc3VsdC0+e0RlZmluaXRpb25JRH07CgogICAgaWYgKCAhJFRlc3QtPntTdWNjZXNzfSApIHsKICAgICAgICBvaygKICAgICAgICAgICAgISREZWZpbml0aW9uSUQsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25BZGQoKSAtIGZhaWx1cmUgZXhwZWN0ZWQiLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBvaygKICAgICAgICAoICREZWZpbml0aW9uSUQgLy8gMCApID4gMCwKICAgICAgICAiJFRlc3QtPntOYW1lfSBEZWZpbml0aW9uQWRkKCkgLSBEZWZpbml0aW9uSUQiCiAgICApOwoKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionGet.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ2xhc3NJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7Cm9rKCAkQ2xhc3NJRCwgIkNsYXNzIGFkZGVkIHRvIEdlbmVyYWxDYXRhbG9nIiApOwoKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAlRGVmaW5pdGlvblRlbXBsYXRlID0gKAogICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgIENsYXNzICAgICAgPT4gJFJhbmRvbUlELAogICAgQ3JlYXRlQnkgICA9PiAkVXNlcklELAogICAgVmVyc2lvbiAgICA9PiAxLAogICAgRGVmaW5pdGlvbiA9PiA8PCdFTkRfWUFNTCcsCi0tLQpQYWdlczoKICAtIE5hbWU6IFBhZ2UxCiAgICBJbnRlcmZhY2VzOiBbXQogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjIKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCgpTZWN0aW9uczoKICBTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgogIFNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVORF9ZQU1MCik7CgpteSAkRGVmaW5pdGlvblJlZiA9IHsKICAgIFBhZ2VzID0+IFsKICAgICAgICB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAiU2VjdGlvbjEiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEludGVyZmFjZXMgPT4gW10sCiAgICAgICAgICAgIExheW91dCAgICAgPT4gewogICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMywKICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICIxZnIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5hbWUgPT4gIlBhZ2UxIiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJTZWN0aW9uMiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDMsCiAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAiMWZyIgogICAgICAgICAgICB9LAogICAgICAgICAgICBOYW1lID0+ICJQYWdlMiIsCiAgICAgICAgfSwKICAgIF0sCiAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgU2VjdGlvbjEgPT4geyBDb250ZW50ID0+IFsgeyBIZWFkZXIgPT4gIlRoaXMgaXMgc2VjdGlvbiAxIiB9IF0gfSwKICAgICAgICBTZWN0aW9uMiA9PiB7IENvbnRlbnQgPT4gWyB7IEhlYWRlciA9PiAiVGhpcyBpcyBzZWN0aW9uIDIiIH0gXSB9LAogICAgfSwKfTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkRlZmluaXRpb25BZGQoKSB3YXMgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRCA9ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwpvayggJERlZmluaXRpb25JRCwgIkRlZmluaXRpb25BZGQoKSIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQnkgRGVmaW5pdGlvbklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgICA9PiAkRGVmaW5pdGlvblJlZiwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiB7fSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0J5IENsYXNzSUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICAlRGVmaW5pdGlvblRlbXBsYXRlLAogICAgICAgICAgICBEZWZpbml0aW9uUmVmICAgPT4gJERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICBEeW5hbWljRmllbGRSZWYgPT4ge30sCiAgICAgICAgfSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgJFRlc3QtPntDb25maWd9LT4lKgogICAgKTsKCiAgICBpZiAoICEkVGVzdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgIG9rKCAhJERlZmluaXRpb24sICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25HZXQoKSAtIGZhaWx1cmUgZXhwZWN0ZWQiICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBkZWxldGUgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfTsKCiAgICBpcygKICAgICAgICAkRGVmaW5pdGlvbiwKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gRGVmaW5pdGlvbkdldCgpIC0gRGVmaW5pdGlvbiIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionList.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgQENvbmZpZ0l0ZW1ZQU1MRGVmaW5pdGlvbnMgPSA8PCdFTkRfWUFNTCc7Ci0tLQpQYWdlczoKICAtIE5hbWU6IENJXzFfUGFnZTEKICAgIEludGVyZmFjZXM6IFtdCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDMKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBDSV8xX1NlY3Rpb24xCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQogIC0gTmFtZTogQ0lfMV9QYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogQ0lfMV9TZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKClNlY3Rpb25zOgogIENJXzFfU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMSIKICBDSV8xX1NlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVORF9ZQU1MCgojIHNlY29uZCBpdGVtIGlzIGEgdmFyaWFudCBvZiB0aGUgZmlyc3QgaXRlbQpwdXNoIEBDb25maWdJdGVtWUFNTERlZmluaXRpb25zLCAoICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdID1+IHMvQ0lfMV8vQ0lfMl8vcmcgKTsKCm15ICRDbGFzc0lEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21JRCwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gJFVzZXJJRCwKKTsKb2soICRDbGFzc0lELCAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciICk7CgpteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKbXkgJFJlc3VsdDEgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRVc2VySUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdCik7Cm9rKCAkUmVzdWx0MS0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIDEgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRDEgPSAkUmVzdWx0MS0+e0RlZmluaXRpb25JRH07Cm9rKCAkRGVmaW5pdGlvbklEMSwgIkRlZmluaXRpb25BZGQoKSAxIGdvdCBkZWZpbml0aW9uIElEIiApOwoKbXkgJFJlc3VsdDIgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRVc2VySUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzFdCik7Cm9rKCAkUmVzdWx0MS0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIDIgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRDIgPSAkUmVzdWx0Mi0+e0RlZmluaXRpb25JRH07Cm9rKCAkRGVmaW5pdGlvbklEMSwgIkRlZmluaXRpb25BZGQoKSAyIGdvdCBkZWZpbml0aW9uIElEICIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQnkgQ2xhc3NJRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdLAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzFdLAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRDIsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgRGVmaW5pdGlvblJlZiBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGxpc3QKICAgIG15ICREZWZpbml0aW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICAkVGVzdC0+e0NvbmZpZ30tPiUqCiAgICApOwoKICAgIGlmICggISRUZXN0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgb2soCiAgICAgICAgICAgICEkRGVmaW5pdGlvbkxpc3QsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25MaXN0KCkgLSBmYWlsdXJlIGV4cGVjdGVkIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZm9yIG15ICREZWZpbml0aW9uICggJERlZmluaXRpb25MaXN0LT5AKiApIHsKICAgICAgICBkZWxldGUgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfTsKICAgIH0KCiAgICBpcygKICAgICAgICAkRGVmaW5pdGlvbkxpc3QsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25MaXN0KCkgLSBEZWZpbml0aW9uIgogICAgKTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/Role.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCggVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luICk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiMgYWRkIGR5bmFtaWMgZmllbGRzIGZvciB0ZXN0aW5nCm15ICRGaWVsZE9yZGVyID0gMTsKbXkgJUR5bmFtaWNGaWVsZFNob3J0TmFtZTJJRDsKZm9yIG15ICRTaG9ydE5hbWUgKHF3KERGMSBERjIgREYzIERGNCkpIHsKCiAgICAjIGFkZCBhIG5ldyBpdGVtCiAgICBteSAkREZOYW1lICAgICAgICAgPSBqb2luICctJywgJFNob3J0TmFtZSwgJFJhbmRvbUlEOwogICAgbXkgJER5bmFtaWNGaWVsZElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBOYW1lICAgICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAiJERGTmFtZSDimJQiLAogICAgICAgIEZpZWxkT3JkZXIgICAgPT4gJEZpZWxkT3JkZXIrKywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdUZXh0JywKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAiZGVmYXVsdCB2YWx1ZSBmb3IgJERGTmFtZSDimJQiLAogICAgICAgIH0sCiAgICAgICAgUmVvcmRlciA9PiAxLAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwogICAgb2soICREeW5hbWljRmllbGRJRCwgImNyZWF0ZWQgZHluYW1pYyBmaWVsZCAkREZOYW1lIiApOwogICAgJER5bmFtaWNGaWVsZFNob3J0TmFtZTJJRHskU2hvcnROYW1lfSA9ICREeW5hbWljRmllbGRJRDsKfQoKIyBhZGQgUm9sZQp7CiAgICAjIGRlY2xhcmUgdGhlIHJvbGUgaW4gdGhlIGdlbmVyYWwgY2F0YWxvZwogICAgbXkgJFJvbGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgIE5hbWUgICAgPT4gIlJvbGVfJFJhbmRvbUlEIiwKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAkVXNlcklELAogICAgKTsKICAgIG9rKCAkUm9sZUlELCAiUm9sZSBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCiAgICBteSAkWUFNTERlZmluaXRpb24gPSA8PCJFTkRfWUFNTCI7Ci0tLQpTZWN0aW9uczoKICBOb0R5bmFtaWNGaWVsZDoKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIk5vIGR5bmFtaWMgZmllbGQiCiAgT25lRHluYW1pY0ZpZWxkOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiTm8gZHluYW1pYyBmaWVsZCIKICAgICAgIC0gREY6IERGMS0kUmFuZG9tSUQKICBUd29EeW5hbWljRmllbGRzOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiTm8gZHluYW1pYyBmaWVsZCIKICAgICAgIC0gREY6IERGMS0kUmFuZG9tSUQKICAgICAgIC0gREY6IERGMi0kUmFuZG9tSUQKICBUaHJlZUR5bmFtaWNGaWVsZHM6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJObyBkeW5hbWljIGZpZWxkIgogICAgICAgLSBERjogREYxLSRSYW5kb21JRAogICAgICAgLSBERjogREYyLSRSYW5kb21JRAogICAgICAgLSBERjogREYzLSRSYW5kb21JRAogIE9ubHlERjQ6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJvbmx5IHRoZSBkeW5hbWljIGZpZWxkIERGNCwgbm90IHJlZmVyZW5jZWQgaW4gYW55IHBhZ2UiCiAgICAgICAtIERGOiBERjQtJFJhbmRvbUlECkVORF9ZQU1MCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgIFJvbGVJRCAgICAgPT4gJFJvbGVJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIlJvbGVfJFJhbmRvbUlEIHN1Y2Nlc3NmdWxseSBhZGRlZCIgKTsKfQoKIyBUT0RPOiByZWZlciB0byBSb2xlIGluIERlZmluaXRpb24KCm15ICRDbGFzc0lEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwpvayggJENsYXNzSUQsICJDbGFzcyBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCm15ICVEZWZpbml0aW9uVGVtcGxhdGUgPSAoCiAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgQ2xhc3MgICAgICA9PiAiQ2xhc3NfJFJhbmRvbUlEIiwKICAgIENyZWF0ZUJ5ICAgPT4gJFVzZXJJRCwKICAgIFZlcnNpb24gICAgPT4gMSwKICAgIERlZmluaXRpb24gPT4gPDwiRU5EX1lBTUwiLAotLS0KUGFnZXM6CiAgLSBOYW1lOiBQYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IEVtcHR5U2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogRW1wdHlTZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKICAtIE5hbWU6IFBhZ2UzCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDMKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCiAgICAgIC0gU2VjdGlvbjogVGVzdFJvbGU6Ok9uZUR5bmFtaWNGaWVsZAogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKICAgICAgLSBTZWN0aW9uOiBUZXN0Um9sZTo6VGhyZWVEeW5hbWljRmllbGRzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMgoKU2VjdGlvbnM6CiAgRW1wdHlTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgdGhlIGVtcHR5IHNlY3Rpb24gMSIKICBFbXB0eVNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyB0aGUgZW1wdHkgc2VjdGlvbiAyIgpSb2xlczoKICBUZXN0Um9sZToKICAgIE5hbWU6ICJSb2xlXyRSYW5kb21JRCIKICAgIFZlcnNpb246IDEKRU5EX1lBTUwKKTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkRlZmluaXRpb25BZGQoKSB3YXMgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRCA9ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwpvayggJERlZmluaXRpb25JRCwgIkRlZmluaXRpb25BZGQoKSByZXR1cm5lZCBhIGRlZmluaXRpb24gSUQiICk7CgpteSAkRXhwZWN0ZWREZWZpbml0aW9uUmVmID0gewogICAgUGFnZXMgPT4gWwogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJFbXB0eVNlY3Rpb24xIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW50ZXJmYWNlcyA9PiBbXSwKICAgICAgICAgICAgTGF5b3V0ICAgICA9PiB7CiAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAzLAogICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gIjFmciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZSA9PiAiUGFnZTEiLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ICAgID0+IDIsCiAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiAgICAgPT4gIkVtcHR5U2VjdGlvbjIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMywKICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICIxZnIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5hbWUgPT4gIlBhZ2UyIiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMiwKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAiVGVzdFJvbGU6Ok9uZUR5bmFtaWNGaWVsZCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJUZXN0Um9sZTo6VGhyZWVEeW5hbWljRmllbGRzIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAzLAogICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gIjFmciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZSA9PiAiUGFnZTMiLAogICAgICAgIH0sCiAgICBdLAogICAgUm9sZXMgPT4gewogICAgICAgIFRlc3RSb2xlID0+IHsKICAgICAgICAgICAgTmFtZSAgICA9PiAiUm9sZV8kUmFuZG9tSUQiLAogICAgICAgICAgICBWZXJzaW9uID0+IDEKICAgICAgICB9LAogICAgfSwKICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAiRW1wdHlTZWN0aW9uMSIgICAgICAgICAgICAgPT4geyBDb250ZW50ID0+IFsgeyBIZWFkZXIgPT4gIlRoaXMgaXMgdGhlIGVtcHR5IHNlY3Rpb24gMSIgfSBdIH0sCiAgICAgICAgIkVtcHR5U2VjdGlvbjIiICAgICAgICAgICAgID0+IHsgQ29udGVudCA9PiBbIHsgSGVhZGVyID0+ICJUaGlzIGlzIHRoZSBlbXB0eSBzZWN0aW9uIDIiIH0gXSB9LAogICAgICAgICJUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQiICA9PiB7IENvbnRlbnQgPT4gWyB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSBdIH0sCiAgICAgICAgIlRlc3RSb2xlOjpPbmVEeW5hbWljRmllbGQiID0+IHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjEtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgIlRlc3RSb2xlOjpPbmx5REY0IiA9PiB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgeyBIZWFkZXIgPT4gIm9ubHkgdGhlIGR5bmFtaWMgZmllbGQgREY0LCBub3QgcmVmZXJlbmNlZCBpbiBhbnkgcGFnZSIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjQtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgIlRlc3RSb2xlOjpUaHJlZUR5bmFtaWNGaWVsZHMiID0+IHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjEtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICAgICAgeyBERiAgICAgPT4gIkRGMi0kUmFuZG9tSUQiIH0sCiAgICAgICAgICAgICAgICB7IERGICAgICA9PiAiREYzLSRSYW5kb21JRCIgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgICJUZXN0Um9sZTo6VHdvRHluYW1pY0ZpZWxkcyIgPT4gewogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsgSGVhZGVyID0+ICJObyBkeW5hbWljIGZpZWxkIiB9LAogICAgICAgICAgICAgICAgeyBERiAgICAgPT4gIkRGMS0kUmFuZG9tSUQiIH0sCiAgICAgICAgICAgICAgICB7IERGICAgICA9PiAiREYyLSRSYW5kb21JRCIgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKfTsKbXkgJEV4cGVjdGVkRHluYW1pY0ZpZWxkUmVmID0gewogICAgIkRGMS0kUmFuZG9tSUQiID0+IHsKICAgICAgICBDSUNsYXNzID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgICAgIENvbmZpZyAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gImRlZmF1bHQgdmFsdWUgZm9yIERGMS0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIH0sCiAgICAgICAgRmllbGRUeXBlICA9PiAiVGV4dCIsCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU2hvcnROYW1lMklEe0RGMX0sCiAgICAgICAgTGFiZWwgICAgICA9PiAiREYxLSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgTmFtZSAgICAgICA9PiAiREYxLSRSYW5kb21JRCIsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAiSVRTTUNvbmZpZ0l0ZW0iLAogICAgfSwKICAgICJERjItJFJhbmRvbUlEIiA9PiB7CiAgICAgICAgQ0lDbGFzcyA9PiAiQ2xhc3NfJFJhbmRvbUlEIiwKICAgICAgICBDb25maWcgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICJkZWZhdWx0IHZhbHVlIGZvciBERjItJFJhbmRvbUlEIFx4ezI2MTR9IiwKICAgICAgICB9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gIlRleHQiLAogICAgICAgIElEICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFNob3J0TmFtZTJJRHtERjJ9LAogICAgICAgIExhYmVsICAgICAgPT4gIkRGMi0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIE5hbWUgICAgICAgPT4gIkRGMi0kUmFuZG9tSUQiLAogICAgICAgIE9iamVjdFR5cGUgPT4gIklUU01Db25maWdJdGVtIiwKICAgIH0sCiAgICAiREYzLSRSYW5kb21JRCIgPT4gewogICAgICAgIENJQ2xhc3MgPT4gIkNsYXNzXyRSYW5kb21JRCIsCiAgICAgICAgQ29uZmlnICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAiZGVmYXVsdCB2YWx1ZSBmb3IgREYzLSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgfSwKICAgICAgICBGaWVsZFR5cGUgID0+ICJUZXh0IiwKICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGRTaG9ydE5hbWUySUR7REYzfSwKICAgICAgICBMYWJlbCAgICAgID0+ICJERjMtJFJhbmRvbUlEIFx4ezI2MTR9IiwKICAgICAgICBOYW1lICAgICAgID0+ICJERjMtJFJhbmRvbUlEIiwKICAgICAgICBPYmplY3RUeXBlID0+ICJJVFNNQ29uZmlnSXRlbSIsCiAgICB9LAogICAgIkRGNC0kUmFuZG9tSUQiID0+IHsKICAgICAgICBDSUNsYXNzID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgICAgIENvbmZpZyAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gImRlZmF1bHQgdmFsdWUgZm9yIERGNC0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIH0sCiAgICAgICAgRmllbGRUeXBlICA9PiAiVGV4dCIsCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU2hvcnROYW1lMklEe0RGNH0sCiAgICAgICAgTGFiZWwgICAgICA9PiAiREY0LSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgTmFtZSAgICAgICA9PiAiREY0LSRSYW5kb21JRCIsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAiSVRTTUNvbmZpZ0l0ZW0iLAogICAgfSwKfTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0J5IERlZmluaXRpb25JRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICAlRGVmaW5pdGlvblRlbXBsYXRlLAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgRGVmaW5pdGlvblJlZiAgID0+ICRFeHBlY3RlZERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRXhwZWN0ZWREeW5hbWljRmllbGRSZWYsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdCeSBDbGFzc0lEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IHsKICAgICAgICAgICAgJURlZmluaXRpb25UZW1wbGF0ZSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgICA9PiAkRXhwZWN0ZWREZWZpbml0aW9uUmVmLAogICAgICAgICAgICBEeW5hbWljRmllbGRSZWYgPT4gJEV4cGVjdGVkRHluYW1pY0ZpZWxkUmVmLAogICAgICAgIH0sCiAgICB9LAopOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICRUZXN0LT57Q29uZmlnfS0+JSoKICAgICk7CgogICAgaWYgKCAhJFRlc3QtPntTdWNjZXNzfSApIHsKICAgICAgICBvayggISREZWZpbml0aW9uLCAiJFRlc3QtPntOYW1lfSBEZWZpbml0aW9uR2V0KCkgLSBmYWlsdXJlIGV4cGVjdGVkIiApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZGVsZXRlICREZWZpbml0aW9uLT57Q3JlYXRlVGltZX07CgogICAgaXMoCiAgICAgICAgJERlZmluaXRpb24sCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25HZXQoKSAtIERlZmluaXRpb24iCiAgICApOwp9Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/DynamicFieldImportExport.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKIyBJbXBvcnQgYW5kIGV4cG9ydCBvZiBkeW5hbWljIGZpZWxkIGNvbmZpZ3Mgd2l0aCBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgaW5zdGFsbGVkLAojIHNlZSBPVE9CTyBpc3N1ZSAjNjIyNy4gQ291bnRlcnBhcnQgb2Ygc2NyaXB0cy90ZXN0L0R5bmFtaWNGaWVsZC9JbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnLnQKIyBpbiB0aGUgT1RPQk8gZnJhbWV3b3JrLgojCiMgQ292ZXJzIHRoZSBmaWVsZCB0eXBlcyBvZiB0aGUgSVRTTSBwYWNrYWdlcyAoQ29uZmlnSXRlbSwgQ29uZmlnSXRlbVZlcnNpb24sIEdlbmVyYWxDYXRhbG9nLAojIFNlcnZpY2UpIGFuZCBhIExlbnMgZmllbGQgZnJvbSBhIHRpY2tldCB0byBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZS4KIwojIFRoZSBMZW5zIGRyaXZlciBpdHNlbGYsIHdoaWNoIHRoaXMgcGFja2FnZSBvdmVycmlkZXMgd2l0aAojIEN1c3RvbS9LZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTGVucy5wbSwgaXMgdGVzdGVkIGJ5IHRoZSBmcmFtZXdvcmsgdGVzdAojIHNjcmlwdHMvdGVzdC9EeW5hbWljRmllbGQvSW1wb3J0RXhwb3J0UHJlcGFyZUNvbmZpZy50LCB3aGljaCB1c2VzIHRoZSBvdmVycmlkZGVuCiMgZHJpdmVyIHdoZW4gdGhpcyBwYWNrYWdlIGlzIGluc3RhbGxlZC4KIwojIFBhcnQgMTogSW1wb3J0RXhwb3J0UHJlcGFyZUNvbmZpZygpIG9mIHRoZSBkcml2ZXJzLCBjaGVja2VkIGFnYWluc3QgdGhlaXIgUE9EOgojICAgICAgICAgIkZvciBleHBvcnQsIHRoZSBOYW1lIGlzIG5lZWRlZCAuLi4gRHVyaW5nIGltcG9ydCwgdGhlIE5hbWUgbmVlZHMgdG8gYmUKIyAgICAgICAgIHRyYW5zbGF0ZWQgYmFjayBpbnRvIHRoZSBJRCIuIFNob3dzIHdoaWNoIGRpcmVjdGlvbiBlYWNoIGRyaXZlciBpbXBsZW1lbnRzLgojIFBhcnQgMjogRHluYW1pY0ZpZWxkQ29uZmlnSUQyTmFtZSgpIChleHBvcnQpIGFuZCBEeW5hbWljRmllbGRDb25maWdOYW1lMklEKCkgKGltcG9ydCkuCiMgUGFydCAzOiBjb21wbGV0ZSByb3VuZCB0cmlwIGxpa2UgQWRtaW5EeW5hbWljRmllbGRJbXBvcnRFeHBvcnQgZG9lcyBpdDoKIyAgICAgICAgICAgY3JlYXRlIC0+IGV4cG9ydCAtPiBkZWxldGUgLT4gaW1wb3J0IChuZXcgSURzLCBsaWtlIGFub3RoZXIgc3lzdGVtKSAtPiBjb21wYXJlCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKbXkgJFpudW55SGVscGVyT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJyk7Cm15ICRTdG9yYWJsZU9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdG9yYWJsZScpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyB3b3JrIG9uIGNvcGllcywgdGhlIHRlc3RlZCBmdW5jdGlvbnMgY2hhbmdlIHRoZSBwYXNzZWQgY29uZmlnIGluIHBsYWNlCnN1YiBDbG9uZSB7CiAgICBteSAoJERhdGEpID0gQF87CgogICAgcmV0dXJuICRTdG9yYWJsZU9iamVjdC0+Q2xvbmUoIERhdGEgPT4gJERhdGEgKTsKfQoKIyB0aGUgZHJpdmVyIG9iamVjdCBvZiBhIGZpZWxkIHR5cGUsIHRha2VuIGZyb20gdGhlIHJlZ2lzdHJhdGlvbgpzdWIgRHJpdmVyT2JqZWN0R2V0IHsKICAgIG15ICgkRmllbGRUeXBlKSA9IEBfOwoKICAgIG15ICREcml2ZXJDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0R5bmFtaWNGaWVsZHM6OkRyaXZlcicpIC8vIHt9OwogICAgbXkgJERyaXZlck1vZHVsZSA9ICREcml2ZXJDb25maWctPnskRmllbGRUeXBlfS0+e01vZHVsZX07CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJERyaXZlck1vZHVsZSk7Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBzZXR1cDogb2JqZWN0cyB3aGljaCBhcmUgcmVmZXJlbmNlZCBieSBJRCBpbiBmaWVsZCBjb25maWdzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRDbGFzc05hbWUgPSAiQ2xhc3MkUmFuZG9tSUQiOwpteSAkQ2xhc3NJRCAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkQ2xhc3NOYW1lLAogICAgVmFsaWRJRCA9PiAxLAogICAgQ29tbWVudCA9PiAnVW5pdCB0ZXN0IGNsYXNzJywKICAgIFVzZXJJRCAgPT4gMSwKKTsKb2soICRDbGFzc0lELCAiY29uZmlnIGl0ZW0gY2xhc3MgJENsYXNzTmFtZSBjcmVhdGVkIiApOwoKbXkgJURlcGxTdGF0ZU5hbWUySUQgPSByZXZlcnNlICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnICktPiUqOwpteSAkRGVwbFN0YXRlTmFtZSAgICA9ICdQcm9kdWN0aW9uJzsKbXkgJERlcGxTdGF0ZUlEICAgICAgPSAkRGVwbFN0YXRlTmFtZTJJRHskRGVwbFN0YXRlTmFtZX07Cm9rKCAkRGVwbFN0YXRlSUQsICJkZXBsb3ltZW50IHN0YXRlICREZXBsU3RhdGVOYW1lIGV4aXN0cyIgKTsKCm15ICRTZXJ2aWNlTmFtZSA9ICJTZXJ2aWNlJFJhbmRvbUlEIjsKbXkgJFNlcnZpY2VJRCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUFkZCgKICAgIE5hbWUgICAgICAgID0+ICRTZXJ2aWNlTmFtZSwKICAgIENvbW1lbnQgICAgID0+ICdVbml0IHRlc3Qgc2VydmljZScsCiAgICBWYWxpZElEICAgICA9PiAxLAogICAgVXNlcklEICAgICAgPT4gMSwKICAgIFR5cGVJRCAgICAgID0+IDEsCiAgICBDcml0aWNhbGl0eSA9PiAnMyBub3JtYWwnLAopOwpvayggJFNlcnZpY2VJRCwgInNlcnZpY2UgJFNlcnZpY2VOYW1lIGNyZWF0ZWQiICk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgc2V0dXA6IG9uZSBkeW5hbWljIGZpZWxkIG9mIGV2ZXJ5IElUU00gZmllbGQgdHlwZSBhbmQgYSBMZW5zIGZpZWxkCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15IEBGaWVsZERlZmluaXRpb25zID0gKAoKICAgICMgY29uZmlnIGl0ZW0gYXR0cmlidXRlLCB1c2VkIGJ5IHRoZSBMZW5zIGZpZWxkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICA9PiAiQ0lUZXh0JFJhbmRvbUlEIiwKICAgICAgICBGaWVsZFR5cGUgID0+ICdUZXh0JywKICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICA9PiB7IERlZmF1bHRWYWx1ZSA9PiAnJyB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICJDb25maWdJdGVtJFJhbmRvbUlEIiwKICAgICAgICBGaWVsZFR5cGUgID0+ICdDb25maWdJdGVtJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBFZGl0RmllbGRNb2RlICAgICAgICA9PiAnQXV0b0NvbXBsZXRlJywKICAgICAgICAgICAgTXVsdGlWYWx1ZSAgICAgICAgICAgPT4gMCwKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgPT4gWyRDbGFzc0lEXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzICAgICAgICAgPT4gWyREZXBsU3RhdGVJRF0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICA9PiAiQ29uZmlnSXRlbVZlcnNpb24kUmFuZG9tSUQiLAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICA9PiB7CiAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbVZlcnNpb24nLAogICAgICAgICAgICBFZGl0RmllbGRNb2RlICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgICAgICBNdWx0aVZhbHVlICAgICAgICAgICA9PiAwLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICA9PiBbJENsYXNzSURdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgICAgICAgICA9PiBbJERlcGxTdGF0ZUlEXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICJHZW5lcmFsQ2F0YWxvZyRSYW5kb21JRCIsCiAgICAgICAgRmllbGRUeXBlICA9PiAnR2VuZXJhbENhdGFsb2cnLAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBDb25maWcgICAgID0+IHsKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICJTZXJ2aWNlJFJhbmRvbUlEIiwKICAgICAgICBGaWVsZFR5cGUgID0+ICdTZXJ2aWNlJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZSA9PiAnU2VydmljZScsCiAgICAgICAgICAgIEVkaXRGaWVsZE1vZGUgICAgICAgID0+ICdEcm9wZG93bicsCiAgICAgICAgICAgIE11bHRpVmFsdWUgICAgICAgICAgID0+IDAsCiAgICAgICAgICAgIEFsbG93ZWRTZXJ2aWNlSURzICAgID0+IFskU2VydmljZUlEXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIExlbnM6IHRpY2tldCAtPiBjb25maWcgaXRlbSAtPiBhdHRyaWJ1dGUsIEF0dHJpYnV0ZURGIGFuZCBSZWZlcmVuY2VERiBhcmUgc3RvcmVkIGFzIElEcwogICAgewogICAgICAgIE5hbWUgICAgICAgPT4gIkxlbnNUb0NJJFJhbmRvbUlEIiwKICAgICAgICBGaWVsZFR5cGUgID0+ICdMZW5zJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4geyBNdWx0aVZhbHVlID0+IDAgfSwKICAgICAgICBMZW5zT2YgICAgID0+IHsKICAgICAgICAgICAgQXR0cmlidXRlREYgPT4gIkNJVGV4dCRSYW5kb21JRCIsCiAgICAgICAgICAgIFJlZmVyZW5jZURGID0+ICJDb25maWdJdGVtJFJhbmRvbUlEIgogICAgICAgIH0sCiAgICB9LAopOwoKbXkgJUZpZWxkSUQ7ICAgICMgbmFtZSAtPiBJRCBpbiB0aGUgInNvdXJjZSIgc3lzdGVtCm15ICRGaWVsZE9yZGVyID0gOTAwMDsKZm9yIG15ICREZWZpbml0aW9uIChARmllbGREZWZpbml0aW9ucykgewogICAgbXkgJUNvbmZpZyA9ICREZWZpbml0aW9uLT57Q29uZmlnfS0+JSo7CgogICAgIyByZXBsYWNlIGZpZWxkIG5hbWVzIGJ5IHRoZSBJRHMgb2YgdGhlIGFscmVhZHkgY3JlYXRlZCBmaWVsZHMKICAgIGlmICggJERlZmluaXRpb24tPntMZW5zT2Z9ICkgewogICAgICAgIGZvciBteSAkQXR0cmlidXRlICgga2V5cyAkRGVmaW5pdGlvbi0+e0xlbnNPZn0tPiUqICkgewogICAgICAgICAgICAkQ29uZmlneyRBdHRyaWJ1dGV9ID0gJEZpZWxkSUR7ICREZWZpbml0aW9uLT57TGVuc09mfXskQXR0cmlidXRlfSB9OwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSUQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAkRGVmaW5pdGlvbi0+e05hbWV9LAogICAgICAgIExhYmVsICAgICAgPT4gIkxhYmVsICREZWZpbml0aW9uLT57TmFtZX0iLAogICAgICAgIEZpZWxkT3JkZXIgPT4gJEZpZWxkT3JkZXIrKywKICAgICAgICBGaWVsZFR5cGUgID0+ICREZWZpbml0aW9uLT57RmllbGRUeXBlfSwKICAgICAgICBPYmplY3RUeXBlID0+ICREZWZpbml0aW9uLT57T2JqZWN0VHlwZX0sCiAgICAgICAgQ29uZmlnICAgICA9PiBcJUNvbmZpZywKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgPT4gMCwKICAgICk7CiAgICBvayggJElELCAic291cmNlIHN5c3RlbTogJERlZmluaXRpb24tPntGaWVsZFR5cGV9IGZpZWxkICREZWZpbml0aW9uLT57TmFtZX0gY3JlYXRlZCIgKTsKICAgICRGaWVsZElEeyAkRGVmaW5pdGlvbi0+e05hbWV9IH0gPSAkSUQ7Cn0KCm15IEBGaWVsZE5hbWVzID0gbWFwIHsgJF8tPntOYW1lfSB9IEBGaWVsZERlZmluaXRpb25zOwpteSAlT3JpZ2luYWwgICA9IG1hcCB7ICRfID0+ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggTmFtZSA9PiAkXyApIH0gQEZpZWxkTmFtZXM7CgpzdWJ0ZXN0ICdldmVyeSBJVFNNIGZpZWxkIHR5cGUgaXMgY292ZXJlZCcgPT4gc3ViIHsKICAgIG15ICVDb3ZlcmVkID0gbWFwIHsgJF8tPntGaWVsZFR5cGV9ID0+IDEgfSBARmllbGREZWZpbml0aW9uczsKICAgIGZvciBteSAkRmllbGRUeXBlIChxdyhDb25maWdJdGVtIENvbmZpZ0l0ZW1WZXJzaW9uIEdlbmVyYWxDYXRhbG9nIFNlcnZpY2UpKSB7CiAgICAgICAgb2soICRDb3ZlcmVkeyRGaWVsZFR5cGV9LCAiZmllbGQgdHlwZSAkRmllbGRUeXBlIGlzIHBhcnQgb2YgdGhlIHJvdW5kIHRyaXAiICk7CiAgICB9Cn07CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcGFydCAxOiBkcml2ZXJzLCBkaXJlY3Rpb24gYXMgZG9jdW1lbnRlZCBpbiB0aGVpciBQT0QKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBEaXJlY3Rpb24gJ0V4cG9ydCcgbXVzdCB0dXJuIElEcyBpbnRvIG5hbWVzLCBEaXJlY3Rpb24gJ0ltcG9ydCcgbmFtZXMgaW50byBJRHMuCm15IEBEcml2ZXJUZXN0cyA9ICgKICAgIHsKICAgICAgICBGaWVsZFR5cGUgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIElEcyAgICAgICA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbJENsYXNzSURdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyREZXBsU3RhdGVJRF0KICAgICAgICB9LAogICAgICAgIE5hbWVzID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFskQ2xhc3NOYW1lXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFskRGVwbFN0YXRlTmFtZV0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBGaWVsZFR5cGUgPT4gJ0NvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBJRHMgICAgICAgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc0lEXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFskRGVwbFN0YXRlSURdCiAgICAgICAgfSwKICAgICAgICBOYW1lcyA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbJENsYXNzTmFtZV0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbJERlcGxTdGF0ZU5hbWVdCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgRmllbGRUeXBlID0+ICdTZXJ2aWNlJywKICAgICAgICBJRHMgICAgICAgPT4geyBBbGxvd2VkU2VydmljZUlEcyA9PiBbJFNlcnZpY2VJRF0gfSwKICAgICAgICBOYW1lcyAgICAgPT4geyBBbGxvd2VkU2VydmljZUlEcyA9PiBbJFNlcnZpY2VOYW1lXSB9LAogICAgfSwKKTsKCmZvciBteSAkVGVzdCAoQERyaXZlclRlc3RzKSB7CiAgICBzdWJ0ZXN0ICJkcml2ZXIgJFRlc3QtPntGaWVsZFR5cGV9OiBJbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnKCkgYXMgZG9jdW1lbnRlZCIgPT4gc3ViIHsKICAgICAgICBteSAkRHJpdmVyT2JqZWN0ID0gRHJpdmVyT2JqZWN0R2V0KCAkVGVzdC0+e0ZpZWxkVHlwZX0gKTsKCiAgICAgICAgbXkgJUV4cG9ydGVkOwogICAgICAgIG9rKAogICAgICAgICAgICBsaXZlcyB7CiAgICAgICAgICAgICAgICAlRXhwb3J0ZWQgPSAkRHJpdmVyT2JqZWN0LT5JbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnKAogICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICAgICAgICA9PiAnRXhwb3J0JywKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgPT4gJ0RyaXZlclRlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWcgPT4gQ2xvbmUoICRUZXN0LT57SURzfSApCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJEaXJlY3Rpb24gJ0V4cG9ydCcgZG9lcyBub3QgZGllIiwKICAgICAgICApIHx8IGRpYWcoJEApOwogICAgICAgIGlzKCBcJUV4cG9ydGVkLCAkVGVzdC0+e05hbWVzfSwgIkRpcmVjdGlvbiAnRXhwb3J0JyB0cmFuc2xhdGVzIElEcyBpbnRvIG5hbWVzIiApOwoKICAgICAgICBteSAlSW1wb3J0ZWQ7CiAgICAgICAgb2soCiAgICAgICAgICAgIGxpdmVzIHsKICAgICAgICAgICAgICAgICVJbXBvcnRlZCA9ICREcml2ZXJPYmplY3QtPkltcG9ydEV4cG9ydFByZXBhcmVDb25maWcoCiAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgICAgICAgID0+ICdJbXBvcnQnLAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAnRHJpdmVyVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZyA9PiBDbG9uZSggJFRlc3QtPntOYW1lc30gKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9LAogICAgICAgICAgICAiRGlyZWN0aW9uICdJbXBvcnQnIGRvZXMgbm90IGRpZSIsCiAgICAgICAgKSB8fCBkaWFnKCRAKTsKICAgICAgICBpcyggXCVJbXBvcnRlZCwgJFRlc3QtPntJRHN9LCAiRGlyZWN0aW9uICdJbXBvcnQnIHRyYW5zbGF0ZXMgbmFtZXMgaW50byBJRHMiICk7CiAgICB9Owp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcGFydCAyOiBEeW5hbWljRmllbGRDb25maWdJRDJOYW1lKCkgYW5kIER5bmFtaWNGaWVsZENvbmZpZ05hbWUySUQoKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgpteSBAVHJhbnNsYXRpb25UZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICA9PiAiQ29uZmlnSXRlbSRSYW5kb21JRCIsCiAgICAgICAgTmFtZXMgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc05hbWVdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyREZXBsU3RhdGVOYW1lXQogICAgICAgIH0sCiAgICAgICAgSURzID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbJERlcGxTdGF0ZUlEXQogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICJDb25maWdJdGVtVmVyc2lvbiRSYW5kb21JRCIsCiAgICAgICAgTmFtZXMgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc05hbWVdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyREZXBsU3RhdGVOYW1lXQogICAgICAgIH0sCiAgICAgICAgSURzID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbJERlcGxTdGF0ZUlEXQogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICJTZXJ2aWNlJFJhbmRvbUlEIiwKICAgICAgICBOYW1lcyA9PiB7IEFsbG93ZWRTZXJ2aWNlSURzID0+IFskU2VydmljZU5hbWVdIH0sCiAgICAgICAgSURzICAgPT4geyBBbGxvd2VkU2VydmljZUlEcyA9PiBbJFNlcnZpY2VJRF0gfSwKICAgIH0sCik7Cgpmb3IgbXkgJFRlc3QgKEBUcmFuc2xhdGlvblRlc3RzKSB7CiAgICBzdWJ0ZXN0ICJEeW5hbWljRmllbGRDb25maWdJRDJOYW1lKCkgYW5kIER5bmFtaWNGaWVsZENvbmZpZ05hbWUySUQoKTogJE9yaWdpbmFseyAkVGVzdC0+e05hbWV9IH17RmllbGRUeXBlfSIgPT4gc3ViIHsKICAgICAgICBteSAkRXhwb3J0ZWQ7CiAgICAgICAgb2soCiAgICAgICAgICAgIGxpdmVzIHsKICAgICAgICAgICAgICAgICRFeHBvcnRlZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZENvbmZpZ0lEMk5hbWUoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IENsb25lKCAkT3JpZ2luYWx7ICRUZXN0LT57TmFtZX0gfSApLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZENvbmZpZ0lEMk5hbWUoKSBkb2VzIG5vdCBkaWUnLAogICAgICAgICkgfHwgZGlhZygkQCk7CgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICRUZXN0LT57TmFtZXN9LT4lKiApIHsKICAgICAgICAgICAgaXMoICRFeHBvcnRlZC0+e0NvbmZpZ317JEF0dHJpYnV0ZX0sICRUZXN0LT57TmFtZXN9eyRBdHRyaWJ1dGV9LCAiZXhwb3J0OiAkQXR0cmlidXRlIGFzIG5hbWUiICk7CiAgICAgICAgfQoKICAgICAgICBteSAkSW1wb3J0Q29uZmlnID0gQ2xvbmUoICRPcmlnaW5hbHsgJFRlc3QtPntOYW1lfSB9ICk7CiAgICAgICAgJEltcG9ydENvbmZpZy0+e0NvbmZpZ30gPSB7CiAgICAgICAgICAgICRJbXBvcnRDb25maWctPntDb25maWd9LT4lKiwKICAgICAgICAgICAgQ2xvbmUoICRUZXN0LT57TmFtZXN9ICktPiUqLAogICAgICAgIH07CgogICAgICAgIG15ICRJbXBvcnRlZDsKICAgICAgICBvaygKICAgICAgICAgICAgbGl2ZXMgewogICAgICAgICAgICAgICAgJEltcG9ydGVkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQ29uZmlnTmFtZTJJRCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEltcG9ydENvbmZpZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdEeW5hbWljRmllbGRDb25maWdOYW1lMklEKCkgZG9lcyBub3QgZGllJywKICAgICAgICApIHx8IGRpYWcoJEApOwoKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAkVGVzdC0+e0lEc30tPiUqICkgewogICAgICAgICAgICBpcyggJEltcG9ydGVkLT57Q29uZmlnfXskQXR0cmlidXRlfSwgJFRlc3QtPntJRHN9eyRBdHRyaWJ1dGV9LCAiaW1wb3J0OiAkQXR0cmlidXRlIGFzIElEIiApOwogICAgICAgIH0KICAgIH07Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBwYXJ0IDM6IHJvdW5kIHRyaXAgZXhwb3J0IC0+IGRlbGV0ZSAtPiBpbXBvcnQsIGxpa2UgaW50byBhbm90aGVyIHN5c3RlbQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgpzdWJ0ZXN0ICdyb3VuZCB0cmlwIG9mIGFsbCBJVFNNIGZpZWxkIHR5cGVzJyA9PiBzdWIgewoKICAgICMgZXhwb3J0LCBzYW1lIHBhcmFtZXRlcnMgYXMgS2VybmVsOjpNb2R1bGVzOjpBZG1pbkR5bmFtaWNGaWVsZEltcG9ydEV4cG9ydAogICAgbXkgJEV4cG9ydDsKICAgIG9rKAogICAgICAgIGxpdmVzIHsKICAgICAgICAgICAgJEV4cG9ydCA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNDb25maWdFeHBvcnQoCiAgICAgICAgICAgICAgICBGb3JtYXQgICAgICAgICAgICAgICAgPT4gJ3ZhcicsCiAgICAgICAgICAgICAgICBJbmNsdWRlSW50ZXJuYWxGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgIEluY2x1ZGVBbGxDb25maWdLZXlzICA9PiAxLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgID0+IFxARmllbGROYW1lcywKICAgICAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgICAnZXhwb3J0IGRvZXMgbm90IGRpZScsCiAgICApIHx8IGRpYWcoJEApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRFeHBvcnQpICkgewogICAgICAgIGZhaWwoJ25vdGhpbmcgZXhwb3J0ZWQsIHJvdW5kIHRyaXAgbm90IHBvc3NpYmxlJyk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlzKCBbIHNvcnQga2V5cyAkRXhwb3J0LT4lKiBdLCBbIHNvcnQgQEZpZWxkTmFtZXMgXSwgJ2FsbCBmaWVsZHMgYXJlIGV4cG9ydGVkJyApOwoKICAgICMgc2ltdWxhdGUgdGhlIHRyYW5zZmVyIGludG8gYW5vdGhlciBzeXN0ZW0gdmlhIFlBTUwsIGxpa2UgdGhlIGRvd25sb2FkIGRvZXMKICAgIG15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKICAgIG15ICRUcmFuc2ZlciAgID0gJFlBTUxPYmplY3QtPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkWUFNTE9iamVjdC0+RHVtcCggRGF0YSA9PiB7IER5bmFtaWNGaWVsZHMgPT4gJEV4cG9ydCB9ICksCiAgICApOwoKICAgICMgcmVtb3ZlIHRoZSBmaWVsZHMsIGRlcGVuZGVudCBmaWVsZHMgZmlyc3QsIGFuZCBjcmVhdGUgYSBmaWxsZXIgZmllbGQsCiAgICAjIHNvIHRoZSByZS1jcmVhdGVkIGZpZWxkcyB3aWxsIHN1cmVseSBnZXQgb3RoZXIgSURzCiAgICBmb3IgbXkgJE5hbWUgKCByZXZlcnNlIEBGaWVsZE5hbWVzICkgewogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICBJRCAgICAgPT4gJEZpZWxkSUR7JE5hbWV9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgIG9rKCAkU3VjY2VzcywgIiROYW1lIGRlbGV0ZWQiICk7CiAgICB9CiAgICBteSAkRmlsbGVySUQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAiRmlsbGVyJFJhbmRvbUlEIiwKICAgICAgICBMYWJlbCAgICAgID0+ICdGaWxsZXInLAogICAgICAgIEZpZWxkT3JkZXIgPT4gOTk5OSwKICAgICAgICBGaWVsZFR5cGUgID0+ICdUZXh0JywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4ge30sCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICBSZW9yZGVyICAgID0+IDAsCiAgICApOwogICAgb2soICRGaWxsZXJJRCwgJ2ZpbGxlciBmaWVsZCBjcmVhdGVkJyApOwoKICAgICMgaW1wb3J0LCBzYW1lIGZ1bmN0aW9uIGFzIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5EeW5hbWljRmllbGRJbXBvcnRFeHBvcnQgd2l0aCBvdmVyd3JpdGUKICAgIG15IEBJbXBvcnRGaWVsZHMgPSBtYXAgeyAkVHJhbnNmZXItPntEeW5hbWljRmllbGRzfXskX30gfSBARmllbGROYW1lczsKICAgIG15ICRSZXR1cm47CiAgICBvaygKICAgICAgICBsaXZlcyB7ICRSZXR1cm4gPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EeW5hbWljRmllbGRzQ3JlYXRlKEBJbXBvcnRGaWVsZHMpIH0sCiAgICAgICAgJ2ltcG9ydCBkb2VzIG5vdCBkaWUnLAogICAgKSB8fCBkaWFnKCRAKTsKICAgIG9rKCAkUmV0dXJuICYmICRSZXR1cm4tPntTdWNjZXNzfSwgJ2ltcG9ydCByZXBvcnRzIHN1Y2Nlc3MnICk7CgogICAgbXkgJU5ld0ZpZWxkSUQ7CiAgICBOQU1FOgogICAgZm9yIG15ICROYW1lIChARmllbGROYW1lcykgewogICAgICAgIG15ICRJbXBvcnRlZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggTmFtZSA9PiAkTmFtZSApOwogICAgICAgIG5leHQgTkFNRSB1bmxlc3Mgb2soIElzSGFzaFJlZldpdGhEYXRhKCRJbXBvcnRlZCksICIkTmFtZSBleGlzdHMgYWZ0ZXIgaW1wb3J0IiApOwoKICAgICAgICAkTmV3RmllbGRJRHskTmFtZX0gPSAkSW1wb3J0ZWQtPntJRH07CiAgICAgICAgaXNudCggJEltcG9ydGVkLT57SUR9LCAkRmllbGRJRHskTmFtZX0sICIkTmFtZSBoYXMgYSBuZXcgSUQiICk7CiAgICB9CgogICAgIyBjb21wYXJlIGV2ZXJ5IGltcG9ydGVkIGZpZWxkIHdpdGggdGhlIG9yaWdpbmFsIG9uZQogICAgTkFNRToKICAgIGZvciBteSAkTmFtZSAoQEZpZWxkTmFtZXMpIHsKICAgICAgICBuZXh0IE5BTUUgdW5sZXNzICROZXdGaWVsZElEeyROYW1lfTsKCiAgICAgICAgbXkgJEltcG9ydGVkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBOYW1lID0+ICROYW1lICk7CgogICAgICAgICMgZXhwZWN0ZWQ6IHRoZSBvcmlnaW5hbCBjb25maWcsIHJlZmVyZW5jZXMgdG8gb3RoZXIgZmllbGRzIHBvaW50IHRvIHRoZSBuZXcgSURzCiAgICAgICAgbXkgJEV4cGVjdGVkID0gQ2xvbmUoICRPcmlnaW5hbHskTmFtZX17Q29uZmlnfSApOwogICAgICAgIGlmICggJE9yaWdpbmFseyROYW1lfXtGaWVsZFR5cGV9IGVxICdMZW5zJyApIHsKICAgICAgICAgICAgbXkgJU9sZElEMk5hbWUgPSByZXZlcnNlICVGaWVsZElEOwogICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoQXR0cmlidXRlREYgUmVmZXJlbmNlREYpKSB7CiAgICAgICAgICAgICAgICBteSAkUmVmZXJlbmNlZE5hbWUgPSAkT2xkSUQyTmFtZXsgJEV4cGVjdGVkLT57JEF0dHJpYnV0ZX0gfTsKICAgICAgICAgICAgICAgICRFeHBlY3RlZC0+eyRBdHRyaWJ1dGV9ID0gJE5ld0ZpZWxkSUR7JFJlZmVyZW5jZWROYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkZWxldGUgJEV4cGVjdGVkLT57UGFydE9mU2V0fTsKCiAgICAgICAgbXkgJEdvdCA9IENsb25lKCAkSW1wb3J0ZWQtPntDb25maWd9ICk7CiAgICAgICAgZGVsZXRlICRHb3QtPntQYXJ0T2ZTZXR9OwoKICAgICAgICBpcygKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTGFiZWwgICAgICA9PiAkSW1wb3J0ZWQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICBGaWVsZFR5cGUgID0+ICRJbXBvcnRlZC0+e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlID0+ICRJbXBvcnRlZC0+e09iamVjdFR5cGV9LAogICAgICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkR290LAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRPcmlnaW5hbHskTmFtZX17TGFiZWx9LAogICAgICAgICAgICAgICAgRmllbGRUeXBlICA9PiAkT3JpZ2luYWx7JE5hbWV9e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlID0+ICRPcmlnaW5hbHskTmFtZX17T2JqZWN0VHlwZX0sCiAgICAgICAgICAgICAgICBDb25maWcgICAgID0+ICRFeHBlY3RlZCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgIiRPcmlnaW5hbHskTmFtZX17RmllbGRUeXBlfSBmaWVsZCAkTmFtZTogaW1wb3J0ZWQgY29uZmlnIG1hdGNoZXMgdGhlIG9yaWdpbmFsIiwKICAgICAgICApOwogICAgfQoKICAgICMgYSBzZWNvbmQgZXhwb3J0IG11c3QgZGVsaXZlciB0aGUgc2FtZSBkYXRhIGFzIHRoZSBmaXJzdCBvbmUKICAgIG15ICRSZWV4cG9ydDsKICAgIG9rKAogICAgICAgIGxpdmVzIHsKICAgICAgICAgICAgJFJlZXhwb3J0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0NvbmZpZ0V4cG9ydCgKICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgICAgICAgICAgICA9PiAndmFyJywKICAgICAgICAgICAgICAgIEluY2x1ZGVJbnRlcm5hbEZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgSW5jbHVkZUFsbENvbmZpZ0tleXMgID0+IDAsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICAgPT4gXEBGaWVsZE5hbWVzLAogICAgICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgID0+ICdIQVNIJywKICAgICAgICAgICAgKTsKICAgICAgICB9LAogICAgICAgICdzZWNvbmQgZXhwb3J0IGRvZXMgbm90IGRpZScsCiAgICApIHx8IGRpYWcoJEApOwoKICAgIGZvciBteSAkTmFtZSAoQEZpZWxkTmFtZXMpIHsKICAgICAgICBteSAlRmlyc3QgPSAkRXhwb3J0LT57JE5hbWV9LT4lKjsKICAgICAgICBkZWxldGUgQEZpcnN0e3F3KENoYW5nZVRpbWUgQ3JlYXRlVGltZSBJRCBJbnRlcm5hbEZpZWxkIFZhbGlkSUQgRmllbGRPcmRlcil9OwogICAgICAgIG15ICVTZWNvbmQgPSAoICRSZWV4cG9ydC0+eyROYW1lfSAvLyB7fSApLT4lKjsKICAgICAgICBkZWxldGUgQFNlY29uZHtxdyhGaWVsZE9yZGVyKX07CgogICAgICAgIGlzKCBcJVNlY29uZCwgXCVGaXJzdCwgIiROYW1lOiBzZWNvbmQgZXhwb3J0IGVxdWFscyB0aGUgZmlyc3QgZXhwb3J0IiApOwogICAgfQp9OwoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/StaticLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IHN0YXRpYyB2ZXJzaW9uZWQgbGlua3MKIyBiZXR3ZWVuIENJIGl0ZW1zCiMgZXhhbXBsZSBpcwojICBTdWJzaWRpYXJ5IC0+IHN0YXRpYwojICAgICAgICAgICAgICAgICAodmVyc2lvbmVkKQojICAgICAgICAgICAgICAgICBMb2NhdGlvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBib2lsZXJwbGF0ZQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwoKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwoKbXkgJFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4KKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJUNvdW50cnlMb29rdXA7Cm15ICVTdWJzaWRpYXJ5TG9va3VwOwoKIyBhc3N1cmUgc3RkIGNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkCl9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMoKTsKCiMgZ2xvYmFsIE9NIG9iamVjdHMKbXkgJERCT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwpteSAkQ29uZmlnSXRlbU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRMaW5rT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKIyBjYXRjaCBzdGF0ZSBiZWZvcmUgdGVzdCBydW4KbXkgJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwpteSAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKbXkgJEluaXRpYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByZXBhcmUgZW52aXJvbm1lbnQKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBmZXRjaCBjb25maWcgc3RhdGUgaWRzCm15ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgIE5hbWUgID0+ICdPcGVyYXRpb25hbCcsCik7CgpteSAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKCiMgZmV0Y2ggY291bnRyeSBhbmQgc3Vic2lkaWFyeSBjbGFzc2VzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRDb3VudHJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdDb3VudHJ5JywKKTsKb2soICRDb3VudHJ5Q2xhc3NJRCwgIkNvdW50cnkgY2xhc3MgZm91bmQuIiApOwoKbXkgJFN1YnNpZGlhcnlDbGFzc0lEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgPT4gJ1N1YnNpZGlhcnknLAopOwpvayggJFN1YnNpZGlhcnlDbGFzc0lELCAiU3Vic2lkaWFyeSBjbGFzcyBmb3VuZC4iICk7CgojIGFkZCBhIHZlcnNpb24gdHJpZ2dlciB0byBDb3VudHJ5IG9uIE5hbWUgYXR0cmlidXRlCm9rKAogICAgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MoKSwKICAgICJVcGRhdGVkIFZlcnNpb25UcmlnZ2VyIG9uIENvdW50cnkgQ2xhc3MgdG8gJ09uTmFtZUNoYW5nZS4nICIKKTsKCm15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgIE9iamVjdDEgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0IFN0YXRpYyBERiBSZWZlcmVuY2VzIGZvciBMaW5rVHlwZT0nJExpbmtUeXBlJyIgPT4gc3ViIHsKCiAgICAgICAgIyBjcmVhdGUgREYgc2ltaWxhciB0byBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkKICAgICAgICAjIGJ1dCB3aXRoIExpbmtSZWZlcmVuY2luZ1R5cGUgPT4gU3RhdGljIGFuZAogICAgICAgICMgUmVmZXJlbmNlZE9iamVjdFR5cGUgPT4gSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uCiAgICAgICAgb2soCiAgICAgICAgICAgIF9DcmVhdGVERlN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeSggTGlua1R5cGUgPT4gJExpbmtUeXBlICksCiAgICAgICAgICAgICJERiAnU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyBDcmVhdGVkLiIKICAgICAgICApOwoKICAgICAgICAjIGNoYW5nZSBTdWJzaWRpYXJ5IENsYXNzIERlZiB0byB1c2UgTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5CiAgICAgICAgb2soCiAgICAgICAgICAgIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvblRvVXNlU3RhdGljQ291bnRyeSggTGlua1R5cGUgPT4gJExpbmtUeXBlICksCiAgICAgICAgICAgICdVcGRhdGVkIFN1YnNpZGlhcnkgQ2xhc3MgRGVmaW5pdGlvbiB0byB1c2UgU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5IERGLicKICAgICAgICApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjEKICAgICAgICBteSAkVGVzdExvY2F0aW9uMUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1dlbGxibGVjaHNIYXVzZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKICAgICAgICAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMUlEfSA9ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICBvayggJFRlc3RMb2NhdGlvbjFJRCwgIlRlc3RMb2NhdGlvbjEgJyIgLiAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMUlEfSAuICInICgkVGVzdExvY2F0aW9uMUlEKSBjcmVhdGVkLiIgKTsKCiAgICAgICAgc3VidGVzdCAiQXNzZXJ0IHRoZXJlIGlzIDEgdmVyc2lvbiBvZiBUZXN0TG9jYXRpb24xIElEICRUZXN0TG9jYXRpb24xSUQiID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyBnZXQgY3VycmVudCBWZXJzaW9uSUQgZm9yIFRlc3RMb2NhdGlvbgogICAgICAgIG15ICRUZXN0TG9jYXRpb25GaXJzdFZlcnNpb25JRCA9IF9HZXRDb25maWdJdGVtQ3VycmVudFZlcnNpb24oCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkgd2l0aCBhIGxpbmsgdG8gdGVzdGxvY2F0aW9uMSB2MQogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0RlckJhdWVybmhvZicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1TdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbkZpcnN0VmVyc2lvbklECiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgICAgICAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gPSAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICBvaygKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSIgLiAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gLiAiICgkVGVzdFN1YnNpZGlhcnlJRCkgd2l0aCBzdGF0aWMgbGluayB0byAiIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gLiAiIGNyZWF0ZWQuIgogICAgICAgICk7CgogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgU3Vic2lkaWFyeSBoYXMgMSB2ZXJzaW9uIHRoYXQgcG9pbnRzIHRvICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gLiAiJyIgPT4gc3ViIHsKICAgICAgICAgICAgX0Fzc2VydFN1YnNpZGlhcnlWZXJzaW9uc0FuZExvY2F0aW9uKAogICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uTmFtZSA9PiAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2hhbmdlIFRlc3RMb2NhdGlvbiBOYW1lCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICBteSAkQ291bnRyeURlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvdW50cnlEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgTmFtZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseSB0byBOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlELiIKICAgICAgICApOwogICAgICAgICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24xSUR9ID0gIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IHR3byB2ZXJzaW9ucwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgdGhlcmUgYXJlIHR3byB2ZXJzaW9ucyBvZiBUZXN0TG9jYXRpb24xICRUZXN0TG9jYXRpb24xSUQgYWZ0ZXIgbmFtZSBjaGFuZ2UiID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiAgICA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMiBdLAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwogICAgICAgIH07CiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgbm93IGxvb2sgYXQgdGhlIFN1YnNpZGlhcnkKICAgICAgICAjIGFnYWluIGFuZCBhc3NlcnQgaXQgKnN0aWxsKgogICAgICAgICMgaGFzIDEgdmVyc2lvbiBhbmQgKnN0aWxsKgogICAgICAgICMgcG9pbnRzIHRvIHN0YXRpYyBMb2NhdGlvbiB2MQogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiQXNzZXJ0IFN1YnNpZGlhcnkgKnN0aWxsKiBoYXMgMSB2ZXJzaW9uIGFuZCAqc3RpbGwqIHBvaW50cyB0byAnIiAuICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24xSUR9IC4gIiciID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbk5hbWUgPT4gIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjIKICAgICAgICBteSAkVGVzdExvY2F0aW9uMklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1R1bnRlbmhhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24ySUR9ID0gJ1R1bnRlbmhhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQ7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24ySUQsICJUZXN0TG9jYXRpb24yICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjJJRH0gLiAiJ2NyZWF0ZWQuIiApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgdGhlcmUgaXMgb25lIHZlcnNpb24gb2YgVGVzdExvY2F0aW9uMiAkVGVzdExvY2F0aW9uMklEIGFmdGVyIGNyZWF0aW9uIiA9PiBzdWIgewoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgICAgIFZlcnNpb25zICAgPT4gWwogICAgICAgICAgICAgICAgICAgIFsgIlR1bnRlbmhhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMgY2hhbmdlIExpbmsgRGlyZWN0aW9uIGluIFN0YXRpY1JlZnJlbmNlVG9DT3VudHJ5IERGCiAgICAgICAgX1VwZGF0ZVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgVmVyc2lvbklEIGZvciBUZXN0TG9jYXRpb24KICAgICAgICBteSAkVGVzdExvY2F0aW9uMkZpcnN0VmVyc2lvbklEID0gX0dldENvbmZpZ0l0ZW1DdXJyZW50VmVyc2lvbigKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24ySUQKICAgICAgICApOwoKICAgICAgICAjIG5vdyB1cGRhdGUgdGhlIHN1YnNpZGlhcnkgbGluayB0byBwb2ludCB0byB0ZXN0bG9jYXRpb24yIGluc3RlYWQKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeSRMaW5rVHlwZSRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJGaXJzdFZlcnNpb25JRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgU3Vic2lkaWFyeSBoYXMgMSB2ZXJzaW9uIGFuZCBub3cgcG9pbnRzIHRvICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjJJRH0gLiAiJyIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1RhcmdldCcsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbk5hbWUgPT4gIlR1bnRlbmhhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2xlYW51cAogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgIHN1YnRlc3QgIkNsZWFudXAgYW5kIGRlbGV0ZSBhbGwgVGVzdCBDb25maWdJdGVtcyIgPT4gc3ViIHsKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdFN1YnNpZGlhcnkgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjIgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgc3VidGVzdCAiYXNzZXJ0IHdlIGRpZG4ndCBsZWFrIGNvbmZpZyBpdGVtcyBhbmQgY29uZmlnIGl0ZW0gbGlua3MiID0+IHN1YiB7CiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7CiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKICAgICAgICAgICAgbXkgJEZpbmFsTGlua1JlbGF0aW9uc0NvdW50ICAgPSBfRmV0Y2hMaW5rUmVsYXRpb25zQ291bnQoKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgICJObyBDSSBoYXZlIGJlZW4gbGVha2VkLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50LAogICAgICAgICAgICAgICAgIk5vIENJIGxpbmtzIGhhdmUgYmVlbiBsZWFrZWQuIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICJObyBMaW5rT2JqZWN0cyBoYXZlIGJlZW4gbGVha2VkLiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwogICAgfTsKfQoKZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2NlZHVyYWwgaGVscGVyIG1ldGhvZHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBQcmVwYXJlIHRoZSBHZW5lcmFsIENhdGFsb2cgY2xhc3NlcyBieSByZWxvYWRpbmcKIyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbGUKCnN1YiBfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzIHsKCiAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICBteSAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKCiAgICAgICAgIyAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMi55bWwiLAogICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC9MaW5rcy91bml0dGVzdC55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkLiIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAqIEZST00gbGlua19yZWxhdGlvbicsCiAgICApOwoKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgcmV0dXJuICRDb3VudDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfQ3JlYXRlREZTdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRDb25maWdIYXNoUmVmID0gewogICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbIiRDb3VudHJ5Q2xhc3NJRCJdLAogICAgICAgIERpc3BsYXlUeXBlICAgICAgICAgICA9PiAnQ29uZmlnSXRlbU5hbWUnLAogICAgICAgIEVkaXRGaWVsZE1vZGUgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSA9PiAnJywKICAgICAgICBMaW5rRGlyZWN0aW9uICAgICAgICAgPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnLAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGUgICA9PiAnU3RhdGljJywKICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xpbmtUeXBlfSwKICAgICAgICBNdWx0aVZhbHVlICAgICAgICAgICAgPT4gJzAnLAogICAgICAgIE11bHRpc2VsZWN0ICAgICAgICAgICA9PiAwLAogICAgICAgIFBvc3NpYmxlTm9uZSAgICAgICAgICA9PiAnMScsCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdCAgID0+IFtdLAogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlICA9PiAnSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBTZWFyY2hBdHRyaWJ1dGUgICAgICAgPT4gJ05hbWUnLAogICAgICAgIFRvb2x0aXAgICAgICAgICAgICAgICA9PiAnJywKICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgTGFiZWwgICAgICA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnksIGRpc3BsYXkgb3JkZXIKICAgICAgICBOYW1lc3BhY2UgID0+ICdMb2NhdGlvbicsCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbVZlcnNpb24nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBDb25maWcgICAgID0+ICRDb25maWdIYXNoUmVmLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCwgdG8gdHJpZ2dlciByZW9yZGVyIGZ1bmN0aW9uLCBkZWZhdWx0IDEKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKfQoKc3ViIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvblRvVXNlU3RhdGljQ291bnRyeSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25SZWYgPSAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwoKICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9LT57QWRkcmVzc30tPntDb250ZW50fSA9IFsKICAgICAgICB7CiAgICAgICAgICAgICdIZWFkZXInID0+ICdBZGRyZXNzJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1TdHJlZXQnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUNpdHknCiAgICAgICAgfSwKCiAgICAgICAgIyBoZXJlIGl0IGlzLCB0aGUgY2hhbmdlOgogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTGF0aXR1ZGUnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUxvbmdpdHVkZScKICAgICAgICB9CiAgICBdOwoKICAgIG15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKICAgIG15ICRZQU1MU3RyaW5nID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgRGF0YSA9PiAkRGVmaW5pdGlvblJlZiwKICAgICk7CgogICAgcmV0dXJuICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgICAgIERlZmluaXRpb24gPT4gJFlBTUxTdHJpbmcsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKS0+e1N1Y2Nlc3N9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICAgIFsiV2VsbGJsZWNoc0hhdXNlbiRSYW5kb21JRCIgICAgPT4gMSBdLAojICAgICAgIFsiTmllZGVya2FsdGVua2lyY2hlbiRSYW5kb21JRCIgPT4gMiBdLAojICAgXQojICk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9uSUR9OwoKICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMb2NhdGlvbklELAogICAgKTsKCiAgICBteSAkVmVyc2lvbkNvdW50ID0gQCRWZXJzaW9uczsKCiAgICBpcygKICAgICAgICBzY2FsYXIgQCRWZXJzaW9uTGlzdFJlZiwKICAgICAgICAkVmVyc2lvbkNvdW50LAogICAgICAgICJDb3VudCBvZiBWZXJzaW9ucyBpcyAkVmVyc2lvbkNvdW50IGZvciBDSSAkTG9jYXRpb25JRC4iCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBmb3IgdmVyc2lvbiAkXyBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgojIGFzc2VydHMgdGhhdCB2ZXJzaW9uIGNvdW50IG9mIFRlc3RMb2NhdGlvbgojIGlzIG9uZSBhbmQgcG9pbnRzIHRvIGZpcnN0IHZlcnNpb24gb2YgQ291bnRyeQoKc3ViIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbiB7CgogICAgbXkgJVBhcmFtICAgICAgICA9IEBfOwogICAgbXkgJExvY2F0aW9uSUQgICA9ICRQYXJhbXtMb2NhdGlvbklEfTsKICAgIG15ICRMb2NhdGlvbk5hbWUgPSAkUGFyYW17TG9jYXRpb25OYW1lfTsKICAgIG15ICRMaW5rVHlwZSAgICAgPSAkUGFyYW17TGlua1R5cGV9OwogICAgbXkgJERpcmVjdGlvbiAgICA9ICRQYXJhbXtEaXJlY3Rpb259IHx8ICdUYXJnZXQnOwoKICAgIG15ICRTdWJzaWRpYXJ5VmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFN1YnNpZGlhcnlWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgVmVyc2lvbnMgICAgICA9PiAkU3Vic2lkaWFyeVZlcnNpb25MaXN0UmVmLAogICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJzEnCiAgICApOwoKICAgIGlzKAogICAgICAgIHNjYWxhciBAJFN1YnNpZGlhcnlWZXJzaW9uTGlzdFJlZiwKICAgICAgICAxLAogICAgICAgICJUaGVyZSBpcyBvbmUgVmVyc2lvbiBvZiBUZXN0U3Vic2lkaWFyeSAkTG9jYXRpb25JRCBWZXJzaW9uICRTdWJzaWRpYXJ5VmVyc2lvbklELiIKICAgICk7CgogICAgbXkgJFRlc3RTdWJzaWRpYXJ5Q0lWZXJzaW9uZW5kID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkTG9jYXRpb25JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRTdWJzaWRpYXJ5VmVyc2lvbklELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJExvY2F0aW9uUmVmSUQgPSAkVGVzdFN1YnNpZGlhcnlDSVZlcnNpb25lbmQtPnsgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1TdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkiIC4gJFBhcmFte0xpbmtUeXBlfSAuICIkUmFuZG9tSUQiIH0tPlswXTsKCiAgICAjIG5vdGUgbG9va3VwIGJ5ICpWZXJzaW9uSUQqCiAgICBteSAkU3RhdGljTG9jYXRpb25DSSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJExvY2F0aW9uUmVmSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlzKAogICAgICAgICRTdGF0aWNMb2NhdGlvbkNJLT57TmFtZX0sCiAgICAgICAgJExvY2F0aW9uTmFtZSwKICAgICAgICAibmFtZSAnJExvY2F0aW9uTmFtZScgaXMgY29ycmVjdCBmb3IgQ0kgVmVyc2lvbklEOiAkTG9jYXRpb25SZWZJRC4iCiAgICApOwoKICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKCiAgICAgICAgI0NvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICAgICBWZXJzaW9uSUQgPT4gJFN1YnNpZGlhcnlWZXJzaW9uSUQsCgogICAgICAgICMgVHlwZXMgICAgICAgID0+IFsgJExpbmtUeXBlIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gPT4gJ0JvdGgnLCAgICAjIG9uZSBvZiBTb3VyY2UsIFRhcmdldCwgQm90aAogICAgICAgIFVzZXJJRCAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBpcyggc2NhbGFyICRMaW5rZWRDb25maWdJdGVtcy0+QCosICAgICAgICAxLCAgICAgICAgICAgICAgJ1RoZXJlIGlzIG9uZSBDSSBsaW5rJyApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57RGlyZWN0aW9ufSwgJERpcmVjdGlvbiwgICAgICJDSSBMaW5rIERpcmVjdGlvbiBpcyAnJERpcmVjdGlvbicuIiApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57VmVyc2lvbklEfSwgJExvY2F0aW9uUmVmSUQsICJDSSBMaW5rIHBvaW50cyB0byAqVmVyc2lvbklEKiAkTG9jYXRpb25SZWZJRC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0dldENvbmZpZ0l0ZW1DdXJyZW50VmVyc2lvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENJID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICApOwogICAgcmV0dXJuICRDSS0+e1ZlcnNpb25JRH07Cn0KCnN1YiBfVXBkYXRlU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5REZMaW5rRGlyZWN0aW9uIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTGlua1R5cGUgPSAkUGFyYW17TGlua1R5cGV9OwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQgKTsKCiAgICBvayggJER5bmFtaWNGaWVsZCwgJ0dvdCBSZWZyZW5jZVRvQ291bnRyeSBERicgKTsKCiAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICRDb25maWdIYXNoUmVmLT57TGlua0RpcmVjdGlvbn0gPSAnUmVmZXJlbmNpbmdJc1RhcmdldCc7CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LCAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgTGFiZWwgICAgICA9PiAnYSBkZXNjcmlwdGlvbicsICAgICAgICAgICMgbWFuZGF0b3J5LCBsYWJlbCB0byBzaG93CiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbVZlcnNpb24nLCAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywgICAgICAgICAjIHRoaXMgY29udHJvbHMgd2hpY2ggb2JqZWN0IHRoZSBkeW5hbWljIGZpZWxkIGxpbmtzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIGluZGl2aWR1YWwgYXJ0aWNsZXMsIG90aGVyd2lzZSB0byB0aWNrZXRzCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSB0byBwcmV2ZW50IHJlZHVuZGFudCBleGVjdXRpb24gb24gb3JkZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJERiBkZWZpbml0aW9uIHVwZGF0ZWQsIGxpbmsgZGlyZWN0aW9uIGNoYW5nZWQgdG8gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnIC4iICk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgX1N5bmNDb25maWdJdGVtREZzKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfU3luY0NvbmZpZ0l0ZW1ERnMgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRMaW5rVHlwZSA9ICRQYXJhbXtMaW5rVHlwZX07CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggTmFtZSA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0T3V0T2ZTeW5jKAogICAgICAgIENsYXNzZXMgPT4gewogICAgICAgICAgICAkU3Vic2lkaWFyeUNsYXNzSUQgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9IF0sCiAgICAgICAgfSwKICAgICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblN5bmMoKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICByZXR1cm47Cn0K</File>
        <File Location="scripts/test/ITSMConfigItem/TicketAutoLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHRlc3QgYXV0byBpbmtzCiMgYmV0d2VlbiBUaWNrZXQgaXRlbXMgYW5kIENJcwojIGV4YW1wbGUgaXMKIyAgVGlja2V0REYgLT4gQ29uZmlnSXRlbVJlZmVyZW5jZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRCYWNrZW5kT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwpteSAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCAgID0gX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBzdWJzaWRpYXJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRTdWJzaWRpYXJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdTdWJzaWRpYXJ5JywKKTsKb2soICRTdWJzaWRpYXJ5Q2xhc3NJRCwgIlN1YnNpZGlhcnkgY2xhc3MgZm91bmQiICk7CgojIHBvc3NpYmxlIGxpbmsgdHlwZXMgY29uZmlndXJlZApteSAlUG9zc2libGVUeXBlc0xpc3QgPSAkTGlua09iamVjdC0+UG9zc2libGVUeXBlc0xpc3QoCiAgICBPYmplY3QxID0+ICdUaWNrZXQnLAogICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAopOwoKbXkgQExpbmtUeXBlcyA9IGtleXMgJVBvc3NpYmxlVHlwZXNMaXN0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGl0ZXJhdGUgb3ZlciBhdmFpbCBMaW5rVHlwZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKbXkgJFRlc3RTdWJzaWRpYXJ5SUQ7Cm15ICRUaWNrZXRJRDsKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0aW5nIHdpdGggTGlua1R5cGUgJExpbmtUeXBlIiA9PiBzdWIgewoKICAgICAgICBteSAkVHlwZUlEID0gJExpbmtPYmplY3QtPlR5cGVMb29rdXAoCiAgICAgICAgICAgIE5hbWUgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIG15ICVUeXBlRGF0YSA9ICRMaW5rT2JqZWN0LT5UeXBlR2V0KAogICAgICAgICAgICBUeXBlSUQgPT4gJFR5cGVJRCwKICAgICAgICApOwoKICAgICAgICBteSAkSXNQb2ludGVkID0gJFR5cGVEYXRhe1BvaW50ZWR9OwoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gX0NyZWF0ZURGUmVmZXJlbmNlVG9DSSggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CiAgICAgICAgb2soICREeW5hbWljRmllbGRDb25maWcsICJERiAkTGlua1R5cGUgQ3JlYXRlZC4iICk7CgogICAgICAgIHN1YnRlc3QgImEpIEF1dG9MaW5rIGdldHMgY3JlYXRlZCIgPT4gc3ViIHsKCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEZXJCYXVlcm5ob2YnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSAkVGVzdFN1YnNpZGlhcnlJRCBjcmVhdGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgICAgICRUaWNrZXRJRCA9IF9DcmVhdGVUZXN0VGlja2V0KAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGhlcmUgaXMgb25lIExpbmsgb2YgdHlwZSAkTGlua1R5cGUgdG8gQ0kgJFRlc3RTdWJzaWRpYXJ5SUQuIgogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgIHN1YnRlc3QgImIpIGNoYW5nZSBMaW5rIERpcmVjdGlvbiIgPT4gc3ViIHsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSBfVXBkYXRlUmVmZXJlbmNlVG9DSURGTGlua0RpcmVjdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbiA9PiAnUmVmZXJlbmNpbmdJc1RhcmdldCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGhlcmUgaXMgb25lIExpbmsgb2YgdHlwZSAkTGlua1R5cGUgdG8gQ0kgJFRlc3RTdWJzaWRpYXJ5SUQuIgogICAgICAgICAgICApOwoKICAgICAgICB9OwoKICAgICAgICBzdWJ0ZXN0ICJjKSBuZXcgVGlja2V0IHdpdGggbmV3IExpbmtEaXJlY3Rpb24iID0+IHN1YiB7CgogICAgICAgICAgICAkVGlja2V0SUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDJfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZSA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUaGVyZSBpcyBvbmUgTGluayBvZiB0eXBlICRMaW5rVHlwZSB0byBDSSAkVGVzdFN1YnNpZGlhcnlJRC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2xlYW51cAogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiZCkgQ2xlYW51cCAkTGlua1R5cGUiID0+IHN1YiB7CgogICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgICAgICMgY2xlYW51cAogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSBkZWxldGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhbmQgbGlua19yZWxhdGlvbnMKICAgICAgICAgICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgICAgICAgICAgbXkgJEZpbmFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwogICAgICAgICAgICBteSAkRmluYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgICAgICAgICAkRmluYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAgICAgIk5vIENJIGhhdmUgYmVlbiBsZWFrZWQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgICAgICJObyBDSSBsaW5rcyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICJObyBMaW5rT2JqZWN0cyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH07Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZC4iICk7CgogICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkQ29udGVudCwKICAgICk7CgogICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICRDb250ZW50ID0gWyRDb250ZW50XTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NJbXBvcnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJ1VQREFURScsCiAgICApOwoKICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUNvdW50IHsKICAgIG15ICgkQ291bnQpID0gJERCT2JqZWN0LT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDT1VOVChpZCkgRlJPTSBjb25maWdpdGVtJywKICAgICk7CgogICAgcmV0dXJuICRDb3VudCAvLyAwOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQgewoKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENvdW50KGlkKSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycsCiAgICApOwoKICAgIGlmICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSApIHsKICAgICAgICByZXR1cm4gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKc3ViIF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgKiBGUk9NIGxpbmtfcmVsYXRpb24nLAogICAgKTsKCiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgICRDb3VudCsrOwogICAgfQoKICAgIHJldHVybiAkQ291bnQ7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0NyZWF0ZURGUmVmZXJlbmNlVG9DSSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSB7CiAgICAgICAgRGlzcGxheVR5cGUgICAgICAgICAgID0+ICdDb25maWdJdGVtTmFtZScsCiAgICAgICAgRWRpdEZpZWxkTW9kZSAgICAgICAgID0+ICdEcm9wZG93bicsCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlID0+ICcnLAogICAgICAgIExpbmtEaXJlY3Rpb24gICAgICAgICA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScsCiAgICAgICAgTGlua1R5cGUgICAgICAgICAgICAgID0+ICRQYXJhbXtMaW5rVHlwZX0sICAgICAgICAjJ1JlbGV2YW50VG8nLAogICAgICAgIE11bHRpVmFsdWUgICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgTXVsdGlzZWxlY3QgICAgICAgICAgID0+IDAsCiAgICAgICAgUG9zc2libGVOb25lICAgICAgICAgID0+ICcxJywKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0ICAgPT4gW10sCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGUgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgID0+ICdOYW1lJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgPT4gJycsCiAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkSUQgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIE5hbWUgICAgICAgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICAgICBMYWJlbCAgICAgID0+ICdDb25maWcgSXRlbSBSZWZlcmVuY2UnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICAgICBGaWVsZE9yZGVyID0+IDQ3MTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgZGlzcGxheSBvcmRlcgogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJ1RpY2tldCcsCiAgICAgICAgQ29uZmlnICAgICA9PiAkQ29uZmlnSGFzaFJlZiwKICAgICAgICBSZW9yZGVyICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggSUQgPT4gJElEICk7CiAgICByZXR1cm4gJER5bmFtaWNGaWVsZENvbmZpZzsKfQoKc3ViIF9DaGFuZ2VUaWNrZXREZWZpbml0aW9uQWRkQ29uZmlnSXRlbVJlZkRGIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgKTsKCiAgICBteSAkRGVmaW5pdGlvblJlZiA9ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn07CgogICAgIyBhZGQgdGhlIFRpY2tldFJlZiBERgoKICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9LT57QWRkcmVzc30tPntDb250ZW50fSA9IFsKICAgICAgICB7CiAgICAgICAgICAgICdIZWFkZXInID0+ICdBZGRyZXNzJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1TdHJlZXQnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUNpdHknCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTGF0aXR1ZGUnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUxvbmdpdHVkZScKICAgICAgICB9LAoKICAgICAgICAjIGFkZCB0aGlzIG9uZToKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ1RpY2tldFJlZicgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlECiAgICAgICAgfSwKICAgIF07CgogICAgbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwogICAgbXkgJFlBTUxTdHJpbmcgPSAkWUFNTE9iamVjdC0+RHVtcCgKICAgICAgICBEYXRhID0+ICREZWZpbml0aW9uUmVmLAogICAgKTsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkWUFNTFN0cmluZywKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCgogICAgICAgICMgICAgRm9yY2UgICAgICA9PiAxLCAgICAgICAgIyBobQogICAgKS0+e1N1Y2Nlc3N9Owp9CgpzdWIgX0NyZWF0ZVRlc3RUaWNrZXQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUaXRsZSAgICAgICAgPT4gJFBhcmFte1RpdGxlfSwKICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ3VuaXR0ZXN0QG90b2JvLm9yZycsCiAgICAgICAgT3duZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIG9rKCAkVGlja2V0SUQsICJUaWNrZXQgJyRQYXJhbXtUaXRsZX0nICgkVGlja2V0SUQpIGNyZWF0ZWQiICk7CgogICAgb2soCiAgICAgICAgJEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICksCiAgICAgICAgIkRGIFZhbHVlIHNldCB0byAkUGFyYW17Q29uZmlnSXRlbUlEfS4iCiAgICApOwoKICAgIHJldHVybiAkVGlja2V0SUQ7Cn0KCiMgY2FsbCBhcwojIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiMgICBUaWNrZXRJRCA9PiAkVGlja2V0LAojICAgTGlua1R5cGUgPT4gJExpbmtUeXBlLAojICAgTGlua3MgPT4gWwojICAgICAgIFsgU291cmNlID0+ICRTb21lSUQgXSwKIyAgICAgICBbIFNvdXJjZSA9PiAkU29tZUlEIF0sCiMgICAgICAgWyBUYXJnZXQgPT4gJFNvbWVJRCBdLAojIC4uLi4KIyAgIF0KIyApCgpzdWIgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlID0gJFBhcmFte0xpbmtUeXBlfTsKICAgIG15ICRUaWNrZXRJRCA9ICRQYXJhbXtUaWNrZXRJRH07CgogICAgbXkgQExpbmtzICAgICAgICAgICAgID0gJFBhcmFte0xpbmtzfS0+QCo7CiAgICBteSAkRXhwZWN0ZWRMaW5rQ291bnQgPSBzY2FsYXIgQExpbmtzOwoKICAgIG15ICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdCgKICAgICAgICBPYmplY3QgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgS2V5ICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBPYmplY3QyICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBTdGF0ZSAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBUeXBlICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgIERpcmVjdGlvbiA9PiAnQm90aCcsCiAgICAgICAgVXNlcklEICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIGZvciBteSAkTGluayAoQExpbmtzKSB7CgogICAgICAgIG15ICRMaW5rRGVzdCA9ICRMaW5rLT5bMF07CiAgICAgICAgbXkgJExpbmtlZElEID0gJExpbmstPlsxXTsKICAgICAgICBpZiAoIGV4aXN0cyAkTGlua0xpc3QtPnsnSVRTTUNvbmZpZ0l0ZW0nfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9ICkgewoKICAgICAgICAgICAgbXkgJElEcyA9ICRMaW5rTGlzdC0+eydJVFNNQ29uZmlnSXRlbSd9LT57JExpbmtUeXBlfS0+eyRMaW5rRGVzdH07CgogICAgICAgICAgICByZXR1cm4gMCBpZiAhZXhpc3RzICRJRHMtPnskTGlua2VkSUR9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1VwZGF0ZVJlZmVyZW5jZVRvQ0lERkxpbmtEaXJlY3Rpb24gewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRMaW5rVHlwZSAgICAgID0gJFBhcmFte0xpbmtUeXBlfTsKICAgIG15ICRMaW5rRGlyZWN0aW9uID0gJFBhcmFte0xpbmtEaXJlY3Rpb259IHx8ICdSZWZlcmVuY2luZ0lzU291cmNlJzsKCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICBzdWJ0ZXN0ICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgPT4gc3ViIHsKCiAgICAgICAgb2soICREeW5hbWljRmllbGQsICdUaWNrZXRSZWYgREYgZm91bmQuJyApOwoKICAgICAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sICAgICAgIyBtYW5kYXRvcnkKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLCAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgc2VsZWN0cyB0aGUgREYgYmFja2VuZCB0byB1c2UgZm9yIHRoaXMgZmllbGQKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywgICAgICAgICAgICAgICAgICMgdGhpcyBjb250cm9scyB3aGljaCBvYmplY3QgdGhlIGR5bmFtaWMgZmllbGQgbGlua3MgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgICAgICBDb25maWcgICAgID0+ICRDb25maWdIYXNoUmVmLCAgICAgICAgICAgIyBpdCBpcyBzdG9yZWQgb24gWUFNTCBmb3JtYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG8gaW5kaXZpZHVhbCBhcnRpY2xlcywgb3RoZXJ3aXNlIHRvIHRpY2tldHMKICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgICAgICBSZW9yZGVyICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHRvIHByZXZlbnQgcmVkdW5kYW50IGV4ZWN1dGlvbiBvbiBvcmRlciBjaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBvayggJFN1Y2Nlc3MsICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLiIgKTsKCiAgICAgICAgX1N5bmNDb25maWdJdGVtREZzKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKCiAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggSUQgPT4gJER5bmFtaWNGaWVsZC0+e0lEfSApOwogICAgfTsKCiAgICByZXR1cm4gJER5bmFtaWNGaWVsZENvbmZpZzsKfQoKc3ViIF9TeW5jQ29uZmlnSXRlbURGcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlID0gJFBhcmFte0xpbmtUeXBlfTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldE91dE9mU3luYygKICAgICAgICBDbGFzc2VzID0+IHsKICAgICAgICAgICAgJFN1YnNpZGlhcnlDbGFzc0lEID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSBdLAogICAgICAgIH0sCiAgICApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TeW5jKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/TicketLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IFRpY2tldCB0byBDSSBpdGVtIGxpbmtpbmUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgYm9pbGVycGxhdGUKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKCm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCiMgYXNzdXJlIHN0ZCBjbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZApfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzKCk7CgojIGdsb2JhbCBPTSBvYmplY3RzCm15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkTGlua09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByZXBhcmUgZW52aXJvbm1lbnQKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBmZXRjaCBjb25maWcgc3RhdGUgaWRzCm15ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgIE5hbWUgID0+ICdPcGVyYXRpb25hbCcsCik7CgpteSAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKCiMgZmV0Y2ggY291bnRyeSBjbGFzcyBmcm9tIGdlbmVyYWwgY2F0YWxvZwpteSAkQ291bnRyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnQ291bnRyeScsCik7Cm9rKCAkQ291bnRyeUNsYXNzSUQsICJDb3VudHJ5IGNsYXNzIGZvdW5kIiApOwoKIyBhZGQgYSB2ZXJzaW9uIHRyaWdnZXIgdG8gQ291bnRyeSBvbiBOYW1lIGF0dHJpYnV0ZQpvaygKICAgIF9BZGRWZXJzaW9uVHJpZ2dlck9uTmFtZUNoYW5nZVRvQ291bnRyeUNsYXNzKCksCiAgICAnVXBkYXRlZCBWZXJzaW9uVHJpZ2dlcicKKTsKCm15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCik7CgpteSBATGlua1R5cGVzID0ga2V5cyAlUG9zc2libGVUeXBlc0xpc3Q7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgaXRlcmF0ZSBvdmVyIGF2YWlsIExpbmtUeXBlcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpmb3IgbXkgJExpbmtUeXBlIChATGlua1R5cGVzKSB7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAjIGNyZWF0ZSBUZXN0TG9jYXRpb24xCiAgICBteSAkVGVzdExvY2F0aW9uMUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xIGNyZWF0ZWQiICk7CgogICAgIyBhc3NlcnQgdGhlcmUgaXMgMSB2ZXJzaW9uIHdpdGggZ2l2ZW4gbmFtZQogICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgIF0KICAgICk7CgogICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAndW5pdHRlc3RAb3RvYm8ub3JnJywKICAgICAgICBPd25lcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgb2soICRUaWNrZXRJRCwgJ1RpY2tldCBjcmVhdGVkJyApOwoKICAgICMgY3JlYXRlIGxpbmsgdG8gQ29uZmlnSXRlbQogICAgb2soCiAgICAgICAgJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLCAgICAgICAgICAjJ1JlbGV2YW50VG8nLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKSwKICAgICAgICAnVGlja2V0IExpbmtlZCB0byBDSSBUZXN0TG9jYXRpb24xICgkTGlua1R5cGUpJwogICAgKTsKCiAgICAjIGluc3BlY3QgbGluayBkYXRhCgogICAgbXkgJExpbmtMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgIEtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICApOwoKICAgIG15ICRTb3VyY2UgPSBleGlzdHMgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1NvdXJjZX0KICAgICAgICA/CiAgICAgICAgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1NvdXJjZX0tPnskVGVzdExvY2F0aW9uMUlEfQogICAgICAgIDoKICAgICAgICAkTGlua0xpc3QtPntJVFNNQ29uZmlnSXRlbX0tPnskTGlua1R5cGV9LT57VGFyZ2V0fS0+eyRUZXN0TG9jYXRpb24xSUR9OwogICAgb2soICRTb3VyY2UsICdGb3VuZCBMaW5rJyApOwoKICAgIGlzKAogICAgICAgICRTb3VyY2UtPntDbGFzc30sCiAgICAgICAgJ0NvdW50cnknLAogICAgICAgICdUaWNrZXQgbGluayBoYXMgY2xhc3MgQ291bnRyeScKICAgICk7CgogICAgaXMoCiAgICAgICAgJFNvdXJjZS0+e05hbWV9LAogICAgICAgICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAnVGlja2V0IGxpbmsgaGFzIGNvcnJlY3QgTG9jYXRpb24gTmFtZScKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjaGFuZ2UgVGVzdExvY2F0aW9uIE5hbWUKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBteSAkQ291bnRyeURlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvdW50cnlEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKSwKICAgICAgICAnVGVzdExvY2F0aW9uMSBOYW1lIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LicKICAgICk7CgogICAgIyBjaGVjayBsaW5rIGRhdGEKICAgICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICBLZXkgICAgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgKTsKCiAgICAkU291cmNlID0gZXhpc3RzICRMaW5rTGlzdC0+e0lUU01Db25maWdJdGVtfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9CiAgICAgICAgPwogICAgICAgICRMaW5rTGlzdC0+e0lUU01Db25maWdJdGVtfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9LT57JFRlc3RMb2NhdGlvbjFJRH0KICAgICAgICA6CiAgICAgICAgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1RhcmdldH0tPnskVGVzdExvY2F0aW9uMUlEfTsKCiAgICBvayggJFNvdXJjZSwgJ0ZvdW5kIExpbmsnICk7CgogICAgaXMoCiAgICAgICAgJFNvdXJjZS0+e0NsYXNzfSwKICAgICAgICAnQ291bnRyeScsCiAgICAgICAgJ1RpY2tldCBsaW5rIHN0aWxsIGhhcyBjbGFzcyBDb3VudHJ5JwogICAgKTsKCiAgICBpcygKICAgICAgICAkU291cmNlLT57TmFtZX0sCiAgICAgICAgJ05pZWRlcmthbHRlbmtpcmNoZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICdUaWNrZXQgbGluayBoYXMgY29ycmVjdCBuZXcgTG9jYXRpb24gTmFtZScKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjbGVhbnVwCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICksCiAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICk7CgogICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcwogICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiAgICBpcygKICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7CgogICAgaXMoCiAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAiTm8gQ0kgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkIiApOwoKICAgIHJldHVybjsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1Db3VudCB7CiAgICBteSAoJENvdW50KSA9ICREQk9iamVjdC0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbScsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQgLy8gMDsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDb3VudChpZCkgRlJPTSBjb25maWdpdGVtX2xpbmsnLAogICAgKTsKCiAgICBpZiAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgcmV0dXJuICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgWyJOaWVkZXJrYWx0ZW5raXJjaGVuJFJhbmRvbUlEIiA9PiAyIF0sCiMgXSk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9ufTsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25Db3VudCA9IEAkVmVyc2lvbnM7CgogICAgaXMoCiAgICAgICAgc2NhbGFyIEAkVmVyc2lvbkxpc3RSZWYsCiAgICAgICAgJFZlcnNpb25Db3VudCwKICAgICAgICAiQ291bnQgb2YgVmVyc2lvbnMgaXMgJFZlcnNpb25Db3VudCBmb3IgTG9jYXRpb24gSUQgJExvY2F0aW9uSUQiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/TicketRef.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyB0ZXN0IFRpY2tldCBERiBSZWZlcmVuY2UKIyB0byBzdGF0aWMgQ29uZmlnSXRlbVZlcnNpb24KCiMgYm9pbGVycGxhdGUKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwoKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwoKbXkgJFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4KKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyBhc3N1cmUgc3RkIGNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkCl9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMoKTsKCiMgZ2xvYmFsIE9NIG9iamVjdHMKbXkgJERCT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJFRpY2tldE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7Cm15ICRCYWNrZW5kT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwpteSAkTGF5b3V0T2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKbXkgJExpbmtPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwoKIyBjYXRjaCBzdGF0ZSBiZWZvcmUgdGVzdCBydW4KbXkgJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwpteSAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiMgcHJlcGFyZSBlbnZpcm9ubWVudAoKIyBmZXRjaCBjb25maWcgc3RhdGUgaWRzCm15ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgIE5hbWUgID0+ICdPcGVyYXRpb25hbCcsCik7CgpteSAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKCiMgZmV0Y2ggY291bnRyeSBjbGFzcyBmcm9tIGdlbmVyYWwgY2F0YWxvZwpteSAkQ291bnRyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnQ291bnRyeScsCik7Cm9rKCAkQ291bnRyeUNsYXNzSUQsICJDb3VudHJ5IGNsYXNzIGZvdW5kIiApOwoKIyBhZGQgYSB2ZXJzaW9uIHRyaWdnZXIgdG8gQ291bnRyeSBvbiBOYW1lIGF0dHJpYnV0ZQpvaygKICAgIF9BZGRWZXJzaW9uVHJpZ2dlck9uTmFtZUNoYW5nZVRvQ291bnRyeUNsYXNzKCksCiAgICAnVXBkYXRlZCBWZXJzaW9uVHJpZ2dlcicKKTsKCm15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgIE9iamVjdDEgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIE9iamVjdDIgPT4gJ1RpY2tldCcsCik7CgpteSBATGlua1R5cGVzID0ga2V5cyAlUG9zc2libGVUeXBlc0xpc3Q7CgojIGl0ZXJhdGUgb3ZlciBhdmFpbCBMaW5rVHlwZXMKZm9yIG15ICRMaW5rVHlwZSAoQExpbmtUeXBlcykgewoKICAgIHN1YnRlc3QgIlRlc3QgTGlua1R5cGU9JExpbmtUeXBlIiA9PiBzdWIgewoKICAgICAgICAjIGNyZWF0ZSBhIHZlcnNpb25lZCBjb25maWcgaXRlbSByZWZlcmVuY2UgREYgb24gVGlja2V0CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9IF9DcmVhdGVUaWNrZXRERkNvbmZpZ0l0ZW0oIExpbmtUeXBlID0+ICRMaW5rVHlwZSApOwogICAgICAgIG9rKAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAnREYgY3JlYXRlZCcKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IGNvbmZpZyBpdGVtcwoKICAgICAgICAjIGNyZWF0ZSBUZXN0TG9jYXRpb24xCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xIGNyZWF0ZWQiICk7CgogICAgICAgICMgYXNzZXJ0IHRoZXJlIGlzIDEgdmVyc2lvbiB3aXRoIGdpdmVuIG5hbWUKICAgICAgICBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgIF0KICAgICAgICApOwoKICAgICAgICAjIGdldCBjdXJyZW50IFZlcnNpb25JRCBmb3IgVGVzdExvY2F0aW9uCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFGaXJzdFZlcnNpb25JRCA9IF9HZXRDb25maWdJdGVtQ3VycmVudFZlcnNpb24oCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgbXkgJFRpY2tldElEID0gX0NyZWF0ZVRlc3RUaWNrZXQoCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDFfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgTG9jYXRpb25WZXJzaW9uSUQgID0+ICRUZXN0TG9jYXRpb24xRmlyc3RWZXJzaW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICBfR2V0VGlja2V0TG9jYXRpb25UaXRsZSgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEOiAxIiwKICAgICAgICAgICAgIlRpY2tldCBERiBMb2NhdGlvbiBOYW1lIGlzOiBXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGNoYW5nZSBUZXN0TG9jYXRpb24gTmFtZQogICAgICAgIG15ICRDb3VudHJ5RGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBvaygKICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ291bnRyeURlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICAgICAgIk5hbWUiICAgICAgID0+ICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApLAogICAgICAgICAgICAnTG9jYXRpb24gTmFtZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4nCiAgICAgICAgKTsKCiAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbnMKICAgICAgICBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiAgICA9PiAxIF0sCiAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAyIF0sCiAgICAgICAgICAgIF0KICAgICAgICApOwoKICAgICAgICAjIC4uLiBidXQgdGlja2V0IHN0aWxsIHJlZmVyZW5jZXMgdmVyc2lvbiB2MQogICAgICAgIGlzKAogICAgICAgICAgICBfR2V0VGlja2V0TG9jYXRpb25UaXRsZSgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEOiAxIiwKICAgICAgICAgICAgIkRGIFRpdGxlIGlzIFdlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgc3VidGVzdCAiQ2xlYW51cCAkTGlua1R5cGUiID0+IHN1YiB7CiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0TG9jYXRpb24xIGRlbGV0ZWQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFzc2VydCB3ZSBkaWRuJ3QgbGVhayBjb25maWcgaXRlbXMgYW5kIGNvbmZpZyBpdGVtIGxpbmtzCiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7CiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgICJObyBDSSBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50LAogICAgICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICAgICAiTm8gQ0kgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICAgICAgKTsKICAgICAgICB9OwogICAgfTsKfQoKZG9uZV90ZXN0aW5nOwoKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCgojIFByZXBhcmUgdGhlIEdlbmVyYWwgQ2F0YWxvZyBjbGFzc2VzIGJ5IHJlbG9hZGluZwojIChhbmQgdXBkYXRpbmcpIHRoZSB3aG9sZSByZWFkeTJsb2FkIGJ1bmRsZQpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQsICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZCIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0dldFZlcnNpb25JREZyb21WZXJzaW9uU3RyaW5nIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkVmVyc2lvbnMgICAgICA9ICRQYXJhbXtWZXJzaW9uc307CiAgICBteSAkVmVyc2lvblN0cmluZyA9ICRQYXJhbXtWZXJzaW9uU3RyaW5nfTsKCiAgICBmb3IgbXkgJFZlcnNpb24gKCAkVmVyc2lvbnMtPkAqICkgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgWyJOaWVkZXJrYWx0ZW5raXJjaGVuJFJhbmRvbUlEIiA9PiAyIF0sCiMgXSk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9ufTsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25Db3VudCA9ICRWZXJzaW9ucy0+QCo7CgogICAgaXMoCiAgICAgICAgc2NhbGFyICRWZXJzaW9uTGlzdFJlZi0+QCosCiAgICAgICAgJFZlcnNpb25Db3VudCwKICAgICAgICAiQ291bnQgb2YgVmVyc2lvbnMgaXMgJFZlcnNpb25Db3VudCBmb3IgTG9jYXRpb24gSUQgJExvY2F0aW9uSUQiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICJWZXJzaW9uICRWZXJzaW9uU3RyaW5nIE5hbWUgJyROYW1lJyBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0NyZWF0ZVRpY2tldERGQ29uZmlnSXRlbSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSB7CiAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsiJENvdW50cnlDbGFzc0lEIl0sCiAgICAgICAgRGlzcGxheVR5cGUgICAgICAgICAgID0+ICdDb25maWdJdGVtTmFtZVZlcnNpb25TdHJpbmcnLAogICAgICAgIEVkaXRGaWVsZE1vZGUgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSA9PiAnJywKICAgICAgICBMaW5rRGlyZWN0aW9uICAgICAgICAgPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnLAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGUgICA9PiAnU3RhdGljJywKICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xpbmtUeXBlfSwgICAgICAgICAgICAgICAgIyAnUmVsZXZhbnRUbycsCiAgICAgICAgTXVsdGlWYWx1ZSAgICAgICAgICAgID0+ICcwJywKICAgICAgICBNdWx0aXNlbGVjdCAgICAgICAgICAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgICAgPT4gJzEnLAogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3QgICA9PiBbXSwKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZSAgPT4gJ0lUU01Db25maWdJdGVtVmVyc2lvbicsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgID0+ICdOYW1lJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgPT4gJycsCiAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkSUQgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIExhYmVsICAgICAgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIEZpZWxkT3JkZXIgPT4gNDcxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgTmFtZXNwYWNlICA9PiAnTG9jYXRpb24nLAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsCiAgICAgICAgUmVvcmRlciAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIElEID0+ICRJRCApOwogICAgcmV0dXJuICREeW5hbWljRmllbGRDb25maWc7Cn0KCnN1YiBfR2V0Q29uZmlnSXRlbUN1cnJlbnRWZXJzaW9uIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkQ0kgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICk7CiAgICByZXR1cm4gJENJLT57VmVyc2lvbklEfTsKfQoKc3ViIF9DcmVhdGVUZXN0VGlja2V0IHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgICAgID0+ICRQYXJhbXtUaXRsZX0sCiAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd1bml0dGVzdEBvdG9iby5vcmcnLAogICAgICAgIE93bmVySUQgICAgICA9PiAkVXNlcklELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBzdWJ0ZXN0ICJUaWNrZXQgY3JlYXRpb24iID0+IHN1YiB7CgogICAgICAgIG9rKCAkVGlja2V0SUQsICdUaWNrZXQgY3JlYXRlZCcgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xvY2F0aW9uVmVyc2lvbklEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApLAogICAgICAgICAgICAnREYgVmFsdWUgc2V0JwogICAgICAgICk7CiAgICB9OwoKICAgIHJldHVybiAkVGlja2V0SUQ7Cn0KCnN1YiBfR2V0VGlja2V0TG9jYXRpb25UaXRsZSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkVXNlcklELAogICAgICAgIEV4dGVuZGVkICAgICAgPT4gMSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICRWYWx1ZSA9ICRUaWNrZXR7ICJEeW5hbWljRmllbGRfTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5IiAuICRQYXJhbXtMaW5rVHlwZX0gLiAiJFJhbmRvbUlEIiB9OwoKICAgIG15ICRSZXN1bHQgPSAkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgKTsKCiAgICByZXR1cm4gJFJlc3VsdC0+e1RpdGxlfTsKfQo=</File>
        <File Location="scripts/test/ITSMConfigItem/DynamicLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IHNpbXBsZSBkeW5hbWljIGxpbmtzCiMgYmV0d2VlbiBDSSBpdGVtcwojIGV4YW1wbGUgaXMKIyAgU3Vic2lkaWFyeSAtPiBMb2NhdGlvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyB0ZXN0IGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIGNhdGNoIERCIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcmVwYXJlIGVudmlyb25tZW50CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBjb3VudHJ5IGFuZCBzdWJzaWRpYXJ5IGNsYXNzZXMgZnJvbSBnZW5lcmFsIGNhdGFsb2cKbXkgJENvdW50cnlDbGFzc0lEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgPT4gJ0NvdW50cnknLAopOwpvayggJENvdW50cnlDbGFzc0lELCAiQ291bnRyeSBjbGFzcyBmb3VuZC4iICk7CgpteSAkU3Vic2lkaWFyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnU3Vic2lkaWFyeScsCik7Cm9rKCAkU3Vic2lkaWFyeUNsYXNzSUQsICJTdWJzaWRpYXJ5IGNsYXNzIGZvdW5kLiIgKTsKCiMgcG9zc2libGUgbGluayB0eXBlcyBmb3IgQ29uZmlnSXRlbSA8LT4gQ29uZmlnSXRlbQpteSAlUG9zc2libGVUeXBlc0xpc3QgPSAkTGlua09iamVjdC0+UG9zc2libGVUeXBlc0xpc3QoCiAgICBPYmplY3QxID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCik7CgpteSAlQ291bnRyeUxvb2t1cDsKbXkgJVN1YnNpZGlhcnlMb29rdXA7CgpteSBATGlua1R5cGVzID0ga2V5cyAlUG9zc2libGVUeXBlc0xpc3Q7Cgpmb3IgbXkgJExpbmtUeXBlIChATGlua1R5cGVzKSB7CgogICAgc3VidGVzdCAiRHluYW1pYyBMaW5rcyB3aXRoIExpbmtUeXBlPSckTGlua1R5cGUnIiA9PiBzdWIgewoKICAgICAgICBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcygKICAgICAgICAgICAgVmFsdWUgPT4gW10KICAgICAgICApOwoKICAgICAgICBfVXBkYXRlUmVmZXJlbmNlVG9Db3VudHJ5REZMaW5rRGlyZWN0aW9uKCBMaW5rRGlyZWN0aW9uID0+ICdSZWZlcmVuY2luZ0lzVGFyZ2V0JyApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY3JlYXRlIFRlc3QgQ29uZmlnIEl0ZW1zCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgZmlyc3QgdGVzdGxvY2F0aW9uCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xICRUZXN0TG9jYXRpb24xSUQgY3JlYXRlZC4iICk7CiAgICAgICAgJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gPSAnV2VsbGJsZWNoc0hhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQ7CgogICAgICAgICMgY3JlYXRlIHNlY29uZCB0ZXN0bG9jYXRpb24KICAgICAgICBteSAkVGVzdExvY2F0aW9uMklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ05pZWRlcmthbHRlbmtpcmNoZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKICAgICAgICBvayggJFRlc3RMb2NhdGlvbjJJRCwgIlRlc3RMb2NhdGlvbjIgJFRlc3RMb2NhdGlvbjJJRCBjcmVhdGVkLiIgKTsKICAgICAgICAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMklEfSA9ICdOaWVkZXJrYWx0ZW5raXJjaGVuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGEpIG1ha2UgdXBkYXRlcyB3aXRoIG5vCiAgICAgICAgIyB2ZXJzaW9uIHRyaWdnZXJzCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkgd2l0aCBhIGxpbmsgdG8gdGVzdGxvY2F0aW9uMQogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkiID0+IFsKICAgICAgICAgICAgICAgICRUZXN0TG9jYXRpb24xSUQKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICBvaygKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSAkVGVzdFN1YnNpZGlhcnlJRCB3aXRoIGxpbmsgdG8gVGVzdExvY2F0aW9uMSBjcmVhdGVkLiIKICAgICAgICApOwoKICAgICAgICAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gPSAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgc3VidGVzdCAiYSkgQXNzZXJ0IG9uIENJcyB3aXRoIExpbmtUeXBlICckTGlua1R5cGUnIChubyB2ZXJzaW9uIHRyaWdnZXJzKSIgPT4gc3ViIHsKICAgICAgICAgICAgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnVGFyZ2V0JywKICAgICAgICAgICAgICAgIFRhcmdldElEICAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uSUQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnROb0xlYWtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgKyAxLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBub3cgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsKICAgICAgICAjIHRvIHBvaW50IHRvIHRlc3Rsb2NhdGlvbjIKICAgICAgICAjIGluc3RlYWQKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJJRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJhKSBBc3NlcnQgb24gQ0lzIHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScgKG5vIHZlcnNpb24gdHJpZ2dlcnMpIGFmdGVyIENJIFJlZmVyZW5jZVRvQ291bnRyeSBjaGFuZ2UiID0+IHN1YiB7CgogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2hhbmdlIExpbmtEaXJlY3Rpb24KICAgICAgICAjIG9uIFJlZmVyZW5jZVRvQ291bnRyeSBERgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICk7CgogICAgICAgIHN1YnRlc3QgImEpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAobm8gdmVyc2lvbiB0cmlnZ2VycykgYWZ0ZXIgTGlua0RpcmVjdGlvbiBjaGFuZ2VkIHRvICdSZWZlcmVuY2luZ0lzU291cmNlJyIgPT4gc3ViIHsKCiAgICAgICAgICAgICMgdGhpcyBtdXN0IGhhdmUgdXBkYXRlZCB0aGUgRGlyZWN0aW9uIG9mIHRoZSBMaW5rIQogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdTb3VyY2UnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGIpIG5vdyBzZXQgYSB2ZXJzaW9uIHRyaWdnZXIKICAgICAgICAjIG9uIHN1YnNpZGlhcnkgZm9yIGNoYW5nZXMgb2YKICAgICAgICAjIHRoZSBDb3VudHJ5IFJlZmVyZW5jZSBhbmQKICAgICAgICAjIHVwZGF0ZSBhZ2FpbgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIG9rKAogICAgICAgICAgICBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcygKICAgICAgICAgICAgICAgIFZhbHVlID0+IFsiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSJdCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJTZXQgU3Vic2lkaWFyeSBWZXJzaW9uIFRyaWdnZXIgb24gJ1JlZmVyZW5jZVRvQ291bnRyeScgREYuIgogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gcmVmZXJlbmNlIGlzIHRhcmdldAogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnICk7CgogICAgICAgICMgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsgdG8gcG9pbnQgdG8gdGVzdGxvY2F0aW9uMSBhZ2FpbgogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5IiA9PiBbCiAgICAgICAgICAgICAgICAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgIHN1YnRlc3QgImIpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzKSBhZnRlciBMaW5rRGlyZWN0aW9uIGNoYW5nZWQgYmFjayB0byAnUmVmZXJlbmNpbmdJc1RhcmdldCciID0+IHN1YiB7CgogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgICAgPT4gMiBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnROb0xlYWtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgKyAxLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBERiB1cGRhdGUgY2hhbmdlIGxpbmsgZGlyIG9uCiAgICAgICAgIyBSZWZlcmVuY2VUb0NvdW50cnlERgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICk7CgogICAgICAgIHN1YnRlc3QgImIpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzKSBhZnRlciBMaW5rRGlyZWN0aW9uIGNoYW5nZWQgdG8gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnIiA9PiBzdWIgewoKICAgICAgICAgICAgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgICAgIFRhcmdldElEICAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uSUQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYXNzZXJ0IHRoZXJlIGFyZSBub3cgdHdvIHZlcnNpb24gc25hcHNob3RzCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgIFsgIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiICAgID0+IDIgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0Tm9MZWFrcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1zQ291bnQgICAgID0+ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCArIDMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTGlua3NDb3VudCA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ICsgMSwKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsgdG8KICAgICAgICAjIHBvaW50IHRvIHRlc3Rsb2NhdGlvbjEgYWdhaW4KICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJJRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJiKSBBc3NlcnQgb24gQ0lzIHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScgKHdpdGggdmVyc2lvbiB0cmlnZ2VycykgYWZ0ZXIgUmVmZXJlbmNlVG9Db3VudHJ5IGNoYW5nZSIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRDb25maWdJdGVtTGlua3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBUYXJnZXRJRCAgICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgTG9jYXRpb25JRCAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IHRocmVlIHZlcnNpb24gc25hcHNob3RzCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgIFsgIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiICAgID0+IDIgXSwKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAzIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGMpIG5vdyBzZXQgYSB2ZXJzaW9uIHRyaWdnZXIKICAgICAgICAjIG9uIHN1YnNpZGlhcnkgZm9yIGNoYW5nZXMgb2YKICAgICAgICAjIHRoZSBEZWZpbml0aW9uCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgb2soCiAgICAgICAgICAgIF9TZXRWZXJzaW9uVHJpZ2dlck9uU3Vic2lkaWFyeUNsYXNzKAogICAgICAgICAgICAgICAgVmFsdWUgPT4gWyJEZWZpbml0aW9uVXBkYXRlIl0KICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlNldCBTdWJzaWRpYXJ5IFZlcnNpb24gVHJpZ2dlciB0byAnRGVmaW5pdGlvblVwZGF0ZScuIgogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gcmVmZXJlbmNlIGlzIHRhcmdldAogICAgICAgICMgdGhpcyBub3cgdHJpZ2dlcnMgYSBuZXcgdmVyc2lvbgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnICk7CgogICAgICAgIHN1YnRlc3QgImMpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzIG9uIENvdW50cnkgYW5kIERlZmluaXRpb25VcGRhdGUgdHJpZ2dlciBvbiBTdWJzaWRpYXJ5KSIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRDb25maWdJdGVtTGlua3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1RhcmdldCcsCiAgICAgICAgICAgICAgICBUYXJnZXRJRCAgICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgTG9jYXRpb25JRCAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IGZvdXIgdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgICAgPT4gMiBdLAogICAgICAgICAgICAgICAgICAgIFsgIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiID0+IDMgXSwKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiA0IF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIERGIHVwZGF0ZSBjaGFuZ2UgbGluayBkaXIgb24KICAgICAgICAjIFJlZmVyZW5jZVRvQ291bnRyeURGCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBhbHNvIHRyaWdnZXJzIG5ldyB2ZXJzaW9uCiAgICAgICAgX1VwZGF0ZVJlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiggTGlua0RpcmVjdGlvbiA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScgKTsKCiAgICAgICAgc3VidGVzdAogICAgICAgICAgICAiYykgQXNzZXJ0IG9uIENJcyB3aXRoIExpbmtUeXBlICckTGlua1R5cGUnICh3aXRoIHZlcnNpb24gdHJpZ2dlcnMgb24gQ291bnRyeSBhbmQgU3Vic2lkaWFyeSkgYWZ0ZXIgTGlua0RpcmVjdGlvbiBjaGFuZ2VkIHRvICdSZWZlcmVuY2luZ0lzU291cmNlJyIgPT4gc3ViIHsKCiAgICAgICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiAgICA9PiAyIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiID0+IDMgXSwKICAgICAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gNCBdLAogICAgICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiA1IF0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtTGlua3NDb3VudCA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ICsgMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiQ2xlYW51cCBMaW5rVHlwZT0nJExpbmtUeXBlJzogZGVsZXRlIGFsbCB0ZXN0IENJIG9iamVjdHMiID0+IHN1YiB7CiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5IGRlbGV0ZWQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdExvY2F0aW9uMiBkZWxldGVkIgogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgIHN1YnRlc3QgIkFzc2VydCBubyBDSSBpdGVtcyBhbmQgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIgPT4gc3ViIHsKICAgICAgICAgICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAoKICAgICAgICAgICAgICAgICMgVHlwZXMgICAgICAgID0+IFsgJExpbmtUeXBlIF0sICMgb3B0aW9uYWwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiA9PiAnQm90aCcsICAgICMgb25lIG9mIFNvdXJjZSwgVGFyZ2V0LCBCb3RoCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlzKCBzY2FsYXIgJExpbmtlZENvbmZpZ0l0ZW1zLT5AKiwgMCwgJ1RoZXJlIGFyZSBubyBDSSBsaW5rcyBsZWZ0JyApOwoKICAgICAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhZ2FpbiwgYWZ0ZXIgY2xlYW51cAogICAgICAgICAgICBfQXNzZXJ0Tm9MZWFrcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1zQ291bnQgICAgID0+ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKICAgIH07Cn0KZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIFByZXBhcmUgdGhlIEdlbmVyYWwgQ2F0YWxvZyBjbGFzc2VzIGJ5IHJlbG9hZGluZyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbAoKc3ViIF9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMgewoKICAgIG15ICRIb21lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJyk7CgogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAoKICAgICAgICAjICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZC4iICk7CgogICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkQ29udGVudCwKICAgICk7CgogICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICRDb250ZW50ID0gWyRDb250ZW50XTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NJbXBvcnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJ1VQREFURScsCiAgICApOwoKICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUNvdW50IHsKICAgIG15ICgkQ291bnQpID0gJERCT2JqZWN0LT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDT1VOVChpZCkgRlJPTSBjb25maWdpdGVtJywKICAgICk7CgogICAgcmV0dXJuICRDb3VudCAvLyAwOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENvdW50KGlkKSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycsCiAgICApOwoKICAgIGlmICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSApIHsKICAgICAgICByZXR1cm4gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcyB7CgogICAgbXkgJVBhcmFtID0gQF87CiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiAkVmFsdWUsCiAgICApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgIHJldHVybiAkUmVzdWx0Owp9CgojIGNhbGwgbGlrZQojIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiMgICAgTG9jYXRpb25JRCA9PiAkVGVzdExvY2FpdG9uMUlELAojICAgIFZlcnNpb25zID0+IFsKIyAgICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgICBbIk5pZWRlcmthbHRlbmtpcmNoZW4kUmFuZG9tSUQiID0+IDIgXSwKIyAgICAgXQojKTsKCnN1YiBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uIHsKCiAgICBteSAlUGFyYW0gICAgICA9IEBfOwogICAgbXkgJFZlcnNpb25zICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJExvY2F0aW9uSUQgPSAkUGFyYW17TG9jYXRpb25JRH07CgogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25ab29tTGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2F0aW9uSUQsCiAgICApOwoKICAgIG15ICRWZXJzaW9uQ291bnQgPSBAJFZlcnNpb25zOwoKICAgIGlzKAogICAgICAgIHNjYWxhciBAJFZlcnNpb25MaXN0UmVmLAogICAgICAgICRWZXJzaW9uQ291bnQsCiAgICAgICAgIkNvdW50IG9mIFZlcnNpb25zIGlzICRWZXJzaW9uQ291bnQgZm9yICIgLiAkU3Vic2lkaWFyeUxvb2t1cHskTG9jYXRpb25JRH0gLiAiICgkTG9jYXRpb25JRCkiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRSZWZlcmVuY2VkQ29uZmlnSXRlbUlEID0gJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkLT57IkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkifS0+WzBdOwoKICAgICAgICBteSAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUmVmZXJlbmNlZENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICJWZXJzaW9uICIgLiAoICRfICsgMSApIC4gIiBSZWZlcmVuY2VUb0NvdW50cnkgREYgUG9pbnRzIHRvICckTmFtZScuIgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX1VwZGF0ZVJlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtEaXJlY3Rpb24gPSAkUGFyYW17TGlua0RpcmVjdGlvbn0gfHwgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnOwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgKTsKCiAgICBvayggJER5bmFtaWNGaWVsZCwgJ1JlZmVyZW5jZVRvQ291bnRyeSBERiBmb3VuZC4nICk7CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfTsKCiAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LCAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgTGFiZWwgICAgICA9PiAnYSBkZXNjcmlwdGlvbicsICAgICAgICAgICMgbWFuZGF0b3J5LCBsYWJlbCB0byBzaG93CiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbScsICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywgICAgICAgICAjIHRoaXMgY29udHJvbHMgd2hpY2ggb2JqZWN0IHRoZSBkeW5hbWljIGZpZWxkIGxpbmtzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIGluZGl2aWR1YWwgYXJ0aWNsZXMsIG90aGVyd2lzZSB0byB0aWNrZXRzCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSB0byBwcmV2ZW50IHJlZHVuZGFudCBleGVjdXRpb24gb24gb3JkZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJSZWZlcmVuY2VUb0NvdW50cnkgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgKTsKCiAgICBfU3luY0NvbmZpZ0l0ZW1ERnMoKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfU3luY0NvbmZpZ0l0ZW1ERnMgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldE91dE9mU3luYygKICAgICAgICBDbGFzc2VzID0+IHsKICAgICAgICAgICAgJFN1YnNpZGlhcnlDbGFzc0lEID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSBdLAogICAgICAgIH0sCiAgICApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TeW5jKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJERpcmVjdGlvbiAgICA9ICRQYXJhbXtEaXJlY3Rpb259OwogICAgbXkgJFRhcmdldElEICAgICA9ICRQYXJhbXtUYXJnZXRJRH07CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAoKICAgICAgICAjIFR5cGVzICAgICAgICA9PiBbICRMaW5rVHlwZSBdLCAjIG9wdGlvbmFsCiAgICAgICAgRGlyZWN0aW9uID0+ICdCb3RoJywgICAgIyBvbmUgb2YgU291cmNlLCBUYXJnZXQsIEJvdGgKICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgaXMoIHNjYWxhciAkTGlua2VkQ29uZmlnSXRlbXMtPkAqLCAgICAgICAgICAgMSwgICAgICAgICAgJ1RoZXJlIGlzIG9uZSBDSSBsaW5rIGZvciAnIC4gJFN1YnNpZGlhcnlMb29rdXB7JENvbmZpZ0l0ZW1JRH0gKTsKICAgIGlzKCAkTGlua2VkQ29uZmlnSXRlbXMtPlswXS0+e0RpcmVjdGlvbn0sICAgICREaXJlY3Rpb24sICJDSSBMaW5rIERpcmVjdGlvbiBpcyAnJERpcmVjdGlvbicuIiApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57Q29uZmlnSXRlbUlEfSwgJFRhcmdldElELCAgIkNJIExpbmsgcG9pbnRzIHRvIiAuICRDb3VudHJ5TG9va3VweyRUYXJnZXRJRH0gLiAiICgkVGFyZ2V0SUQpLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfQXNzZXJ0Tm9MZWFrcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJEV4cGVjdGVkQ29uZmlnSXRlbXNDb3VudCAgICAgPSAkUGFyYW17Q29uZmlnSXRlbXNDb3VudH07CiAgICBteSAkRXhwZWN0ZWRDb25maWdJdGVtTGlua3NDb3VudCA9ICRQYXJhbXtDb25maWdJdGVtTGlua3NDb3VudH07CgogICAgbXkgJEN1cnJlbnRDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwogICAgbXkgJEN1cnJlbnRDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgogICAgaXMoCiAgICAgICAgJEN1cnJlbnRDb25maWdJdGVtc0NvdW50LAogICAgICAgICRFeHBlY3RlZENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgIk5vIENJIGhhdmUgYmVlbiBsZWFrZWQiCiAgICApOwoKICAgIGlzKAogICAgICAgICRDdXJyZW50Q29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgJEV4cGVjdGVkQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgIk5vIENJIGxpbmtzIGhhdmUgYmVlbiBsZWFrZWQiCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIF9Bc3NlcnRMb2NhdGlvbklEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTG9jYXRpb25JRCAgID0gJFBhcmFte0xvY2F0aW9uSUR9OwogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgIG15ICRVcGRhdGVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJFRlc3RMb2NhdGlvbklkID0gJFVwZGF0ZWQtPnsiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSJ9LT5bMF07CiAgICBpcygKICAgICAgICAkVGVzdExvY2F0aW9uSWQsCiAgICAgICAgJExvY2F0aW9uSUQsCiAgICAgICAgIkNJIFJlZmVyZW5jZVRvQ291bnR5IERGIGdvdCB1cGRhdGVkIHRvICIgLiAkQ291bnRyeUxvb2t1cHskTG9jYXRpb25JRH0gLiAiICgkTG9jYXRpb25JRCkiCiAgICApOwoKICAgIHJldHVybjsKfQo=</File>
        <File Location="scripts/test/ITSMConfigItemLinkTest.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJFNlcnZpY2VPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkTGlua09iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJENvbmZpZ0l0ZW1OYW1lID0gIlVuaXRUZXN0Q29uZmlnSXRlbV8kUmFuZG9tSUQiOwpteSAkU2VydmljZU5hbWUgICAgPSAiVW5pdFRlc3RTZXJ2aWNlXyRSYW5kb21JRCI7CgpzdWIgQ2hlY2tFeHBlY3RlZFJlc3VsdHMgewogICAgbXkgKCVQYXJhbSkgPSBAXzsKCiAgICBteSAlRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9ICV7ICRQYXJhbXtFeHBlY3RlZEluY2lkZW50U3RhdGVzfSB9OwogICAgbXkgJU9iamVjdE5hbWVTdWZmaXgySUQgICAgPSAleyAkUGFyYW17T2JqZWN0TmFtZVN1ZmZpeDJJRH0gfTsKCiAgICAjIGNoZWNrIHRoZSByZXN1bHRzCiAgICBmb3IgbXkgJE9iamVjdCAoIHNvcnQga2V5cyAlRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyApIHsKCiAgICAgICAgaWYgKCAkT2JqZWN0IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE5hbWVTdWZmaXggKCBzb3J0IGtleXMgJXsgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHskT2JqZWN0fS0+eyROYW1lU3VmZml4fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICAgICAgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgICAgICAgICAgICAgIkNoZWNrIGluY2lkZW50IHN0YXRlIG9mIGNvbmZpZyBpdGVtICROYW1lU3VmZml4LiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9iamVjdCBlcSAnU2VydmljZScgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE5hbWVTdWZmaXggKCBzb3J0IGtleXMgJXsgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBzZXJ2aWNlIGRhdGEgKGluY2x1ZGluZyB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSkKICAgICAgICAgICAgICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlR2V0KAogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7JE9iamVjdH0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgICAgICAkRXhwZWN0ZWRJbmNpZGVudFN0YXRlc3skT2JqZWN0fS0+eyROYW1lU3VmZml4fSwKICAgICAgICAgICAgICAgICAgICAiQ2hlY2sgaW5jaWRlbnQgc3RhdGUgb2Ygc2VydmljZSAkTmFtZVN1ZmZpeC4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIERvbmUgZm9yIHNlY29uZCBydW4gKGFmdGVyIHJlY2FsY3VsYXRpb24pLgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1JlY2FsY3VsYXRlfTsKCiAgICAjIFRyaWdnZXIgcmVjYWxjdWxhdGlvbiBvZiBpbmNpZGVudCBzdGF0ZXMgZm9yIGVhY2ggY29uZmlnIGl0ZW0uCiAgICBteSAkRXhpdENvZGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlJyktPkV4ZWN1dGUoKTsKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJBZG1pbjo6SVRTTTo6SW5jaWRlbnRTdGF0ZTo6UmVjYWxjdWxhdGUgZXhpdCBjb2RlIgogICAgKTsKCiAgICAjIENoZWNrIHJlc3VsdHMgYWdhaW4gYWZ0ZXIgcmVjYWxjdWxhdGlvbiAoY2FsbCBteXNlbGYgcmVjdXJzaXZlbHkpLgogICAgIyBUaGVyZSBpcyBubyBjaGFuZ2UgaW4gdGhlIGV4cGVjdGVkIHJlc3VsdC4KICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZWNhbGN1bGF0ZSA9PiAxLAogICAgKTsKCiAgICAjIERvbmUsIHR3byBydW5zIHdlcmUgZXhlY3V0ZWQKICAgIHJldHVybiAxOwp9CgojIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCik7Cm15ICVEZXBsU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskRGVwbFN0YXRlTGlzdH07CgojIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0Cm15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKKTsKbXkgJUluY2lTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyRJbmNpU3RhdGVMaXN0fTsKCiMgRGVmaW5pdGlvbnMgYXJlIGFkZGVkIGFzIFlBTUwgc3RyaW5ncwojIGRlZmluZSB0aGUgZmlyc3QgdGVzdCBkZWZpbml0aW9uIChiYXNpYyBkZWZpbml0aW9uIHdpdGhvdXQgRHluYW1pY0ZpZWxkcykKbXkgQENvbmZpZ0l0ZW1EZWZpbml0aW9ucyA9ICg8PCdFTkRfWUFNTCcpOwotLS0KUGFnZXM6CiAgLSBOYW1lOiBQYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IFNlY3Rpb24xCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQogIC0gTmFtZTogUGFnZTIKICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IFNlY3Rpb24yCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMgoKU2VjdGlvbnM6CiAgU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMSIKICBTZWN0aW9uMjoKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAyIgpFTkRfWUFNTAoKIyBhZGQgYSBnZW5lcmFsIGNhdGFsb2cgdGVzdCBsaXN0Cm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAxLAopOwpvayggJENvbmZpZ0l0ZW1Hcm91cElELCAnZ290IGdyb3VwIGlkIGZvciBpdHNtLWNvbmZpZ2l0ZW0nICk7CgojIGFkZCB0aGUgdGVzdCBjbGFzc2VzLCBhY3R1YWxseSBvbmx5IG9uZSB0ZXN0IGNsYXNzCm15ICggQENvbmZpZ0l0ZW1DbGFzc0lEcywgQENvbmZpZ0l0ZW1DbGFzc2VzLCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMgKTsKZm9yIG15ICREZWZpbml0aW9uIChAQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEOwogICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICRDbGFzc05hbWU7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CiAgICBvayggJENsYXNzSUQsICJBZGRlZCBjbGFzcyAkQ2xhc3NOYW1lIHRvIHRoZSBnZW5lcmFsIGNhdGFsb2ciICk7CgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1Blcm1pc3Npb24nLAogICAgICAgIFZhbHVlICA9PiBbJENvbmZpZ0l0ZW1Hcm91cElEXSwKICAgICk7CgogICAgIyBTZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10sCiAgICApOwoKICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJENsYXNzSUQ7CgogICAgIyBhZGQgYSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcwogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbiwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgICAgICAiQWRkZWQgYSBkZWZpbml0aW9uLCBzdWNjZXNzIHdhcyByZXBvcnRlZCIgKTsKICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgIkFkZGVkIGEgZGVmaW5pdGlvbiwgZ290IGEgZGVmaW5pdGlvbiBJRCIgKTsKICAgIHB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfTsKfQoKIyBnZXQgZGVmaW5pdGlvbiBmb3IgJ1Rlc3QnIGNsYXNzCm15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCik7CnJlZl9vayggJERlZmluaXRpb25SZWYsICdIQVNIJywgJ2FkZGVkIGRlZmluaXRpb24gY291bGQgYmUgcmV0cmlldmVkJyApOwoKbXkgJU9iamVjdE5hbWVTdWZmaXgySUQ7CgojIGNyZWF0ZSBzb21lIHRlc3QgY29uZmlnIGl0ZW1zLCBhbGwgdGhlIGNvbmZpZyBpdGVtcyBhcmUgb3BlcmF0aW9uYWwgaW5pdGlhbGx5CmZvciBteSAkTmFtZVN1ZmZpeCAoIDEgLi4gNywgcXcoQSBCIEMgRCBFIEYgRykgKSB7CgogICAgIyBhZGQgYSBjb25maWdpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gam9pbiggJ18nLCAkQ29uZmlnSXRlbU5hbWUsICdUZXN0SXRlbScsICROYW1lU3VmZml4ICksCiAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkQ29uZmlnSXRlbUlELCAiQWRkZWQgY29uZmlnaXRlbSBpZCAkQ29uZmlnSXRlbUlELiIgKTsKCiAgICAjIHJlbWVtYmVyIHRoZSBjb25maWcgaXRlbSBpZAogICAgJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9ID0gJENvbmZpZ0l0ZW1JRDsKfQoKIyBjcmVhdGUgc2VydmljZXMKbXkgQFNlcnZpY2VJRHM7CmZvciBteSAkTmFtZVN1ZmZpeCAoIDEgLi4gMiApIHsKCiAgICBteSAkU2VydmljZUlEID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFNlcnZpY2VOYW1lIC4gJ18nIC4gJE5hbWVTdWZmaXgsCiAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIFR5cGVJRCAgICAgID0+IDEsCiAgICAgICAgQ3JpdGljYWxpdHkgPT4gJzMgbm9ybWFsJywKICAgICk7CiAgICBvayggJFNlcnZpY2VJRCwgIkFkZGVkIHNlcnZpY2UgaWQgJFNlcnZpY2VJRC4iICk7CgogICAgIyByZW1lbWJlciB0aGUgc2VydmljZSBpZAogICAgJE9iamVjdE5hbWVTdWZmaXgySUR7U2VydmljZX0tPnskTmFtZVN1ZmZpeH0gPSAkU2VydmljZUlEOwoKICAgIHB1c2ggQFNlcnZpY2VJRHMsICRTZXJ2aWNlSUQ7Cn0KCiMgcmVhZCB0aGUgb3JpZ2luYWwgc2V0dGluZyBmb3IgSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbgpteSAkT3JpZ0luY2lkZW50TGlua1R5cGVEaXJlY3Rpb25TZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJyk7CgojIHNldCBuZXcgY29uZmlnIGZvciBJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJywKICAgIFZhbHVlID0+IHsKICAgICAgICBEZXBlbmRzT24gPT4gJ1RhcmdldCcsCiAgICAgICAgSW5jbHVkZXMgID0+ICdUYXJnZXQnLAogICAgfSwKKTsKCiMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIERpYWdyYW0KIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIwojCiMgICAgICAgICAgICAgICAgICAgICA2ICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2UgMQojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgQyA8KioqKioqKiogNSAtLS0tLS0+IDQgLS0tLS0tPiAzIC0tLS0tLT4gMSAqKioqKioqKio+IEEgKioqKioqKj4gRiAqKioqKioqKioqPiBHCiMgICAgICAgICAqICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICBeCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBCICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICB2ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB2ICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICBEICoqKioqKioqPiA3ICAgICAgICAgICAgICAgICAgICstLS0tLS0tPiAyICoqKioqKioqKioqKiAgICAgICAgICBFCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlIDIKIwojCiMKIwojICBFeHBsYW5hdGlvbjoKIyAgICAgICAgICAgICAgIDEgLi4gNyBhbmQgQSAuLiBHIGFyZSBJVFNNQ29uZmlnSXRlbXMuIFRoZSBhcnJvdyBpbmRpY2F0ZXMgaG93IGluY2lkZW50cyBhbmQgd2FybmluZ3MKIyAgICAgICAgICAgICAgIGFyZSBwcm9wYWdhdGVkIGluIHRoZSBncmFwaC4KIwojICAgICAgICAgICAgICAgRGVwZW5kc09uIHJlbGF0aW9uc2hpcHMgYXJlIHNob3duIGFzIC0tLS0tPgojICAgICAgICAgICAgICAgSW5jbHVkZXMgIHJlbGF0aW9uc2hpcHMgYXJlIHNob3duIGFzICoqKioqPgojCiMgICAgICAgICAgICAgICBUaGUgY29uZmlnIGl0ZW0gNSAoU291cmNlKSBoYXMgYSBEZXBlbmRzT24gcmVsYXRpb25zaGlwIHdpdGggY29uZmlnIGl0ZW0gNiAoVGFyZ2V0KS4KIyAgICAgICAgICAgICAgIFdoZW4gNiBoYXMgYW4gaW5jaWRlbnQgdGhlbiB0aGUgd2FybmluZyBmbGFnIG11c3QgYmUgcmFpc2VkIG9uIDUuIFRoZXJlZm9yZSB0aGUgZGlyZWN0aW9uCiMgICAgICAgICAgICAgICBvZiBwcm9wYWdhdGlvbiBmb3IgRGVwZW5kc09uIG11c3QgYmUgZnJvbSBUYXJnZXQgdG8gU291cmNlLiBJbiB0aGUgY29kZSB0aGlzIGlzIGluZGljYXRlZAojICAgICAgICAgICAgICAgYnkgIkRpcmVjdGlvbiA9PiAnU291cmNlJy4KIwojICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgZGVmaW5lIHRoZSBsaW5rcyBiZXR3ZWVuIENJcyBhbmQgU2VydmljZXMKbXkgJUxpbmtzID0gKAogICAgRGVwZW5kc09uID0+IHsKICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICc3JyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJzUnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzYnID0+IHsgICAgIyA2IGlzIHRoZSB0YXJnZXQgZm9yIERlcGVuZHNPbgogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWyc1J10sICAgICMgNSBpcyB0aGUgc291cmNlIG9mIERlcGVuZHNPbgogICAgICAgICAgICB9LAogICAgICAgICAgICAnNScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWyc0J10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICc0JyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJzMnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzMnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsgJzEnLCAnMicgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzInID0+IHsKICAgICAgICAgICAgICAgIFNlcnZpY2UgPT4gWycyJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgJzEnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnMSddLAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH0sCiAgICBJbmNsdWRlcyA9PiB7CiAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAnNScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWydDJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdDJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0QnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0QnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnNyddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnQicgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWycyJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICcyJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0EnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzEnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnQSddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnQScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWydGJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdGJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0cnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0UnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnRiddLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAopOwoKIyBsaW5rIHRoZSBjb25maWcgaXRlbXMgYW5kIHNlcnZpY2VzIGFzIHNob3duIGluIHRoZSBkaWFncmFtCmZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJUxpbmtzICkgewogICAgZm9yIG15ICRUYXJnZXRPYmplY3QgKCBzb3J0IGtleXMgJExpbmtzeyRMaW5rVHlwZX0tPiUqICkgewogICAgICAgIGZvciBteSAkVGFyZ2V0S2V5ICggc29ydCBrZXlzICRMaW5rc3skTGlua1R5cGV9LT57JFRhcmdldE9iamVjdH0tPiUqICkgewogICAgICAgICAgICBmb3IgbXkgJFNvdXJjZU9iamVjdCAoIHNvcnQga2V5cyAkTGlua3N7JExpbmtUeXBlfS0+eyRUYXJnZXRPYmplY3R9LT57JFRhcmdldEtleX0tPiUqICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRTb3VyY2VLZXkgKCAkTGlua3N7JExpbmtUeXBlfS0+eyRUYXJnZXRPYmplY3R9LT57JFRhcmdldEtleX0tPnskU291cmNlT2JqZWN0fS0+QCogKSB7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBsaW5rcwogICAgICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAkU291cmNlT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7JFNvdXJjZU9iamVjdH0tPnskU291cmNlS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICRUYXJnZXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHskVGFyZ2V0T2JqZWN0fS0+eyRUYXJnZXRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBvayggJFN1Y2Nlc3MsICJMaW5rQWRkKCkgLSAkU291cmNlT2JqZWN0OiRTb3VyY2VLZXkgbGlua2VkIHdpdGggJFRhcmdldE9iamVjdDokVGFyZ2V0S2V5IHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScuIiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgojIHNldCBDSTYgdG8gIkluY2lkZW50IiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMKc3VidGVzdCAnQ0k2IHNldCB0byBJbmNpZGVudCB3aXRoIENvbmZpZ0l0ZW1VcGRhdGUoKScgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gNjsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ0luY2lkZW50JzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7JEluY2lkZW50U3RhdGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkVmVyc2lvbklELCAiU2V0IGNvbmZpZyBpdGVtIGlkICROYW1lU3VmZml4IHRvIHN0YXRlICckSW5jaWRlbnRTdGF0ZScuIiApOwoKICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgIEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXMgPT4gewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2UgMSBkZXBlbmRzIG9uIDMKICAgICAgICAgICAgICAgICcyJyA9PiAnV2FybmluZycsICAgICAgICMgYmVjYXVzZSAyIGRlcGVuZHMgb24gMwogICAgICAgICAgICAgICAgJzMnID0+ICdXYXJuaW5nJywgICAgICAgIyBiZWNhdXNlIDMgZGVwZW5kcyBvbiA0CiAgICAgICAgICAgICAgICAnNCcgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2UgNCBkZXBlbmRzIG9uIDUKICAgICAgICAgICAgICAgICc1JyA9PiAnV2FybmluZycsICAgICAgICMgYmVjYXVzZSA1IGRlcGVuZHMgb24gNgogICAgICAgICAgICAgICAgJzYnID0+ICdJbmNpZGVudCcsICAgICAgIyBiZWNhdXNlIGl0IHdhcyBleHBsaWNpdGx5IHNldAogICAgICAgICAgICAgICAgJzcnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2Ugb2YgY29ubmVjdGlvbiB3aXRoIENJIDEKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT2JqZWN0TmFtZVN1ZmZpeDJJRCA9PiBcJU9iamVjdE5hbWVTdWZmaXgySUQsCiAgICApOwp9OwoKIyBzZXQgQ0k2IGJhY2sgdG8gIk9wZXJhdGlvbmFsIiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMKc3VidGVzdCAnQ0k2IHNldCB0byBiYWNrIHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCgpJyA9PiBzdWIgewogICAgbXkgJE5hbWVTdWZmaXggICAgPSA2OwogICAgbXkgJEluY2lkZW50U3RhdGUgPSAnT3BlcmF0aW9uYWwnOwoKICAgICMgY2hhbmdlIGluY2lkZW50IHN0YXRlCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRPYmplY3ROYW1lU3VmZml4MklEe0lUU01Db25maWdJdGVtfS0+eyROYW1lU3VmZml4fSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lIC4gJ19UZXN0SXRlbV8nIC4gJE5hbWVTdWZmaXgsCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7JEluY2lkZW50U3RhdGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkVmVyc2lvbklELCAiU2V0IGNvbmZpZyBpdGVtIGlkICROYW1lU3VmZml4IHRvIHN0YXRlICckSW5jaWRlbnRTdGF0ZScuIiApOwoKICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgIEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXMgPT4gewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzMnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc1JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzYnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdBJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0InID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdEJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0UnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdHJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPYmplY3ROYW1lU3VmZml4MklEID0+IFwlT2JqZWN0TmFtZVN1ZmZpeDJJRCwKICAgICk7Cgp9OwoKIyBzZXQgQ0kxIHRvICJJbmNpZGVudCIgYW5kIGNoZWNrIHRoZSByZXN1bHRzCnN1YnRlc3QgJ0NJMSBzZXQgdG8gSW5jaWRlbnQgd2l0aCBWZXJzaW9uQWRkKCknID0+IHN1YiB7CiAgICBteSAkTmFtZVN1ZmZpeCAgICA9IDE7CiAgICBteSAkSW5jaWRlbnRTdGF0ZSA9ICdJbmNpZGVudCc7CgogICAgIyBjaGFuZ2UgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnX1Rlc3RJdGVtXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskSW5jaWRlbnRTdGF0ZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgb2soICRWZXJzaW9uSUQsICJTZXQgY29uZmlnIGl0ZW0gaWQgJE5hbWVTdWZmaXggdG8gc3RhdGUgJyRJbmNpZGVudFN0YXRlJy4iICk7CgogICAgQ2hlY2tFeHBlY3RlZFJlc3VsdHMoCiAgICAgICAgRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnMycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc0JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzUnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc3JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0EnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdHJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlcnZpY2UgPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKfTsKCiMgc2V0IENJNSB0byAiSW5jaWRlbnQiIGFuZCBjaGVjayB0aGUgcmVzdWx0cyAoQ0kxIGlzIHN0aWxsIGluICJJbmNpZGVudCIpCnN1YnRlc3QgJ0NJNiBzZXQgdG8gSW5jaWRlbnQgd2l0aCBWZXJzaW9uQWRkKCknID0+IHN1YiB7CiAgICBteSAkTmFtZVN1ZmZpeCAgICA9IDU7CiAgICBteSAkSW5jaWRlbnRTdGF0ZSA9ICdJbmNpZGVudCc7CgogICAgIyBjaGFuZ2UgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnX1Rlc3RJdGVtXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskSW5jaWRlbnRTdGF0ZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgb2soICRWZXJzaW9uSUQsICJTZXQgY29uZmlnIGl0ZW0gaWQgJE5hbWVTdWZmaXggdG8gc3RhdGUgJyRJbmNpZGVudFN0YXRlJy4iICk7CgogICAgQ2hlY2tFeHBlY3RlZFJlc3VsdHMoCiAgICAgICAgRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzInID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICczJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnNCcgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzUnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnNicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc3JyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnQScgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0InID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0QnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdHJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlcnZpY2UgPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKCn07CgojIHNldCBDSTEgdG8gIk9wZXJhdGlvbmFsIiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMgKENJNSBpcyBzdGlsbCBpbiAiSW5jaWRlbnQiKQpzdWJ0ZXN0ICdDSTEgc2V0IHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCcgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gMTsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ09wZXJhdGlvbmFsJzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICdfVGVzdEl0ZW1fJyAuICROYW1lU3VmZml4LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNleyRJbmNpZGVudFN0YXRlfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFZlcnNpb25JRCwgIlNldCBjb25maWcgaXRlbSBpZCAkTmFtZVN1ZmZpeCB0byBzdGF0ZSAnJEluY2lkZW50U3RhdGUnLiIgKTsKCiAgICBDaGVja0V4cGVjdGVkUmVzdWx0cygKICAgICAgICBFeHBlY3RlZEluY2lkZW50U3RhdGVzID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICcyJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnMycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzQnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICc1JyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzYnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0EnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdDJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0UnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdHJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKfTsKCiMgc2V0IENJNSB0byAiT3BlcmF0aW9uYWwiIGFuZCBjaGVjayB0aGUgcmVzdWx0cwpzdWJ0ZXN0ICdDSTUgc2V0IHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCcgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gNTsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ09wZXJhdGlvbmFsJzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICdfVGVzdEl0ZW1fJyAuICROYW1lU3VmZml4LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNleyRJbmNpZGVudFN0YXRlfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFZlcnNpb25JRCwgIlNldCBjb25maWcgaXRlbSBpZCAkTmFtZVN1ZmZpeCB0byBzdGF0ZSAnJEluY2lkZW50U3RhdGUnLiIgKTsKCiAgICBDaGVja0V4cGVjdGVkUmVzdWx0cygKICAgICAgICBFeHBlY3RlZEluY2lkZW50U3RhdGVzID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICczJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzQnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc2JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzcnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT2JqZWN0TmFtZVN1ZmZpeDJJRCA9PiBcJU9iamVjdE5hbWVTdWZmaXgySUQsCiAgICApOwp9OwoKIyByZXNldCB0aGUgZW5hYmxlZCBzZXR0aW5nIGZvciBJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZQokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbicsCiAgICBWYWx1ZSA9PiAkT3JpZ0luY2lkZW50TGlua1R5cGVEaXJlY3Rpb25TZXR0aW5nLAopOwoKIyBDaGVjayBDSSdzIGluY2lkZW50IHN0YXRlIHVwZGF0ZSBhZnRlciAnTGlua0FkZCcgYWN0aW9uIChzZWUgYnVnIzE0MzgyKS4KZGlhZyAiVGVzdHMgZm9yIFNldEluY2lkZW50U3RhdGVPbkxpbmsiOwoKIyBTZXQgc29tZSBjb25maWdzIGZvciBsaW5rIHN0YXR1cy4KJENvbmZpZ09iamVjdC0+U2V0KAogICAgVmFsaWQgPT4gMSwKICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6U2V0SW5jaWRlbnRTdGF0ZU9uTGluaycsCiAgICBWYWx1ZSA9PiAxLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzJywKICAgIFZhbHVlID0+IFsnUHJvZHVjdGlvbiddLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpJbmNpZGVudFN0YXRlcycsCiAgICBWYWx1ZSA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJywgJ09wZXJhdGlvbmFsJyBdLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpMaW5rVHlwZXMnLAogICAgVmFsdWUgPT4gewogICAgICAgIFJlbGV2YW50VG8gPT4gJ0luY2lkZW50JywKICAgIH0sCik7CiRDb25maWdPYmplY3QtPlNldCgKICAgIFZhbGlkID0+IDEsCiAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OlRpY2tldFR5cGVzJywKICAgIFZhbHVlID0+IFsnSW5jaWRlbnQnXSwKKTsKCiRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiMgVGhlIHRpY2tldCB0eXBlICdJbmNpZGVudCcgaXMgdXNlZCBmb3IgdGVzdGluZy4KIyBUaGUgdHlwZSBuZWVkcyB0byBiZSBjcmVhdGVkIHdoZW4gaXQgZG9lcyBub3QgZXhpc3QuCm15ICRJbmNpZGVudFR5cGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyktPlR5cGVBZGQoCiAgICBOYW1lICAgID0+ICdJbmNpZGVudCcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAoICFkZWZpbmVkICRJbmNpZGVudFR5cGVJRCB8fCAkSW5jaWRlbnRUeXBlSUQgKSwgInRpY2tldCB0eXBlIEluY2lkZW50IGNyZWF0ZWQsIG9yIGl0IGFscmVhZHkgZXhpc3RlZCIgKTsKCiMgQ3JlYXRlIHRlc3QgdGlja2V0LgpteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUaXRsZSAgICAgICAgPT4gIlROLSRSYW5kb21JRCIsCiAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICBUeXBlICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgT3duZXJJRCAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKb2soICRUaWNrZXRJRCwgIlRpY2tldElEICRUaWNrZXRJRCBpcyBjcmVhdGVkIiApOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICJDSS0wMS0kUmFuZG9tSUQiLAogICAgICAgIERlcGxTdGF0ZUlEICAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgIExpbmtUeXBlICAgICAgICAgID0+ICdSZWxldmFudFRvJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAiQ0ktMDItJFJhbmRvbUlEIiwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICA9PiAnRGVwZW5kc09uJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAiQ0ktMDMtJFJhbmRvbUlEIiwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICA9PiAnUmVsZXZhbnRUbycsCiAgICAgICAgRXhwZWN0ZWRJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gIkNJLTA0LSRSYW5kb21JRCIsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICBJbmNpU3RhdGVJRCAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgIExpbmtUeXBlICAgICAgICAgID0+ICdSZWxldmFudFRvJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgfSwKKTsKCm15IEBDSUlEczsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgc3VidGVzdCAkVGVzdC0+e05hbWV9ID0+IHN1YiB7CgogICAgICAgICMgQ3JlYXRlIENJLgogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJFRlc3QtPntOYW1lfSwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJFRlc3QtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRUZXN0LT57SW5jaVN0YXRlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCBpcyBjcmVhdGVkIiApOwoKICAgICAgICBwdXNoIEBDSUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAgICAgIyBBZGQgYSB2ZXJzaW9uLgogICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkVGVzdC0+e05hbWV9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFRlc3QtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkVGVzdC0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFZlcnNpb25JRCwgIlZlcnNpb25JRCAkVmVyc2lvbklEIGlzIGNyZWF0ZWQiICk7CgogICAgICAgICMgQWRkIGEgbGluay4KICAgICAgICBteSAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRUZXN0LT57TGlua1R5cGV9LAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFN1Y2Nlc3MsICJUaWNrZXRJRCAkVGlja2V0SUQgbGlua2VkIHdpdGggQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSUQgd2l0aCBMaW5rVHlwZSAnJFRlc3QtPntMaW5rVHlwZX0nIiApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENJJ3MgaW5jaWRlbnQgc3RhdGUuCiAgICAgICAgaXMoCiAgICAgICAgICAgICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZEluY2lTdGF0ZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3VySW5jaVN0YXRlOiAkVGVzdC0+e0V4cGVjdGVkSW5jaVN0YXRlfSIsCiAgICAgICAgKTsKICAgIH07Cn0KCiMgU2V0IHRpY2tldCB0eXBlIHRvIHNvbWV0aGluZyBkaWZmZXJlbnQgdGhhbiAnSW5jaWRlbnQnIHRvIHZlcmlmeSBDSSdzIGluY2lkZW50IHN0YXRlIHVwZGF0ZS4KbXkgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRUeXBlU2V0KAogICAgVHlwZSAgICAgPT4gJ1VuY2xhc3NpZmllZCcsCiAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwpvayggJFN1Y2Nlc3MsICJUeXBlIGZvciBUaWNrZXRJRCAkVGlja2V0SUQgaXMgY2hhbmdlZCB0byAnVW5jbGFzc2lmaWVkJyIgKTsKCmZvciBteSAkQ0lJRCAoQENJSURzKSB7CiAgICBteSAkQ0kgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJSUQsCiAgICApOwogICAgaXMoCiAgICAgICAgJENJLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICJDSUlEICRDSUlEIGlzIGluICdPcGVyYXRpb25hbCcgc3RhdGUgYWZ0ZXIgdGlja2V0IHR5cGUgdXBkYXRlIiwKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ITSMConfigItemUniqueCIName.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKb3VyICRTZWxmOwoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBhZGQgdGhlIHRlc3QgY2xhc3NlcwpteSBAQ29uZmlnSXRlbUNsYXNzSURzOwpteSBAQ29uZmlnSXRlbUNsYXNzZXM7Cm15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKCiMgZ2VuZXJhdGUgYSByYW5kb20gbmFtZQpteSAkRmlyc3RDbGFzc05hbWUgID0gJ1VuaXRUZXN0Q2xhc3MxJyAuICRSYW5kb21JRDsKbXkgJFNlY29uZENsYXNzTmFtZSA9ICdVbml0VGVzdENsYXNzMicgLiAkUmFuZG9tSUQ7CgojIHNldCBhIG5hbWUgcHJlZml4Cm15ICROYW1lUHJlZml4ID0gJ1VuaXRUZXN0TmFtZScgLiAkUmFuZG9tSUQ7CgojIGFkZCBib3RoIHVuaXR0ZXN0IGNvbmZpZyBpdGVtIGNsYXNzZXMKbXkgJEZpcnN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJEZpcnN0Q2xhc3NOYW1lLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwoKIyBjaGVjayBmaXJzdCBjbGFzcyBpZAppZiAoICEkRmlyc3RDbGFzc0lEICkgewoKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDAsCiAgICAgICAgIkNhbid0IGFkZCBmaXJzdCBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgKTsKfQoKIyBzZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRGaXJzdENsYXNzSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCnB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJEZpcnN0Q2xhc3NJRDsKcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICAkRmlyc3RDbGFzc05hbWU7CgpteSAkU2Vjb25kQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJFNlY29uZENsYXNzTmFtZSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKCiMgc2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZQokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIEtleSAgICA9PiAnVmVyc2lvblN0cmluZ01vZHVsZScsCiAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAopOwoKIyBjaGVjayBzZWNvbmQgY2xhc3MgaWQKaWYgKCAhJFNlY29uZENsYXNzSUQgKSB7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiQ2FuJ3QgYWRkIHNlY29uZCBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgKTsKfQoKcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkU2Vjb25kQ2xhc3NJRDsKcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICAkU2Vjb25kQ2xhc3NOYW1lOwoKbXkgQENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnM7CgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1swXSA9ICIKewogICAgICAgIFBhZ2VzICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgICAgICB9LAogICAgICAgIH0sCn0iOwoKbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKbXkgQENvbmZpZ0l0ZW1EZWZpbml0aW9uczsKZm9yIG15ICRQZXJsRGVmaW5pdGlvbiAoQENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnMpIHsKICAgIG15ICRZQU1MRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgIERhdGEgPT4gZXZhbCAkUGVybERlZmluaXRpb24sICAgICMjIG5vIGNyaXRpYyBxdyhCdWlsdGluRnVuY3Rpb25zOjpQcm9oaWJpdFN0cmluZ3lFdmFsKQogICAgKTsKICAgIHB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9ucywgJFlBTUxEZWZpbml0aW9uOwp9CgojIGFkZCBhbiBlbXB0eSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcy4gdGhlIGRlZmluaXRpb24gZG9lc24ndCBuZWVkIGFueSBlbGVtZW50cywgYXMgd2UncmUgb25seQojIHRlc3RpbmcgdGhlIG5hbWUgd2hpY2ggaXNuJ3QgcGFydCBvZiB0aGUgZGVmaW5pdGlvbiwgYnV0IG9mIHRoZSBjb25maWcgaXRlbSBpdHNlbGYKbXkgJEZpcnN0UmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbnNbMF0sCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkRmlyc3RSZXN1bHQtPntEZWZpbml0aW9uSUR9LCAnZmlyc3QgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiBhZGRlZCcgKTsKCm15ICRGaXJzdERlZmluaXRpb25JRCA9ICRGaXJzdFJlc3VsdC0+e0RlZmluaXRpb25JRH07CnB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkRmlyc3RSZXN1bHQtPntEZWZpbml0aW9uSUR9OwoKbXkgJFNlY29uZFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgQ2xhc3NJRCAgICA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIERlZmluaXRpb24gPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uc1swXSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKb2soICRTZWNvbmRSZXN1bHQtPntEZWZpbml0aW9uSUR9LCAnc2Vjb25kIGNvbmZpZyBpdGVtIGRlZmluaXRpb24gYWRkZWQnICk7CgpteSAkU2Vjb25kRGVmaW5pdGlvbklEID0gJFNlY29uZFJlc3VsdC0+e0RlZmluaXRpb25JRH07CnB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkU2Vjb25kRGVmaW5pdGlvbklEOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgpteSBAQ29uZmlnSXRlbUlEczsKCm15ICRGaXJzdENsYXNzUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBEZWZpbml0aW9uID0+IDw8J0RFRklOSVRJT04nLAotLS0KUGFnZXM6CiAgLSBOYW1lOiBDb250ZW50CiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDEKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQoKU2VjdGlvbnM6CiAgQXR0cmlidXRlczoKICAgIFR5cGU6IERlc2NyaXB0aW9uCkRFRklOSVRJT04KICAgIFVzZXJJRCA9PiAxLAopOwoKIyBmZXRjaCB0aGUgZGVmaW5pdGlvbiBpZApteSAkRmlyc3RDbGFzc0RlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgIENsYXNzSUQgPT4gJEZpcnN0Q2xhc3NJRCwKKTsKCiMgYWRkIGEgY29uZmlnaXRlbSB0byBlYWNoIGNsYXNzCm15ICRGaXJzdENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgQ2xhc3NJRCAgICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnRmlyc3QjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgppZiAoICEkRmlyc3RDb25maWdJdGVtSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBmaXJzdCBjb25maWdpdGVtIiwKICAgICk7Cn0KCnB1c2ggQENvbmZpZ0l0ZW1JRHMsICRGaXJzdENvbmZpZ0l0ZW1JRDsKCm15ICRTZWNvbmRDbGFzc1Jlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgQ2xhc3NJRCAgICA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIERlZmluaXRpb24gPT4gPDwnREVGSU5JVElPTicsCi0tLQpQYWdlczoKICAtIE5hbWU6IENvbnRlbnQKICAgIExheW91dDoKICAgICAgQ29sdW1uczogMQogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IEF0dHJpYnV0ZXMKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCgpTZWN0aW9uczoKICBBdHRyaWJ1dGVzOgogICAgVHlwZTogRGVzY3JpcHRpb24KREVGSU5JVElPTgogICAgVXNlcklEID0+IDEsCik7CgojIGZldGNoIHRoZSBkZWZpbml0aW9uIGlkCm15ICRTZWNvbmRDbGFzc0RlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgIENsYXNzSUQgPT4gJFNlY29uZENsYXNzSUQsCik7CgpteSAkU2Vjb25kQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBDbGFzc0lEICAgICAgPT4gJFNlY29uZENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnU2Vjb25kIzAwMScsCiAgICBEZWZpbml0aW9uSUQgPT4gJFNlY29uZENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRTZWNvbmRDb25maWdJdGVtSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBzZWNvbmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgpwdXNoIEBDb25maWdJdGVtSURzLCAkU2Vjb25kQ29uZmlnSXRlbUlEOwoKIyBjcmVhdGUgYSAzcmQgY29uZmlnaXRlbSBpbiB0aGUgMm5kIGNsYXNzCm15ICRUaGlyZENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgQ2xhc3NJRCAgICAgID0+ICRTZWNvbmRDbGFzc0lELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRTZWNvbmREZWZpbml0aW9uSUQsCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRUaGlyZENvbmZpZ0l0ZW1JRCApIHsKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDAsCiAgICAgICAgIkZhaWxlZCB0byBhZGQgdGhlIHRoaXJkIGNvbmZpZ2l0ZW0iLAogICAgKTsKfQoKcHVzaCBAQ29uZmlnSXRlbUlEcywgJFRoaXJkQ29uZmlnSXRlbUlEOwoKIyBzZXQgYSBuYW1lIGZvciBlYWNoIGNvbmZpZ2l0ZW0KbXkgJEZpcnN0SW5pdGlhbFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRGaXJzdENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdGaXJzdCMwMDEnLAogICAgRGVmaW5pdGlvbklEID0+ICRGaXJzdENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRGaXJzdEluaXRpYWxWZXJzaW9uSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBpbml0aWFsIHZlcnNpb24gZm9yIHRoZSBmaXJzdCBjb25maWdpdGVtIiwKICAgICk7Cn0KCm15ICRTZWNvbmRJbml0aWFsVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICBDb25maWdJdGVtSUQgPT4gJFNlY29uZENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkU2Vjb25kQ2xhc3NEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwoKaWYgKCAhJFNlY29uZEluaXRpYWxWZXJzaW9uSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBpbml0aWFsIHZlcnNpb24gZm9yIHRoZSBzZWNvbmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgpteSAkVGhpcmRJbml0aWFsVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICBDb25maWdJdGVtSUQgPT4gJFRoaXJkQ29uZmlnSXRlbUlELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRTZWNvbmRDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgppZiAoICEkVGhpcmRJbml0aWFsVmVyc2lvbklEICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiRmFpbGVkIHRvIGFkZCB0aGUgaW5pdGlhbCB2ZXJzaW9uIGZvciB0aGUgdGhpcmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcnVuIHRoZSBhY3R1YWwgdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyByZWFkIHRoZSBvcmlnaW5hbCBzZXR0aW5nIGZvciB0aGUgc2V0dGluZyBFbmFibGVVbmlxdWVuZXNzQ2hlY2sKbXkgJE9yaWdFbmFibGVTZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdVbmlxdWVDSU5hbWU6OkVuYWJsZVVuaXF1ZW5lc3NDaGVjaycpOwoKIyBlbmFibGUgdGhlIHVuaXF1ZW5lc3MgY2hlY2sKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJywKICAgIFZhbHVlID0+IDEsCik7CgojIHJlYWQgdGhlIG9yaWdpbmFsIHNldHRpbmcgZm9yIHRoZSBzY29wZSBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjawpteSAkT3JpZ1Njb3BlID0gJENvbmZpZ09iamVjdC0+R2V0KCdVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlJyk7CgojIG1ha2Ugc3VyZSwgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayBpcyBzZXQgdG8gJ2dsb2JhbCcKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnLAogICAgVmFsdWUgPT4gJ2dsb2JhbCcsCik7CgpteSAkUmVuYW1lU3VjY2VzczsKCiMgdHJ5IHRvIGdpdmUgdGhlIDFzdCBjb25maWdpdGVtIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDJuZCBvbmUKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkRmlyc3RDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJEZpcnN0Q2xhc3NJRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgokU2VsZi0+RmFsc2UoCiAgICAkUmVuYW1lU3VjY2VzcywKICAgICJTY29wZSA9PiBnbG9iYWw6IFJlbmFtaW5nIEZpcnN0IzAwMSB0byBhbHJlYWR5IGV4aXN0aW5nIFNlY29uZCMwMDEgc3VjY2Vzc2Z1bGx5IHByZXZlbnRlZCIKKTsKCiMgdHJ5IHRvIGdpdmUgdGhlIDJuZCBjb25maWdpdGVtIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDNyZCBvbmUKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2Vjb25kQ29uZmlnSXRlbUlELAogICAgQ2xhc3NJRCAgICAgID0+ICRTZWNvbmRDbGFzc0lELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRGaXJzdENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiRTZWxmLT5GYWxzZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGdsb2JhbDogUmVuYW1pbmcgU2Vjb25kIzAwMSB0byBhbHJlYWR5IGV4aXN0aW5nIFNlY29uZCMwMDIgc3VjY2Vzc2Z1bGx5IHByZXZlbnRlZCIKKTsKCiMgc2V0IHRoZSBzY29wZSBmb3IgdGhlIHVuaXF1ZW5lc3MgY2hlY2sgdG8gJ2NsYXNzJwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZScsCiAgICBWYWx1ZSA9PiAnY2xhc3MnLAopOwoKIyB0cnkgdG8gcmVuYW1lIEZpcnN0IzAwMSBhZ2FpbiB0byBTZWNvbmQjMDAxIHdoaWNoIHNob3VsZCB3b3JrIG5vdywgZHVlIHRvIHRoZSBkaWZmZXJlbnQgY2xhc3MKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkRmlyc3RDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJEZpcnN0Q2xhc3NJRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGNsYXNzOiBSZW5hbWluZyBGaXJzdCMwMDEgdG8gYWxyZWFkeSBleGlzdGluZyBTZWNvbmQjMDAxIHN1Y2NlZWRlZCIKKTsKCiMgdHJ5aW5nIG5vdyB0byBjcmVhdGUgYSBkdXBsaWNhdGUgbmFtZSB3aXRoaW4gYSBjbGFzcwokUmVuYW1lU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRTZWNvbmRDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJFNlY29uZENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnU2Vjb25kIzAwMicsCiAgICBEZWZpbml0aW9uSUQgPT4gJFNlY29uZENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiRTZWxmLT5GYWxzZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGNsYXNzOiBSZW5hbWluZyBTZWNvbmQjMDAxIHRvIGFscmVhZHkgZXhpc3RpbmcgU2Vjb25kIzAwMiBzdWNjZXNzZnVsbHkgcHJldmVudGVkIgopOwoKIyByZXNldCB0aGUgZW5hYmxlZCBzZXR0aW5nIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJywKICAgIFZhbHVlID0+ICRPcmlnRW5hYmxlU2V0dGluZywKKTsKCiMgcmVzZXQgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnLAogICAgVmFsdWUgPT4gJE9yaWdTY29wZSwKKTsKCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ImportExport/ObjectBackend/ITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIExpc3Q6OkFsbFV0aWxzIHF3KG1heCBtaW4gdHJ1ZSk7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiMgU2FuaXR5IGNoZWNrIHdoZXRoZXIgSW1wb3J0RXhwb3J0IGlzIGF2YWlsYWJsZS4KIyBUaGlzIHNob3VsZCBzdWNjZWVkIHNpbmNlIEltcG9ydEV4cG9ydCBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8gT1RPQk8gY29yZQp7CiAgICAjIGdldCBJbXBvcnRFeHBvcnQgbW9kdWxlIGRpcmVjdG9yeQogICAgbXkgJEltcG9ydEV4cG9ydE1vZHVsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC5wbSc7CiAgICBvayggLWYgJEltcG9ydEV4cG9ydE1vZHVsZSwgJ0ltcG9ydEV4cG9ydC5wbSBleGlzdHMnICk7Cn0KCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRDdXN0b21lclVzZXJPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJEltcG9ydEV4cG9ydE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwpteSAlRm9ybWF0QmFja2VuZE9iamVjdCAgPSAoCiAgICBDU1YgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6OkZvcm1hdEJhY2tlbmQ6OkNTVicpLAogICAgSlNPTiA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpGb3JtYXRCYWNrZW5kOjpKU09OJyksCik7Cm15ICRPYmplY3RCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydDo6T2JqZWN0QmFja2VuZDo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJFVzZXJPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyBjcmVhdGUgdGVzdCB1c2VyCm15ICggdW5kZWYsICRUZXN0VXNlcklEICkgPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7CgojIGFkZCBzb21lIElUU01Db25maWdJdGVtIHRlc3QgdGVtcGxhdGVzIGZvciBsYXRlciBjaGVja3MKIyBtb3N0bHkgd2l0aCBkdW1teSBmb3JtYXRzLCBidXQgdXNlIDUgYW5kIDYgZm9yIENTViBhbmQgSlNPTiB0ZXN0cy4KbXkgQFRlbXBsYXRlSURzOwp7CiAgICBteSAlRm9ybWF0ID0gKAogICAgICAgIDUgPT4gJ0NTVicsCiAgICAgICAgNiA9PiAnSlNPTicsCiAgICApOwoKICAgIGZvciBteSAkaSAoIDAgLi4gMjkgKSB7CiAgICAgICAgbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgICAgICAgICAgT2JqZWN0ICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBGb3JtYXQgID0+ICggJEZvcm1hdHskaX0gfHwgJ1VuaXRUZXN0JyAuICRpIC4gJFJhbmRvbUlEICksCiAgICAgICAgICAgIE5hbWUgICAgPT4gJ1VuaXRUZXN0JyAuICRpIC4gJFJhbmRvbUlELAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAVGVtcGxhdGVJRHMsICRUZW1wbGF0ZUlEOwogICAgfQp9CgojIE9iamVjdExpc3QgdGVzdCAxIChjaGVjayBDU1YgaXRlbSkKewogICAgbXkgJE9iamVjdExpc3QgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RMaXN0OwogICAgb2soCiAgICAgICAgJE9iamVjdExpc3QgJiYgcmVmICRPYmplY3RMaXN0IGVxICdIQVNIJyAmJiAkT2JqZWN0TGlzdC0+e0lUU01Db25maWdJdGVtfSwKICAgICAgICAiT2JqZWN0TGlzdCgpIC0gSVRTTUNvbmZpZ0l0ZW0gZXhpc3RzIiwKICAgICk7Cn0KCiMgT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDEgKGNoZWNrIGF0dHJpYnV0ZSBoYXNoKQp7CiAgICBteSAkT2JqZWN0QXR0cmlidXRlc0dldDEgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzBdLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICApOwoKICAgICMgY2hlY2sgb2JqZWN0IGF0dHJpYnV0ZSByZWZlcmVuY2UKICAgIG9rKAogICAgICAgICRPYmplY3RBdHRyaWJ1dGVzR2V0MSAmJiByZWYgJE9iamVjdEF0dHJpYnV0ZXNHZXQxIGVxICdBUlJBWScsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGNoZWNrIGFycmF5IHJlZmVyZW5jZSIsCiAgICApOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgICMgZGVmaW5lIHRoZSByZWZlcmVuY2UgaGFzaAogICAgbXkgJE9iamVjdEF0dHJpYnV0ZXNHZXQxUmVmZXJlbmNlID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICBOYW1lICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4JywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50JywKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFZhbHVlRGVmYXVsdCA9PiAnMycsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlZ2V4ICAgICAgICA9PiBxcnsgXEEgXGQqIFx6IH14bXMsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoICAgID0+IDUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDb3VudE1heFNldE91dGVyJywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50JywKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFZhbHVlRGVmYXVsdCA9PiAnMCcsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlZ2V4ICAgICAgICA9PiBxcnsgXEEgXGQqIFx6IH14bXMsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoICAgID0+IDUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDb3VudE1heFNldElubmVyJywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICcwJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0lucHV0JyA9PiB7CiAgICAgICAgICAgICAgICAnVHlwZScgPT4gJ0NoZWNrYm94JwogICAgICAgICAgICB9LAogICAgICAgICAgICAnTmFtZScgPT4gJ0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCcsCiAgICAgICAgICAgICdLZXknICA9PiAnRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIElucHV0ID0+IHsgVHlwZSA9PiAiQ2hlY2tib3giIH0sCiAgICAgICAgICAgIEtleSAgID0+ICJJbmNsdWRlQXR0YWNobWVudHMiLAogICAgICAgICAgICBOYW1lICA9PiAiSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSkiLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlzKAogICAgICAgICRPYmplY3RBdHRyaWJ1dGVzR2V0MSwKICAgICAgICAkT2JqZWN0QXR0cmlidXRlc0dldDFSZWZlcmVuY2UsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGF0dHJpYnV0ZXMgb2YgdGhlIHJvdyBhcmUgaWRlbnRpY2FsIiwKICAgICk7Cn0KCiMgT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDIgKGNoZWNrIHdpdGggbm9uIGV4aXN0aW5nIHRlbXBsYXRlKQp7CiAgICBteSAkT2JqZWN0QXR0cmlidXRlc0dldDIgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWy0xXSArIDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICk7CiAgICBpcygKICAgICAgICAkT2JqZWN0QXR0cmlidXRlc0dldDIsCiAgICAgICAgdW5kZWYsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGV4cGVjdGVkIHRvIGZhaWwiLAogICAgKTsKfQoKIyBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDEgKGNoZWNrIGF0dHJpYnV0ZSBoYXNoKQp7CiAgICBteSAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbMF0sCiAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICk7CgogICAgIyBjaGVjayBtYXBwaW5nIG9iamVjdCBhdHRyaWJ1dGUgcmVmZXJlbmNlCiAgICBvaygKICAgICAgICAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxICYmIHJlZiAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxIGVxICdBUlJBWScsCiAgICAgICAgIk1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KCkgLSBjaGVjayBhcnJheSByZWZlcmVuY2UiLAogICAgKTsKfQoKIyBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDIgKGNoZWNrIHdpdGggbm9uIGV4aXN0aW5nIHRlbXBsYXRlKQp7CiAgICBteSAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQyID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKCiAgICBpcygKICAgICAgICAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQyLAogICAgICAgIHVuZGVmLAogICAgICAgICJNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgpIC0gZXhwZWN0ZWQgdG8gZmFpbCIsCiAgICApOwp9CgojIGFkZCBhIGdlbmVyYWwgY2F0YWxvZyB0ZXN0IGxpc3QKbXkgJENvbmZpZ0l0ZW1Hcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgVXNlcklEID0+ICRUZXN0VXNlcklELAopOwpvayggJENvbmZpZ0l0ZW1Hcm91cElELCAnZ290IGdyb3VwIGlkIGZvciBpdHNtLWNvbmZpZ2l0ZW0nICk7CgojIGRvbid0IGNhcmUgYWJvdXQgdmFsaWQgZW1haWxzCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgIFZhbHVlID0+IDAsCik7CgojIENyZWF0ZSBjdXN0b21lciB1c2VycyB3aGljaCB3aWxsIGJlIHJlZmVyZW5jZWQgaW4gQ3VzdG9tZXJVc2VyIGR5bmFtaWMgZmllbGRzOgojIHdpdGggZG91YmxlIHF1b3RlcyBmb3IgdGVzdGluZyBDU1YKIyB3aXRoIGhpZ2ggb3JkZXIgbGV0dGVycwojIHdpdGggcmFuZG9tIGlkLCB1c2VmdWwgZHVyaW5nIGRldmVsb3BtZW50IHdoZW4gUmVzdG9yZURhdGFiYXNlIGlzIGRlYWN0aXZhdGVkCiMKIyBUaGUgY3VzdG9tZXIgaXMgYSBjb21wYW55IHRoYXQgc2VsbHMgZnJ1aXRzLCB2ZWdldGFibGVzLCBhbmQgdHJlZXMuIFRoZSBwcm9kdWNlCiMgaXMgc29sZCBieSBtb25nZXJzIHdoaWNoIGFyZSBtZW1iZXJzIG9mIGEgc2FsZXMgdGVhbS4gVGhlIGNvbXBhbnkgaGFzCiMgY2hpZWYgZmluYW5jaWFsIG9mZmljZXJzIG9mIHZhcmlvdXMgZ2VuZGVycy4KbXkgJUN1c3RvbWVyVXNlcnMgPSAoCgogICAgIyBmb3IgQ3VzdG9tZXJDSU8KICAgIG1hbGVfQ0lPICAgID0+ICdtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJyAuICRSYW5kb21JRCwKICAgIGZlbWFsZV9DSU8gID0+ICdmZW1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+SgSInIC4gJFJhbmRvbUlELAogICAgZGl2ZXJzZV9DSU8gPT4gJ2RpdmVyc2UgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi4oqVIicgLiAkUmFuZG9tSUQsCgogICAgIyBmb3IgQ3VzdG9tZXJTYWxlc1RlYW0sIHRoZSBtZW1iZXJzIG9mIGEgc2FsZXMgdGVhbSBhcmUgbW9uZ2VycwoKICAgICMgZnJ1aXQgYW5kIHZlZ2V0YWJsZSBtb25nZXJzIGZvciBDdXN0b21lclNhbGVzVGVhbQogICAgYXBwbGVfbW9uZ2VyICA9PiAnYXBwbGUgbW9uZ2VyICLwn42OIicgLiAkUmFuZG9tSUQsCiAgICBvbmlvbl9tb25nZXIgID0+ICdvbmlvbiBtb25nZXIgIvCfp4UiJyAuICRSYW5kb21JRCwKICAgIGdhcmxpY19tb25nZXIgPT4gJ2dhcmxpYyBtb25nZXIgIvCfp4QiJyAuICRSYW5kb21JRCwKCiAgICAjIHRyZWUgbW9uZ2VycyBmb3IgQ3VzdG9tZXJTYWxlc1RlYW0KICAgIHRhbmFiYXRlX21vbmdlciA9PiAndGFuYWJhdGUgdHJlZSBtb25nZXIgIvCfjosiJyAuICRSYW5kb21JRCwKICAgIHBhbG1fbW9uZ2VyICAgICA9PiAncGFsbSB0cmVlIG1vbmdlciAi8J+MtCInIC4gJFJhbmRvbUlELAopOwpmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlQ3VzdG9tZXJVc2VycyApIHsKICAgIG15ICRMb2dpbiAgICAgICAgICAgPSAkQ3VzdG9tZXJVc2Vyc3skS2V5fTsKICAgIG15ICRDdXN0b21lclVzZXJBZGQgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJBZGQoCiAgICAgICAgU291cmNlICAgICAgICAgPT4gJ0N1c3RvbWVyVXNlcicsCiAgICAgICAgVXNlckZpcnN0bmFtZSAgPT4gIiRLZXkgZmlyc3QgbmFtZSAkUmFuZG9tSUQiLAogICAgICAgIFVzZXJMYXN0bmFtZSAgID0+ICIkS2V5IGxhc3QgbmFtZSAkUmFuZG9tSUQiLAogICAgICAgIFVzZXJDdXN0b21lcklEID0+ICdUZXN0Q3VzdG9tZXJDb21wYW55MScgLiAkUmFuZG9tSUQsCiAgICAgICAgVXNlckxvZ2luICAgICAgPT4gJExvZ2luLAogICAgICAgIFVzZXJFbWFpbCAgICAgID0+ICRLZXkgLiAkUmFuZG9tSUQgLiAnQGV4YW1wbGUuY29tJywKICAgICAgICBWYWxpZElEICAgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKICAgIGlzKCAkQ3VzdG9tZXJVc2VyQWRkLCAkTG9naW4sICJjdXN0b21lciB1c2VyICckTG9naW4nIGFkZGVkIiApOwp9CgojIGNyZWF0ZSBhZ2VudHMgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgaW4gQWdlbnQgZHluYW1pYyBmaWVsZHMKbXkgJUFnZW50MlVzZXJJRDsKewogICAgbXkgJUxhc3ROYW1lID0gKAoKICAgICAgICAjIGZvciB0aGUgbXVsdGkgdmFsdWUgZHluYW1pYyBmaWVsZCBaWlpTZXRPZkFnZW50cwogICAgICAgIERlc2tBZ2VudCAgICAgPT4gJ0lORk9STUFUSU9OIERFU0sgUEVSU09OIPCfkoEnLAogICAgICAgIExvdHVzQWdlbnQgICAgPT4gJ1BFUlNPTiBJTiBMT1RVUyBQT1NJVElPTiDwn6eYJywKICAgICAgICBDbGltYmluZ0FnZW50ID0+ICdQRVJTT04gQ0xJTUJJTkcg8J+nlycsCiAgICAgICAgRnJvd25pbmdBZ2VudCA9PiAnUEVSU09OIEZST1dOSU5HIPCfmY0nLAoKICAgICAgICAjIGZvciB0aGUgc2luZ2xlIHZhbHVlIGR5bmFtaWMgZmllbGQgWlpaU2V0Q29udGluZW50YWxTdXBwb3J0CiAgICAgICAgRmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYSAgPT4gJ0ZpcnN0IExldmVsIFN1cHBvcnRlciBBZnJpY2EnLAogICAgICAgIFNlY29uZExldmVsU3VwcG9ydGVyQWZyaWNhID0+ICdTZWNvbmQgTGV2ZWwgU3VwcG9ydGVyIEFmcmljYScsCiAgICAgICAgRmlyc3RMZXZlbFN1cHBvcnRlckV1cm9wZSAgPT4gJ0ZpcnN0IExldmVsIFN1cHBvcnRlciBFdXJvcGUnLAogICAgICAgIFNlY29uZExldmVsU3VwcG9ydGVyRXVyb3BlID0+ICdTZWNvbmQgTGV2ZWwgU3VwcG9ydGVyIEV1cm9wZScsCiAgICApOwoKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVMYXN0TmFtZSApIHsKICAgICAgICBteSAkVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJBZGQoCiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gJEtleSwKICAgICAgICAgICAgVXNlckxhc3RuYW1lICA9PiAkTGFzdE5hbWV7JEtleX0sCiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgPT4gJEtleSAuICRSYW5kb21JRCwKICAgICAgICAgICAgVXNlclB3ICAgICAgICA9PiAnc29tZS1wYXNzJywKICAgICAgICAgICAgVXNlckVtYWlsICAgICA9PiAkS2V5IC4gJFJhbmRvbUlEIC4gJ2VtYWlsQGV4YW1wbGUuY29tJywKICAgICAgICAgICAgVmFsaWRJRCAgICAgICA9PiAxLAogICAgICAgICAgICBDaGFuZ2VVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFVzZXJJRCwgInVzZXIgJEtleSBhZGRlZCIgKTsKICAgICAgICAkQWdlbnQyVXNlcklEeyRLZXl9ID0gJFVzZXJJRDsKICAgIH0KfQoKIyBBZGQgZ2VuZXJpYyBjYXRhbG9nIGl0ZW1zIGZvciB0ZXN0aW5nIHRoZSBHZW5lcmFsQ2F0YWxvZyBkeW5hbWljIGZpZWxkIGNsYXNzLgojIFRPRE86IGFjdHVhbGx5IHRlc3QgR2VuZXJhbENhdGFsb2cgZHluYW1pYyBmaWVsZHMKbXkgJEdlbmVyYWxDYXRhbG9nQ2xhc3MgPSAnVW5pdFRlc3QnIC4gJFJhbmRvbUlEOwpkaWFnICJHZW5lcmFsQ2F0YWxvZ0NsYXNzOiAnJEdlbmVyYWxDYXRhbG9nQ2xhc3MnIjsKCm15ICRUZXN0SURTdWZmaXggPSAiVW5pdFRlc3QkUmFuZG9tSUQiOwpkaWFnICJUZXN0SURTdWZmaXg6ICckVGVzdElEU3VmZml4JyI7CmZvciBteSAkTmFtZSAocXcoVGVzdDEgVGVzdDIgVGVzdDMgVGVzdDQpKSB7CgogICAgIyBhZGQgYSBuZXcgaXRlbQogICAgbXkgJEl0ZW1JRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICBDbGFzcyAgID0+ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLAogICAgICAgIE5hbWUgICAgPT4gJE5hbWUsCiAgICAgICAgQ29tbWVudCA9PiAiYWRkZWQgYnkgIiAuIF9fRklMRV9fLAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgKTsKICAgIG9rKCAkSXRlbUlELCAiJE5hbWUgYWRkZWQgdG8gdGhlIGdlbmVyYWwgY2F0YWxvZyIgKTsKCiAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgVmFsdWUgID0+IFskQ29uZmlnSXRlbUdyb3VwSURdLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUuCiAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXIuCiAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uVHJpZ2dlcicsCiAgICAgICAgVmFsdWUgID0+IFsiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCJdLAogICAgKTsKfQoKIyBBZGQgZHluYW1pYyBmaWVsZHMgZm9yIHRlc3RpbmcuIFRoZXNlIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgcmVmZXJlbmNlZAojIGJ5IG5hbWUgaW4gZHluYW1pYyBmaWVsZCBkZWZpbml0aW9ucy4KewogICAgbXkgJE9yZGVyID0gMjAwMDA7CgogICAgIyBubyB1bmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBpbiBkeW5hbWljIGZpZWxkIG5hbWVzCiAgICBteSAlRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnMgPSAoCgogICAgICAgICMgRHluYW1pYyBmaWVsZHMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSBzZXQuCiAgICAgICAgQ3VzdG9tZXJDSU8gPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0N1c3RvbWVyVXNlcicsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDAsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdUb29sdGlwIGZvciBjdXN0b21lciBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEN1c3RvbWVyU2FsZXNUZWFtID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdDdXN0b21lclVzZXInLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSA9PiAxLAogICAgICAgICAgICAgICAgVG9vbHRpcCAgICA9PiAnVG9vbHRpcCBmb3IgY3VzdG9tZXIgc2FsZXMgdGVhbScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBGaXJzdE1vbmRheSA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnRGF0ZScsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDAsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdmaXJzdCBtb25kYXkgb2YgYSB5ZWFyJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEZpcnN0V2Vla2VuZCA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnRGF0ZScsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDEsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdmaXJzdCB3ZWVrZW5kIG9mIGEgeWVhciwgdHdvIHZhbHVlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBBZ2VudDEgYW5kIEFnZW50MiB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBtdWx0aSB2YWx1ZSBTZXQgWlpaU2V0T2ZBZ2VudHMKICAgICAgICBBZ2VudDEgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0FnZW50JywKICAgICAgICAgICAgQ29uZmlnICAgID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlzZWxlY3QgID0+IDAsCiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlICAgPT4gMCwKICAgICAgICAgICAgICAgIEdyb3VwRmlsdGVyICA9PiBbXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgICAgICA9PiAnVG9vbHRpcCBmb3IgQWdlbnQxJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEFnZW50MiA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnQWdlbnQnLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXNlbGVjdCAgPT4gMCwKICAgICAgICAgICAgICAgIE11bHRpVmFsdWUgICA9PiAwLAogICAgICAgICAgICAgICAgR3JvdXBGaWx0ZXIgID0+IFtdLAogICAgICAgICAgICAgICAgVG9vbHRpcCAgICAgID0+ICdUb29sdGlwIGZvciBBZ2VudDInLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgWlpaU2V0T2ZBZ2VudHMgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ1NldCcsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDEsCiAgICAgICAgICAgICAgICBJbmNsdWRlICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB7IERGID0+ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCB9LAogICAgICAgICAgICAgICAgICAgIHsgREYgPT4gJ0FnZW50MicgLiAkVGVzdElEU3VmZml4IH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVG9vbHRpcCA9PiAnVG9vbHRpcCBmb3IgWlpaU2V0T2ZBZ2VudHMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgICMgTGV2ZWxGaXJzdCBhbmQgTGV2ZWxTZWNvbmQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgc2luZ2xlIHZhbHVlIFNldCBaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQKICAgICAgICBMZXZlbEZpcnN0ID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdBZ2VudCcsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIE11bHRpc2VsZWN0ICA9PiAwLAogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSAgID0+IDAsCiAgICAgICAgICAgICAgICBHcm91cEZpbHRlciAgPT4gW10sCiAgICAgICAgICAgICAgICBUb29sdGlwICAgICAgPT4gJ1Rvb2x0aXAgZm9yIGZpcnN0IGxldmVsIHN1cHBvcnQnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgTGV2ZWxTZWNvbmQgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0FnZW50JywKICAgICAgICAgICAgQ29uZmlnICAgID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlzZWxlY3QgID0+IDAsCiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlICAgPT4gMCwKICAgICAgICAgICAgICAgIEdyb3VwRmlsdGVyICA9PiBbXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgICAgICA9PiAnVG9vbHRpcCBmb3Igc2Vjb25kIGxldmVsIHN1cHBvcnQnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgWlpaU2V0Q29udGluZW50YWxTdXBwb3J0ID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdTZXQnLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSA9PiAwLAogICAgICAgICAgICAgICAgSW5jbHVkZSAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyBERiA9PiAiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIH0sCiAgICAgICAgICAgICAgICAgICAgeyBERiA9PiAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgPT4gJ1Rvb2x0aXAgZm9yIFpaWlNldENvbnRpbmVudGFsU3VwcG9ydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICk7CgogICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVEeW5hbWljRmllbGREZWZpbml0aW9ucyApIHsKICAgICAgICBteSAkREZOYW1lICAgICAgICAgPSAkTmFtZSAuICRUZXN0SURTdWZmaXg7ICAgICAgICAgICAgICAgICAgIyBhZGQgc3VmZml4IHRvIGhhdmUgdW5pcXVlIG5hbWVzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJERGTmFtZSwKICAgICAgICAgICAgRmllbGRPcmRlciA9PiAkT3JkZXIrKywKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LT57RmllbGRUeXBlfSwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBDb25maWcgICAgID0+ICREeW5hbWljRmllbGREZWZpbml0aW9uc3skTmFtZX0tPntDb25maWd9LAogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgKTsKICAgICAgICBvayggJER5bmFtaWNGaWVsZElELCAiY3JlYXRlZCBkeW5hbWljIGZpZWxkICRERk5hbWUiICk7CiAgICB9Cn0KCiMgQWRkIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zCm15ICggJUNvbmZpZ0l0ZW1DbGFzc0lEcywgJUNvbmZpZ0l0ZW1EZWZpbml0aW9uSURzICk7CnsKICAgIG15IEBDb25maWdJdGVtUGVybERlZmluaXRpb25zOwoKICAgICMgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiB3aXRoIHR3byBDdXN0b21lclVzZXIgZmllbGRzCiAgICBwdXNoIEBDb25maWdJdGVtUGVybERlZmluaXRpb25zLCB7CiAgICAgICAgUGFnZXMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJ1R3b0N1c3RvbWVyVXNlcnMnLCAgICAjIHdpbGwgYmUgcmV1c2VkIGluIGNsYXNzIG5hbWUKICAgICAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiAgICAgPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnQ3VzdG9tZXJDSU8nIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0N1c3RvbWVyU2FsZXNUZWFtJyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICB9OwoKICAgICMgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiB3aXRoIHR3byBEYXRlIGZpZWxkcwogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdUd29EYXRlcycsICAgICMgd2lsbCBiZSByZXVzZWQgaW4gY2xhc3MgbmFtZQogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnInCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnVHdvRGF0ZXNTZWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgVHdvRGF0ZXNTZWN0aW9uID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0ZpcnN0TW9uZGF5JyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdGaXJzdFdlZWtlbmQnIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH07CgogICAgIyBkZWZpbml0aW9uIHdpdGggYSBtdWx0aSB2YWx1ZSBTZXQgZHluYW1pYyBmaWVsZAogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywgICAgIyB3aWxsIGJlIHJldXNlZCBpbiBjbGFzcyBuYW1lCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICdTZWN0aW9uMScsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ICAgID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0N1c3RvbWVyQ0lPJyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdaWlpTZXRPZkFnZW50cycgLiAkVGVzdElEU3VmZml4LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfTsKCiAgICAjIGRlZmluaXRpb24gd2l0aCBhIHNpbmdsZSB2YWx1ZSBTZXQgZHluYW1pYyBmaWVsZAogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdTaW5nbGVWYWx1ZVNldCcsICAgICMgd2lsbCBiZSByZXVzZWQgaW4gY2xhc3MgbmFtZQogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnInCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgU2VjdGlvbnMgPT4gewogICAgICAgICAgICBTZWN0aW9uMSA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQnIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH07Cgo9Zm9yIG5ldmVyCgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1swXSA9ICIgWwogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ3VzdG9tZXIgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdDdXN0b21lcicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnRGF0ZTEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0RhdGUgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEYXRlJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdEYXRlVGltZTEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0RhdGUgVGltZSAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ0RhdGVUaW1lJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICA9PiAnRHVtbXkxJywKICAgICAgICBOYW1lICA9PiAnRHVtbXkgMScsCiAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEdW1teScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnR2VuZXJhbENhdGFsb2cxJywKICAgICAgICBOYW1lICAgICAgID0+ICdHZW5lcmFsQ2F0YWxvZyAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgID0+ICdHZW5lcmFsQ2F0YWxvZycsCiAgICAgICAgICAgIENsYXNzID0+ICckR2VuZXJhbENhdGFsb2dDbGFzcycsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnSW50ZWdlcjEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0ludGVnZXIgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdUZXh0MScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGV4dCAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ1RleHRBcmVhMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGV4dEFyZWEgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdUZXh0QXJlYScsCiAgICAgICAgfSwKICAgIH0sCl0gIjsKCiMgZGVmaW5lIHRoZSBzZWNvbmQgdGVzdCBkZWZpbml0aW9uIChzdWIgZGF0YSB0eXBlcykKJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMV0gPSAiIFsKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgIH0sCiAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgU3ViID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMScsCiAgICAgICAgICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgICAgICAgICBTdWIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxU3ViU3ViMScsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMSBTdWJTdWIgMScsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxU3ViU3ViMicsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMSBTdWJTdWIgMicsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXh0QXJlYScsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMVN1YjInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxIFN1YiAyJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMicsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAyJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICB9LAogICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgIFN1YiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ01haW4yU3ViMScsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICdNYWluIDIgU3ViIDEnLAogICAgICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gNTAsCiAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMlN1YjInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAyIFN1YiAyJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKXSAiOwoKIyBEZWZpbmUgdGhlIHRoaXJkIHRlc3QgZGVmaW5pdGlvbiB3aXRoIHJlcXVpcmVkIGF0dHJpYnV0ZSAnVHlwZScuCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzJdID0gIiBbCiAgICB7CiAgICAgICAgJ0tleScgPT4gJ1R5cGUnLAogICAgICAgICdJbnB1dCcgPT4gewogICAgICAgICAgICAnQ2xhc3MnID0+ICckR2VuZXJhbENhdGFsb2dDbGFzcycsCiAgICAgICAgICAgICdSZXF1aXJlZCcgPT4gMSwKICAgICAgICAgICAgJ1RyYW5zbGF0aW9uJyA9PiAxLAogICAgICAgICAgICAnVHlwZScgPT4gJ0dlbmVyYWxDYXRhbG9nJwogICAgICAgIH0sCiAgICAgICAgJ1NlYXJjaGFibGUnID0+IDEsCiAgICAgICAgJ0NvdW50TWluJyA9PiAxLAogICAgICAgICdDb3VudERlZmF1bHQnID0+IDEsCiAgICAgICAgJ0NvdW50TWF4JyA9PiAzLAogICAgICAgICdOYW1lJyA9PiAnVHlwZScsCiAgICB9LApdICI7Cgo9Y3V0CgogICAgbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgICMgYWRkIHRoZSB0ZXN0IGNvbmZpZyBpdGVtIGNsYXNzZXMKICAgIG15ICRpID0gMDsKICAgIGZvciBteSAkUGVybERlZmluaXRpb24gKEBDb25maWdJdGVtUGVybERlZmluaXRpb25zKSB7CgogICAgICAgICMgZ2VuZXJhdGUgYW4gaW5mb3JtYXRpdmUgcmFuZG9tIG5hbWUKICAgICAgICBteSAkU2hvcnROYW1lID0gJFBlcmxEZWZpbml0aW9uLT57UGFnZXN9LT5bMF0tPntOYW1lfTsKICAgICAgICBteSAkQ2xhc3NOYW1lID0gam9pbiAnXycsICdVbml0VGVzdCcsICRTaG9ydE5hbWUsICsrJGksICRSYW5kb21JRDsKCiAgICAgICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgICAgICBteSAkQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkQ2xhc3NJRCwgImFkZGVkIGdlbmVyYWwgY2F0YWxvZyBpdGVtIGZvciBjb25maWcgaXRlbSBjbGFzcyAkQ2xhc3NOYW1lIiApOwogICAgICAgICRDb25maWdJdGVtQ2xhc3NJRHN7JFNob3J0TmFtZX0gPSAkQ2xhc3NJRDsKCiAgICAgICAgIyBTZXQgcGVybWlzc2lvbi4KICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICAgICAgVmFsdWUgID0+IFskQ29uZmlnSXRlbUdyb3VwSURdLAogICAgICAgICk7CgogICAgICAgICMgU2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZS4KICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICAgICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKICAgICAgICApOwoKICAgICAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXIuCiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWwogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCiAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgIERhdGEgPT4gJFBlcmxEZWZpbml0aW9uLAogICAgICAgICk7CiAgICAgICAgb2soICRZQU1MRGVmaW5pdGlvbiwgJ2dvdCBzb21lIFlBTUwnICk7CiAgICAgICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwogICAgICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgJ2dvdCBEZWZpbml0aW9uSUQnICk7CiAgICAgICAgJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzeyRTaG9ydE5hbWV9ID0gJFJlc3VsdC0+e0RlZmluaXRpb25JRH07CiAgICB9Cn0KCiMgZm9yIHRlc3RzIHdlIG5lZWQgdmFsaWQgYW5kIGludmFsaWQgY2xhc3MgSURzCm15ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lEICAgPSBtaW4oIHZhbHVlcyAlQ29uZmlnSXRlbUNsYXNzSURzICk7Cm15ICRJbnZhbGRpQ29uZmlnSXRlbUNsYXNzSUQgPSBtYXgoIHZhbHVlcyAlQ29uZmlnSXRlbUNsYXNzSURzICkgKyAxOwoKIyBDcmVhdGUgc29tZSByYW5kb20gbnVtYmVycy4gVGhlIG51bWJlcnMgbXVzdCBiZSBzb3J0ZWQgYmVjYXVzZQojIEV4cG9ydERhdGFHZXQoKSBzb3J0cyBwZXIgZGVmYXVsdCBieSB0aGUgY29uZmlnIGl0ZW0gbnVtYmVyIGluIGRlc2NlbmRpbmcgb3JkZXIuCm15IEBDb25maWdJdGVtTnVtYmVycyA9CiAgICBzb3J0CiAgICBtYXAKICAgIHsgJEhlbHBlci0+R2V0UmFuZG9tTnVtYmVyIH0KICAgICggMSAuLiAxMCApOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpyZWZfb2soICREZXBsU3RhdGVMaXN0LCAnSEFTSCcsICdkZXBsb3ltZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7CnJlZl9vayggJERlcGxTdGF0ZUxpc3QsICdIQVNIJywgJ2luY2lkZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIHRlc3QgbGlzdApteSAkR2VuZXJhbENhdGFsb2dMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLAopOwpyZWZfb2soICRHZW5lcmFsQ2F0YWxvZ0xpc3QsICdIQVNIJywgJ2dlbmVyYWwgY2F0YWxvZyBsaXN0IGlzIGEgaGFzaHJlZicgKTsKCiMgVE9ETzogcmVhY3RpdmF0ZSB0ZXN0IGNhc2VzCiNteSAlR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskR2VuZXJhbENhdGFsb2dMaXN0fTsKCiMgZGVmaW5lIHRoZSB0ZXN0IGNvbmZpZyBpdGVtcwpteSBAQ29uZmlnSXRlbVNldHVwczsKbXkgJENvbmZpZ0l0ZW1DbnQgPSAwOwoKIyB0d28gY29uZmlnIGl0ZW1zIGZvciBUd29DdXN0b21lclVzZXJzCnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgVHdvQ3VzdG9tZXJVc2VycycsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1DbnQgVmVyc2lvbiAxIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3twYWxtX21vbmdlcn0sCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3t0YW5hYmF0ZV9tb25nZXJ9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ2NvbmZpZyBpdGVtIDIgZm9yIFR3b0N1c3RvbWVyVXNlcnMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkQ29uZmlnSXRlbUNudCsrIF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDb25maWdJdGVtICRDb25maWdJdGVtQ250IFZlcnNpb24gMSIsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gJEN1c3RvbWVyVXNlcnN7bWFsZV9DSU99LAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7b25pb25fbW9uZ2VyfSwKICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJze2FwcGxlX21vbmdlcn0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07CgojIHR3byBjb25maWcgaXRlbXMgd2l0aCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0CnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEEgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMiBmb3IgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdLCAgICAgJ0FnZW50MicuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfTsKCiMgdHdvIGNvbmZpZyBpdGVtcyB3aXRoIFNpbmdsZVZhbHVlU2V0CnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgU2luZ2xlVmFsdWVTZXQ6IEFmcmljYScsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkQ29uZmlnSXRlbUNudCsrIF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUNudCBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0Q29udGluZW50YWxTdXBwb3J0JFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgeyAiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyQWZyaWNhfSBdLCAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0gfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdjb25maWcgaXRlbSAyIGZvciBTaW5nbGVWYWx1ZVNldDogRXVyb3BlJywKICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDb25maWdJdGVtICRDb25maWdJdGVtQ250IFZlcnNpb24gMSIsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJFdXJvcGV9IF0sICJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0gXSB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKIyBjb25maWcgaXRlbXMgZm9yIFR3b0RhdGVzCnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgVHdvRGF0ZXMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sgJENvbmZpZ0l0ZW1DbnQrKyBdLAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjQgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI0LTAxLTAxJywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAnMjAyNC0wMS0wNicsCiAgICAgICAgICAgICAgICAnMjAyNC0wMS0wNycsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMiBmb3IgVHdvRGF0ZXMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sgJENvbmZpZ0l0ZW1DbnQrKyBdLAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIiwgICAgICMgd2lsbCBiZSBvdmVyd3JpdHRlbiBsYXRlcgogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tUd29EYXRlc30sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjUtMDEtMDcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhY3R1YWxseSB0dWVzZGF5LCB3aWxsIGJlIGZpeGVkIGxhdGVyCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgJzIwMjUtMDEtMDQnLAogICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUnLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWZvciBuZXZlcgoKIDEwLjEgdGVzdCBjYXNlcwoKICgKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBhbGwgcHJvdmlkZWQgZGF0YSB0eXBlcwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGUxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZVRpbWUxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhbENhdGFsb2cxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlcjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0MSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdUZXN0IFRleHQgVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXJlYTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAiVGVzdFxuVGV4dCBBcnJheVxuVGVzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBhIHNlY29uZCBjb25maWcgaXRlbSBmb3IgYWxsIHByb3ZpZGVkIGRhdGEgdHlwZXMKICAgICMgKGR1cGxpY2F0ZSBuYW1lIG9mIGZpcnN0IHZlcnNpb24gZm9yIHNlYXJjaCBjaGVja3MpCiAgICB7CiAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzFdLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywgICAgIyBkdXBsaWNhdGUgbmFtZSBmb3IgdGVzdHMKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lcjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBcmVhMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMiBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdVbml0VGVzdDInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMiAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0Mn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3QgVGV4dCBUZXN0MicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXJlYTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAiVGVzdDJcblRleHQgQXJyYXlcblRlc3QgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBjb25maWcgaXRlbSBmb3Igc3ViIGVsZW1lbnQgdGVzdHMKICAgIHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnTWFpbjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdNYWluMSAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdNYWluMSAoMSkgU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIyICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ01haW4yICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTWFpbjIgKDEpIFN1YjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcgPT4gJ01haW4yICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAnTWFpbjIgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBzdWIgZWxlbWVudCB0ZXN0cwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1szXSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzFdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA0IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBjb25maWcgaXRlbSBmb3Igc3BlY2lhbCBjaGFyYWN0ZXIgdGVzdHMKICAgIHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gNSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnIiI7Ozo6Li4tLV9fIyMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVGVzdCBUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICJUZXN0XG5UZXN0XHRUZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBVVEYtOCB0ZXN0cwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1XSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzFdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA2IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICfihoIg4oW7IOKFmycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICA9PiAn4piEIOKGriDihrkg4oaSJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxU3ViU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICfigqQg4oKhIOKCqSDigq8g4oK1JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAn4pmKIOKZiCDimYkg4pmKIOKZiyDimY0g4pmRJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAn4pyIIOKdpCDimK4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICfViiDVhCDVgCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnwq4gwqknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ+OBiyDjgZIg44KSJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCj1jdXQKCiMgYWRkIHRoZSB0ZXN0IGNvbmZpZyBpdGVtcwpteSBAQ29uZmlnSXRlbUlEczsKZm9yIG15ICRTZXR1cCAoQENvbmZpZ0l0ZW1TZXR1cHMpIHsKCiAgICAjIGFkZCBhIGNvbmZpZyBpdGVtCiAgICBkaWFnICJhZGQgY29uZmlnIGl0ZW06ICRTZXR1cC0+e0Rlc2NyaXB0aW9ufSI7CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgJFNldHVwLT57Q29uZmlnSXRlbUFkZH0tPiUqLAogICAgKTsKICAgIG9rKCAkQ29uZmlnSXRlbUlELCAnY29uZmlnIGl0ZW0gYWRkZWQnICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAjIGFkZCB0aGUgdmVyc2lvbnMKICAgIGZvciBteSAkQ29uZmlnSXRlbVVwZGF0ZSAoICggJFNldHVwLT57Q29uZmlnSXRlbVVwZGF0ZX0gLy8gW10gKS0+QCogKSB7CgogICAgICAgICMgYWRkIHVwZGF0ZXMKICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICRDb25maWdJdGVtVXBkYXRlLT4lKiwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICBvayggJFZlcnNpb25JRCwgJ2NvbmZpZyBpdGVtIHZlcnNpb24gYWRkZWQnICk7CiAgICB9Cn0KCiMgZGVjbGFyZSBFeHBvcnREYXRhIHRlc3RzCm15IEBFeHBvcnREYXRhVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydERhdGFHZXQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydERhdGFHZXQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7bm8gZXhpc3RpbmcgdGVtcGxhdGUgaWQgaXMgZ2l2ZW4gKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtubyBjbGFzcyBpZCBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJEludmFsZGlDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXttYXBwaW5nIGxpc3QgaXMgZW1wdHkgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1szXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAobnVtYmVyIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAobmFtZSBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNhc2UgaW5zZW5zaXRpdmUgbmFtZSBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICd1bml0dGVzdCAtIGNvbmZpZ2l0ZW0gMSB2ZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKG5hbWUgYW5kIG51bWJlciBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgQ1NWIGV4cG9ydHMKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOYW1lLCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgQ3VzdG9tZXJTYWxlc1RlYW0gYXMgQ1NWfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGV2YWx1ZSBmaWVsZC4gVGh1cyBubyBpbmRleCBpcyBwYXNzZWQuCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8ke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyU2FsZXNUZWFtIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0ke1Rlc3RJRFN1ZmZpeH06OjEiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSR7VGVzdElEU3VmZml4fTo6MiIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyB1c3VhbGx5IHNhbWUgYXMgZm9yIEV4cG9ydERhdGFHZXQKICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgPT4gJ0NTVicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TZXBhcmF0b3IgPT4gJ1NlbWljb2xvbicsCiAgICAgICAgICAgICAgICAgICAgQ2hhcnNldCAgICAgICAgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgICMgVGhlIGV4cGVjdGVkIHJvd3MgbmVlZCB0byBiZSBzb3J0ZWQgYnkgY29uZmlnIGl0ZW0gbnVtYmVyIGluIGRlc2NlbmRpbmcgb3JkZXIuCiAgICAgICAgIyBUaGVyZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0aGUgc29ydCBvcmRlciBpbiBFeHBvcnREYXRhR2V0KCkuCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMiBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXtvbmlvbiBtb25nZXIgIvCfp4UiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe2FwcGxlIG1vbmdlciAi8J+NjiIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7WyJvbmlvbiBtb25nZXIgXFwi8J+nhVxcIiRSYW5kb21JRCIsImFwcGxlIG1vbmdlciBcXCLwn42OXFwiJFJhbmRvbUlEIl19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgIHFxe21hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+XhCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7cGFsbSB0cmVlIG1vbmdlciAi8J+MtCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7dGFuYWJhdGUgdHJlZSBtb25nZXIgIvCfjosiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe1sicGFsbSB0cmVlIG1vbmdlciBcXCLwn4y0XFwiJFJhbmRvbUlEIiwidGFuYWJhdGUgdHJlZSBtb25nZXIgXFwi8J+Oi1xcIiRSYW5kb21JRCJdfSwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgICAgIFJlZmVyZW5jZUV4cG9ydENvbnRlbnQgPT4gWwogICAgICAgICAgICBqb2luKAogICAgICAgICAgICAgICAgJzsnLAogICAgICAgICAgICAgICAgcXF7IlVuaXRUZXN0IC0gQ29uZmlnSXRlbSAyIFZlcnNpb24gMSJ9LAogICAgICAgICAgICAgICAgcXF7IiRDb25maWdJdGVtTnVtYmVyc1sxXSJ9LAogICAgICAgICAgICAgICAgcXF7Im1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAiIvCfl4QiIiRSYW5kb21JRCJ9LCAgICAjIG5vdCBKU09OIGJlY2F1c2Ugc2luZ2xlIHZhbHVlCiAgICAgICAgICAgICAgICBxcXsib25pb24gbW9uZ2VyICIi8J+nhSIiJFJhbmRvbUlEIn0sICAgICAgICAgICAgICAgICAgICAgICMgbm90IEpTT04gYmVjYXVzZSBleHBsaWNpdCBpbmRleAogICAgICAgICAgICAgICAgcXF7ImFwcGxlIG1vbmdlciAiIvCfjY4iIiRSYW5kb21JRCJ9LCAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBKU09OIGJlY2F1c2UgZXhwbGljaXQgaW5kZXgKICAgICAgICAgICAgICAgIHFxeyJbIiJvbmlvbiBtb25nZXIgXFwiIvCfp4VcXCIiJFJhbmRvbUlEIiIsIiJhcHBsZSBtb25nZXIgXFwiIvCfjY5cXCIiJFJhbmRvbUlEIiJdIn0KICAgICAgICAgICAgKSwKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEifSwKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbMF0ifSwKICAgICAgICAgICAgICAgIHFxeyJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIiLwn5eEIiIkUmFuZG9tSUQifSwKICAgICAgICAgICAgICAgIHFxeyJwYWxtIHRyZWUgbW9uZ2VyICIi8J+MtCIiJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsidGFuYWJhdGUgdHJlZSBtb25nZXIgIiLwn46LIiIkUmFuZG9tSUQifSwKICAgICAgICAgICAgICAgIHFxeyJbIiJwYWxtIHRyZWUgbW9uZ2VyIFxcIiLwn4y0XFwiIiRSYW5kb21JRCIiLCIidGFuYWJhdGUgdHJlZSBtb25nZXIgXFwiIvCfjotcXCIiJFJhbmRvbUlEIiJdIn0KICAgICAgICAgICAgKSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOYW1lLCBOdW1iZXIsIEZpcnN0TW9uZGF5LCBhbmQgRmlyc3RXZWVrZW5kIGFzIENTVn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBDdXN0b21lckNJTyBpcyBhIHNpbmdsZXZhbHVlIGZpZWxkLiBUaHVzIG5vIGluZGV4IGlzIHBhc3NlZC4KICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSR7VGVzdElEU3VmZml4fSIsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgRmlyc3RXZWVrZW5kIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoxIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyB1c3VhbGx5IHNhbWUgYXMgZm9yIEV4cG9ydERhdGFHZXQKICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgPT4gJ0NTVicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TZXBhcmF0b3IgPT4gJ0NvbW1hJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUQiLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzddLAogICAgICAgICAgICAgICAgcXF7MjAyNS0wMS0wNyAwMDowMDowMH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgYmUgbW9uZGF5LCBpcyB0dWVzZGF5CiAgICAgICAgICAgICAgICBxcXtbIjIwMjUtMDEtMDQgMDA6MDA6MDAiLCIyMDI1LTAxLTA1IDAwOjAwOjAwIl19LCAgICAjIHNhdHVyZGF5IGFuZCBzdW5kYXkKICAgICAgICAgICAgICAgIHFxezIwMjUtMDEtMDQgMDA6MDA6MDB9LAogICAgICAgICAgICAgICAgcXF7MjAyNS0wMS0wNSAwMDowMDowMH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjQgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2XSwKICAgICAgICAgICAgICAgIHFxezIwMjQtMDEtMDEgMDA6MDA6MDB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbW9uZGF5CiAgICAgICAgICAgICAgICBxcXtbIjIwMjQtMDEtMDYgMDA6MDA6MDAiLCIyMDI0LTAxLTA3IDAwOjAwOjAwIl19LCAgICAjIHNhdHVyZGF5IGFuZCBzdW5kYXkKICAgICAgICAgICAgICAgIHFxezIwMjQtMDEtMDYgMDA6MDA6MDB9LAogICAgICAgICAgICAgICAgcXF7MjAyNC0wMS0wNyAwMDowMDowMH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICcsJywKICAgICAgICAgICAgICAgIHFxeyJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsiJENvbmZpZ0l0ZW1OdW1iZXJzWzddIn0sCiAgICAgICAgICAgICAgICBxcXsiMjAyNS0wMS0wNyAwMDowMDowMCJ9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBiZSBtb25kYXksIGlzIHR1ZXNkYXkKICAgICAgICAgICAgICAgIHFxeyJbIiIyMDI1LTAxLTA0IDAwOjAwOjAwIiIsIiIyMDI1LTAxLTA1IDAwOjAwOjAwIiJdIn0sICAgICMgc2F0dXJkYXkgYW5kIHN1bmRheQogICAgICAgICAgICAgICAgcXF7IjIwMjUtMDEtMDQgMDA6MDA6MDAifSwKICAgICAgICAgICAgICAgIHFxeyIyMDI1LTAxLTA1IDAwOjAwOjAwIn0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGpvaW4oCiAgICAgICAgICAgICAgICAnLCcsCiAgICAgICAgICAgICAgICBxcXsiVW5pdFRlc3QgLSBUd29EYXRlcyAyMDI0ICRSYW5kb21JRCJ9LAogICAgICAgICAgICAgICAgcXF7IiRDb25maWdJdGVtTnVtYmVyc1s2XSJ9LAogICAgICAgICAgICAgICAgcXF7IjIwMjQtMDEtMDEgMDA6MDA6MDAifSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtb25kYXkKICAgICAgICAgICAgICAgIHFxeyJbIiIyMDI0LTAxLTA2IDAwOjAwOjAwIiIsIiIyMDI0LTAxLTA3IDAwOjAwOjAwIiJdIn0sICAgICMgc2F0dXJkYXkgYW5kIHN1bmRheQogICAgICAgICAgICAgICAgcXF7IjIwMjQtMDEtMDYgMDA6MDA6MDAifSwKICAgICAgICAgICAgICAgIHFxeyIyMDI0LTAxLTA3IDAwOjAwOjAwIn0sCiAgICAgICAgICAgICksCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtFeHBvcnQgTnVtYmVyLCBDdXN0b21lckNJTywgYW5kIFpaWlNldE9mQWdlbnRzIGFzIENTVn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xldmFsdWUgZmllbGQuIFRodXMgbm8gaW5kZXggaXMgcGFzc2VkLgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBaWlpTZXRPZkFnZW50cyBpcyBhIG11bHRpdmFsdWUgZmllbGQuCiAgICAgICAgICAgICAgICAjIFR3byBjYXNlcyBhcmUgY292ZXJlZCBoZXJlOgogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgdmFsdWUgYXQgYSBzcGVjaWZpYyBpbmRleCwgdGhhdCBpcyBzZWNvbmQgZWxlbWVudAogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgY29tcGxldGUgbGlzdAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnQ1NWJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtblNlcGFyYXRvciA9PiAnU2VtaWNvbG9uJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXt7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfX0sCiAgICAgICAgICAgICAgICBxcXtbeyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfV19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3siQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX19LAogICAgICAgICAgICAgICAgcXF7W3siQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fV0sIkFnZW50MiRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19XX0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbM10ifSwKICAgICAgICAgICAgICAgIHFxeyJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIiLwn5eEIiIkUmFuZG9tSUQifSwgICAgIyBub3QgSlNPTiBiZWNhdXNlIHNpbmdsZSB2YWx1ZQogICAgICAgICAgICAgICAgcXF7InsiIkFnZW50MSRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fV0sIiJBZ2VudDIkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfSJ9LAogICAgICAgICAgICAgICAgcXF7Ilt7IiJBZ2VudDEkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV0sIiJBZ2VudDIkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IiJBZ2VudDEkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCIiQWdlbnQyJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XX1dIn0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGpvaW4oCiAgICAgICAgICAgICAgICAnOycsCiAgICAgICAgICAgICAgICBxcXsiJENvbmZpZ0l0ZW1OdW1iZXJzWzJdIn0sCiAgICAgICAgICAgICAgICBxcXsibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICIi8J+XhCIiJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsieyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX1dIn0sCiAgICAgICAgICAgICksCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQgYXMgQ1NWfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnQ1NWJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtblNlcGFyYXRvciA9PiAnU2VtaWNvbG9uJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzVdLAogICAgICAgICAgICAgICAgcXF7W3siTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJFdXJvcGV9XSwiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX1dfV19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgICAgICBxcXtbeyJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYX1dLCJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe1NlY29uZExldmVsU3VwcG9ydGVyQWZyaWNhfV19XX0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbNV0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfV0sIiJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX1dfV0ifSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbNF0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyQWZyaWNhfV0sIiJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX1dfV0ifSwKICAgICAgICAgICAgKSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIEpTT04gZXhwb3J0cwoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7RXhwb3J0IE5hbWUsIE51bWJlciwgQ3VzdG9tZXJDSU8sIGFuZCBDdXN0b21lclNhbGVzVGVhbSBhcyB1Z2x5IGNvbmNhdGVuYXRlZCBKU09OfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGV2YWx1ZSBmaWVsZC4gVGh1cyBubyBpbmRleCBpcyBwYXNzZWQuCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8ke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyU2FsZXNUZWFtIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0ke1Rlc3RJRFN1ZmZpeH06OjEiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSR7VGVzdElEU3VmZml4fTo6MiIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgd2l0aCBKU09OIGZvcm1hdAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgdXN1YWxseSBzYW1lIGFzIGZvciBFeHBvcnREYXRhR2V0CiAgICAgICAgICAgICAgICBGb3JtYXQgICAgID0+ICdKU09OJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFByZXR0eSA9PiAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICAjIFRoZSBleHBlY3RlZCByb3dzIG5lZWQgdG8gYmUgc29ydGVkIGJ5IGNvbmZpZyBpdGVtIG51bWJlciBpbiBkZXNjZW5kaW5nIG9yZGVyLgogICAgICAgICMgVGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhlIHNvcnQgb3JkZXIgaW4gRXhwb3J0RGF0YUdldCgpLgogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDIgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1sxXSwKICAgICAgICAgICAgICAgIHFxe21hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+XhCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7b25pb24gbW9uZ2VyICLwn6eFIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXthcHBsZSBtb25nZXIgIvCfjY4iJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICBxcXtvbmlvbiBtb25nZXIgIvCfp4UiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgICAgICBxcXthcHBsZSBtb25nZXIgIvCfjY4iJFJhbmRvbUlEfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3BhbG0gdHJlZSBtb25nZXIgIvCfjLQiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3RhbmFiYXRlIHRyZWUgbW9uZ2VyICLwn46LIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgcXF7cGFsbSB0cmVlIG1vbmdlciAi8J+MtCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgICAgIHFxe3RhbmFiYXRlIHRyZWUgbW9uZ2VyICLwn46LIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0Q29udGVudCA9PiBbCiAgICAgICAgICAgIHFxe1siVW5pdFRlc3QgLSBDb25maWdJdGVtIDIgVmVyc2lvbiAxIiwiJENvbmZpZ0l0ZW1OdW1iZXJzWzFdIiwibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyIFxcIlx4ezFGNUM0fVxcIiRSYW5kb21JRCIsIm9uaW9uIG1vbmdlciBcXCJceHsxRjlDNX1cXCIkUmFuZG9tSUQiLCJhcHBsZSBtb25nZXIgXFwiXHh7MUYzNEV9XFwiJFJhbmRvbUlEIixbIm9uaW9uIG1vbmdlciBcXCJceHsxRjlDNX1cXCIkUmFuZG9tSUQiLCJhcHBsZSBtb25nZXIgXFwiXHh7MUYzNEV9XFwiJFJhbmRvbUlEIl1dfSwKICAgICAgICAgICAgcXF7WyJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEiLCIkQ29uZmlnSXRlbU51bWJlcnNbMF0iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIiwicGFsbSB0cmVlIG1vbmdlciBcXCJceHsxRjMzNH1cXCIkUmFuZG9tSUQiLCJ0YW5hYmF0ZSB0cmVlIG1vbmdlciBcXCJceHsxRjM4Qn1cXCIkUmFuZG9tSUQiLFsicGFsbSB0cmVlIG1vbmdlciBcXCJceHsxRjMzNH1cXCIkUmFuZG9tSUQiLCJ0YW5hYmF0ZSB0cmVlIG1vbmdlciBcXCJceHsxRjM4Qn1cXCIkUmFuZG9tSUQiXV19LAoKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgWlpaU2V0T2ZBZ2VudHMgYXMgdWdseSBjb25jYXRlbmF0ZWQgSlNPTn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xldmFsdWUgZmllbGQuIFRodXMgbm8gaW5kZXggaXMgcGFzc2VkLgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBaWlpTZXRPZkFnZW50cyBpcyBhIG11bHRpdmFsdWUgZmllbGQuCiAgICAgICAgICAgICAgICAjIFR3byBjYXNlcyBhcmUgY292ZXJlZCBoZXJlOgogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgdmFsdWUgYXQgYSBzcGVjaWZpYyBpbmRleCwgdGhhdCBpcyBzZWNvbmQgZWxlbWVudAogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgY29tcGxldGUgbGlzdAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzZdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnSlNPTicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBQcmV0dHkgPT4gMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzJdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgcXF7WyIkQ29uZmlnSXRlbU51bWJlcnNbM10iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIix7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfSxbeyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfV1dfSwKICAgICAgICAgICAgcXF7WyIkQ29uZmlnSXRlbU51bWJlcnNbMl0iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIix7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19LFt7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19LHsiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fV0sIkFnZW50MiRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH1dfV1dfSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgWlpaU2V0T2ZBZ2VudHMgYXMgcHJldHR5IGNvbmNhdGVuYXRlZCBKU09OfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzZdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnSlNPTicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKCiAgICAgICAgICAgICAgICAgICAgIyBQcmV0dHkgaXMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSIgXSB9LAogICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IiBdIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IiBdIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSIgXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7RGVza0FnZW50fSIgXSB9LAogICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0iIF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsgPDwiSVRFTV8xIiwgPDwiSVRFTV8yIiBdLApbCiAgICIkQ29uZmlnSXRlbU51bWJlcnNbM10iLAogICAibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyIFxcIlx4ezFGNUM0fVxcIiRSYW5kb21JRCIsCiAgIFsKICAgICAgewogICAgICAgICAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RGVza0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0KICAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgICJBZ2VudDEkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0KICAgICAgICAgXQogICAgICB9CiAgIF0KXQpJVEVNXzEKWwogICAiJENvbmZpZ0l0ZW1OdW1iZXJzWzJdIiwKICAgIm1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciBcXCJceHsxRjVDNH1cXCIkUmFuZG9tSUQiLAogICBbCiAgICAgIHsKICAgICAgICAgIkFnZW50MSRUZXN0SURTdWZmaXgiIDogWwogICAgICAgICAgICAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9CiAgICAgICAgIF0sCiAgICAgICAgICJBZ2VudDIkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9CiAgICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0KICAgICAgICAgXSwKICAgICAgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiIDogWwogICAgICAgICAgICAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0KICAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgICJBZ2VudDEkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RGVza0FnZW50fQogICAgICAgICBdCiAgICAgIH0KICAgXQpdCklURU1fMgogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe1paWlNldENvbnRpbmVudGFsU3VwcG9ydCBhcyBwcmV0dHkgSlNPTn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0Q29udGluZW50YWxTdXBwb3J0JHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgd2l0aCBKU09OIGZvcm1hdAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgdXN1YWxseSBzYW1lIGFzIGZvciBFeHBvcnREYXRhR2V0CiAgICAgICAgICAgICAgICBGb3JtYXQgICAgID0+ICdKU09OJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewoKICAgICAgICAgICAgICAgICAgICAjIHJlZHVuZGFudCBzZXR0aW5nIGFzIFByZXR0eSBpcyB0aGUgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIFByZXR0eSA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICAjIFRoZSBleHBlY3RlZCByb3dzIG5lZWQgdG8gYmUgc29ydGVkIGJ5IGNvbmZpZyBpdGVtIG51bWJlciBpbiBkZXNjZW5kaW5nIG9yZGVyLgogICAgICAgICMgVGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhlIHNvcnQgb3JkZXIgaW4gRXhwb3J0RGF0YUdldCgpLgogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNV0sCiAgICAgICAgICAgICAgICBbIHsgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckV1cm9wZX0gXSwgIkxldmVsU2Vjb25kJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe1NlY29uZExldmVsU3VwcG9ydGVyRXVyb3BlfSBdIH0gXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzRdLAogICAgICAgICAgICAgICAgWyB7ICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sICJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX0gXSB9IF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsgPDwiSVRFTV8zIiwgPDwiSVRFTV80IiBdLApbCiAgICIkQ29uZmlnSXRlbU51bWJlcnNbNV0iLAogICBbCiAgICAgIHsKICAgICAgICAgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfQogICAgICAgICBdLAogICAgICAgICAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0KICAgICAgICAgXQogICAgICB9CiAgIF0KXQpJVEVNXzMKWwogICAiJENvbmZpZ0l0ZW1OdW1iZXJzWzRdIiwKICAgWwogICAgICB7CiAgICAgICAgICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYX0KICAgICAgICAgXSwKICAgICAgICAgIkxldmVsU2Vjb25kJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9CiAgICAgICAgIF0KICAgICAgfQogICBdCl0KSVRFTV80CiAgICB9LAoKKTsKCj1mb3IgbmV2ZXIKCjEwLjEgdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGRlcGxveW1lbnQgc3RhdGUgc2VhcmNoIGNoZWNrKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1sxXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGluY2lkZW50IHN0YXRlIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgSW5jaVN0YXRlSURzID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY29tYmluZWQgc2VhcmNoIGNoZWNrKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKFhNTCBkYXRhIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgRGF0ZTEgICAgICAgICAgID0+ICcyMDA4LTAyLTAxJywKICAgICAgICAgICAgICAgIFRleHRBcmVhMSAgICAgICA9PiAiVGVzdFxuVGV4dCBBcnJheVxuVGVzdCIsCiAgICAgICAgICAgICAgICBDdXN0b21lcjEgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgIFRleHQxICAgICAgICAgICA9PiAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgRGF0ZVRpbWUxICAgICAgID0+ICcyMDA4LTAyLTAxIDAzOjU5JywKICAgICAgICAgICAgICAgIEludGVnZXIxICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNvbWJpbmVkIGFsbCBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSURzICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBEYXRlMSAgICAgICAgICAgPT4gJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgVGV4dEFyZWExICAgICAgID0+ICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgIEN1c3RvbWVyMSAgICAgICA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgVGV4dDEgICAgICAgICAgID0+ICdUZXN0IFRleHQgVGVzdCcsCiAgICAgICAgICAgICAgICBEYXRlVGltZTEgICAgICAgPT4gJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgSW50ZWdlcjEgICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgIEdlbmVyYWxDYXRhbG9nMSA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIHJldHVybmVkIGFycmF5KX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0R1bW15MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbnRlZ2VyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgIlRlc3RcblRleHQgQXJyYXlcblRlc3QiLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGRvdWJsZSBlbGVtZW50IGNoZWNrcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0R1bW15MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRHVtbXkxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW50ZWdlcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChzdWIgZWxlbWVudCBjaGVja3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbN10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4yICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKHN1YiBlbGVtZW50IGNoZWNrcyB3aXRoIHVuZGVmIHZhbHVlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbN10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMiAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChzdWIgZWxlbWVudCBjaGVja3Mgd2l0aCB1bmRlZiB2YWx1ZXMgYW5kIGVtcHR5IHN0cmluZ3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjo0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDQgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoc3BlY2lhbCBjaGFyYWN0ZXIgY2hlY2tzKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzRdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzhdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDUgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnIiI7Ozo6Li4tLV9fIyMnLAogICAgICAgICAgICAgICAgJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnPjxAflwnfXtbXVxcJywKICAgICAgICAgICAgICAgICdUZXN0OzpfwrBeISLCpyQlJi8oKT0/wrRgKitUZXN0JywKICAgICAgICAgICAgICAgICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXN0JywKICAgICAgICAgICAgICAgICJUZXN0XG5UZXN0XHRUZXN0IiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChVVEYtOCBjaGVja3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNV0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbOV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1XSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gNiBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICfihoIg4oW7IOKFmycsCiAgICAgICAgICAgICAgICAn4piEIOKGriDihrkg4oaSJywKICAgICAgICAgICAgICAgICfigqQg4oKhIOKCqSDigq8g4oK1JywKICAgICAgICAgICAgICAgICfimYog4pmIIOKZiSDimYog4pmLIOKZjSDimZEnLAogICAgICAgICAgICAgICAgJ+KciCDinaQg4piuJywKICAgICAgICAgICAgICAgICfViiDVhCDVgCcsCiAgICAgICAgICAgICAgICAnwq4gwqknLAogICAgICAgICAgICAgICAgJ+OBiyDjgZIg44KSJywKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCj1jdXQKCiMgcnVuIGdlbmVyYWwgRXhwb3J0RGF0YUdldCB0ZXN0cwpmb3IgbXkgJFRlc3QgKEBFeHBvcnREYXRhVGVzdHMpIHsKCiAgICBzdWJ0ZXN0ICJFeHBvcnREYXRhOiAkVGVzdC0+e05hbWV9IiA9PiBzdWIgewoKICAgICAgICAjIGNoZWNrIFNvdXJjZUV4cG9ydERhdGEgYXR0cmlidXRlCiAgICAgICAgaWYgKCAhJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICAgICBmYWlsKCJTb3VyY2VFeHBvcnREYXRhIG5vdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57T2JqZWN0RGF0YX0KICAgICAgICAgICAgJiYgcmVmICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntPYmplY3REYXRhfSBlcSAnSEFTSCcKICAgICAgICAgICAgJiYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgc2F2ZSBvYmplY3QgZGF0YQogICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICBPYmplY3REYXRhID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntPYmplY3REYXRhfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfSBlcSAnQVJSQVknCiAgICAgICAgICAgICYmICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGRlbGV0ZSBhbGwgZXhpc3RpbmcgbWFwcGluZyBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdEZWxldGUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIHRoZSBtYXBwaW5nIG9iamVjdCByb3dzCiAgICAgICAgICAgIE1BUFBJTkdPQkpFQ1REQVRBOgogICAgICAgICAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhICggQHsgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfSB9ICkgewoKICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IG1hcHBpbmcgcm93CiAgICAgICAgICAgICAgICBteSAkTWFwcGluZ0lEID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ0FkZCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIHRoZSBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nT2JqZWN0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICAgICAgTWFwcGluZ0lEICAgICAgICAgPT4gJE1hcHBpbmdJRCwKICAgICAgICAgICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiAkTWFwcGluZ09iamVjdERhdGEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgc2VhcmNoIGRhdGEKICAgICAgICBpZiAoCiAgICAgICAgICAgICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntTZWFyY2hEYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e1NlYXJjaERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBzYXZlIHNlYXJjaCBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFTYXZlKAogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e1NlYXJjaERhdGF9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGV4cG9ydCBkYXRhIGFzIGFuIGFycmF5cmVmCiAgICAgICAgbXkgJEV4cG9ydERhdGEgPSAkT2JqZWN0QmFja2VuZE9iamVjdC0+RXhwb3J0RGF0YUdldCgKICAgICAgICAgICAgJXsgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9IH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VFeHBvcnREYXRhfSApIHsKICAgICAgICAgICAgb2soICEkRXhwb3J0RGF0YSwgIkV4cG9ydERhdGFHZXQoKSByZXR1cm5lZCBub3QgZGF0YSBhcyB3YXMgZXhwZWN0ZWQiICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkRXhwb3J0RGF0YSBuZSAnQVJSQVknICkgewoKICAgICAgICAgICAgIyBjaGVjayBhcnJheSByZWZlcmVuY2UKICAgICAgICAgICAgZmFpbCgiRXhwb3J0RGF0YUdldCgpIC0gcmV0dXJuIHZhbHVlIGlzIG5vdCBhbiBhcnJheSByZWZlcmVuY2UiKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbnVtYmVyIG9mIHJvd3MKICAgICAgICBpcygKICAgICAgICAgICAgc2NhbGFyIEB7JEV4cG9ydERhdGF9LAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VFeHBvcnREYXRhfSB9LAogICAgICAgICAgICAiRXhwb3J0RGF0YUdldCgpIC0gY29ycmVjdCBudW1iZXIgb2Ygcm93cyIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayB0aGUgaW5kaXZpZHVhbCByb3dzIG9mIGV4cG9ydCBkYXRhCiAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAwOwogICAgICAgIFJPVzoKICAgICAgICBmb3IgbXkgJEV4cG9ydFJvdyAoICRFeHBvcnREYXRhLT5AKiApIHsKICAgICAgICAgICAgc3VidGVzdCAiRXhwb3J0RGF0YUdldCgpOiByb3cgJENvdW50ZXJSb3cgaW4gZXhwb3J0ZWQgZGF0YSIgPT4gc3ViIHsKICAgICAgICAgICAgICAgIHJlZl9vayggJEV4cG9ydFJvdywgJ0FSUkFZJywgJ2V4cG9ydGVkIHJvdyBpcyBhbiBhcnJheXJlZicgKTsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgcmVmZXJlbmNlIHJvdwogICAgICAgICAgICAgICAgbXkgJFJlZmVyZW5jZVJvdyA9ICRUZXN0LT57UmVmZXJlbmNlRXhwb3J0RGF0YX0tPlskQ291bnRlclJvd107CiAgICAgICAgICAgICAgICByZWZfb2soICRSZWZlcmVuY2VSb3csICdBUlJBWScsICdleHBlY3RlZCByb3cgaXMgYW4gYXJyYXlyZWYnICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBudW1iZXIgb2YgY29sdW1ucwogICAgICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAgICAgc2NhbGFyIEB7JEV4cG9ydFJvd30sCiAgICAgICAgICAgICAgICAgICAgc2NhbGFyIEB7JFJlZmVyZW5jZVJvd30sCiAgICAgICAgICAgICAgICAgICAgImNvcnJlY3QgbnVtYmVyIG9mIGNvbHVtbnMiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHZhbHVlcwogICAgICAgICAgICAgICAgaXMoICRFeHBvcnRSb3csICRSZWZlcmVuY2VSb3csICd2YWx1ZXMgaW4gZXhwb3J0ZWQgcm93JyApOwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgfQoKICAgICAgICAjIG9wdGlvbmFsbHkgdGVzdCB0aGUgZm9ybWF0dGVkIGV4cG9ydAogICAgICAgIGlmICggJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfSApIHsKICAgICAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VFeHBvcnRDb250ZW50fSApIHsKICAgICAgICAgICAgICAgIGZhaWwoIlJlZmVyZW5jZUV4cG9ydENvbnRlbnQgaXMgc2V0IHVwIik7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggcmVmICRUZXN0LT57UmVmZXJlbmNlRXhwb3J0Q29udGVudH0gbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIGZhaWwoIlJlZmVyZW5jZUV4cG9ydENvbnRlbnQgaXMgYW4gYXJyYXlyZWYiKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRUZW1wbGF0ZUlEID0gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfS0+e1RlbXBsYXRlSUR9OwoKICAgICAgICAgICAgIyBzcGVjaWZ5IHRoZSBmb3JtYXQKICAgICAgICAgICAgJEltcG9ydEV4cG9ydE9iamVjdC0+Rm9ybWF0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgICAgICAgICAgRm9ybWF0RGF0YSA9PiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YVNhdmV9LT57Rm9ybWF0RGF0YX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgZXhwb3J0IGRhdGEgcm93cwogICAgICAgICAgICBteSAkRm9ybWF0ID0gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfS0+e0Zvcm1hdH07CiAgICAgICAgICAgIGRpYWcgIkZvcm1hdCBvZiBjb250ZW50IGlzOiAkRm9ybWF0IjsKICAgICAgICAgICAgbXkgJEZvcm1hdEJhY2tlbmQgPSAkRm9ybWF0QmFja2VuZE9iamVjdHskRm9ybWF0fTsKICAgICAgICAgICAgbXkgQENvbnRlbnQ7CiAgICAgICAgICAgIGZvciBteSAkUm93ICggJEV4cG9ydERhdGEtPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29udGVudCwgJEZvcm1hdEJhY2tlbmQtPkV4cG9ydERhdGFTYXZlKAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgICAgICAgICAgRXhwb3J0RGF0YVJvdyA9PiAkUm93LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgXEBDb250ZW50LAogICAgICAgICAgICAgICAgJFRlc3QtPntSZWZlcmVuY2VFeHBvcnRDb250ZW50fSwKICAgICAgICAgICAgICAgICdFeHBvcnREYXRhU2F2ZSgpIHByb2R1Y2VkIGV4cGVjdGVkIGNvbnRlbnQnCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIGRlZmluZSBnZW5lcmFsIEltcG9ydERhdGFTYXZlIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15IEBJbXBvcnREYXRhVGVzdHMgPSAoCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtJbXBvcnREYXRhU2F2ZSBkb2Vzbid0IGNvbnRhaW5zIGFsbCBkYXRhIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gW10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7SW1wb3J0RGF0YVNhdmUgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7SW1wb3J0RGF0YVNhdmUgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFtdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IGRhdGEgcm93IG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+ICcnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBkYXRhIHJvdyBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjBdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiB7fSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtubyBleGlzdGluZyB0ZW1wbGF0ZSBpZCBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWydEdW1teSddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe25vIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsnRHVtbXknXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJEludmFsZGlDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjJdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbJ0R1bW15J10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7bWFwcGluZyBsaXN0IGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWydEdW1teSddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe21vcmUgdGhhbiBvbmUgaWRlbnRpZmllciB3aXRoIHRoZSBzYW1lIG5hbWUgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnMTIzJywgJzMyMScgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpZGVudGlmaWVyIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWycnXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpZGVudGlmaWVyIGlzIHVuZGVmIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gW3VuZGVmXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtib3RoIGlkZW50aWZpZXJzIGFyZSBlbXB0eSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgJycgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtib3RoIGlkZW50aWZpZXJzIGFyZSB1bmRlZiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyB1bmRlZiwgdW5kZWYgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgaWRlbnRpZmllcnMgaXMgZW1wdHksIG9uZSBpcyB1bmRlZiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgdW5kZWYgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgb2YgdGhlIGlkZW50aWZpZXJzIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICcxMjMnLCAnJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe29uZSBvZiB0aGUgaWRlbnRpZmllcnMgaXMgdW5kZWYgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syM10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJzEyMycsIHVuZGVmIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7b25lIG9mIHRoZSBpZGVudGlmaWVycyBpcyBlbXB0eSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgJzEyMycgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgb2YgdGhlIGlkZW50aWZpZXJzIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbIHVuZGVmLCAnMTIzJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIFRPRE8gQWRkIHNvbWUgaWRlbnRpZmllciB0ZXN0cwoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7ZW1wdHkgbmFtZSBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJycsICdQcm9kdWN0aW9uJywgJ09wZXJhdGlvbmFsJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ludmFsaWQgZGVwbG95bWVudCBzdGF0ZSBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCAxJywgJ0R1bW15JywgJ09wZXJhdGlvbmFsJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ludmFsaWQgaW5jaWRlbnQgc3RhdGUgaXMgZ2l2ZW4gKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjRdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMicsICdQcm9kdWN0aW9uJywgJ0R1bW15JyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3Qgd2l0aG91dCBhbnkgZHluYW1pYyBmaWVsZHMKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe25vIGR5bmFtaWMgZmllbGRzIChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gdW5kZWYsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyB0ZXN0cyB3aXRoIGEgc2luZ2xlIHZhbHVlIGVudGl0eSBmaWVsZDogQ3VzdG9tZXJDSU8KCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtpbXBvcnQgQ3VzdG9tZXJDSU8gYXMgc2ltcGxlIHN0cmluZyAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJDSU8nLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAoKICAgICAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xlIHZhbHVlIEVudGl0aXkgZmllbGQuIEJvdGggQ1NWIGFuZCBKU09OIGV4cG9ydCB0aGlzIGNhc2UgYXMKICAgICAgICAgICAgICAgICAgICAjIGEgc2ltcGxlIHN0cmluZy4KICAgICAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3tkaXZlcnNlX0NJT30sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJDSU8nLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGUgdmFsdWUgUmVmZXJlbmNlIGZpZWxkLCB0aGVyZWZvcmUgYSBFbnRpdHkgZmllbGQuCiAgICAgICAgICAgICAgICAjIFNpbmdsZSB2YWx1ZSBFbnRpdHkgZmllbGRzIHJldHVybiBhIGxpc3Qgd2l0aCBvbmUgZWxlbWVudC4KICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7ZGl2ZXJzZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiB1bmRlZiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtvbmx5IEN1c3RvbWVyQ0lPIGFzIHJlZmVyZW5jZSB0byBzaW5nbGUgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyQ0lPJywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAgICAgIyBDdXN0b21lckNJTyBpcyBhIHNpbmdsZSB2YWx1ZSBSZWZlcmVuY2UgZmllbGQsIHRoZXJlZm9yZSBhIEVudGl0eSBmaWVsZC4KICAgICAgICAgICAgICAgICAgICAjIFNpbmdsZSB2YWx1ZSBFbnRpdHkgZmllbGRzIGNhbiBiZSBjcmVhdGVkIHdpdGggYSBsaXN0IHdpdGggYSBzaW5nbGUgZWxlbWVudC4KICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGNhc2UgZG9lcyBub3QgYXJpc2UgZnJvbSB0aGUgcmVndWxhciBleHBvcnQsIGFzIHRoZSByZWd1bGFyIGV4cG9ydAogICAgICAgICAgICAgICAgICAgICMgZXhwb3J0cyBDdXN0b21lckNJTyBhcyBhIHNpbXBsZSBzdHJpbmcuCiAgICAgICAgICAgICAgICAgICAgWyAkQ3VzdG9tZXJVc2Vyc3tmZW1hbGVfQ0lPfSBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyQ0lPJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xlIHZhbHVlIFJlZmVyZW5jZSBmaWVsZCwgdGhlcmVmb3JlIGEgRW50aXR5IGZpZWxkLgogICAgICAgICAgICAgICAgIyBTaW5nbGUgdmFsdWUgRW50aXR5IGZpZWxkcyByZXR1cm4gYSBsaXN0IHdpdGggb25lIGVsZW1lbnQuCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJze2ZlbWFsZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiB1bmRlZiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSB0d28gZGF0ZSBmaWVsZHM6IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtGaXJzdE1vbmRheSBhbmQgRmlyc3RXZWVrZW5kIGFzIGRhdGEgc3RydWN0dXJlIChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29EYXRlc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcyMDI2LTAxLTA1IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgICAgICBbICcyMDI2LTAxLTAzJywgJzIwMjYtMDEtMDQnIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI2LTAxLTA1IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWyAnMjAyNi0wMS0wMyAwMDowMDowMCcsICcyMDI2LTAxLTA0IDAwOjAwOjAwJyBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe0ZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQgYXMgSlNPTiBzdHJpbmcgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgRmlyc3RNb25kYXkgYW5kIEZpcnN0V2Vla2VuZCcsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjctMDEtMDQgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgICAgIHFxe1siMjAyNy0wMS0wMiIsICIyMDI3LTAxLTAzIiBdfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgRmlyc3RNb25kYXkgYW5kIEZpcnN0V2Vla2VuZCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjctMDEtMDQgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiA9PiBbICcyMDI3LTAxLTAyIDAwOjAwOjAwJywgJzIwMjctMDEtMDMgMDA6MDA6MDAnIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7Rml4aW5nIHRoZSBmaXJzdCBtb25kYXkgaW4gMjAyNSwgd2FzIHNldCB0byB0dWVzZGF5fSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUQiLCAgICAjIHdhcyBjcmVhdGVkIGJ5IHNldHVwIG9mIGNvbmZpZyBpdGVtcwogICAgICAgICAgICAgICAgICAgICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgIyBmaXhpbmcgdHVlc2RheSB0byBtb25kYXkKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHFxe1VuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICMgZml4ZWQ6IHR1ZXNkYXkgPT4gbW9uZGF5CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0V2Vla2VuZCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wNCAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtFeHRlbmRpbmcgZmlyc3Qgd2Vla2VuZCAyMDI1IHRvIG1vbmRheX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAiVW5pdFRlc3QgLSBUd29EYXRlcyAyMDI1ICRSYW5kb21JRCIsICAgICMgd2FzIGNyZWF0ZWQgYnkgc2V0dXAgb2YgY29uZmlnIGl0ZW1zCiAgICAgICAgICAgICAgICAgICAgcXF7WyIyMDI1LTAxLTA0IiwiMjAyNS0wMS0wNSIsICAgICIyMDI1LTAxLTA2IiBdfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHFxe1VuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICMgZml4ZWQ6IHR1ZXNkYXkgPT4gbW9uZGF5CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0V2Vla2VuZCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wNCAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgICAgICcyMDI1LTAxLTA2IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7RXh0ZW5kaW5nIGZpcnN0IHdlZWtlbmQgMjAyNSB0byBmcmlkYXksIHNraXBwaW5nIHdlZG5lc2RheSBhbmQgdHVlc2RheX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9Ojo3IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9Ojo2IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoxIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIiwgICAgIyB3YXMgY3JlYXRlZCBieSBzZXR1cCBvZiBjb25maWcgaXRlbXMKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0xMCAwMDowMDowMCcsICAgICAgICAgICAgICAgICAgICMgZXh0ZW5kaW5nIHRvIGZyaWRheSwgc2tpcHBpbmcgdHVlc2RheSwgd2VkbmVzZGF5LCBhbmQgdGh1cnNkYXkKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wOSAwMDowMDowMCcsICAgICAgICAgICAgICAgICAgICMgYWRkaW5nIHRodXJzZGF5CiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDItMDQgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAjIHdyb25nIG1vbnRoIGZvciBzYXR1cmRheQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gNCwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gcXF7VW5pdFRlc3QgLSBUd29EYXRlcyAyMDI1ICRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjUtMDEtMDYgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAgIyBmaXhlZDogdHVlc2RheSA9PiBtb25kYXkKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgICcyMDI1LTAyLTA0IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdyb25nIG1vbnRoCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdHVlc2RheSBza2lwcGVkCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2VkbmVzZGF5IHNraXBwZWQKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wOSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMTAgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnJpZGF5CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGVzdHMgd2l0aCBhIG11bHRpIHZhbHVlIGVudGl0eSBmaWVsZCwgQ3VzdG9tZXJTYWxlc1RlYW0KCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtDdXN0b21lclNhbGVzVGVhbSBhcyByZWZlcmVuY2UgdG8gbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciB0cmVlcyBhbmQgYXBwbGVzJywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAgICAgIyBmb3IgZXhhbXBsZSBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICBAQ3VzdG9tZXJVc2Vyc3txdyh0YW5hYmF0ZV9tb25nZXIgcGFsbV9tb25nZXIgYXBwbGVfbW9uZ2VyKX0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclNhbGVzVGVhbSBmb3IgdHJlZXMgYW5kIGFwcGxlcycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgIEBDdXN0b21lclVzZXJze3F3KHRhbmFiYXRlX21vbmdlciBwYWxtX21vbmdlciBhcHBsZV9tb25nZXIpfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7Q3VzdG9tZXJTYWxlc1RlYW0gYXMgQ1NWIHdpdGggbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyBDU1YKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwoKICAgICAgICAgICAgICAgICAgICAjIGZvciBleGFtcGxlIGZyb20gQ1NWIGV4cG9ydCwgdGhlIGV4YWN0IGxheW91dCBkb2VzIG5vdCBtYXR0ZXIKICAgICAgICAgICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IHF7In0gaXMgcXVvdGVkIGluIHRoZSBKU09OIHN0cmluZwogICAgICAgICAgICAgICAgICAgIHFxe1sgIkB7WyRDdXN0b21lclVzZXJze29uaW9uX21vbmdlcn0gPX4gcy8iL1xcIi9nciBdfSIgICAgICAgICAsICAgICAgICAgICAgICJAe1skQ3VzdG9tZXJVc2Vyc3tnYXJsaWNfbW9uZ2VyfSA9fiBzLyIvXFwiL2dyIF19IiBdfSwKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciByb290IHZlZ2V0YWJsZXMnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciByb290IHZlZ2V0YWJsZXMnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9DdXN0b21lckNJTyRUZXN0SURTdWZmaXgiICAgICAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICBAQ3VzdG9tZXJVc2Vyc3txdyhvbmlvbl9tb25nZXIgZ2FybGljX21vbmdlcil9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSBzaW5nbGUgdmFsdWUgU2V0IGZpZWxkLCBaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQgYXMgcmVmZXJlbmNlIHRvIHNpbmdsZSB2YWx1ZSBhcnJheSAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBTdXBwb3J0IGZvciBBZnJpY2EnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKCiAgICAgICAgICAgICAgICAgICAgIyBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICB7ICdMZXZlbEZpcnN0JyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sICdMZXZlbFNlY29uZCcgLiAkVGVzdElEU3VmZml4ID0+ICBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0gfSwKICAgICAgICAgICAgICAgICAgICBdLAoKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBTdXBwb3J0IGZvciBBZnJpY2EnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1paWlNldENvbnRpbmVudGFsU3VwcG9ydCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICdMZXZlbEZpcnN0JyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICdMZXZlbFNlY29uZCcgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX0gXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe1paWlNldENvbnRpbmVudGFsU3VwcG9ydCBhcyBKU09OIHN0cmluZyB3aXRoIGEgc2luZ2xlIHZhbHVlIGFycmF5IChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldENvbnRpbmVudGFsU3VwcG9ydCRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IFN1cHBvcnQgZm9yIEV1cm9wZScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAoKICAgICAgICAgICAgICAgICAgICAjIEpTT04gc3RyaW5nIGxpa2UgZnJvbSBDU1YgZXhwb3J0LiBUaGUgZXhhY3QgbGF5b3V0IGRvZXMgbm90IG1hdHRlci4KICAgICAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHF7In0gaXMgcXVvdGVkIGluIHRoZSBKU09OIHN0cmluZy4KICAgICAgICAgICAgICAgICAgICA8PCJFTkRfSlNPTiIsClsKICAgIHsgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IjogWyAiQHtbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfSA9fiBzLyIvXFwiL2dyIF19IiBdLCAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IjogWyAiQHtbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0gPX4gcy8iL1xcIi9nciBdfSIgXSB9Cl0KRU5EX0pTT04KCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgU3VwcG9ydCBmb3IgRXVyb3BlJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAnTGV2ZWxGaXJzdCcgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAnTGV2ZWxTZWNvbmQnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJFdXJvcGV9IF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSBtdWx0aSB2YWx1ZSBTZXQgZmllbGQsIFpaWlNldE9mQWdlbnRzCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7WlpaU2V0T2ZBZ2VudHMgYXMgcmVmZXJlbmNlIHRvIG11bHRpIHZhbHVlIGFycmF5IChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywKCiAgICAgICAgICAgICAgICAgICAgIyBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBpbiB0aGUgbWFwcGluZyBsaXN0CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe1paWlNldE9mQWdlbnRzIGFzIEpTT04gc3RyaW5nIHdpdGggbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRPZkFnZW50cyRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCgogICAgICAgICAgICAgICAgICAgICMgc2ltaWxhciB0byBDU1YgZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgPDwiRU5EX0pTT04iLAogICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSB9LAogICAgICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSB9CiAgICAgICAgICAgICAgICAgICAgXQpFTkRfSlNPTgogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm90IGluIHRoZSBtYXBwaW5nIGxpc3QKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0sICdBZ2VudDInIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7WlpaU2V0T2ZBZ2VudHMgd2l0aCBpbmRleGVkIGFjY2VzcyAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH06OjIwIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgICAgICA8PCJFTkRfSlNPTl9GT1JfSU5ERVhfMiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSA9fiBzLyIvXFwiL2dyIF19IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0gfQpFTkRfSlNPTl9GT1JfSU5ERVhfMgogICAgICAgICAgICAgICAgICAgIDw8IkVORF9KU09OX0ZPUl9JTkRFWF8yMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSA9fiBzLyIvXFwiL2dyIF19IiBdIH0KRU5EX0pTT05fRk9SX0lOREVYXzIwCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAyLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7bWFsZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IHVuZGVmIH0sCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IF0sICdBZ2VudDInIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSB9LCAgICAjIGNoYW5nZWQKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCAzIHRvIDE5IHNraXBwZWQKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LCAgICAgIyBhZGRlZAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCik7Cgo9Zm9yIG5ldmVyCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoYSBORVcgY29uZmlnIGl0ZW0gbXVzdCBiZSBjcmVhdGVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wNi0wNScsCiAgICAgICAgICAgICAgICAgICAgJzIwMDgtMDgtMDUgMDQ6NTAnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MycsCiAgICAgICAgICAgICAgICAgICAgJzMnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MyBUZXh0MyBUZXN0MycsCiAgICAgICAgICAgICAgICAgICAgIlRlc3QzXG5UZXh0QXJyYXkzXG5UZXN0MyIsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTA2LTA1JywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTA4LTA1IDA0OjUwJywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QzfSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0MyBUZXh0MyBUZXN0MycsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdDNcblRleHRBcnJheTNcblRlc3QzIiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIHNlY29uZCBORVcgY29uZmlnIGl0ZW0gbXVzdCBiZSBjcmVhdGVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNCcsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wOS0wNScsCiAgICAgICAgICAgICAgICAgICAgJzIwMDgtMTItMDUgMDQ6NTAnLAogICAgICAgICAgICAgICAgICAgICdUZXN0NCcsCiAgICAgICAgICAgICAgICAgICAgJzQnLAogICAgICAgICAgICAgICAgICAgICdUZXN0NCBUZXh0NCBUZXN0NCcsCiAgICAgICAgICAgICAgICAgICAgIlRlc3Q0XG5UZXh0QXJyYXk0XG5UZXN0NCIsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTA5LTA1JywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTEyLTA1IDA0OjUwJywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3Q0fSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICc0JywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0NCBUZXh0NCBUZXN0NCcsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdDRcblRleHRBcnJheTRcblRlc3Q0IiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIG5ldyB2ZXJzaW9uIG11c3QgYmUgYWRkZWQgdG8gZmlyc3QgdGVzdCBjb25maWcgaXRlbSl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW50ZWdlcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0QXJlYTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjZdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgICdQaWxvdCcsCiAgICAgICAgICAgICAgICAgICAgJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICcyMDA4LTAyLTAyJywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMiAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QyJywKICAgICAgICAgICAgICAgICAgICAnMicsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBVUERBVEUxIFRlc3QnLAogICAgICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTFcblRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMiwKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAyJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQaWxvdCcsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTAyLTAyJywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTAyLTAyIDAzOjU5JywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QyfSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICcyJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0IFRleHQgVVBEQVRFMSBUZXN0JywKICAgICAgICAgICAgICAgICdUZXh0QXJlYTE6OjEnICAgICAgID0+ICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTFcblRlc3QiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGEgbmV3IHZlcnNpb24gbXVzdCBiZSBhZGRlZCB0byBmaXJzdCB0ZXN0IGNvbmZpZyBpdGVtIGFnYWluKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0N1c3RvbWVyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGVUaW1lMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbnRlZ2VyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syN10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICAgICAgJ1JlcGFpcicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICcyMDA4LTAyLTAzJywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMyAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QzJywKICAgICAgICAgICAgICAgICAgICAnMycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBVUERBVEUyIFRlc3QnLAogICAgICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTJcblRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAzJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdSZXBhaXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdDdXN0b21lcjE6OjEnICAgICAgID0+ICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnRGF0ZTE6OjEnICAgICAgICAgICA9PiAnMjAwOC0wMi0wMycsCiAgICAgICAgICAgICAgICAnRGF0ZVRpbWUxOjoxJyAgICAgICA9PiAnMjAwOC0wMi0wMyAwMzo1OScsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0M30sCiAgICAgICAgICAgICAgICAnSW50ZWdlcjE6OjEnICAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnVGVzdCBUZXh0IFVQREFURTIgVGVzdCcsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdFxuVGV4dCBBcnJheSBVUERBVEUyXG5UZXN0IiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIG5ldyB2ZXJzaW9uIG11c3QgYmUgYWRkZWQgdG8gdGhpcmQgdGVzdCBjb25maWcgaXRlbSl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjddLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzJdLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjIgKDIpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIE1haW4yU3ViMSAoMSknLAogICAgICAgICAgICAgICAgICAgICdNYWluMiAoMSkgTWFpbjJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4yICgxKSBNYWluMlN1YjIgKDIpJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjInICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScgPT4gJ01haW4xICgxKSBNYWluMVN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJyA9PiAnTWFpbjEgKDEpIE1haW4xU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxJyAgICAgICAgICAgICAgID0+ICdNYWluMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnID0+ICdNYWluMiAoMSkgTWFpbjJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScgPT4gJ01haW4yICgxKSBNYWluMlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJyA9PiAnTWFpbjIgKDEpIE1haW4yU3ViMiAoMiknLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKHNwZWNpYWwgY2hhcmFjdGVyIGNoZWNrcykKICAgICMgSW4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMicgMTYgQXR0cmlidXRlcyB3ZXJlIGltcG9ydGVkLAogICAgIyBzbyB0aGVyZSB3aWxsIGJlIDggbGluZ2VyaW5nIGF0dHJpYnV0ZXMuCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnOCBsaW5nZXJpbmcgYXR0cmlidXRlcycsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syN10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICAgICAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgIlRlc3RcblRlc3RcdFRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjEnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJyAgICAgICAgICAgICAgICAgICAgICA9PiAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgJ01haW4yOjoxJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgVGVzdCcsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gIlRlc3RcblRlc3RcdFRlc3QiLAoKICAgICAgICAgICAgICAgICMgbGluZ2VyaW5nIGZyb20gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MicgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjMnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDMpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJyAgICAgICAgICAgICAgICAgICAgICA9PiAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MicgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjI6OjInID0+ICdNYWluMSAoMSkgTWFpbjFTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicgPT4gJ01haW4yICgxKSBNYWluMlN1YjIgKDIpJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChVVEYtOCBjaGVja3MpCiAgICAjIEluICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInIDE2IEF0dHJpYnV0ZXMgd2VyZSBpbXBvcnRlZCwKICAgICMgc28gdGhlcmUgd2lsbCBiZSA4IGxpbmdlcmluZyBhdHRyaWJ1dGVzLgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJzggbGluZ2VyaW5nIGF0dHJpYnV0ZXMsIGFnYWluJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI3XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiA0JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnzqsgzrQgzrsnLAogICAgICAgICAgICAgICAgICAgICfPgCDPhyDPmCcsCiAgICAgICAgICAgICAgICAgICAgJ8+6IM+xIM+uJywKICAgICAgICAgICAgICAgICAgICAnya8gypMgyqAnLAogICAgICAgICAgICAgICAgICAgICfKrCDKrycsCiAgICAgICAgICAgICAgICAgICAgJ9C5INGEINGJJywKICAgICAgICAgICAgICAgICAgICAn0Zog0ZEnLAogICAgICAgICAgICAgICAgICAgICfRrCDRpicsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiA0JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMTo6MScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnzqsgzrQgzrsnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfPgCDPhyDPmCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4gJ8+6IM+xIM+uJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJyA9PiAnya8gypMgyqAnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfKrCDKrycsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjEnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ9C5INGEINGJJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJyAgICAgICAgICAgICAgICAgICAgICA9PiAn0Zog0ZEnLAogICAgICAgICAgICAgICAgJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfRrCDRpicsCgogICAgICAgICAgICAgICAgIyBsaW5nZXJpbmcgZnJvbSAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiAyJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MycgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMyknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjInICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MicgPT4gJ01haW4xICgxKSBNYWluMVN1YjIgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJyA9PiAnTWFpbjIgKDEpIE1haW4yU3ViMiAoMiknLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YSBzaW1wbGUgaW1wb3J0IGZvciB0ZXN0aW5nIHRoZSBvdmVycmlkaW5nIGJlaGF2aW9yIG9mIGVtcHR5IHZhbHVlc30sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ0ltcG9ydHRlc3QgNSBmb3IgYmVoYXZpb3Igb2YgZW1wdHkgdmFsdWVzJywKICAgICAgICAgICAgICAgICAgICAnVGVzdDEnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdJbXBvcnR0ZXN0IDUgZm9yIGJlaGF2aW9yIG9mIGVtcHR5IHZhbHVlcycsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIFRleHQxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9uCiAgICAjIG5vIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnaW1wb3J0IGFuIGVtcHR5IHZhbHVlIGZvciBUZXh0MScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnSW1wb3J0dGVzdCA1IGZvciBiZWhhdmlvciBvZiBlbXB0eSB2YWx1ZXMnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgbm8gbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IHVuZGVmIGZvciBUZXh0MSwgd2l0aCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIHR1cm5lZCBvbn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnSW1wb3J0dGVzdCA1IGZvciBiZWhhdmlvciBvZiBlbXB0eSB2YWx1ZXMnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYSBuZXcgdmVyc2lvbiBzaG91bGQgYmUgY3JlYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIFRleHQxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9mZn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAyLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBhIHNpbmdsZSBzcGFjZSB2YWx1ZSBmb3IgVGV4dDEsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnICcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnICcsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCB0aGUgc3RyaW5nICcwJyB2YWx1ZSBmb3IgVGV4dDEsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnMCcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDQsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBubyBuZXcgdmVyc2lvbiBzaG91bGQgYmUgY3JlYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIEdlbmVyYWxDYXRhbG9nMSwgd2l0aCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIHR1cm5lZCBvbn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGhlIGltcG9ydCBzaG91bGQgZmFpbAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgR2VuZXJhbENhdGFsb2cxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnbm9uLWV4aXN0ZW50IGdlbmVyYWwgY2F0YWxvZyBlbnRyeScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGhlIGltcG9ydCBzaG91bGQgZmFpbAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgR2VuZXJhbENhdGFsb2cxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9mZn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnbm9uLWV4aXN0ZW50IGdlbmVyYWwgY2F0YWxvZyBlbnRyeScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgbm8gbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IGFuIGVtcHR5IHZhbHVlIGZvciBEZXBsU3RhdGUsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYW4gZXJyb3Igc2hvdWxkIGJlIGdlbmVyYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgRGVwbFN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIG5vIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBhbiBlbXB0eSB2YWx1ZSBmb3IgSW5jaVN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYW4gZXJyb3Igc2hvdWxkIGJlIGdlbmVyYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgSW5jaVN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydCB3aXRob3V0IHJlcXVpcmVkIGF0dHJpYnV0ZSAnVHlwZScsIGFuIGVycm9yIHNob3VsZCBiZSBnZW5lcmF0ZWQgKHNlZSBidWcjMTQwOTgpLn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gSW1wb3J0dGVzdCAxICRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKPWN1dAoKIyBydW4gZ2VuZXJhbCBJbXBvcnREYXRhVGVzdHMgdGVzdHMKbXkgJEltcG9ydFRlc3RDb3VudCA9IDE7CmZvciBteSAkVGVzdCAoQEltcG9ydERhdGFUZXN0cykgewoKICAgIHN1YnRlc3QgIkltcG9ydERhdGE6ICRUZXN0LT57TmFtZX0iID0+IHN1YiB7CgogICAgICAgICMgY2hlY2sgU291cmNlSW1wb3J0RGF0YSBhdHRyaWJ1dGUKICAgICAgICBpZiAoICEkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9IHx8IHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgIGZhaWwoIlNvdXJjZUltcG9ydERhdGEgbm90IGZvdW5kIGZvciB0aGlzIHRlc3QuIik7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgb2JqZWN0IGRhdGEKICAgICAgICBpZiAoCiAgICAgICAgICAgICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntPYmplY3REYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e09iamVjdERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57SW1wb3J0RGF0YVNhdmV9LT57VGVtcGxhdGVJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntJbXBvcnREYXRhU2F2ZX0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIE9iamVjdERhdGEgPT4gJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e09iamVjdERhdGF9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9CiAgICAgICAgICAgICYmIHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9IGVxICdBUlJBWScKICAgICAgICAgICAgJiYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e0ltcG9ydERhdGFTYXZlfS0+e1RlbXBsYXRlSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGRlbGV0ZSBhbGwgZXhpc3RpbmcgbWFwcGluZyBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdEZWxldGUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntJbXBvcnREYXRhU2F2ZX0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCB0aGUgbWFwcGluZyBvYmplY3Qgcm93cwogICAgICAgICAgICBNQVBQSU5HT0JKRUNUREFUQToKICAgICAgICAgICAgZm9yIG15ICRNYXBwaW5nT2JqZWN0RGF0YSAoIEB7ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntNYXBwaW5nT2JqZWN0RGF0YX0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBtYXBwaW5nIHJvdwogICAgICAgICAgICAgICAgbXkgJE1hcHBpbmdJRCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdBZGQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57SW1wb3J0RGF0YVNhdmV9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIG1hcHBpbmcgb2JqZWN0IGRhdGEKICAgICAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgICAgICBNYXBwaW5nSUQgICAgICAgICA9PiAkTWFwcGluZ0lELAogICAgICAgICAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+ICRNYXBwaW5nT2JqZWN0RGF0YSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaW1wb3J0IGRhdGEgc2F2ZQogICAgICAgIG15ICggJENvbmZpZ0l0ZW1JRCwgJFJldENvZGUgKSA9ICRPYmplY3RCYWNrZW5kT2JqZWN0LT5JbXBvcnREYXRhU2F2ZSgKICAgICAgICAgICAgJXsgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e0ltcG9ydERhdGFTYXZlfSB9LAogICAgICAgICAgICBDb3VudGVyID0+ICRJbXBvcnRUZXN0Q291bnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VJbXBvcnREYXRhfSApIHsKCiAgICAgICAgICAgIG9rKCAhJENvbmZpZ0l0ZW1JRCwgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gbm8gQ29uZmlnSXRlbUlEIiApOwogICAgICAgICAgICBvayggISRSZXRDb2RlLCAgICAgICJJbXBvcnREYXRhU2F2ZSgpIC0gcmV0dXJuIG5vIFJldENvZGUiICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBvayggJENvbmZpZ0l0ZW1JRCwgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gQ29uZmlnSXRlbUlEOiAkQ29uZmlnSXRlbUlEIiApOwogICAgICAgIG9rKCAkUmV0Q29kZSwgICAgICAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBSZXRDb2RlOiAkUmV0Q29kZSIgKTsKCiAgICAgICAgIyBjaGVjayB0aGUgbnVtYmVyIG9mIHZlcnNpb25zCiAgICAgICAgewogICAgICAgICAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKSAvLyBbXTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgc2NhbGFyICRWZXJzaW9uTGlzdC0+QCosCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57VmVyc2lvbkNvdW50fSB8fCAwLAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiB2ZXJzaW9ucyIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24KICAgICAgICBteSAkVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBnZW5lcmFsIGVsZW1lbnRzCiAgICAgICAgRUxFTUVOVDoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUpKSB7CgogICAgICAgICAgICBuZXh0IEVMRU1FTlQgdW5sZXNzIGV4aXN0cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT57JEVsZW1lbnR9OwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkVmVyc2lvbkRhdGEtPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT57JEVsZW1lbnR9LAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgJEVsZW1lbnQgaXMgaWRlbnRpY2FsIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbnVtYmVyIG9mIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBpcygKICAgICAgICAgICAgKCB0cnVlIHttL15EeW5hbWljRmllbGRfL30ga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT4lKiApLAogICAgICAgICAgICAoIHRydWUge20vXkR5bmFtaWNGaWVsZF8vfSBrZXlzICRWZXJzaW9uRGF0YS0+JSogKSwKICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiBkeW5hbWljIGZpZWxkIGVsZW1lbnRzIiwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBERl9LRVk6CiAgICAgICAgZm9yIG15ICRERktleSAoIHNvcnQga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT4lKiApIHsKICAgICAgICAgICAgbmV4dCBERl9LRVkgdW5sZXNzICRERktleSA9fiBtL15EeW5hbWljRmllbGRfLzsKCiAgICAgICAgICAgIG9rKCBleGlzdHMgJFZlcnNpb25EYXRhLT57JERGS2V5fSwgIiRERktleSByZXRyaWV2ZWQgZnJvbSBuZXcgY29uZmlnIGl0ZW0iICk7CiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJFZlcnNpb25EYXRhLT57JERGS2V5fSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX0tPntMYXN0VmVyc2lvbn0tPnskREZLZXl9LAogICAgICAgICAgICAgICAgIiRERktleSBoYXMgZXhwZWN0ZWQgdmFsdWUiCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQpjb250aW51ZSB7CiAgICAkSW1wb3J0VGVzdENvdW50Kys7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ImportExport/ObjectBackend/ITSMConfigItemExternalSource.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIExpc3Q6OkFsbFV0aWxzIHF3KG1heCBtaW4gdHJ1ZSk7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzSGFzaFJlZldpdGhEYXRhKTsKCiMgU2FuaXR5IGNoZWNrIHdoZXRoZXIgSW1wb3J0RXhwb3J0IGlzIGF2YWlsYWJsZS4KIyBUaGlzIHNob3VsZCBzdWNjZWVkIHNpbmNlIEltcG9ydEV4cG9ydCBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8gT1RPQk8gY29yZQp7CiAgICAjIGdldCBJbXBvcnRFeHBvcnQgbW9kdWxlIGRpcmVjdG9yeQogICAgbXkgJEltcG9ydEV4cG9ydE1vZHVsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC5wbSc7CiAgICBvayggLWYgJEltcG9ydEV4cG9ydE1vZHVsZSwgJ0ltcG9ydEV4cG9ydC5wbSBleGlzdHMnICk7Cn0KCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwpteSAkSW1wb3J0RXhwb3J0T2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0Jyk7Cm15ICRPYmplY3RCYWNrZW5kT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCAgICAgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKbXkgJFRlc3RJRFN1ZmZpeCA9ICJVbml0VGVzdCRSYW5kb21JRCI7CmRpYWcgIlRlc3RJRFN1ZmZpeDogJyRUZXN0SURTdWZmaXgnIjsKCiMgY3JlYXRlIHRlc3QgdXNlcgpteSAoIHVuZGVmLCAkVGVzdFVzZXJJRCApID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwoKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnZXQgdGhlIGNvbmZpZyBpdGVtIGNsYXNzZXMgYXMgbmFtZSAyIGlkIGxpc3QKbXkgJENJQ2xhc3NMaXN0UmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVDSUNsYXNzTmFtZTJJRCA9IHJldmVyc2UgJENJQ2xhc3NMaXN0UmVmLT4lKjsKCiMgZmV0Y2ggc3Vic2lkaWFyeSBjbGFzcyBmcm9tIGdlbmVyYWwgY2F0YWxvZwpteSAkU3Vic2lkaWFyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnU3Vic2lkaWFyeScsCik7CgojIGFkZCBJbXBvcnRFeHBvcnQgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdVbml0VGVzdCcgLiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwokSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICBPYmplY3REYXRhID0+IHsKICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICB9LAogICAgVXNlcklEID0+ICRUZXN0VXNlcklELAopOwoKbXkgQE1hcHBpbmdPYmplY3REYXRhID0gKAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICB9LAogICAgewogICAgICAgIEtleSA9PiAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgPT4gJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnknLAogICAgfSwKKTsKCk1BUFBJTkdPQkpFQ1REQVRBOgpmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdERhdGEpIHsKCiAgICAjIGFkZCBhIG5ldyBtYXBwaW5nIHJvdwogICAgbXkgJE1hcHBpbmdJRCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdBZGQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRCwKICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKCiAgICAjIGFkZCB0aGUgbWFwcGluZyBvYmplY3QgZGF0YQogICAgJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFTYXZlKAogICAgICAgIE1hcHBpbmdJRCAgICAgICAgID0+ICRNYXBwaW5nSUQsCiAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gJE1hcHBpbmdPYmplY3REYXRhLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKfQoKIyBhZGQgYSBnZW5lcmFsIGNhdGFsb2cgdGVzdCBsaXN0Cm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBkb24ndCBjYXJlIGFib3V0IHZhbGlkIGVtYWlscwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpyZWZfb2soICREZXBsU3RhdGVMaXN0LCAnSEFTSCcsICdkZXBsb3ltZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7CnJlZl9vayggJERlcGxTdGF0ZUxpc3QsICdIQVNIJywgJ2luY2lkZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyBhZGQgdGhlIHRlc3QgY29uZmlnIGl0ZW1zCmRpYWcgImFkZCBjb25maWcgaXRlbTogQ291bnRyeSI7Cm15ICRDSUNvdW50cnlJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgTmFtZSAgICAgICAgPT4gJ1Rlc3RDb3VudHJ5JywKICAgIENsYXNzSUQgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtDb3VudHJ5fSwKICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICA9PiAkVGVzdFVzZXJJRCwKKTsKb2soICRDSUNvdW50cnlJRCwgJ2NvbmZpZyBpdGVtIGFkZGVkJyApOwoKZGlhZyAiYWRkIGNvbmZpZyBpdGVtOiBTdWJzaWRpYXJ5IjsKbXkgJENJU3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknICAgICAgICAgICAgICAgPT4gJ0Jvbm4nLAogICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnknID0+IFskQ0lDb3VudHJ5SURdLAopOwpvayggJENJU3Vic2lkaWFyeUlELCAnY29uZmlnIGl0ZW0gYWRkZWQnICk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgZGVmaW5lIGdlbmVyYWwgSW1wb3J0RGF0YVNhdmUgdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwpteSBASW1wb3J0RGF0YVRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ0ltcG9ydGluZyBkYXRhIHdpdGhvdXQgdHJpZ2dlcmluZyBhIG5ldyB2ZXJzaW9uLCBlbXB0eWluZyB0aGUgb2xkIHZhbHVlJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29mZicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVGVzdFN1YnNpZGlhcnknLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdNw7xuY2hlbicsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVGVzdFN1YnNpZGlhcnknLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknID0+ICdNw7xuY2hlbicsCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbXBvcnRpbmcgZGF0YSB3aXRob3V0IHRyaWdnZXJpbmcgYSBuZXcgdmVyc2lvbiwga2VlcGluZyB0aGUgb2xkIHZhbHVlJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1N0cmF1YmluZycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknICAgICAgICAgICAgICAgPT4gJ1N0cmF1YmluZycsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgPT4gWyRDSUNvdW50cnlJRF0sCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbXBvcnRpbmcgZGF0YSB0cmlnZ2VyaW5nIGEgbmV3IHZlcnNpb24sIGtlZXBpbmcgdGhlIG9sZCB2YWx1ZScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENsYXNzUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICAgICAgU3Vic2lkaWFyeSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVyc2lvblRyaWdnZXIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlELAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnQmVybGluJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdEeW5hbWljRmllbGRfTG9jYXRpb24tQ2l0eScgICAgICAgICAgICAgICA9PiAnQmVybGluJywKICAgICAgICAgICAgICAgICdEeW5hbWljRmllbGRfTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JyA9PiBbJENJQ291bnRyeUlEXSwKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ0ltcG9ydGluZyBkYXRhIHRyaWdnZXJpbmcgYSBuZXcgdmVyc2lvbiwgZW1wdHlpbmcgdGhlIG9sZCB2YWx1ZScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDbGFzc1ByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgICAgIFN1YnNpZGlhcnkgPT4gewogICAgICAgICAgICAgICAgICAgIFZlcnNpb25UcmlnZ2VyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1DaXR5JywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ0hhbWJ1cmcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1DaXR5JyA9PiAnSGFtYnVyZycsCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbXBvcnRpbmcgZGF0YSB3aXRob3V0IHRyaWdnZXJpbmcgYSBuZXcgdmVyc2lvbiwgZW1wdHlpbmcgdGhlIG9sZCB2YWx1ZSwgZG9pbmcgYW4gZXh0ZXJuYWxTb3VyY2VUcmFuc2Zvcm0nLAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENJQ2xhc3NOYW1lMklEe1N1YnNpZGlhcnl9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb2ZmJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ03DvG5jaGVuJywKICAgICAgICAgICAgICAgICAgICBbIlRlc3RDb3VudHJ5Il0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAzLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknICAgICAgICAgICAgICAgPT4gJ03DvG5jaGVuJywKICAgICAgICAgICAgICAgICdEeW5hbWljRmllbGRfTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JyA9PiBbJENJQ291bnRyeUlEXSwKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgVGVzdEV4dGVybmFsU291cmNlVHJhbnNmb3JtID0+IDEsCiAgICB9LAoKKTsKCiMgcnVuIGdlbmVyYWwgSW1wb3J0RGF0YVRlc3RzIHRlc3RzCm15ICRJbXBvcnRUZXN0Q291bnQgPSAxOwpmb3IgbXkgJFRlc3QgKEBJbXBvcnREYXRhVGVzdHMpIHsKCiAgICBzdWJ0ZXN0ICJJbXBvcnREYXRhOiAkVGVzdC0+e05hbWV9IiA9PiBzdWIgewoKICAgICAgICAjIGNoZWNrIFNvdXJjZUltcG9ydERhdGEgYXR0cmlidXRlCiAgICAgICAgaWYgKCAhJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICAgICBmYWlsKCJTb3VyY2VJbXBvcnREYXRhIG5vdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkVGVzdC0+e1Rlc3RFeHRlcm5hbFNvdXJjZVRyYW5zZm9ybX0gKSB7CiAgICAgICAgICAgIF9TZXRERjJFeHRlcm5hbFNvdXJjZVRyYW5zZm9ybSgpOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e09iamVjdERhdGF9CiAgICAgICAgICAgICYmIHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e09iamVjdERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e0ltcG9ydERhdGFTYXZlfXtUZW1wbGF0ZUlEfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtJbXBvcnREYXRhU2F2ZX17VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICBPYmplY3REYXRhID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17T2JqZWN0RGF0YX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBwcmVmZXJlbmNlcwogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfSBlcSAnSEFTSCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc05hbWUgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2VLZXkgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfXskQ2xhc3NOYW1lfS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ0lDbGFzc05hbWUySUR7JENsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAkUHJlZmVyZW5jZUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17Q2xhc3NQcmVmZXJlbmNlc317JENsYXNzTmFtZX17JFByZWZlcmVuY2VLZXl9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgb2soICRTdWNjZXNzLCAiU3VjY2Vzc2Z1bGx5IHNldCBwcmVmZXJlbmNlICRQcmVmZXJlbmNlS2V5IGZvciBjbGFzcyAkQ2xhc3NOYW1lIiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGltcG9ydCBkYXRhIHNhdmUKICAgICAgICBteSAoICRDb25maWdJdGVtSUQsICRSZXRDb2RlICkgPSAkT2JqZWN0QmFja2VuZE9iamVjdC0+SW1wb3J0RGF0YVNhdmUoCiAgICAgICAgICAgICV7ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17SW1wb3J0RGF0YVNhdmV9IH0sCiAgICAgICAgICAgIENvdW50ZXIgPT4gJEltcG9ydFRlc3RDb3VudCwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9ICkgewoKICAgICAgICAgICAgb2soICEkQ29uZmlnSXRlbUlELCAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBubyBDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgIG9rKCAhJFJldENvZGUsICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gbm8gUmV0Q29kZSIgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG9rKCAkQ29uZmlnSXRlbUlELCAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtSUQiICk7CiAgICAgICAgb2soICRSZXRDb2RlLCAgICAgICJJbXBvcnREYXRhU2F2ZSgpIC0gcmV0dXJuIFJldENvZGU6ICRSZXRDb2RlIiApOwoKICAgICAgICAjIGNoZWNrIHRoZSBudW1iZXIgb2YgdmVyc2lvbnMKICAgICAgICB7CiAgICAgICAgICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApIC8vIFtdOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICBzY2FsYXIgJFZlcnNpb25MaXN0LT5AKiwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX17VmVyc2lvbkNvdW50fSB8fCAwLAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiB2ZXJzaW9ucyIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24KICAgICAgICBteSAkVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBnZW5lcmFsIGVsZW1lbnRzCiAgICAgICAgRUxFTUVOVDoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUpKSB7CgogICAgICAgICAgICBuZXh0IEVMRU1FTlQgdW5sZXNzIGV4aXN0cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufXskRWxlbWVudH07CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRFbGVtZW50fSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX17TGFzdFZlcnNpb259eyRFbGVtZW50fSwKICAgICAgICAgICAgICAgICJJbXBvcnREYXRhU2F2ZSgpICRFbGVtZW50IGlzIGlkZW50aWNhbCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBERl9LRVk6CiAgICAgICAgZm9yIG15ICRERktleSAoIHNvcnQga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgREZfS0VZIHVubGVzcyAkREZLZXkgPX4gbS9eRHluYW1pY0ZpZWxkXy87CgogICAgICAgICAgICBvayggZXhpc3RzICRWZXJzaW9uRGF0YS0+eyRERktleX0sICIkREZLZXkgcmV0cmlldmVkIGZyb20gbmV3IGNvbmZpZyBpdGVtIiApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRERktleX0sCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufXskREZLZXl9LAogICAgICAgICAgICAgICAgIiRERktleSBoYXMgZXhwZWN0ZWQgdmFsdWUiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHRpZHkgdGhlIGdlbmVyYWwgY2F0YWxvZyBwcmVmZXJlbmNlcyB1cAogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfSBlcSAnSEFTSCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc05hbWUgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2VLZXkgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfXskQ2xhc3NOYW1lfS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ0lDbGFzc05hbWUySUR7JENsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAkUHJlZmVyZW5jZUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+IFsnJ10sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBvayggJFN1Y2Nlc3MsICJTdWNjZXNzZnVsbHkgcmVzZXQgcHJlZmVyZW5jZSAkUHJlZmVyZW5jZUtleSBmb3IgY2xhc3MgJENsYXNzTmFtZSIgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07Cn0KY29udGludWUgewogICAgJEltcG9ydFRlc3RDb3VudCsrOwp9CgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMy55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkIiApOwoKICAgICRDb250ZW50ID0gJHsgJENvbnRlbnQgfHwgXCcnIH07CgogICAgJENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJENvbnRlbnQsCiAgICApOwoKICAgIGlmICggcmVmICRDb250ZW50IGVxICdIQVNIJyApIHsKICAgICAgICAkQ29udGVudCA9IFskQ29udGVudF07CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGltcG9ydCB0aGUgY2xhc3MgWUFNTCBmaWxlCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgID0+ICRDb250ZW50LAogICAgICAgIENsYXNzRXhpc3RzID0+ICdVUERBVEUnLAogICAgKTsKCiAgICBvayggJFJlc3VsdC0+e1N1Y2Nlc3N9LCAiQ2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQiICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX1NldERGMkV4dGVybmFsU291cmNlVHJhbnNmb3JtIHsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBOYW1lID0+ICdMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnknICk7CiAgICBvayggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyksICJnb3QgREYgY29uZmlnIiApOwoKICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57SW1wb3J0U2VhcmNoQXR0cmlidXRlfSA9ICdOYW1lJzsKCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT4lKiwKCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFJlb3JkZXIgPT4gMSwgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgICAgICAgICAgICAgICAgICAgIyAwIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHRvIHByZXZlbnQgcmVkdW5kYW50IGV4ZWN1dGlvbiBvbiBvcmRlciBjaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKICAgIG9rKCAkU3VjY2VzcywgInVwZGF0ZWQgREYgY29uZmlnIiApOwogICAgX1N5bmNDb25maWdJdGVtREZzKCk7CgogICAgcmV0dXJuOwp9CgpzdWIgX1N5bmNDb25maWdJdGVtREZzIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTGlua1R5cGUgPSAkUGFyYW17TGlua1R5cGV9OwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAnTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JywKICAgICk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TZXRPdXRPZlN5bmMoCiAgICAgICAgQ2xhc3NlcyA9PiB7CiAgICAgICAgICAgICRTdWJzaWRpYXJ5Q2xhc3NJRCA9PiBbICREeW5hbWljRmllbGRDb25maWctPntJRH0gXSwKICAgICAgICB9LAogICAgKTsKICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU3luYygpOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/Admin/AdminITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CiAgICAgICAgbXkgQENvbmZpZ0l0ZW1DbGFzc05hbWVzOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNsYXNzIChxdyhDb21wdXRlciBIYXJkd2FyZSBMb2NhdGlvbiBOZXR3b3JrIFNvZnR3YXJlKSkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkQ29uZmlnSXRlbUNsYXNzLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NOYW1lcywgJENvbmZpZ0l0ZW1EYXRhUmVmLT57TmFtZX07CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWRtaW5JVFNNQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZG1pbklUU01Db25maWdJdGVtIik7CgogICAgICAgICMgVGVzdCBkZWZhdWx0IElUU01Db25maWdJdGVtIGNsYXNzLgogICAgICAgIGZvciBteSAkSXRlbSAoQENvbmZpZ0l0ZW1DbGFzc05hbWVzKSB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICRJdGVtLCAnbGlua190ZXh0JyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciB0YWJsZSBzdHJ1Y3R1cmUuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUiLCAgICAgICAgICAgICAnY3NzJyApOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICAgICAjIENsaWNrIG9uICdDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbicuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdBZGQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIGlucHV0IGFyZWEuCiAgICAgICAgICAgIG15ICRJbnB1dEZpZWxkID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGVmaW5pdGlvbiIsICdjc3MnICk7CiAgICAgICAgICAgICRJbnB1dEZpZWxkLT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRJbnB1dEZpZWxkLT5pc19kaXNwbGF5ZWQoKTsKCiAgICAgICAgICAgICMgUmV0dXJuIGJhY2sgdG8gb3ZlcnZpZXcgc2NyZWVuLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWRtaW5JVFNNQ29uZmlnSXRlbScgKV0iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/Admin/AdminImportExport.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bTsKCiMgc29tZSBzZXR1cCBiZWZvcmUgc3RhcnRpbmcgdGhlIFNlbGVuaXVtIHRlc3QKCiMgbmVlZGVkIG9iamVjdHMKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBUaGUgaGVscGVyIG11c3RuJ3QgcnVuIGluIGEgdHJhbnNhY3Rpb24sIGJlY2F1c2Ugb3RoZXJ3aXNlCiMgdGhlIHdlYnNlcnZlciB3b3VsZCBub3Qgc2VlIHRoZSBjaGFuZ2VzIGluIHRoZSBkYXRhYmFzZS4KbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7Cm9rKCAkVGVzdFVzZXJMb2dpbiwgJ3Rlc3QgdXNlciBjcmVhdGVkJyApOwpteSAkVGVzdFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiApOwpvayggJFRlc3RVc2VySUQsICdnb3QgSUQgZm9yIHRlc3QgdXNlcicgKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyBUaGUgZGVmaW5pdGlvbiBpdHNlbGYgaXMgaXJyZWxldmFudCwgaXQganVzdCBoYXMgdG8gYmUgdmFsaWQKbXkgJENvbmZpZ0l0ZW1ZQU1MRGVmaW5pdGlvbiA9IDw8J0VORF9ZQU1MJzsKLS0tClBhZ2VzOgogIC0gTmFtZTogQ0lfMV9QYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IENJXzFfU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCgogIC0gTmFtZTogQ0lfMV9QYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogQ0lfMV9TZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKClNlY3Rpb25zOgogIENJXzFfU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgoKICBDSV8xX1NlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMiIKRU5EX1lBTUwKCm15ICRUZXN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gIkNsYXNzXyRSYW5kb21JRCIsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwpvayggJFRlc3RDbGFzc0lELCAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciICk7CgojIHNldCBwZXJtaXNzaW9uIGFuZCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUKewogICAgbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG9rKCAkR3JvdXBJRCwgJ2dvdCBJRCBmb3IgZ3JvdXAgaXRzbS1jb25maWdpdGVtJyApOwoKICAgICMgc2V0IHBlcm1pc3Npb24uCiAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJFRlc3RDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgVmFsdWUgID0+IFskR3JvdXBJRF0sCiAgICApOwogICAgb2soICRTdWNjZXNzLCAnc2V0dGluZyBwZXJtaXNzaW9uIHdhcyBzdWNjZXNzZnVsJyApOwoKICAgICMgc2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZQogICAgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10KICAgICk7CiAgICBvayggJFN1Y2Nlc3MsICdzZXR0aW5nIGluY3JlbWVudGFsIHZlcnNpb24gc3RyaW5nIG1vZHVsZSB3YXMgc3VjY2Vzc2Z1bCcgKTsKCn0KCiMgVGhlIGNvbmZpZyBpdGVtIGNsYXNzIG5lZWRzIGEgdmFsaWQgZGVmaW5pdGlvbgpteSAkRGVmaW5pdGluQWRkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRUZXN0Q2xhc3NJRCwKICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRUZXN0VXNlcklELAogICAgRGVmaW5pdGlvbiA9PiAkQ29uZmlnSXRlbVlBTUxEZWZpbml0aW9uLAopOwpvayggJERlZmluaXRpbkFkZFJlc3VsdC0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIHN1Y2Nlc3NmdWwiICk7Cm15ICREZWZpbml0aW9uSUQgPSAkRGVmaW5pdGluQWRkUmVzdWx0LT57RGVmaW5pdGlvbklEfTsKb2soICREZWZpbml0aW9uSUQsICJEZWZpbml0aW9uQWRkKCkgZ290IGRlZmluaXRpb24gSUQiICk7CgojIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKbXkgJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCm15ICRTZWxlbml1bSA9IEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0tPm5ldzsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkQ29uZmlnSXRlbU51bWJlciwgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIgKTsKCiAgICAgICAgIyBBZGQgJ0xvY2F0aW9uJyB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gIlNlbGVuaXVtIiAuICRIZWxwZXItPkdldFJhbmRvbUlEOwogICAgICAgIG15ICRDb25maWdJdGVtSUQgICA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkVGVzdENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWdJdGVtICdMb2NhdGlvbicgaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiICk7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFkbWluSW1wb3J0RXhwb3J0IHNjcmVlbi4KICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWRtaW5JbXBvcnRFeHBvcnQiKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnRfYnlfY3NzX29rKCJ0YWJsZSIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50X2J5X2Nzc19vaygidGFibGUgdGhlYWQgdHIgdGgiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudF9ieV9jc3Nfb2soInRhYmxlIHRib2R5IHRyIHRkIik7CgogICAgICAgICMgQ2xpY2sgb24gJ0FkZCB0ZW1wbGF0ZScuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFkbWluSW1wb3J0RXhwb3J0O1N1YmFjdGlvbj1UZW1wbGF0ZUVkaXQnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBhbmQgaW5wdXQgc3RlcCAxIG9mIDUgc2NyZWVuLgogICAgICAgIGRpYWcoJ1N0ZXAgMScpOwogICAgICAgIGZvciBteSAkU3RlcE9uZUlEICgKICAgICAgICAgICAgcXcoTmFtZSBPYmplY3RfU2VhcmNoIEZvcm1hdF9TZWFyY2ggVmFsaWRJRF9TZWFyY2ggQ29tbWVudCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkU3RlcE9uZUlEIiwgJ2NzcycgKTsKICAgICAgICAgICAgb2soICRFbGVtZW50LCAiJFN0ZXBPbmVJRCBmb3VuZCBpbiBzdGVwIDEiICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkX29rOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgIH0KICAgICAgICBteSAkSW1wb3J0RXhwb3J0TmFtZSA9ICJJbXBvcnRFeHBvcnQiIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkSW1wb3J0RXhwb3J0TmFtZSk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjT2JqZWN0JykudmFsKCdJVFNNQ29uZmlnSXRlbScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNGb3JtYXQnKS52YWwoJ0NTVicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjQ29tbWVudCIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW1UZXN0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAY2xhc3M9J1ByaW1hcnkgQ2FsbEZvckFjdGlvbiddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIGFuZCBpbnB1dCBzdGVwIDIgb2YgNSBzY3JlZW4uCiAgICAgICAgZGlhZygnU3RlcCAyJyk7CiAgICAgICAgZm9yIG15ICRTdGVwVHdvSUQgKAogICAgICAgICAgICBxdyhDbGFzc0lEX1NlYXJjaCBDb3VudE1heCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdGVwVHdvSUQiLCAnY3NzJyApOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcFR3b0lEIGZvdW5kIGluIHN0ZXAgMiIgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWRfb2s7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWRfb2s7CiAgICAgICAgfQoKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNDbGFzc0lEJykudmFsKCckVGVzdENsYXNzSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGNsYXNzPSdQcmltYXJ5IENhbGxGb3JBY3Rpb24nXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBhbmQgaW5wdXQgc3RlcCAzIG9mIDUgc2NyZWVuLgogICAgICAgIGRpYWcoJ1N0ZXAgMzogZm9ybWF0IGRlZmluaXRpb24nKTsKICAgICAgICBmb3IgbXkgJFN0ZXBUaHJlZUlEICgKICAgICAgICAgICAgcXcoQ29sdW1uU2VwYXJhdG9yX1NlYXJjaCBDaGFyc2V0IEluY2x1ZGVDb2x1bW5IZWFkZXJzX1NlYXJjaCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkU3RlcFRocmVlSUQiLCAnY3NzJyApOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcFRocmVlSUQgZm91bmQgaW4gc3RlcCAzIiApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZF9vazsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICB9CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjQ29sdW1uU2VwYXJhdG9yJykudmFsKCdDb21tYScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgYW5kIGlucHV0IHN0ZXAgNCBvZiA1IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBjbGFzcz0nUHJpbWFyeSBDYWxsRm9yQWN0aW9uJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWFwcGluZ0FkZEJ1dHRvbiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgZGlhZygnU3RlcCA0Jyk7CiAgICAgICAgZm9yIG15ICRTdGVwRm91cklEICgKICAgICAgICAgICAgcXcoS2V5X1NlYXJjaCBJZGVudGlmaWVyKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIuLy8qW1xAaWQ9J09iamVjdDo6MDo6JFN0ZXBGb3VySUQnXSIpOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcEZvdXJJRCBmb3VuZCBpbiBzdGVwIDQiICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkX29rOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgIH0KCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnRfYnlfY3NzX29rKCJ0YWJsZSIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50X2J5X2Nzc19vaygidGFibGUgdGhlYWQgdHIgdGgiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudF9ieV9jc3Nfb2soInRhYmxlIHRib2R5IHRyIHRkIik7CgogICAgICAgICMgU2VsZWN0ICdOdW1iZXInIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNPYmplY3RcXFxcOlxcXFw6MFxcXFw6XFxcXDpLZXknKS52YWwoJ051bWJlcicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICMgQWRkIGFuZCBzZWxlY3QgJ05hbWUnIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNYXBwaW5nQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI09iamVjdFxcXFw6XFxcXDoxXFxcXDpcXFxcOktleScpLnZhbCgnTmFtZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICMgQWRkIGFuZCBzZWxlY3QgJ0RlcGxveW1lbnQgU3RhdGUnIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNYXBwaW5nQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI09iamVjdFxcXFw6XFxcXDoyXFxcXDpcXFxcOktleScpLnZhbCgnRGVwbFN0YXRlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgYW5kIHNlbGVjdCAnSW5jaWRlbnQgU3RhdGUnIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNYXBwaW5nQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI09iamVjdFxcXFw6XFxcXDozXFxcXDpcXFxcOktleScpLnZhbCgnSW5jaVN0YXRlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBmb3IgZXZlcnkgbGluZSBjaGVjayBpZiBhY3Rpb24gZWxlbWVudHMgYXJlIHZpc2libGUgYW5kIGlmIHRoZWlyIGVuYWJsZWQgc3RhdGUgaXMgY29ycmVjdAogICAgICAgICMgdGhlIGZpcnN0IEFycm93VXAgYW5kIHRoZSBsYXN0IEFycm93ZG93biBtdXN0IGJlIGRpc2FibGVkLCBhbGwgdGhlIG90aGVycyBtdXN0IGJlIGVuYWJsZWQKICAgICAgICBmb3IgbXkgJFN0ZXBGb3VyQ2xhc3MgKAogICAgICAgICAgICBxdyhBcnJvd1VwIEFycm93RG93biBEZWxldGVDb2x1bW4pCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50cyA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50cyggIi4kU3RlcEZvdXJDbGFzcyIsICdjc3MnICk7CiAgICAgICAgICAgIG9rKCAkRWxlbWVudHMsICIkU3RlcEZvdXJDbGFzcyBjbGFzcyBmb3VuZCBpbiBzdGVwIDQiICk7CgogICAgICAgICAgICBpZiAoICRTdGVwRm91ckNsYXNzIGVxICdBcnJvd1VwJyApIHsKICAgICAgICAgICAgICAgIG15ICRJbmRleCA9IDA7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCAkRWxlbWVudHMtPkAqICkgewogICAgICAgICAgICAgICAgICAgIG15ICRTdGF0ZU9rID0gJEluZGV4ID09IDAgPyAhJEVsZW1lbnQtPmlzX2VuYWJsZWQgOiAkRWxlbWVudC0+aXNfZW5hYmxlZDsKICAgICAgICAgICAgICAgICAgICBvayggJFN0YXRlT2ssICIkU3RlcEZvdXJDbGFzcyBlbGVtZW50ICRJbmRleCBlbmFibGVkIHN0YXRlIGlzIGNvcnJlY3QiICk7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICAgICAgICAgICAgICAkSW5kZXgrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRTdGVwRm91ckNsYXNzIGVxICdBcnJvd0Rvd24nICkgewogICAgICAgICAgICAgICAgbXkgJEluZGV4ID0gMDsKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoICRFbGVtZW50cy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXRlT2sgPSAkSW5kZXggPT0gMyA/ICEkRWxlbWVudC0+aXNfZW5hYmxlZCA6ICRFbGVtZW50LT5pc19lbmFibGVkOwogICAgICAgICAgICAgICAgICAgIG9rKCAkU3RhdGVPaywgIiRTdGVwRm91ckNsYXNzIGVsZW1lbnQgJEluZGV4IGVuYWJsZWQgc3RhdGUgaXMgY29ycmVjdCIgKTsKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgICAgICAgICAgICAgICRJbmRleCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJEluZGV4ID0gMDsKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoICRFbGVtZW50cy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXRlT2sgPSAkRWxlbWVudC0+aXNfZW5hYmxlZDsKICAgICAgICAgICAgICAgICAgICBvayggJFN0YXRlT2ssICIkU3RlcEZvdXJDbGFzcyBlbGVtZW50ICRJbmRleCBlbmFibGVkIHN0YXRlIGlzIGNvcnJlY3QiICk7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICAgICAgICAgICAgICAkSW5kZXgrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0TmV4dEJ1dHRvbiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBzdGVwIDUgb2YgNSBzY3JlZW4uCiAgICAgICAgZGlhZygnU3RlcCA1LCByZXN0cmljdCB3aGF0IGlzIGV4cG9ydGVkJyk7CiAgICAgICAgZm9yIG15ICRTdGVwRml2ZUlEICgKICAgICAgICAgICAgcXcoUmVzdHJpY3RFeHBvcnQgTnVtYmVyIE5hbWUgRGVwbFN0YXRlSURzX1NlYXJjaCBJbmNpU3RhdGVJRHNfU2VhcmNoKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdGVwRml2ZUlEIiwgJ2NzcycgKTsKICAgICAgICAgICAgb2soICRFbGVtZW50LCAiJFN0ZXBGaXZlSUQgZm91bmQgaW4gc3RlcCA1IiApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZF9vazsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICB9CgogICAgICAgICMgU2VhcmNoIENvbmZpZ0l0ZW0gYnkgbnVtYmVyIGFuZCBkZXBsb3ltZW50IHN0YXRlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1Jlc3RyaWN0RXhwb3J0IiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOdW1iZXIiLCAgICAgICAgICdjc3MnICktPnNlbmRfa2V5cygkQ29uZmlnSXRlbU51bWJlcik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICAgICAgICAgICAnY3NzJyApLT5zZW5kX2tleXMoJENvbmZpZ0l0ZW1OYW1lKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNEZXBsU3RhdGVJRHMnKS52YWwoJyRQcm9kdWN0aW9uRGVwbFN0YXRlSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjSW5jaVN0YXRlSURzJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBjbGFzcz0nUHJpbWFyeSBDYWxsRm9yQWN0aW9uJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgR2V0IFRlbXBsYXRlSUQgb2YgY3JlYXRlZCB0ZXN0IHRlbXBsYXRlLgogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgICAgIG15ICgkVGVtcGxhdGVJRCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICBTUUwgID0+ICdTRUxFQ1QgaWQgRlJPTSBpbWV4cG9ydF90ZW1wbGF0ZSBXSEVSRSBuYW1lID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJEltcG9ydEV4cG9ydE5hbWUgXSwKICAgICAgICApOwogICAgICAgIG9rKCAkVGVtcGxhdGVJRCwgImdvdCB0aGUgdGVtcGxhdGUgSUQgLSAkVGVtcGxhdGVJRCIgKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byB0ZXN0IGNyZWF0ZWQgQ29uZmlnSXRlbSBhbmQgdmVyaWZ5IGl0LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIik7CiAgICAgICAgJFNlbGVuaXVtLT5jb250ZW50X2NvbnRhaW5zKAogICAgICAgICAgICAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbmFtZSAkQ29uZmlnSXRlbU5hbWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBFeHBvcnQgdXNpbmcgdGhlIGNyZWF0ZWQgdGVzdCB0ZW1wbGF0ZS4KICAgICAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwogICAgICAgIG15ICRFeHBvcnRSZXN1bHRSZWYgICAgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5FeHBvcnQoCiAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzYW5pdHkgY2hlY2sgb2YgdGhlIGV4cG9ydAogICAgICAgIGlzKAogICAgICAgICAgICAkRXhwb3J0UmVzdWx0UmVmLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDaHVua2luZ0ZpbmlzaGVkICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbkNvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlciIsIiRDb25maWdJdGVtTmFtZSIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCJ9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIEZhaWxlZCAgPT4gMCwKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2V4cG9ydCByZXN1bHQnCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0gYW5kIHZlcmlmeSB0aGUgZGVsZXRpb24KICAgICAgICB7CiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUZvdW5kID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICBSZXN1bHQgICAgICAgPT4gJ0NPVU5UJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbJENvbmZpZ0l0ZW1JRF0KICAgICAgICAgICAgKTsKICAgICAgICAgICAgb2soICEkQ29uZmlnSXRlbUZvdW5kLCAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIgKTsKCiAgICAgICAgICAgICMgUmVmcmVzaCBzY3JlZW4gYW5kIHZlcmlmeSB0aGF0IHRlc3QgQ29uZmlnSXRlbSBkb2VzIG5vdCBleGlzdCBhbnltb3JlLgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwogICAgICAgICAgICAkU2VsZW5pdW0tPmNvbnRlbnRfY29udGFpbnMoCiAgICAgICAgICAgICAgICAiQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hIiwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbmFtZSAkQ29uZmlnSXRlbU5hbWUgaXMgbm90IGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQmVmb3JlIGltcG9ydGluZyB2ZXJpZnkgdGhhdCB0aGUgY29uZmlnIGl0ZW1zIGRvIG5vdCBhbHJlYWR5IGV4aXN0CiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUgPSAnU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XycgLiAkQ291bnQ7CiAgICAgICAgICAgIG15ICRDb3VudCAgICAgICAgICAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaXMoICRDb3VudCwgMCwgIiRJbXBvcnRlZENvbmZpZ0l0ZW1OYW1lIGRvZXMgbm90IGV4aXN0IGJlZm9yZSBpbXBvcnQiICk7CiAgICAgICAgfQoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFkbWluSW1wb3J0RXhwb3J0IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZG1pbkltcG9ydEV4cG9ydCIpOwoKICAgICAgICAjIENsaWNrIG9uICdJbXBvcnQnLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ1N1YmFjdGlvbj1JbXBvcnRJbmZvcm1hdGlvbjtUZW1wbGF0ZUlEPSRUZW1wbGF0ZUlEJyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgU2VsZWN0IEV4cG9ydGVkIGZpbGUgYW5kIHN0YXJ0IGltcG9ydGluZy4KICAgICAgICAjIFRoZSBkaXJlY3RvcnkgL29wdC9vdG9iby9zY3JpcHRzL3Rlc3Qvc2FtcGxlIGhhcyBiZWVuIGNvcGllZCBmcm9tIE9UT0JPIGNvcmUgaW50byB0aGUgU2VsZW5pdW0gaW1hZ2UuCiAgICAgICAgIyBUaGUgY29udGVudCBpczoKICAgICAgICAjICAgIjEwNDk1MDAwMTAxIiwiU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XzEiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiAgICAgICAgIyAgICIxMDQ5NTAwMDEwMiIsIlNlbGVuaXVtdGVzdF9BZG1pbkltcG9ydEV4cG9ydF8yIiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgogICAgICAgIG15ICRJbXBvcnRMb2NhdGlvbiA9ICcvb3B0L290b2JvL3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlSW1wb3J0LmNzdic7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbY29udGFpbnMoXEBuYW1lLCBcJ1NvdXJjZUZpbGUnICldIiktPnNlbmRfa2V5cygkSW1wb3J0TG9jYXRpb24pOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nU3RhcnQgSW1wb3J0J11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIG91dGNvbWUuCiAgICAgICAgJFNlbGVuaXVtLT5jb250ZW50X2NvbnRhaW5zKAogICAgICAgICAgICAnKENyZWF0ZWQ6IDIpJywKICAgICAgICAgICAgIkltcG9ydCB0ZXN0IENvbmZpZ0l0ZW0gLSBzdWNjZXNzIiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIGltcG9ydGVkIHRlc3QgY3JlYXRlZCBDb25maWdJdGVtIGFuZCB2ZXJpZnkgaXQuCiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUgPSAnU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XycgLiAkQ291bnQ7CgogICAgICAgICAgICBzdWJ0ZXN0ICJjaGVja2luZyBpbXBvcnQgb2YgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUiID0+IHN1YiB7CiAgICAgICAgICAgICAgICBteSAkRXhwZWN0ZWRJbXBvcnRlZENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSUQgKyAkQ291bnQ7CiAgICAgICAgICAgICAgICBteSAoICRGb3VuZEltcG9ydGVkQ29uZmlnSXRlbUlELCBAT3RoZXJJRHMgKSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkSW1wb3J0ZWRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpcyggJEV4cGVjdGVkSW1wb3J0ZWRDb25maWdJdGVtSUQsICRGb3VuZEltcG9ydGVkQ29uZmlnSXRlbUlELCAiJEZvdW5kSW1wb3J0ZWRDb25maWdJdGVtSUQgaGFzIGJlZW4gaW1wb3J0ZWQiICk7CiAgICAgICAgICAgICAgICBpcyggXEBPdGhlcklEcywgICAgICAgICAgICAgICAgICAgIFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBvbmUgaXRlbSBmb3VuZCIgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kRm91bmRJbXBvcnRlZENvbmZpZ0l0ZW1JRCIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmNvbnRlbnRfY29udGFpbnMoCiAgICAgICAgICAgICAgICAgICAgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSBuYW1lICRJbXBvcnRlZENvbmZpZ0l0ZW1OYW1lIGlzIGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjbGVhbiB1cCwgZGVsZXRlIHRoZSB0ZXN0IGltcG9ydGVkIENvbmZpZ0l0ZW0uCiAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkRm91bmRJbXBvcnRlZENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgb2soICREZWxldGVTdWNjZXNzLCAiQ29uZmlnSXRlbSAkSW1wb3J0ZWRDb25maWdJdGVtTmFtZSBpcyBkZWxldGVkIC0gSUQgJEZvdW5kSW1wb3J0ZWRDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWRtaW5JbXBvcnRFeHBvcnQgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFkbWluSW1wb3J0RXhwb3J0Iik7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcmpRdWVyeUV2ZW50Qm91bmQoCiAgICAgICAgICAgIENTU1NlbGVjdG9yID0+ICJhLkltcG9ydEV4cG9ydERlbGV0ZVtkYXRhLWlkPSckVGVtcGxhdGVJRCddIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIHRvIGRlbGV0ZSB0ZXN0IHRlbXBsYXRlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiYS5JbXBvcnRFeHBvcnREZWxldGVbZGF0YS1pZD0nJFRlbXBsYXRlSUQnXSIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcmpRdWVyeUV2ZW50Qm91bmQoCiAgICAgICAgICAgIENTU1NlbGVjdG9yID0+ICIjRGlhbG9nQnV0dG9uMTp2aXNpYmxlIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJyNEaWFsb2dCdXR0b24xJywgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEVsZW1lbnRNaXNzaW5nID0+IFsgImEuSW1wb3J0RXhwb3J0RGVsZXRlW2RhdGEtaWQ9JyRUZW1wbGF0ZUlEJ10iLCAnY3NzJyBdICk7CgogICAgICAgICMgQ2hlY2sgaWYgdGVzdCB0ZW1wbGF0ZSBpcyBkZWxldGVkLgogICAgICAgIG9rKAogICAgICAgICAgICAhJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ2EuSW1wb3J0RXhwb3J0RGVsZXRlW2RhdGEtaWQqPVwiJFRlbXBsYXRlSURcIl0nKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiVGVzdCB0ZW1wbGF0ZSBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKIyBUT0RPOiBjbGVhbiB1cCBvZiB0aGUgZGF0YWJhc2UKCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKHF3KENvbXB1dGVyIEhhcmR3YXJlIExvY2F0aW9uIE5ldHdvcmsgU29mdHdhcmUpKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkQ29uZmlnSXRlbUNsYXNzLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAgICAgbXkgJE93bmVyICAgICAgICAgICA9ICciVGVzdCBUZXN0IiA8dGVzdEB0ZXN0LmNvbT4nOwogICAgICAgIG15ICRDb21wdXRlckNsYXNzSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIE5hbWUgID0+ICdDb21wdXRlcicsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBmb3IgbXkgJElUU01Db25maWdJdGVtIChAQ29uZmlnSXRlbUNsYXNzSURzKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnU2VsZW5pdW1UZXN0JywKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtLCBzb3J0ZWQgYnkgY3JlYXRlZCB0aW1lLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO0ZpbHRlcj1BbGw7Vmlldz07U29ydEJ5PUxhc3RDaGFuZ2VkO09yZGVyQnk9RG93biIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMgd2l0aCAnQWxsJyBmaWx0ZXIgYWN0aXZlCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ2E6Y29udGFpbnMoJENvbmZpZ0l0ZW1OdW1iZXIpJykubGVuZ3RoID09PSAxIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gdmFsdWUgJENvbmZpZ0l0ZW1OdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGVhY2ggb2YgQ29uZmlnSXRlbSBjbGFzcyBmaWx0ZXJzIGZvciB0aGVpciByZXNwZWN0aXZlIHRlc3QgQ29uZmlnSXRlbQogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgQ2xpY2sgb24gQ29uZmlnSXRlbSBjbGFzcwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO1NvcnRCeT1DaGFuZ2VkO09yZGVyQnk9RG93bjtWaWV3PVNtYWxsO0ZpbHRlcj0kQ29uZmlnSXRlbUNsYXNzSURzWyRDb3VudF0nICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciB0YWJsZSBzdHJ1Y3R1cmUKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIiwgJ2NzcycgKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIENvbmZpZ0l0ZW0gbnVtYmVyCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdhOmNvbnRhaW5zKCRDb25maWdJdGVtTnVtYmVyKScpLmxlbmd0aCIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdCBDb25maWdJdGVtIHZhbHVlICRDb25maWdJdGVtTnVtYmVyIC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZSBudW1iZXIgY29sdW1uIGhhcyBhIGxpbmsgdG8gdGhlIGNvbmZpZyBpdGVtIHpvb20KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ3RyOmVxKFwiMVwiKSBhOmNvbnRhaW5zKCRDb25maWdJdGVtTnVtYmVyc1s0XSlbaHJlZio9XCJJdGVtSUQ9JENvbmZpZ0l0ZW1JRHNbNF1cIl0nKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiTGluayBvbiBDb25maWdJdGVtICdOdW1iZXInIGNvbHVtbiBjb3JyZWN0LiIKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRGVsZXRlIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtRGVsZXRlLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1EZWxldGUiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemAdd.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlJlZ2lzdGVyT007ICAgICAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKb3VyICRTZWxmOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9IEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0tPm5ldzsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3RzCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyk7CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAkSGVscGVyID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNhdGFsb2cgY2xhc3MgSURzCiAgICAgICAgJElUU01Db25maWdJdGVtSGVscGVyLT5UZXN0Q29uZmlnSXRlbUNyZWF0ZUxlZ2FjeUNsYXNzZXMoCiAgICAgICAgICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyCiAgICAgICAgKTsKICAgICAgICBteSBAQ29uZmlnSXRlbUNsYXNzSURzOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NOYW1lczsKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1DbGFzcyAocXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayBTb2Z0d2FyZSkpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAgICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc05hbWVzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntOYW1lfTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQWRkIik7CgogICAgICAgICMgY2hlY2sgZm9yIElUU01Db25maWdJdGVtIGNsYXNzZXMKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1DbGFzc05hbWUgKEBDb25maWdJdGVtQ2xhc3NOYW1lcykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29uZmlnSXRlbUNsYXNzTmFtZSApID4gLTEsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBjbGFzcyAkQ29uZmlnSXRlbUNsYXNzTmFtZSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIGxpbmtzIHRvICdBZGQnIG5ldyBpdGVtIGZvciBlYWNoIGNsYXNzCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3NBZGQgKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JENvbmZpZ0l0ZW1DbGFzc0FkZCcgKV0iCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBJRCAkQ29uZmlnSXRlbUNsYXNzQWRkIGFkZCBsaW5rIC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemBulk.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdDb21wdXRlcicgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnQ29tcHV0ZXInLAogICAgICAgICk7CiAgICAgICAgbXkgJENvbXB1dGVyQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGFuZCAnUmVwYWlyJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSBARGVwbFN0YXRlSURzOwogICAgICAgIGZvciBteSAkRGVwbFN0YXRlIChxdyAoUHJvZHVjdGlvbiBSZXBhaXIpKSB7CiAgICAgICAgICAgIG15ICREZXBsU3RhdGVEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRGVwbFN0YXRlLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBEZXBsU3RhdGVJRHMsICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRocmVlIHRlc3QgQ29uZmlnSXRlbXMgZm9yICdDb21wdXRlcicgQ29uZmlnSXRlbSBjbGFzcy4KICAgICAgICBteSBAQ29uZmlnSXRlbXM7CiAgICAgICAgZm9yICggMSAuLiAzICkgewoKICAgICAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIuCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb21wdXRlckNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAnSGFyZHdhcmUnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb21wdXRlckNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVJRHNbMF0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtcywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTtGaWx0ZXI9QWxsO1ZpZXc9OztTb3J0Qnk9TGFzdENoYW5nZWQ7T3JkZXJCeT1Eb3duIgogICAgICAgICk7CgogICAgICAgICMgU2VsZWN0IHR3byBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRTZWxlY3RDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAgICAgICAgICMgRG9uJ3QgY2xpY2sgb24gdGhpcmQgdGVzdCBDb25maWdJdGVtLgogICAgICAgICAgICBpZiAoICRTZWxlY3RDb25maWdJdGVtLT57SUR9IG5lICRDb25maWdJdGVtc1syXS0+e0lEfSApIHsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9JyRTZWxlY3RDb25maWdJdGVtLT57SUR9J10iKS0+Y2xpY2soKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiBidWxrIGFjdGlvbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW3RleHQoKT0nQnVsayddIiktPmNsaWNrKCk7CgogICAgICAgICMgU3dpdGNoIHRvICdCdWxrJyB3aW5kb3cuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0RlcGxTdGF0ZUlEIikubGVuZ3RoOycgKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgTGlua1RvZ2V0aGVyIExpbmtUb2dldGhlckxpbmtUeXBlIExpbmtUb2dldGhlckFub3RoZXIgTGlua1R5cGUgc3VibWl0UmljaFRleHQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBDaGFuZ2UgZGVwbG95bWVudCBzdGF0ZSB0byAnUmVwYWlyJyBmb3IgdGVzdCBDb25maWdJdGVtcwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCckRGVwbFN0YXRlSURzWzFdJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwoKICAgICAgICAjIGxpbmsgJ0FsdGVybmF0aXZlIHRvJyB0ZXN0IENvbmZpZ0l0ZW1zIHRvZ2V0aGVyCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjTGlua1RvZ2V0aGVyJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0xpbmtUb2dldGhlckxpbmtUeXBlJykudmFsKCdDb25uZWN0ZWRUbzo6U291cmNlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwoKICAgICAgICAjIGxpbmsgdGhpcmQgdGVzdCBDb25maWdJdGVtIGFzIHBhcnQgb2YgZmlyc3QgdHdvCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua1RvZ2V0aGVyQW5vdGhlciIsICdjc3MnICktPnNlbmRfa2V5cyggJENvbmZpZ0l0ZW1zWzJdLT57Q29uZmlnSXRlbU51bWJlcn0gKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNMaW5rVHlwZScpLnZhbCgnSW5jbHVkZXM6OlRhcmdldCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgKTsKCiAgICAgICAgIyRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0xpbmtUeXBlIG9wdGlvblt2YWx1ZT0nSW5jbHVkZXM6OlRhcmdldCddIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTdWJtaXQgYnVsayBjaGFuZ2VzCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjc3VibWl0UmljaFRleHQiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBmaXJzdCBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMgem9vbSB2aWV3LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1zWzFdLT57SUR9IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yIG90aGVyIHR3byBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgIyBWZXJpZnkgdGhhdCBsaW5rIGFjdGlvbiBpbiBidWxrIHNjcmVlbiB3YXMgc3VjY2Vzcy4KICAgICAgICBteSAkQ291bnQgPSAxOwogICAgICAgIElURU06CiAgICAgICAgZm9yIG15ICRDaGVja0NvbmZpZ0l0ZW0gKEBDb25maWdJdGVtcykgewoKICAgICAgICAgICAgbmV4dCBJVEVNIGlmICRDb25maWdJdGVtc1sxXS0+e0NvbmZpZ0l0ZW1OdW1iZXJ9ID09ICRDaGVja0NvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICAgICAiLy9hW1xAY2xhc3M9XCdBc0Jsb2NrIExpbmtPYmplY3RMaW5rXCddW2NvbnRhaW5zKC4sXCckQ2hlY2tDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn1cJyldIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDaGVja0NvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAkREI6OnNpbmdsZSA9IDE7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9kaXZbXEBjbGFzcz0nVmFsdWUnIGFuZCBcQHRpdGxlPSdSZXBhaXInXSIpLAogICAgICAgICAgICAiRGVwbG95bWVudCBzdGF0ZSBpcyBSZXBhaXIuIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRGVsZXRlIChAQ29uZmlnSXRlbXMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZS0+e0lEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZyBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbURlbGV0ZS0+e0lEfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemDuplicate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIFRlc3QyOjpWMDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdIYXJkd2FyZScgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAogICAgICAgICk7CiAgICAgICAgbXkgJEhhcmR3YXJlQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzLgogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIHNldCBOYW1lIHVwZGF0ZSBhcyBhIHZlcnNpb24gdHJpZ2dlcmluZyBldmVudAogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uVHJpZ2dlcicsCiAgICAgICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXQogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1NlbGVuaXVtIFRlc3QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgQWRkIGEgbmV3IHZlcnNpb24uCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJ0hhcmR3YXJlJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1Ob3RlID0gJ1NvbWUgU2VsZW5pdW0gdGVzdCBub3RlJzsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLU5vdGUnID0+ICRDb25maWdJdGVtTm90ZSwKICAgICAgICApOwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9IgogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtWm9vbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgR2V0IENvbmZpZ0l0ZW0gdmFsdWUgcGFyYW1zLgogICAgICAgIG15IEBDb25maWdJdGVtVmFsdWVzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnSGFyZHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ3AuVmFsdWU6Y29udGFpbnMoSGFyZHdhcmUpJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gImgxOmNvbnRhaW5zKCRDb25maWdJdGVtTmFtZSkiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnSXRlbU5vdGUsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAicDpjb250YWlucygkQ29uZmlnSXRlbU5vdGUpIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENvbmZpZ0l0ZW0gdmFsdWVzIG9uIHNjcmVlbgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtVmFsdWVzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCckQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja30nKS5sZW5ndGg7IgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gdmFsdWUgJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57VmFsdWV9IC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiAnRHVwbGljYXRlJyBtZW51IGl0ZW0gYW5kIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0R1cGxpY2F0ZUlEPSRDb25maWdJdGVtSUQ7VmVyc2lvbklEPSRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH1cJyApXSIKICAgICAgICApLT5jbGljaygpOwoKICAgICAgICAjIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgd2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjRGVwbFN0YXRlSUQiKS5sZW5ndGg7JyApOwoKICAgICAgICAjIEdldCBkdXBsaWNhdGVkIENvbmZpZ0l0ZW0gdmFsdWUgcGFyYW1zLgogICAgICAgIG15IEBEdXBsaWNhdGVkQ29uZmlnSXRlbVZhbHVlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICBFeHBlY3RlZFZhbHVlID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICA9PiAnRGVwbFN0YXRlSUQnLAogICAgICAgICAgICAgICAgRXhwZWN0ZWRWYWx1ZSA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgID0+ICdJbmNpU3RhdGVJRCcsCiAgICAgICAgICAgICAgICBFeHBlY3RlZFZhbHVlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgPT4gJ0R5bmFtaWNGaWVsZF9IYXJkd2FyZS1Ob3RlJywKICAgICAgICAgICAgICAgIEV4cGVjdGVkVmFsdWUgPT4gJENvbmZpZ0l0ZW1Ob3RlLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZHVwbGljYXRlZCBDb25maWdJdGVtIHZhbHVlcyBvbiBzY3JlZW4KICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbVZhbHVlIChARHVwbGljYXRlZENvbmZpZ0l0ZW1WYWx1ZXMpIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57T2JqZWN0SUR9IiwgJ2NzcycgKS0+Z2V0X3ZhbHVlKCksCiAgICAgICAgICAgICAgICAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntFeHBlY3RlZFZhbHVlfSwKICAgICAgICAgICAgICAgICIjJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57T2JqZWN0SUR9IHN0b3JlZCB2YWx1ZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEVkaXQgbmFtZSBmb3IgZHVwbGljYXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICBteSAkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUgPSAiRHVwbGljYXRlIiAuICRDb25maWdJdGVtTmFtZTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCREdXBsaWNhdGVDb25maWdJdGVtTmFtZSk7CgogICAgICAgICMgU2VsZWN0IGN1cnJlbnQgZGF0ZSBhcyB0aGUgaW5zdGFsbGF0aW9uIGRhdGUuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLUluc3RhbGxEYXRlVXNlZFwnICldIiktPmNsaWNrKCk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1N1Ym1pdCddW1xAdHlwZT0nc3VibWl0J10iKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTd2l0Y2ggYmFjayB0byB6b29tIHZpZXcuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZTsnCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdoMTpjb250YWlucygkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBkdXBsaWNhdGVkIENvbmZpZ0l0ZW0gdmFsdWUuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdoMTpjb250YWlucygkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSB2YWx1ZSAkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG9rKCAkU3VjY2VzcywgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQrKzsKICAgICAgICB9CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemEdit.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKI3VzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRDSUhlbHBlciAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdHMKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgY29uZmlnIGl0ZW0gY2xhc3NlcwoKICAgICAgICBteSBAVGVzdCA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNsYXNzID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBDaGVja0VkaXRGaWVsZHMgPT4gWwogICAgICAgICAgICAgICAgICAgICdOYW1lJywgJ0RlcGxTdGF0ZUlEJywgJ0luY2lTdGF0ZUlEJywgJ1ZlbmRvcicsICdNb2RlbCcsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ093bmVyJywKICAgICAgICAgICAgICAgICAgICAnU2VyaWFsTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW5nU3lzdGVtJywgJ0NQVScsICdSYW0nLCAnSGFyZERpc2snLCAnQ2FwYWNpdHknLCAnRlFETicsICdEeW5hbWljRmllbGRfQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZScsICdQb3ZlckRIQ1AnLAogICAgICAgICAgICAgICAgICAgICdHcmFwaGljQWRhcHRlcicsCiAgICAgICAgICAgICAgICAgICAgJ090aGVyRXF1aXBtZW50JywgJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnLCAnSW5zdGFsbERhdGUnLCAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnSGFyZHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdWZW5kb3InLCAnTW9kZWwnLCAnRGVzY3JpcHRpb24nLCAnVHlwZScsICdPd25lcicsCiAgICAgICAgICAgICAgICAgICAgJ1NlcmlhbE51bWJlcicsCiAgICAgICAgICAgICAgICAgICAgJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnLCAnSW5zdGFsbERhdGUnLCAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnTG9jYXRpb24nLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdUeXBlJywgJ1Bob25lMScsICdQaG9uZTInLCAnRmF4JywgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1FTWFpbCcsICdBZGRyZXNzJywKICAgICAgICAgICAgICAgICAgICAnTm90ZScsICdGaWxlVXBsb2FkJywgICdTdWJtaXQnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2xhc3MgPT4gJ05ldHdvcmsnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ05ldHdvcmtBZGRyZXNzJywgJ1N1Ym5ldE1hc2snLAogICAgICAgICAgICAgICAgICAgICdHYXRld2F5JywKICAgICAgICAgICAgICAgICAgICAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnU29mdHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdWZW5kb3InLCAnVmVyc2lvbicsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ093bmVyJywKICAgICAgICAgICAgICAgICAgICAnU2VyaWFsTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICAnTGljZW5jZVR5cGUnLCAnTGljZW5jZUtleScsICdNZWRpYScsICdOb3RlJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgPSAkRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKICAgICAgICBteSAkUmFuZG9tSUQgICAgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1FZGl0IChAVGVzdCkgewoKICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtQWRkIHNjcmVlbi4KICAgICAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUFkZCIpOwoKICAgICAgICAgICAgIyBHZXQgQ29uZmlnSXRlbSBjbGFzcyBJRC4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtRWRpdC0+e0NvbmZpZ0l0ZW1DbGFzc30sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtQ2xhc3NJRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JENvbmZpZ0l0ZW1DbGFzc0lEXCJdJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtDbGFzc0lEPSRDb25maWdJdGVtQ2xhc3NJRFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI05hbWUnKS5sZW5ndGggJiYgXCQoJyNTdWJtaXRCdXR0b24nKS5sZW5ndGgiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGZvciBDb25maWdJdGVtRWRpdCBmaWVsZHMuCiAgICAgICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtRmllbGQgKCBAeyAkQ29uZmlnSXRlbUVkaXQtPntDaGVja0VkaXRGaWVsZHN9IH0gKSB7CgogICAgICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCckQ2hlY2tDb25maWdJdGVtRmllbGRcJyApXSIpOwogICAgICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDcmVhdGUgdGVzdCBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IC4gJFJhbmRvbUlEOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRDb25maWdJdGVtTmFtZSk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgIlwkKCcjRGVwbFN0YXRlSUQnKS52YWwoJyREZXBsU3RhdGVJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjRGVwbFN0YXRlSUQnKS52YWwoKSA9PT0gJyREZXBsU3RhdGVJRCciCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI0luY2lTdGF0ZUlEJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIpOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjSW5jaVN0YXRlSUQnKS52YWwoKSA9PT0gJzEnIiApOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IGVxICdDb21wdXRlcicgKSB7CgogICAgICAgICAgICAgICAgIyBHZXQgR2VuZXJhbCBDYXRhbG9nIElEIGZvciAnWWVzJy4KICAgICAgICAgICAgICAgIG15ICRZZXNEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpZZXNObycsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1llcycsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgJFllc0lEID0gJFllc0RhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAgICAgICAgICMgRW50ZXIgTklDIG5hbWUuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZV8wXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bU5ldHdvcmsnKTsKCiAgICAgICAgICAgICAgICAjIFNlbGVjdCBZZXMgZm9yIERIQ1BPdmVySVAuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJcJCgnIycgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignRHluYW1pY0ZpZWxkX0NvbXB1dGVyLU5JQ0lQb3ZlckRIQ1BfMCcpKS52YWwoJyRZZXNJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIEVudGVyIE90aGVyIEVxdWlwbWVudC4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Db21wdXRlci1PdGhlckVxdWlwbWVudFwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gRXF1aXBtZW50Jyk7CgogICAgICAgICAgICAgICAgIyBFbnRlciBOb3Rlcy4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Db21wdXRlci1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwoKICAgICAgICAgICAgICAgICMgU2VsZWN0IGN1cnJlbnQgZGF0ZSBhcyB0aGUgaW5zdGFsbGF0aW9uIGRhdGUuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfQ29tcHV0ZXItSW5zdGFsbERhdGVVc2VkXCcgKV0iKS0+Y2xpY2soKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb25maWdJdGVtRWRpdC0+e0NvbmZpZ0l0ZW1DbGFzc30gZXEgJ05ldHdvcmsnICkgewogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX05ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJQcmltYXJ5QXR0cmlidXRlXzBcJyApXSIpLT5zZW5kX2tleXMoJ1NlbGVuaXVtIExBTicpOwoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfTmV0d29yay1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSBlcSAnSGFyZHdhcmUnICkgewoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfSGFyZHdhcmUtTm90ZVwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gTm90ZXMnKTsKCiAgICAgICAgICAgICAgICAjIFNlbGVjdCBjdXJyZW50IGRhdGUgYXMgdGhlIGluc3RhbGxhdGlvbiBkYXRlLgogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLUluc3RhbGxEYXRlVXNlZFwnICldIiktPmNsaWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IGVxICdMb2NhdGlvbicgKSB7CgogICAgICAgICAgICAgICAgIyBFbnRlciBOb3Rlcy4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSBlcSAnU29mdHdhcmUnICkgewoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfU29mdHdhcmUtTm90ZVwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gTm90ZXMnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nU3VibWl0J11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OYW1lKScpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgR2V0IENvbmZpZ0l0ZW0gdmFsdWUuCiAgICAgICAgICAgIG15IEBDb25maWdJdGVtVmFsdWVzID0gKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgICAgICBDaGVjayAgICAgICA9PiAiaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OYW1lKSIsCiAgICAgICAgICAgICAgICAgICAgQ2hlY2tSZXN1bHQgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSwKICAgICAgICAgICAgICAgICAgICBDaGVjayAgICAgICA9PiAicC5WYWx1ZTpjb250YWlucygkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9KSIsCiAgICAgICAgICAgICAgICAgICAgQ2hlY2tSZXN1bHQgPT4gMiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIHN1Ym1pdHRlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbVZhbHVlIChAQ29uZmlnSXRlbVZhbHVlcykgewogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57Q2hlY2t9JykubGVuZ3RoID09PSAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja1Jlc3VsdH0iCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAiVGVzdCBDb25maWdJdGVtIHZhbHVlICRDaGVja0NvbmZpZ0l0ZW1WYWx1ZS0+e1ZhbHVlfSAtIGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IENvbmZpZ0l0ZW1JRC4KICAgICAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJwogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIEBDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gZm91bmQgZm9yIGRlbGV0aW9uIC0gSUQgJENvbmZpZ0l0ZW1JRHNbMF0iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEc1swXSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemHistory.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgojIGdldCBzZWxlbml1bSBvYmplY3QKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdHMKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICAgICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAgICAgIyBnZXQgY2F0YWxvZyBjbGFzcyBJRHMKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwoKICAgICAgICAjIEdldCAnSGFyZHdhcmUnIGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwogICAgICAgIG15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlEID0gJFByb2R1Y3Rpb25EZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBzZXQgTmFtZSB1cGRhdGUgYXMgYSB2ZXJzaW9uIHRyaWdnZXJpbmcgZXZlbnQKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWydOYW1lJ10KICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICk7CgogICAgICAgICMgQWRkIHRoZSBuZXcgQ29uZmlnSXRlbS4KICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bSBUZXN0JywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICApOwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgbXkgJEZpcnN0VmVyc2lvbklEID0gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKCiAgICAgICAgIyBBZGQgYSBuZXcgdmVyc2lvbi4KICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAnSGFyZHdhcmUnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkQ29uZmlnSXRlbU5vdGUgPSAnU29tZSBTZWxlbml1bSB0ZXN0IG5vdGUnOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICdEeW5hbWljRmllbGRfSGFyZHdhcmUtTm90ZScgPT4gJENvbmZpZ0l0ZW1Ob3RlLAogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICBteSAkU2Vjb25kVmVyc2lvbklEID0gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWNvbmRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkU2Vjb25kVmVyc2lvbklEIgogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGVzdCB1c2VyIElECiAgICAgICAgbXkgJFRlc3RVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIGNoZWNrIGZvciBlcnJvciBtZXNzYWdlIHdoZW4gbm8gQ29uZmlnSXRlbUlEIGlzIHByb3ZpZGVkIGluIGhpc3Rvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkiKTsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZU5vSUQgPSAnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISc7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRXJyb3JNZXNzYWdlTm9JRCApID4gLTEsCiAgICAgICAgICAgICJFcnJvciBtZXNzYWdlICRFcnJvck1lc3NhZ2VOb0lEIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGhpc3RvcnkgbWVzc2FnZXMgbGlzdAogICAgICAgIG15IEBIaXN0b3J5TWVzc2FnZXMgPSAoCiAgICAgICAgICAgICJOZXcgQ29uZmlnSXRlbSAoSUQ9JENvbmZpZ0l0ZW1JRCkiLAogICAgICAgICAgICAiTmV3IHZlcnNpb24gKElEPSRGaXJzdFZlcnNpb25JRCIsCiAgICAgICAgICAgICJOZXcgdmVyc2lvbiAoSUQ9JFNlY29uZFZlcnNpb25JRCIsCiAgICAgICAgICAgICJBdHRyaWJ1dGUgSGFyZHdhcmUtTm90ZSB1cGRhdGVkIGZyb20gXCJcIiB0byBcIlNvbWUgU2VsZW5pdW0gdGVzdCBub3RlXCIiLAogICAgICAgICAgICAiTmFtZSB1cGRhdGVkIChuZXc9JENvbmZpZ0l0ZW1OYW1lLCBvbGQ9U2VsZW5pdW0gVGVzdCkiLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIGhpc3RvcnkgbWVzc2FnZXMgaW4gaGlzdG9yeSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgJERCOjpzaW5nbGUgPSAxOwoKICAgICAgICBmb3IgbXkgJEhpc3RvcnlNZXNzYWdlIChASGlzdG9yeU1lc3NhZ2VzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRIaXN0b3J5TWVzc2FnZSApID4gLTEsCiAgICAgICAgICAgICAgICAiSGlzdG9yeSBtZXNzYWdlICRIaXN0b3J5TWVzc2FnZSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICREQjo6c2luZ2xlID0gMTsKCiAgICAgICAgIyByZW1vdmUgaXRzbS1jb25maWdpdGVtICdybycgYWNjZXNzIHJpZ2h0IGZvciB0ZXN0IHVzZXIKICAgICAgICAjIGdldCBncm91cCBvYmplY3QKICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgIyBnZXQgJ2l0c20tY29uZmlnaXRlbScgZ3JvdXAgSUQKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1Hcm91cElEID0gJEdyb3VwT2JqZWN0LT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1vdmUgYWNjZXNzIHJpZ2h0cyB0byB0ZXN0IHVzZXIKICAgICAgICAkR3JvdXBPYmplY3QtPkdyb3VwTWVtYmVyQWRkKAogICAgICAgICAgICBHSUQgICAgICAgID0+ICRJVFNNQ29uZmlnSXRlbUdyb3VwSUQsCiAgICAgICAgICAgIFVJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICAgICAgcm8gPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBmb3IgZXJyb3IgbWVzc2FnZSB3aGVuIHVzZXIgaGF2ZSBubyBhY2Nlc3MgcmlnaHRzIGluIGhpc3Rvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgIG15ICRFcnJvck1lc3NhZ2VOb1Blcm1pc3Npb24gPSAnTm8gUGVybWlzc2lvbiB0byB1c2UgdGhpcyBmcm9udGVuZCBtb2R1bGUhJzsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRFcnJvck1lc3NhZ2VOb1Blcm1pc3Npb24gKSA+IC0xLAogICAgICAgICAgICAiRXJyb3IgbWVzc2FnZSAkRXJyb3JNZXNzYWdlTm9QZXJtaXNzaW9uIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIsCiAgICAgICAgKTsKICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemPrint.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgojIHNvbWUgc2V0dXAgYmVmb3JlIHN0YXJ0aW5nIHRoZSBTZWxlbml1bSB0ZXN0CnNraXBfYWxsKCdTa2lwcGluZyBDTURCIFNlbGVuaXVtIHRlc3RzIHRlbXBvcmFyaWx5LicpOwoKb3VyICRTZWxmOwoKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKaWYgKCAkU2VsZW5pdW0tPnticm93c2VyX25hbWV9IG5lICdmaXJlZm94JyApIHsKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDEsCiAgICAgICAgIlBERiB0ZXN0IGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIEZpcmVmb3giLAogICAgKTsKICAgIHJldHVybiAxOwp9CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgR2V0ICdIYXJkd2FyZScgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAogICAgICAgICk7CiAgICAgICAgbXkgJEhhcmR3YXJlQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzLgogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICk7CgogICAgICAgICMgQWRkIHRoZSBuZXcgQ29uZmlnSXRlbS4KICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgYSBuZXcgdmVyc2lvbi4KICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VsZW5pdW1UZXN0JywKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkVmVyc2lvbklEIgogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU0NvbmZpZ0l0ZW1ab29tIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRCIpOwoKICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIHRoZSBsaW5rIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJ2FbaHJlZio9XCJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEXCJdJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIEdvIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCBzY3JlZW4gZm9yIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPmdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRCIKICAgICAgICApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcHJpbnQgc2NyZWVuIGlzIGxvYWRlZC4KICAgICAgICBBQ1RJVkVTTEVFUDoKICAgICAgICBmb3IgbXkgJFNlY29uZCAoIDEgLi4gMzAgKSB7CiAgICAgICAgICAgIGlmICggaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlLCAncHJpbnRlZCBieScgKSA+IC0xLCApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAicHJpbnRlZCBieSIgKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICJQcmludCBzY3JlZW4gaXMgbG9hZGVkIGFmdGVyICRTZWNvbmQgc2Vjb25kcyIsCiAgICAgICAgICAgICAgICApIHx8IGRpZTsKCiAgICAgICAgICAgICAgICBsYXN0IEFDVElWRVNMRUVQOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNsZWVwIDE7CiAgICAgICAgfQoKICAgICAgICAjIEdldCB0ZXN0IHByaW50IHZhbHVlcy4KICAgICAgICBteSBAQ29uZmlnSXRlbVByaW50ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW1OdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ1NlbGVuaXVtVGVzdCcsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJDb25maWdJdGVtOiBTZWxlbml1bVRlc3QgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ0hhcmR3YXJlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNsYXNzOiBIYXJkd2FyZSAtIGZvdW5kIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJDdXJyZW50IERlcGxveW1lbnQgU3RhdGU6IFByb2R1Y3Rpb24gLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkN1cnJlbnQgSW5jaWRlbnQgU3RhdGU6IE9wZXJhdGlvbmFsIC0gZm91bmQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICdWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiQ3VycmVudCBWZXJzaW9uOiBWZXJzaW9uIDEgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBmb3IgcHJpbnRlZCB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtUHJpbnQpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENvbmZpZ0l0ZW1WYWx1ZS0+e1ZhbHVlfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJENvbmZpZ0l0ZW1WYWx1ZS0+e01lc3NhZ2V9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICk7CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemSearch.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdDb21wdXRlcicgQ29uZmlnSXRlbSBJRC4KICAgICAgICBteSBAQ29uZmlnSXRlbUNsYXNzSURzOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNsYXNzIChxdyhDb21wdXRlcikpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtQ2xhc3MsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlEID0gJFByb2R1Y3Rpb25EZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXJzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBmb3IgKCAxIC4uIDIgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSAkQ29uZmlnSXRlbU51bWJlciBudW1iZXIgaXMgY3JlYXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtcy4KICAgICAgICBteSAkSW5jaVN0YXRlSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0luY2lkZW50JywKICAgICAgICApOwoKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBteSAkQ291bnQgICAgPSAxOwogICAgICAgIG15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ3JlYXRlTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1DcmVhdGVOdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRDb3VudCAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlSUQtPntJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGlzIGNyZWF0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCIpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBhbmQgb3ZlcmxheSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaENsYXNzSUQnKS5sZW5ndGgiICk7CgogICAgICAgICMgQ2hlY2sgZm9yICdDbGFzcycgbGFiZWwuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnbGFiZWxbZm9yPVwiQ2xhc3NcIl0nKS5sZW5ndGgiKSwKICAgICAgICAgICAgIkNsYXNzIGxhYmVsIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yICdDbGFzcycgc2VsZWN0IGJveC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoQ2xhc3NJRCIsICdjc3MnICksCiAgICAgICAgICAgICJDbGFzcyBzZWxlY3QgYm94IC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQmUgc3VyZSBtb2Rlcm5pemVkIGZpZWxkIGhhcyBsb2FkZWQuCiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBTZWxlY3QgJ0NvbXB1dGVyJyBjbGFzcy4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hDbGFzc0lEJykudmFsKCckQ29uZmlnSXRlbUNsYXNzSURzWzBdJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBCZSBzdXJlIGFsbCBmaWVsZHMgYXJlIGxvYWRlZC4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1NlYXJjaEZvcm1TdWJtaXQiKS5sZW5ndGg7JywKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENvbmZpZ0l0ZW0gc2VhcmNoIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KFNlYXJjaENsYXNzSUQgU2VhcmNoUHJvZmlsZSBTZWFyY2hQcm9maWxlTmV3IEF0dHJpYnV0ZSBSZXN1bHRGb3JtIFNlYXJjaEZvcm1TdWJtaXQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHNsZWVwIDE7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyMkSUQnKS5sZW5ndGgiICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyMkSUQnKS5sZW5ndGg7IiksCiAgICAgICAgICAgICAgICAiRWxlbWVudCBpcyBmb3VuZCAtICRJRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIElUU01DaGFuZ2UgU2VhcmNoIGZvcm0gY29udGFpbiBFeGNlbCBvdXRwdXQgb3B0aW9uLCBzZWUgYnVnIzEyNzY5LgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNSZXN1bHRGb3JtIG9wdGlvbjpjb250YWlucyhcIkV4Y2VsXCIpJykubGVuZ3RoIgogICAgICAgICAgICApLAogICAgICAgICAgICAnMScsCiAgICAgICAgICAgICdJVFNNQ29uZmlnSXRlbSBTZWFyY2ggY29udGFpbiBFeGNlbCBvdXRwdXQnLAogICAgICAgICk7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IHNvcnQgYnkgbnVtYmVyIGRlc2MKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0JywKICAgICAgICAgICAgVmFsdWUgPT4gJ051bWJlcicsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWFyY2ggQ29uZmlnSXRlbXMgYnkgdGVzdCBDb25maWdJdGVtIG51bWJlciBhbmQgbmFtZXMuCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNBdHRyaWJ1dGUnKS52YWwoJ05hbWUnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hJbnNlcnQgaW5wdXRbbmFtZT1cIk5hbWVcIl0nKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOdW1iZXInXSIpLT5zZW5kX2tleXMoJyonKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J05hbWUnXSIpLT5zZW5kX2tleXMoICcqJyAuICRSYW5kb21JRCApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTZWFyY2hGb3JtU3VibWl0IiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiAhXCQoJ0RpYWxvZy5Nb2RhbCcpLmxlbmd0aCAmJiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCcpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBleHBlY3RlZCByZXN1bHQuCiAgICAgICAgZm9yIG15ICRDaGVja0NvbmZpZ0l0ZW0gKEBDb25maWdJdGVtTnVtYmVycykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCB0ZDpjb250YWlucygkQ2hlY2tDb25maWdJdGVtKScpLmxlbmd0aCIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSAkQ2hlY2tDb25maWdJdGVtIG51bWJlciBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFZlcmlmeSBzb3J0aW5nIGluIHRhYmxlLCBieSBkZWZhdWx0IHNvcnRpbmcgaXMgZG9uZSBieSBDb25maWdJdGVtTnVtYmVyIC0gc29ydCBkZXNjZW5kaW5nLgogICAgICAgICMgTG93ZXIgSUQgd2lsbCBvbiB0aGUgYm90dG9tIG9mIHRhYmxlLgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCd0Ym9keSB0cjplcSgwKScpLmF0dHIoJ2lkJykiKSwKICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1JRF8nIC4gJENvbmZpZ0l0ZW1JRHNbMV0sCiAgICAgICAgICAgICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRHNbMV0gaXMgb24gdG9wIG9mIHRhYmxlIHNvcnQgYnkgTnVtYmVyIGFzY2VuZGluZyIKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMSknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzBdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzBdIGlzIG9uIGJvdHRvbSBvZiB0YWJsZSBzb3J0IGJ5IE51bWJlciBhc2NlbmRpbmciCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayB0byBzb3J0IGJ5IE5hbWUuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIuTmFtZSIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBmb3IgZXhwZWN0ZWQgcmVzdWx0LgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNPdmVydmlld0JvZHkgLlRhYmxlU21hbGwgdGQ6Y29udGFpbnMoJENoZWNrQ29uZmlnSXRlbSknKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gJENoZWNrQ29uZmlnSXRlbSBudW1iZXIgaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBTb3J0IGlzIGJ5IE5hbWUgZGVzY2VuZGluZy4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMCknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzFdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzFdIGlzIG9uIHRvcCBvZiB0YWJsZSBzb3J0IGJ5IE5hbWUgZGVzY2VuZGluZyIKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMSknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzBdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzBdIGlzIG9uIGJvdHRvbSBvZiB0YWJsZSBzb3J0IGJ5IE5hbWUgZGVzY2VuZGluZyIKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIHRvIHNvcnQgYnkgTmFtZSBhZ2Fpbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIi5OYW1lIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIFZlcmlmeSBvcmRlciBpcyBjaGFuZ2VkLCBzb3J0IGJ5IE5hbWUgYXNjZW5kaW5nLgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCd0Ym9keSB0cjplcSgwKScpLmF0dHIoJ2lkJykiKSwKICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1JRF8nIC4gJENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgICAgICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRHNbMF0gaXMgb24gdG9wIG9mIHRhYmxlIHNvcnQgYnkgTmFtZSBhc2NlbmRpbmciCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMSknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzFdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzFdIGlzIG9uIGJvdHRvbSBvZiB0YWJsZSBzb3J0IGJ5IE5hbWUgYXNjZW5kaW5nIgogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVycyBhbmQgYWRkIHRoZSBuZXcgQ29uZmlnSXRlbXMuCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZDEgPSAoCiAgICAgICAgICAgICdEeW5hbWljRmllbGRfQ29tcHV0ZXItTklDJyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJ0NvbXB1dGVyLU5JQ1N1YlByaW1hcnlBdHRyaWJ1dGUnID0+ICdUZXN0IG5ldHdvcmsgYWRhcHRlcicsCiAgICAgICAgICAgICAgICAgICAgJ0NvbXB1dGVyLU5JQ0lQQWRkcmVzcycgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJzE3Mi4wLjAuMCcKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICdDb21wdXRlci1OSUNJUG92ZXJESENQJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDMyCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUnID0+ICcyMDE3LTEwLTEwIDAwOjAwOjAwJwogICAgICAgICk7CiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZDIgPSAoCiAgICAgICAgICAgICdEeW5hbWljRmllbGRfQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZScgPT4gJzIwMTctMTEtMTEgMDA6MDA6MDAnCiAgICAgICAgKTsKCiAgICAgICAgQENvbmZpZ0l0ZW1OdW1iZXJzID0gKCk7CiAgICAgICAgJENvdW50ICAgICAgICAgICAgID0gMTsKICAgICAgICBmb3IgKCAxIC4uIDM1ICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1OdW1iZXIgbnVtYmVyIGlzIGNyZWF0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1OdW1iZXJzLCAkQ29uZmlnSXRlbU51bWJlcjsKICAgICAgICAgICAgbXkgJUR5bmFtaWNGaWVsZCA9ICggJENvdW50IDw9IDMwICkgPyAlRHluYW1pY0ZpZWxkMSA6ICVEeW5hbWljRmllbGQyOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAkQ291bnQgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUlELT57SXRlbUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSUQgaXMgY3JlYXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgZHluYW1pYyBmaWVsZHMgYXMgc2VhcmNoYWJsZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAnQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZScgPT4gJzEnLAogICAgICAgICAgICAgICAgJ0NvbXB1dGVyLU5JQ0lQQWRkcmVzcycgICAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIHNlYXJjaCBvcHRpb24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSVRTTUNvbmZpZ0l0ZW1TZWFyY2giLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gXCQoJyNBdHRyaWJ1dGUnKS5sZW5ndGgiICk7CgogICAgICAgICMgQWRkIHNlYXJjaCBmaWx0ZXIgYnkgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSBhbmQgc2V0IGRhdGUgcmFuZ2UgKDgtMTAtMjAxNyAtIDE1LTEwLTIwMTcpLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0F0dHJpYnV0ZScpLnZhbCgnU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3QnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnaW5wdXRbbmFtZT1cIlNlYXJjaF9EeW5hbWljRmllbGRfQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZVRpbWVTbG90XCJdJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJTZWFyY2hfRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGVUaW1lU2xvdFN0YXJ0RGF5XCJdJykudmFsKCc4Jyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjU2VhcmNoSW5zZXJ0IHNlbGVjdFtpZD1cIlNlYXJjaF9EeW5hbWljRmllbGRfQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZVRpbWVTbG90U3RhcnRNb250aFwiXScpLnZhbCgnMTAnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdGFydFllYXJcIl0nKS52YWwoJzIwMTcnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdG9wRGF5XCJdJykudmFsKCcxNScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJTZWFyY2hfRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGVUaW1lU2xvdFN0b3BNb250aFwiXScpLnZhbCgnMTAnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdG9wWWVhclwiXScpLnZhbCgnMjAxNycpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTnVtYmVyJ10iKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J051bWJlciddIiktPnNlbmRfa2V5cygnKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTmFtZSddIiktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+c2VuZF9rZXlzKCAnKicgLiAkUmFuZG9tSUQgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmICFcJCgnRGlhbG9nLk1vZGFsJykubGVuZ3RoICYmIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5QYWdpbmF0aW9uJykudGV4dCgpLnRyaW0oKS5pbmRleE9mKCcxLTI1IG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gb24gdGhlIGZpcnN0IHBhZ2UiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRib2R5IHRyJykubGVuZ3RoOyIpLAogICAgICAgICAgICAnMjUnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBvbiB0aGUgZmlyc3QgcGFnZSBpcyBjb3JyZWN0IC0gMjUiLAogICAgICAgICk7CgogICAgICAgICMgR28gdG8gdGhlIHNlY29uZCBwYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2hQYWdlMiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlBhZ2luYXRpb24nKS50ZXh0KCkudHJpbSgpLmluZGV4T2YoJzI2LTMwIG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gb24gdGhlIHNlY29uZCBwYWdlIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCB0Ym9keSB0cicpLmxlbmd0aDsiKSwKICAgICAgICAgICAgJzUnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBvbiB0aGUgc2Vjb25kIHBhZ2UgaXMgY29ycmVjdCAtIDUiLAogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIHNlYXJjaCBvcHRpb24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSVRTTUNvbmZpZ0l0ZW1TZWFyY2giLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gXCQoJyNBdHRyaWJ1dGUnKS5sZW5ndGggJiYgXCQoJyNTZWFyY2hJbnNlcnQgaW5wdXRbbmFtZT1cIk5hbWVcIl0nKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgIyBJbnB1dCB3cm9uZyBzZWFyY2ggcGFyYW1ldGVycywgcmVzdWx0IHNob3VsZCBiZSAnTm8gZGF0YSBmb3VuZCcuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J05hbWUnXSIpLT5zZW5kX2tleXMoJ2FzZGZnJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgIVwkKCdEaWFsb2cuTW9kYWwnKS5sZW5ndGggJiYgXCQoJyNPdmVydmlld0JvZHkgI0VtcHR5TWVzc2FnZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIHJlc3VsdC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLicgKSA+IC0xLAogICAgICAgICAgICAiJ05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJyAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICJDaGFuZ2Ugc2VhcmNoIG9wdGlvbiIKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJVFNNQ29uZmlnSXRlbVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGVOZXcnKS5sZW5ndGgiICk7CiAgICAgICAgc2xlZXAgMjsKCiAgICAgICAgIyBDcmVhdGUgbmV3IHRlbXBsYXRlIHNlYXJjaC4KICAgICAgICBteSAkU2VhcmNoUHJvZmlsZU5hbWUgPSAiU2VhcmNoLSIgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVOZXciLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hQcm9maWxlQWRkTmFtZScpLmxlbmd0aCIgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoUHJvZmlsZUFkZE5hbWUiLCAgICdjc3MnICktPnNlbmRfa2V5cygkU2VhcmNoUHJvZmlsZU5hbWUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVBZGRBY3Rpb24iLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgPT09ICckU2VhcmNoUHJvZmlsZU5hbWUnIgogICAgICAgICk7CgogICAgICAgICMgRXhlY3V0ZSBzZWFyY2ggd2l0aCBuZXcgc2VhcmNoIHByb2ZpbGUgdG8gc2F2ZSBpdC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J051bWJlciddIiktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOdW1iZXInXSIpLT5zZW5kX2tleXMoJyonKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J05hbWUnXSIpLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTmFtZSddIiktPnNlbmRfa2V5cyggJyonIC4gJFJhbmRvbUlEICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaEZvcm1TdWJtaXQiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmICFcJCgnRGlhbG9nLk1vZGFsJykubGVuZ3RoICYmIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgb24gIkNoYW5nZSBzZWFyY2ggb3B0aW9uIgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0lUU01Db25maWdJdGVtU2VhcmNoIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgbmV3bHkgY3JlYXRlZCBzZWFyY2ggcHJvZmlsZS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCckU2VhcmNoUHJvZmlsZU5hbWUnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSA9PT0gJyRTZWFyY2hQcm9maWxlTmFtZSc7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGVBc0xpbms6dmlzaWJsZScpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGJ1dHRvbiBmb3IgcHJvZmlsZSBsaW5rLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVBc0xpbmsiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZScKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICJDaGFuZ2Ugc2VhcmNoIG9wdGlvbiIKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJVFNNQ29uZmlnSXRlbVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSA9PT0gJyRTZWFyY2hQcm9maWxlTmFtZSciCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCk7IiksCiAgICAgICAgICAgICRTZWFyY2hQcm9maWxlTmFtZSwKICAgICAgICAgICAgIkNoZWNrIGlmIHByb2ZpbGUgaXMgbG9hZGVkIHdlbGwiCiAgICAgICAgKTsKCiAgICAgICAgIyBWZXJpZnkgc2VhcmNoIHJlc3VsdCByZW1haW5lZCBpbnRhY3QgYWZ0ZXIgY2hhbmdpbmcgaXRlbXMgcGVyIHBhZ2UsIHNlZSBidWcjMTQ3MTcgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICAjIFNldCAxMCBjb25maWcgaXRlbXMgcGVyIHBhZ2UuCgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLkRpYWxvZyAuQ2xvc2UiLCAgICAgICAgICAgICAgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggImEjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZyIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gJCgiLkRpYWxvZy5Nb2RhbCAjVXNlckNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duIikubGVuZ3RoJwogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5JbnB1dEZpZWxkVmFsdWVTZXQoCiAgICAgICAgICAgIEVsZW1lbnQgPT4gJyNVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxQYWdlU2hvd24nLAogICAgICAgICAgICBWYWx1ZSAgID0+ICcxMCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEaWFsb2dCdXR0b24xIiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiAhJCgiLkRpYWxvZy5Nb2RhbCIpLmxlbmd0aCcKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIGNvcnJlY3QgbnVtYmVyIG9mIGl0ZW1zIGFyZSBzaG93biBvbiBwYWdpbmF0aW9uLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5QYWdpbmF0aW9uJykudGV4dCgpLnRyaW0oKS5pbmRleE9mKCcxLTEwIG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gYWZ0ZXIgc3dpdGNoIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRib2R5IHRyJykubGVuZ3RoOyIpLAogICAgICAgICAgICAnMTAnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBpcyBjb3JyZWN0IC0gMTAiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZUlEIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtRGVsZXRlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1EZWxldGVJRCBpcyBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgIGZvciBteSAkQ2FjaGUgKHF3KENvbmZpZ0l0ZW0gVmVyc2lvbikpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKCBUeXBlID0+ICRDYWNoZSApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemZoom.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgojIGdldCBzZWxlbml1bSBvYmplY3QKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgJ0hhcmR3YXJlJyBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwogICAgICAgIG15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgZ2V0ICdQcm9kdWN0aW9uJyBhbmQgJ1JlcGFpcicgZGVwbG95bWVudCBzdGF0ZSBJRHMKICAgICAgICBteSBARGVwbFN0YXRlSURzOwogICAgICAgIG15IEBEZXBsU3RhdGVzID0gKHF3KFByb2R1Y3Rpb24gUmVwYWlyKSk7CiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWY7CiAgICAgICAgZm9yIG15ICREZXBsU3RhdGUgKEBEZXBsU3RhdGVzKSB7CiAgICAgICAgICAgICREZXBsU3RhdGVEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRGVwbFN0YXRlLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBEZXBsU3RhdGVJRHMsICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgIG15ICRIYXJkd2FyZUNsYXNzRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwoKICAgICAgICAjIHNldCBOYW1lIHVwZGF0ZSBhcyBhIHZlcnNpb24gdHJpZ2dlcmluZyBldmVudAogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRIYXJkd2FyZUNsYXNzRGF0YVJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWydOYW1lJ10KICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBDb25maWdJdGVtIG51bWJlcgogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGhlIG5ldyBDb25maWdJdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgYWRkIHR3byB2ZXJzaW9ucwogICAgICAgIG15IEBVcGRhdGVkTmFtZXMgPSAoICdTZWxlbml1bVRlc3QyJywgJ1NlbGVuaXVtVGVzdDMnICk7CiAgICAgICAgbXkgJU5hbWVzQnlWZXJzaW9uOwogICAgICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWROYW1lcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJOYW1lIGlzIHVwZGF0ZWQgLSAnJE5hbWUnIgogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9IgogICAgICAgICAgICApOwogICAgICAgICAgICAkTmFtZXNCeVZlcnNpb257ICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0gfSA9ICROYW1lOwogICAgICAgIH0KICAgICAgICBteSBAVmVyc2lvbklEcyA9IHNvcnQga2V5cyAlTmFtZXNCeVZlcnNpb247CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO1NvcnRCeT1OdW1iZXI7T3JkZXJCeT1Eb3duO1ZpZXc9O0ZpbHRlcj0kSGFyZHdhcmVDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiBjcmVhdGVkIENvbmZpZ0l0ZW0uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyggdGV4dCgpLCAnJENvbmZpZ0l0ZW1OdW1iZXInICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBnZXQgQ29uZmlnSXRlbSB2YWx1ZSBwYXJhbXMKICAgICAgICBteSBAQ29uZmlnSXRlbVZhbHVlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgPT4gJ0hhcmR3YXJlJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdwLlZhbHVlOmNvbnRhaW5zKEhhcmR3YXJlKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ3AuVmFsdWU6Y29udGFpbnMoU2VsZW5pdW1UZXN0MyknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnUmVwYWlyJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdkaXYuVmFsdWU6Y29udGFpbnMoUmVwYWlyKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnZGl2LlZhbHVlOmNvbnRhaW5zKE9wZXJhdGlvbmFsKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICIkQ29uZmlnSXRlbU51bWJlciIsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAiaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OdW1iZXIpIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIENvbmZpZ0l0ZW0gdmFsdWVzIG9uIHNjcmVlbgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtVmFsdWVzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCckQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja30nKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSB2YWx1ZSAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntWYWx1ZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFZlcnNpb25JRCAoQFZlcnNpb25JRHMpIHsKICAgICAgICAgICAgbXkgJFZhbHVlID0gIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEO1ZlcnNpb25JRD0kVmVyc2lvbklEIjsKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI1ZlcnNpb25TZWxlY3Rpb24nKS52YWwoJyRWYWx1ZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyROYW1lc0J5VmVyc2lvbnskVmVyc2lvbklEfScpLmxlbmd0aCIsCiAgICAgICAgICAgICAgICAiJE5hbWVzQnlWZXJzaW9ueyRWZXJzaW9uSUR9ICgkVmVyc2lvbklEKSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRlc3QgbWVudSBidXR0b25zIHBhcmFtcwogICAgICAgIG15IEBNZW51QnV0dG9ucyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQmFjaycsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9RG93bjtWaWV3PTtGaWx0ZXI9JEhhcmR3YXJlQ29uZmlnSXRlbUlEIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnSGlzdG9yeScsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRHNbMV0iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdFZGl0JywKICAgICAgICAgICAgICAgIExpbmsgPT4gIkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHJpbnQnLAogICAgICAgICAgICAgICAgTGluayA9PiAiQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEO1ZlcnNpb25JRD0kVmVyc2lvbklEc1sxXSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgTGluayA9PiAiQWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1JVFNNQ29uZmlnSXRlbTtTb3VyY2VLZXk9JENvbmZpZ0l0ZW1JRCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R1cGxpY2F0ZScsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7RHVwbGljYXRlSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRHNbMV0iLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbWVudSBidXR0b25zCiAgICAgICAgZm9yIG15ICRNZW51QnV0dG9uQ2hlY2sgKEBNZW51QnV0dG9ucykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJyRNZW51QnV0dG9uQ2hlY2stPntMaW5rfScgKV0iKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJNZW51IGJ1dHRvbiAkTWVudUJ1dHRvbkNoZWNrLT57TmFtZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbQogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICk7CiAgICB9CgopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentLinkObject.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgojIE5PVEU6IFRoZSB0ZXN0IHJ1bnMgc3VjY2Vzc2Z1bGx5LCBidXQgd2l0aCB0aGUgc2lkZSBlZmZlY3Qgb2YgZXJyb3IgbWVzc2FnZXMgZnJvbSB0aGUgRVMgd2hlbiB0aWNrZXRzIGFyZSBkZWxldGVkCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3RzCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyk7CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAkSGVscGVyID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRXZWJzZXJ2aWNlT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiAgICAgICAgbXkgJFRpY2tldE9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgZGlzYWJsZSBFUwogICAgICAgIG15ICVFbGFzdGljU2VhcmNoQWN0aXZlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdFbGFzdGljc2VhcmNoOjpBY3RpdmUnLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICAgICAgS2V5ICAgPT4gJ0VsYXN0aWNzZWFyY2g6OkFjdGl2ZScsCiAgICAgICAgICAgIFZhbHVlID0+ICRFbGFzdGljU2VhcmNoQWN0aXZle0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICk7CgogICAgICAgICMgZGlzYWJsZSBFUyB3ZWJzZXJ2aWNlCiAgICAgICAgbXkgJFdlYnNlcnZpY2UgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUdldCgKICAgICAgICAgICAgSUQgPT4gMSwKICAgICAgICApOwogICAgICAgIG15ICRXZWJTZXJ2aWNlRGlzYWJsZWQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAgICAgSUQgICAgICA9PiAkV2Vic2VydmljZS0+e0lEfSwKICAgICAgICAgICAgTmFtZSAgICA9PiAkV2Vic2VydmljZS0+e05hbWV9LAogICAgICAgICAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlLT57Q29uZmlnfSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAyLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFdlYlNlcnZpY2VEaXNhYmxlZCwKICAgICAgICAgICAgIldlYnNlcnZpY2UgJyRXZWJzZXJ2aWNlLT57TmFtZX0nIGlzIGRpc2FibGVkIgogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNhdGFsb2cgbGVnYWN5IGNsYXNzZXMgSURzCiAgICAgICAgJElUU01Db25maWdJdGVtSGVscGVyLT5UZXN0Q29uZmlnSXRlbUNyZWF0ZUxlZ2FjeUNsYXNzZXMoCiAgICAgICAgICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgQ29tcHV0ZXIgYW5kIEhhcmR3YXJlIGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtIChxdyhDb21wdXRlciBIYXJkd2FyZSkpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgdHdvIHRlc3QgQ29uZmlnSXRlbXMgZm9yIENvbXB1dGVyIGFuZCBIYXJkd2FyZSBDb25maWdJdGVtIGNsYXNzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBmb3IgbXkgJElUU01Db25maWdJdGVtIChAQ29uZmlnSXRlbUNsYXNzSURzKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRJVFNNQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVJRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnU2VsZW5pdW0gVGVzdCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRlc3Qgc2VydmljZS4KICAgICAgICBteSAkU2VydmljZU5hbWUgPSAiU2VydmljZSIgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTZXJ2aWNlSUQgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VBZGQoCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRTZXJ2aWNlTmFtZSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgQ29tbWVudCAgICAgPT4gJ1NlbGVuaXVtIFRlc3QgU2VydmljZScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgID0+IDIsCiAgICAgICAgICAgIENyaXRpY2FsaXR5ID0+ICczIG5vcm1hbCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlcnZpY2VJRCwKICAgICAgICAgICAgIlNlcnZpY2UgaXMgY3JlYXRlZCAtIElEICRTZXJ2aWNlSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB0aWNrZXQuCiAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwogICAgICAgIG15ICRUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgIFROICAgICAgICAgICA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NlbGVuaXVtVGVzdFRpY2tldCcsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgICAgICAgICBDdXN0b21lcklEICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAiVGlja2V0IGlzIGNyZWF0ZWQgLSBJRCAkVGlja2V0SUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJywgJ2l0c20tc2VydmljZScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtWm9vbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEc1swXSIKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICdMaW5rJyBtZW51LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1JVFNNQ29uZmlnSXRlbTtTb3VyY2VLZXk9JENvbmZpZ0l0ZW1JRHNbMF1cJyApXSIKICAgICAgICApLT5jbGljaygpOwoKICAgICAgICAjIFN3aXRjaCB0byAnTGluaycgd2luZG93LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZihDb3JlKSA9PSAib2JqZWN0IiAmJiB0eXBlb2YoQ29yZS5BcHApID09ICJvYmplY3QiICYmIENvcmUuQXBwLlBhZ2VMb2FkQ29tcGxldGUnCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgSGFyZHdhcmUgQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUYXJnZXRJZGVudGlmaWVyJykudmFsKCdJVFNNQ29uZmlnSXRlbTo6JENvbmZpZ0l0ZW1DbGFzc0lEc1sxXScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTRUFSQ0hcXFxcOlxcXFw6TnVtYmVyIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIENoZWNrICdMaW5rJyBzY3JlZW4gZm9yIHR3byBDb25maWdJdGVtcy4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoVGFyZ2V0SWRlbnRpZmllciBTdWJtaXRTZWFyY2gpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBTZWFyY2ggQ29uZmlnSXRlbSBieSBpdHMgbnVtYmVyIGFuZCBzZWxlY3QgcmVzdWx0LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NFQVJDSDo6TnVtYmVyJ10iKS0+c2VuZF9rZXlzKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0gKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJtaXRTZWFyY2giLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI0xpbmtUYXJnZXRLZXlzJywgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICBzbGVlcCAxOwoKICAgICAgICAjIFNlbGVjdCAnQWx0ZXJuYXRpdmVUbycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGlkPSdBZGRMaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgU2VydmljZS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUYXJnZXRJZGVudGlmaWVyJykudmFsKCdTZXJ2aWNlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgc2xlZXAgMjsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1NFQVJDSFxcXFw6XFxcXDpOYW1lIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIFNlYXJjaCBTZXJ2aWNlIGJ5IG5hbWUgYW5kIHNlbGVjdCByZXN1bHQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nU0VBUkNIOjpOYW1lJ10iKS0+c2VuZF9rZXlzKCRTZXJ2aWNlTmFtZSk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0U2VhcmNoIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J0xpbmtUYXJnZXRLZXlzJ11bXEB2YWx1ZT0nJFNlcnZpY2VJRCddIiktPmNsaWNrKCk7CgogICAgICAgICMgU2VsZWN0ICdSZWxldmFudCB0bycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1R5cGVJZGVudGlmaWVyJykudmFsKCdSZWxldmFudFRvOjpTb3VyY2UnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGlkPSdBZGRMaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgVGlja2V0LgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1RhcmdldElkZW50aWZpZXInKS52YWwoJ1RpY2tldCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTRUFSQ0hcXFxcOlxcXFw6VGlja2V0TnVtYmVyIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIFNlYXJjaCBUaWNrZXQgYnkgbnVtYmVyIGFuZCBzZWxlY3QgcmVzdWx0LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NFQVJDSDo6VGlja2V0TnVtYmVyJ10iKS0+c2VuZF9rZXlzKCRUaWNrZXROdW1iZXIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1Ym1pdFNlYXJjaCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nTGlua1RhcmdldEtleXMnXVtcQHZhbHVlPSckVGlja2V0SUQnXSIpLT5jbGljaygpOwoKICAgICAgICAjIFNlbGVjdCAnRGVwZW5kcyB0bycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1R5cGVJZGVudGlmaWVyJykudmFsKCdEZXBlbmRzT246OlNvdXJjZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAaWQ9J0FkZExpbmtzJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENsb3NlIGxpbmsgd2luZG93LCByZXR1cm4gdG8gWm9vbSB2aWV3IGFuZCByZWZyZXNoIHBhZ2UuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua0FkZENsb3NlTGluayIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGxpbmtlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgIGZvciBteSAkQ2hlY2tWYWx1ZXMgKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0sICRTZXJ2aWNlTmFtZSwgJFRpY2tldE51bWJlciApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENoZWNrVmFsdWVzICkgPiAtMSwKICAgICAgICAgICAgICAgICJMaW5rZWQgdmFsdWUgJENoZWNrVmFsdWVzIC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiAnTGluaycgbWVudSBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9SVRTTUNvbmZpZ0l0ZW07U291cmNlS2V5PSRDb25maWdJdGVtSURzWzBdXCcgKV0iCiAgICAgICAgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZScKICAgICAgICApOwoKICAgICAgICAjIENsaWNrICdnbyB0byBtYW5hZ2UgbGlua3Mgc2NyZWVuJy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCcjTWFuYWdlTGlua3NcJyApXSIpLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgZm9yIHRoZSBtYW5hZ2UgbGlua3MgdGFiIHRvIHNob3cgdXAuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCJkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc106dmlzaWJsZSIpLmxlbmd0aCAmJiBwYXJzZUludCgkKCJkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc10iKS5jc3MoIm9wYWNpdHkiKSwgMTApID09IDEnCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWxlY3QgYWxsIGxpbmtlZCBpdGVtcyBhbmQgZGVsZXRlIGxpbmtzLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9J0lUU01Db25maWdJdGVtOjokQ29uZmlnSXRlbUlEc1sxXTo6QWx0ZXJuYXRpdmVUbyddIiktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdGl0bGU9J0RlbGV0ZSBsaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEB2YWx1ZT0nU2VydmljZTo6JFNlcnZpY2VJRFw6OlJlbGV2YW50VG8nXSIpLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHRpdGxlPSdEZWxldGUgbGlua3MnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9J1RpY2tldDo6JFRpY2tldElEXDo6RGVwZW5kc09uJ10iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB0aXRsZT0nRGVsZXRlIGxpbmtzJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENsb3NlIGxpbmsgd2luZG93LCByZXR1cm4gdG8gWm9vbSB2aWV3IGFuZCByZWZyZXNoIHBhZ2UuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua0FkZENsb3NlTGluayIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIG5vIGxpbmtlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgIGZvciBteSAkQ2hlY2tWYWx1ZXMgKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0sICRTZXJ2aWNlTmFtZSwgJFRpY2tldE51bWJlciApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENoZWNrVmFsdWVzICkgPT0gLTEsCiAgICAgICAgICAgICAgICAiTGlua2VkIHZhbHVlICRDaGVja1ZhbHVlcyAtIG5vdCBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSB0ZXN0IFRpY2tldC4KICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGlja2V0IGlzIGRlbGV0ZWQgLSBJRCAkVGlja2V0SUQgIgogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1EZWxldGUgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbURlbGV0ZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBEZWxldGUgdGVzdCBzZXJ2aWNlIGFuZCBpdHMgcHJlZmVyZW5jZXMuCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gIkRFTEVURSBGUk9NIHNlcnZpY2VfcHJlZmVyZW5jZXMgV0hFUkUgc2VydmljZV9pZCA9ICRTZXJ2aWNlSUQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU2VydmljZSBwcmVmZXJlbmNlcyBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBzZXJ2aWNlIFdIRVJFIGlkID0gJFNlcnZpY2VJRCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJTZXJ2aWNlIGlzIGRlbGV0ZWQgLSBJRCAkU2VydmljZUlEIiwKICAgICAgICApOwogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/DashboardITSMConfigItemGeneric.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bTsKCiMgc29tZSBzZXR1cCBiZWZvcmUgc3RhcnRpbmcgdGhlIFNlbGVuaXVtIHRlc3QKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgU2VsZW5pdW0gdGVzdHMgdGVtcG9yYXJpbHkuJyk7CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IGN1c3RvbWVyIHVzZXIgbG9naW4uCiAgICAgICAgbXkgJFRlc3RDdXN0b21lclVzZXIgPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IGN1c3RvbWVyIHVzZXIiOwoKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwogICAgICAgIG15ICRDdXN0b21lckNvbXBhbnlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55Jyk7CgogICAgICAgICMgR2V0IGN1c3RvbWVyIHVzZXIgZGF0YS4KICAgICAgICBteSAlQ3VzdG9tZXJVc2VyID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkVGVzdEN1c3RvbWVyVXNlciwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSByYW5kb20gaWQuCiAgICAgICAgbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgbXkgJEN1c3RvbWVyQ29tcGFueUlEID0gJEN1c3RvbWVyQ29tcGFueU9iamVjdC0+Q3VzdG9tZXJDb21wYW55QWRkKAogICAgICAgICAgICBDdXN0b21lcklEICAgICAgICAgID0+ICIkVGVzdEN1c3RvbWVyVXNlci0kUmFuZG9tSUQiLAogICAgICAgICAgICBDdXN0b21lckNvbXBhbnlOYW1lID0+ICIkVGVzdEN1c3RvbWVyVXNlci0kUmFuZG9tSUQiLAogICAgICAgICAgICBWYWxpZElEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ3VzdG9tZXJDb21wYW55SUQsCiAgICAgICAgICAgICJDcmVhdGVkIHRlc3QgY3VzdG9tZXIgY29tcGFueSAkQ3VzdG9tZXJDb21wYW55SUQiLAogICAgICAgICk7CgogICAgICAgICMgRGVmaW5lIHRlc3QgYXJyYXkuCiAgICAgICAgbXkgQFRlc3QgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENsYXNzTmFtZSAgPT4gJ0N1c3RvbWVyJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwiRU9GIiwKLS0tCi0gS2V5OiBDdXN0b21lcgogIE5hbWU6IEN1c3RvbWVyCiAgU2VhcmNoYWJsZTogMSwKICBJbnB1dDoKICAgIFR5cGU6IEN1c3RvbWVyCkVPRgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDbGFzc05hbWUgID0+ICdDdXN0b21lckNvbXBhbnknIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnQ3VzdG9tZXJDb21wYW55JywKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwiRU9GIiwKLS0tCi0gS2V5OiBDdXN0b21lckNvbXBhbnkKICBOYW1lOiBDdXN0b21lckNvbXBhbnkKICBTZWFyY2hhYmxlOiAxLAogIElucHV0OgogICAgVHlwZTogQ3VzdG9tZXJDb21wYW55CkVPRgogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIGNvbmZpZyBzZXR0aW5ncy4KICAgICAgICBteSAlSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXInLAogICAgICAgICk7CgogICAgICAgIGRlbGV0ZSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9LT57Q29uZmlnSXRlbUtleX07CiAgICAgICAgJElUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfS0+e0NvbmZpZ0l0ZW1LZXl9ID0gewogICAgICAgICAgICAnQ3VzdG9tZXInIC4gJFJhbmRvbUlEID0+ICdDdXN0b21lcicsCiAgICAgICAgfTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXInLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAleyAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55U3lzQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueScsCiAgICAgICAgKTsKCiAgICAgICAgZGVsZXRlICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0tPntDb25maWdJdGVtS2V5fTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnlTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9LT57Q29uZmlnSXRlbUtleX0gPSB7CiAgICAgICAgICAgICdDdXN0b21lckNvbXBhbnknIC4gJFJhbmRvbUlEID0+ICdDdXN0b21lckNvbXBhbnknLAogICAgICAgIH07CgogICAgICAgICMgQ2hhbmdlIGNvbmZpZyBzZXR0aW5nLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueScsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgICV7ICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjIEFkZCB0aGUgdGVzdCBjbGFzc2VzLgogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQENvbmZpZ0l0ZW1DbGFzc2VzOwogICAgICAgIG15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uIChAVGVzdCkgewoKICAgICAgICAgICAgIyBBZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MuCiAgICAgICAgICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkRGVmaW5pdGlvbi0+e0NsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGNsYXNzIGlkLgogICAgICAgICAgICBpZiAoICEkQ2xhc3NJRCApIHsKCiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGNsYXNzLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDbGFzc0lEOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NlcywgICREZWZpbml0aW9uLT57Q2xhc3NOYW1lfTsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgZ3JvdXAgYWxyZWFkeSBleGlzdHMuCiAgICAgICAgICAgIG15ICRHcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgICAgICAgICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MuCiAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwogICAgICAgICAgICBvayggJFJlc3VsdC0+e0RlZmluaXRpb25JRH0sICdnb3QgRGVmaW5pdGlvbklEJyApOwoKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMsICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwoKICAgICAgICAgICAgIyBBZGQgZGF0YSB0byB0ZXN0IGFycmF5LgogICAgICAgICAgICAkRGVmaW5pdGlvbi0+e0NsYXNzSUR9ID0gJENsYXNzSUQ7CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgc2NyaXB0IGFsaWFzLgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdCkgewoKICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtQWRkLgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQWRkIik7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JFRlc3QtPntDbGFzc0lEfVwiXScpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ2xpY2sgb24gQ29uZmlnSXRlbSBjbGFzcy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICAgICAiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Q2xhc3NJRD0kVGVzdC0+e0NsYXNzSUR9XCcgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjTmFtZScpLmxlbmd0aCAmJiBcJCgnI1N1Ym1pdEJ1dHRvbicpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ3JlYXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJ1NlbGVuaXVtVGVzdC0nIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkQ29uZmlnSXRlbU5hbWUpOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCckRGVwbFN0YXRlSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpIgogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCkgPT09ICckRGVwbFN0YXRlSUQnIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNJbmNpU3RhdGVJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0luY2lTdGF0ZUlEJykudmFsKCkgPT09ICcxJyIgKTsKCiAgICAgICAgICAgIGlmICggJFRlc3QtPntLZXl9IGVxICdDdXN0b21lcicgKSB7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJdGVtMTAiLCAnY3NzJyApLT5jbGVhcigpOwogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSXRlbTEwIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCAkQ3VzdG9tZXJVc2Vye1VzZXJJRH0gKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoImxpLnVpLW1lbnUtaXRlbTp2aXNpYmxlIikubGVuZ3RoJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCdsaS51aS1tZW51LWl0ZW06Y29udGFpbnMoJEN1c3RvbWVyVXNlcntVc2VySUR9KScpLmNsaWNrKCkiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgIlwkKCcjSXRlbTEwJykudmFsKCckQ3VzdG9tZXJDb21wYW55SUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0l0ZW0xMCcpLnZhbCgpID09PSAnJEN1c3RvbWVyQ29tcGFueUlEJyIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTdWJtaXQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdoMTpjb250YWlucygkQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e0tleX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXIuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyO0N1c3RvbWVyVXNlcklEPSRDdXN0b21lclVzZXJ7VXNlcklEfSIKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDb25maWdJdGVtTmFtZSApID4gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRDb25maWdJdGVtTmFtZSBmb3VuZCBvbiBwYWdlIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkVGVzdC0+e0tleX0gZXEgJ0N1c3RvbWVyQ29tcGFueScgKSB7CgogICAgICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXIuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI7Q3VzdG9tZXJJRD0kQ3VzdG9tZXJDb21wYW55SUQiCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29uZmlnSXRlbU5hbWUgKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICIkQ29uZmlnSXRlbU5hbWUgZm91bmQgb24gcGFnZSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENsZWFudXAuCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gY3VzdG9tZXJfY29tcGFueSBXSEVSRSBjdXN0b21lcl9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDdXN0b21lckNvbXBhbnlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRGVsZXRlZCBDdXN0b21lckNvbXBhbnkiLAogICAgICAgICk7CgogICAgICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goIENsYXNzSURzID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzICk7CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uSUQgKEBDb25maWdJdGVtRGVmaW5pdGlvbklEcykgewogICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gIkRFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBXSEVSRSBpZCA9ICREZWZpbml0aW9uSUQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZyBpdGVtIGRlZmluaXRpb24gaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBnZW5lcmFsX2NhdGFsb2dfcHJlZmVyZW5jZXMgV0hFUkUgZ2VuZXJhbF9jYXRhbG9nX2lkID0gJENsYXNzSUQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIlByZWZlcmVuY2VzIGRlbGV0ZWQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBnZW5lcmFsX2NhdGFsb2cgV0hFUkUgaWQgPSAkQ2xhc3NJRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ2xhc3MgaXRlbSBpcyBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCk7CiAgICB9Cik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Customer/ITSMConfigurationManagement/CustomerITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQFRlc3RDbGFzc2VzID0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKEBUZXN0Q2xhc3NlcykgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgICAgICA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MuCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzOwogICAgICAgIG15IEBDb25maWdJdGVtSURzOwogICAgICAgIGZvciBteSAkSVRTTUNvbmZpZ0l0ZW0gKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKCiAgICAgICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgICAgICAjIEFkZCB0aGUgbmV3IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgbXkgJUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewogICAgICAgICAgICBteSAlUGVybWlzc2lvbkNvbmRpdGlvbnNTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwJEluZGV4IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJEluZGV4ID4gMSApIHsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17TmFtZX0gICAgPSAkVGVzdENsYXNzZXNbICRJbmRleCAtIDIgXTsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17Q2xhc3Nlc30gPSBbICRUZXN0Q2xhc3Nlc1sgJEluZGV4IC0gMiBdIF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gIkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAkSW5kZXgiLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBlcm1pc3Npb25Db25kaXRpb25zU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZSBieSBjbGlja2luZyBDb25maWdJdGVtcyBpY29uIG9uIHRoZSBzaWRlIG1lbnUgYmFyCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtJyApXSIKICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZWFjaCBvZiBDb25maWdJdGVtIGNsYXNzIGZpbHRlcnMgZm9yIHRoZWlyIHJlc3BlY3RpdmUgdGVzdCBDb25maWdJdGVtCiAgICAgICAgQ09ORklHSVRFTToKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPTtGaWx0ZXI9MCRJbmRleDtTb3J0Qnk9O09yZGVyQnk9O0Z1bGx0ZXh0PScgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTSBpZiAkSW5kZXggPT0gMTsKCiAgICAgICAgICAgICMgb3JkZXIgYnkgZGVzY2VuZGluZyBjcmVhdGlvbiB0aW1lCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciBDb25maWdJdGVtIG51bWJlcgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtTnVtYmVyc1sgJEluZGV4IC0gMiBdOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnModGV4dCgpLCBcJyRDb25maWdJdGVtTnVtYmVyXCcgKV0iKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDb25maWdJdGVtTnVtYmVyIC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICB9CgogICAgICAgICMgVmVyaWZ5IHRoZXJlIGlzIGEgbGluayB0byBDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSBvbiBDb25maWdJdGVtIE51bWJlciBjb2x1bW4uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCd0cjplcShcIjFcIikgYTpjb250YWlucygkQ29uZmlnSXRlbU51bWJlcnNbM10pW2hyZWYqPVwiSXRlbUlEPSRDb25maWdJdGVtSURzWzNdXCJdJykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIkxpbmsgb24gQ29uZmlnSXRlbSAnTnVtYmVyJyBjb2x1bW4gY29ycmVjdC4iCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZSAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtRGVsZXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Customer/ITSMConfigurationManagement/CustomerITSMConfigItemZoom.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQFRlc3RDbGFzc2VzID0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKEBUZXN0Q2xhc3NlcykgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgICAgICA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MuCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzOwogICAgICAgIG15IEBDb25maWdJdGVtSURzOwogICAgICAgIGZvciBteSAkSVRTTUNvbmZpZ0l0ZW0gKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKCiAgICAgICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgICAgICAjIEFkZCB0aGUgbmV3IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgbXkgJUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwogICAgICAgICVDdXN0b21lcklUU01Db25maWdJdGVtU3lzQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lcklUU01Db25maWdJdGVtWm9vbScsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb20nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewogICAgICAgICAgICBteSAlUGVybWlzc2lvbkNvbmRpdGlvbnNTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwJEluZGV4IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJEluZGV4ID4gMSApIHsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17TmFtZX0gICAgPSAkVGVzdENsYXNzZXNbICRJbmRleCAtIDIgXTsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17Q2xhc3Nlc30gPSBbICRUZXN0Q2xhc3Nlc1sgJEluZGV4IC0gMiBdIF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gIkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAkSW5kZXgiLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBlcm1pc3Npb25Db25kaXRpb25zU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZSBieSBjbGlja2luZyBDb25maWdJdGVtcyBpY29uIG9uIHRoZSBzaWRlIG1lbnUgYmFyCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtJyApXSIKICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZWFjaCBvZiBDb25maWdJdGVtIGNsYXNzIGZpbHRlcnMgZm9yIHRoZWlyIHJlc3BlY3RpdmUgdGVzdCBDb25maWdJdGVtCiAgICAgICAgQ09ORklHSVRFTToKICAgICAgICBmb3IgbXkgJEluZGV4ICggMiAuLiA1ICkgewoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPTtGaWx0ZXI9MCRJbmRleDtTb3J0Qnk9O09yZGVyQnk9O0Z1bGx0ZXh0PScgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgb3JkZXIgYnkgZGVzY2VuZGluZyBjcmVhdGlvbiB0aW1lCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciBDb25maWdJdGVtIG51bWJlcgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtTnVtYmVyc1sgJEluZGV4IC0gMiBdOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnModGV4dCgpLCBcJyRDb25maWdJdGVtTnVtYmVyXCcgKV0iKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDb25maWdJdGVtTnVtYmVyIC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBWZXJpZnkgdGhlcmUgaXMgYSBsaW5rIHRvIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIG9uIENvbmZpZ0l0ZW0gTnVtYmVyIGNvbHVtbi4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSURzWyAkSW5kZXggLSAyIF07CiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkSW5kZXggLSAyIF07CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCd0cjplcShcIjFcIikgYTpjb250YWlucygkQ29uZmlnSXRlbU51bWJlcilbaHJlZio9XCJJdGVtSUQ9JENvbmZpZ0l0ZW1JRFwiXScpLmxlbmd0aDsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkxpbmsgb24gQ29uZmlnSXRlbSAnTnVtYmVyJyBjb2x1bW4gY29ycmVjdC4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKHRleHQoKSwgXCckQ29uZmlnSXRlbU51bWJlclwnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgY2hlY2sgQ29uZmlnSXRlbSB2YWx1ZXMgb24gdGhlIHpvb20gc2NyZWVuCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRUZXN0Q2xhc3Nlc1sgJEluZGV4IC0gMiBdIC4gIiMkQ29uZmlnSXRlbU51bWJlciI7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdwOmNvbnRhaW5zKCRWYWx1ZSknKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gZmllbGQgdmFsdWUgJyRWYWx1ZScgZm91bmQgaW4gY29uZmlnIGl0ZW0gem9vbSIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxlbml1bS0+Z29fYmFjaygpOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIjsnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZSAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtRGVsZXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/sample/ImportExport/TemplateExport.csv" Permission="660" Encode="Base64">Ik5hbWUiLCJEZXBsb3ltZW50IFN0YXRlIiwiSW5jaWRlbnQgU3RhdGUiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl8xMCIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzkiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl84IiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fNyIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzYiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl81IiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fNCIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzMiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl8yIiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fMSIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCI=</File>
        <File Location="scripts/test/sample/ITSMConfigurationManagement/LegacyClasses.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IENvbXB1dGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IENvbXB1dGVyLVZlbmRvcgogICAgICAgICAgLSBERjogQ29tcHV0ZXItTW9kZWwKICAgICAgICAgIC0gREY6IENvbXB1dGVyLURlc2NyaXB0aW9uCiAgICAgICAgICAtIERGOiBDb21wdXRlci1UeXBlCiAgICAgICAgICAtIERGOiBDb21wdXRlci1DdXN0b21lcklECiAgICAgICAgICAtIERGOiBDb21wdXRlci1Pd25lcgogICAgICAgICAgLSBERjogQ29tcHV0ZXItU2VyaWFsTnVtYmVyCiAgICAgICAgICAtIERGOiBDb21wdXRlci1PcGVyYXRpbmdTeXN0ZW0KICAgICAgICAgIC0gREY6IENvbXB1dGVyLUNQVQogICAgICAgICAgLSBERjogQ29tcHV0ZXItUmFtCiAgICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlzawogICAgICAgICAgLSBERjogQ29tcHV0ZXItRlFETgogICAgICAgICAgLSBERjogQ29tcHV0ZXItTklDCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogQ29tcHV0ZXItR3JhcGhpY0FkYXB0ZXIKICAgICAgICAgIC0gREY6IENvbXB1dGVyLU90aGVyRXF1aXBtZW50CiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZQogICAgICAgICAgLSBERjogQ29tcHV0ZXItSW5zdGFsbERhdGUKICAgICAgICAgICAgTWFuZGF0b3J5OiAxCiAgICAgICAgICAtIERGOiBDb21wdXRlci1Ob3RlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogIER5bmFtaWNGaWVsZHM6CiAgICBDb21wdXRlci1DUFU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBNdWx0aVZhbHVlOiAxCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENQVQogICAgICBOYW1lOiBDb21wdXRlci1DUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogQ3VzdG9tZXIgQ29tcGFueQogICAgICBOYW1lOiBDb21wdXRlci1DdXN0b21lcklECiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogRGVzY3JpcHRpb24KICAgICAgTmFtZTogQ29tcHV0ZXItRGVzY3JpcHRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUZRRE46CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRlFETgogICAgICBOYW1lOiBDb21wdXRlci1GUUROCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1HcmFwaGljQWRhcHRlcjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBHcmFwaGljIEFkYXB0ZXIKICAgICAgTmFtZTogQ29tcHV0ZXItR3JhcGhpY0FkYXB0ZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUhhcmREaXNrOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlza1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTmFtZQogICAgICAgICAgICBOYW1lOiBDb21wdXRlci1IYXJkRGlza1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlza0NhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLUhhcmREaXNrQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAxCiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBIYXJkIERpc2sKICAgICAgTmFtZTogQ29tcHV0ZXItSGFyZERpc2sKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUluc3RhbGxEYXRlOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgWWVhcnNJbkZ1dHVyZTogMTAKICAgICAgICBZZWFyc0luUGFzdDogMjAKICAgICAgICBZZWFyc1BlcmlvZDogMQogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IEluc3RhbGwgRGF0ZQogICAgICBOYW1lOiBDb21wdXRlci1JbnN0YWxsRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItTW9kZWw6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogQ29tcHV0ZXItTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLU5JQzoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBOYW1lCiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLU5JQ1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBDb21wdXRlci1OSUNJUG92ZXJESENQCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06Olllc05vCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgICAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgICAgICAgTGFiZWw6IElQIG92ZXIgREhDUAogICAgICAgICAgICBOYW1lOiBDb21wdXRlci1OSUNJUG92ZXJESENQCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogQ29tcHV0ZXItTklDSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLU5JQ0lQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgQWRhcHRlcgogICAgICBOYW1lOiBDb21wdXRlci1OSUMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLU5vdGU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE5vdGUKICAgICAgTmFtZTogQ29tcHV0ZXItTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItT3BlcmF0aW5nU3lzdGVtOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogQ29tcHV0ZXItT3BlcmF0aW5nU3lzdGVtCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1PdGhlckVxdWlwbWVudDoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogT3RoZXIgRXF1aXBtZW50CiAgICAgIE5hbWU6IENvbXB1dGVyLU90aGVyRXF1aXBtZW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1Pd25lcjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogQ29tcHV0ZXItT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLVJhbToKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUmFtCiAgICAgIE5hbWU6IENvbXB1dGVyLVJhbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbCBOdW1iZXIKICAgICAgTmFtZTogQ29tcHV0ZXItU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1UeXBlOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OkNvbXB1dGVyOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogQ29tcHV0ZXItVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItVmVuZG9yOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFZlbmRvcgogICAgICBOYW1lOiBDb21wdXRlci1WZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlCiAgICAgIE5hbWU6IENvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgTmFtZTogSGFyZHdhcmUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogfAogICAgLS0tCiAgICBQYWdlczoKICAgICAgLSBOYW1lOiBDb250ZW50CiAgICAgICAgTGF5b3V0OgogICAgICAgICAgQ29sdW1uczogMQogICAgICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgICAgIENvbnRlbnQ6CiAgICAgICAgICAtIFNlY3Rpb246IEF0dHJpYnV0ZXMKICAgICAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICAgICAgUm93U3RhcnQ6IDEKCiAgICBTZWN0aW9uczoKICAgICAgQXR0cmlidXRlczoKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBERjogSGFyZHdhcmUtVmVuZG9yCiAgICAgICAgICAtIERGOiBIYXJkd2FyZS1Nb2RlbAogICAgICAgICAgLSBERjogSGFyZHdhcmUtRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IEhhcmR3YXJlLVR5cGUKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLU93bmVyCiAgICAgICAgICAtIERGOiBIYXJkd2FyZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLUluc3RhbGxEYXRlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogSGFyZHdhcmUtTm90ZQogICAgICAgICAgICBNYW5kYXRvcnk6IDEKICBEeW5hbWljRmllbGRzOgogICAgSGFyZHdhcmUtQ3VzdG9tZXJJRDoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBDdXN0b21lciBDb21wYW55CiAgICAgIE5hbWU6IEhhcmR3YXJlLUN1c3RvbWVySUQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLURlc2NyaXB0aW9uOgogICAgICBDSUNsYXNzOiBIYXJkd2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBIYXJkd2FyZS1EZXNjcmlwdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtSW5zdGFsbERhdGU6CiAgICAgIENJQ2xhc3M6IEhhcmR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogSW5zdGFsbCBEYXRlCiAgICAgIE5hbWU6IEhhcmR3YXJlLUluc3RhbGxEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1Nb2RlbDoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBIYXJkd2FyZS1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtTm90ZToKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTm90ZQogICAgICBOYW1lOiBIYXJkd2FyZS1Ob3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1Pd25lcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogSGFyZHdhcmUtT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWwgTnVtYmVyCiAgICAgIE5hbWU6IEhhcmR3YXJlLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtVHlwZToKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpIYXJkd2FyZTo6VHlwZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogMQogICAgICBGaWVsZFR5cGU6IEdlbmVyYWxDYXRhbG9nCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IEhhcmR3YXJlLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLVZlbmRvcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBWZW5kb3IKICAgICAgTmFtZTogSGFyZHdhcmUtVmVuZG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1XYXJyYW50eUV4cGlyYXRpb25EYXRlOgogICAgICBDSUNsYXNzOiBIYXJkd2FyZQogICAgICBDb25maWc6CiAgICAgICAgWWVhcnNJbkZ1dHVyZTogMTAKICAgICAgICBZZWFyc0luUGFzdDogMjAKICAgICAgICBZZWFyc1BlcmlvZDogMQogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IFdhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZQogICAgICBOYW1lOiBIYXJkd2FyZS1XYXJyYW50eUV4cGlyYXRpb25EYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IExvY2F0aW9uCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IExvY2F0aW9uLVR5cGUKICAgICAgICAgIC0gREY6IExvY2F0aW9uLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IExvY2F0aW9uLU93bmVyCiAgICAgICAgICAtIERGOiBMb2NhdGlvbi1QaG9uZTEKICAgICAgICAgIC0gREY6IExvY2F0aW9uLVBob25lMgogICAgICAgICAgLSBERjogTG9jYXRpb24tRmF4CiAgICAgICAgICAtIERGOiBMb2NhdGlvbi1FTWFpbAogICAgICAgICAgLSBERjogTG9jYXRpb24tQWRkcmVzcwogICAgICAgICAgLSBERjogTG9jYXRpb24tTm90ZQogICAgICAgICAgICBNYW5kYXRvcnk6IDEKICBEeW5hbWljRmllbGRzOgogICAgTG9jYXRpb24tQWRkcmVzczoKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogQWRkcmVzcwogICAgICBOYW1lOiBMb2NhdGlvbi1BZGRyZXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1DdXN0b21lcklEOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBQb3NzaWJsZU5vbmU6IDEKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IEN1c3RvbWVyIENvbXBhbnkKICAgICAgTmFtZTogTG9jYXRpb24tQ3VzdG9tZXJJRAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tRU1haWw6CiAgICAgIENJQ2xhc3M6IExvY2F0aW9uCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRS1NYWlsCiAgICAgIE5hbWU6IExvY2F0aW9uLUVNYWlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1GYXg6CiAgICAgIENJQ2xhc3M6IExvY2F0aW9uCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRmF4CiAgICAgIE5hbWU6IExvY2F0aW9uLUZheAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tTm90ZToKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTm90ZQogICAgICBOYW1lOiBMb2NhdGlvbi1Ob3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1Pd25lcjoKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogTG9jYXRpb24tT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVBob25lMToKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQaG9uZSAxCiAgICAgIE5hbWU6IExvY2F0aW9uLVBob25lMQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUGhvbmUyOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFBob25lIDIKICAgICAgTmFtZTogTG9jYXRpb24tUGhvbmUyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1UeXBlOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OkxvY2F0aW9uOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogTG9jYXRpb24tVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICBOYW1lOiBOZXR3b3JrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IE5ldHdvcmstRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IE5ldHdvcmstVHlwZQogICAgICAgICAgLSBERjogTmV0d29yay1DdXN0b21lcklECiAgICAgICAgICAtIERGOiBOZXR3b3JrLU93bmVyCiAgICAgICAgICAtIERGOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogTmV0d29yay1Ob3RlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogIER5bmFtaWNGaWVsZHM6CiAgICBOZXR3b3JrLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBDdXN0b21lciBDb21wYW55CiAgICAgIE5hbWU6IE5ldHdvcmstQ3VzdG9tZXJJRAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTmV0d29yay1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBOZXR3b3JrLURlc2NyaXB0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzOgogICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJQcmltYXJ5QXR0cmlidXRlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTmFtZQogICAgICAgICAgICBOYW1lOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzU3ViUHJpbWFyeUF0dHJpYnV0ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJuZXRNYXNrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6IDI1NS4yNTUuMjU1LjAKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3VibmV0IE1hc2sKICAgICAgICAgICAgTmFtZTogTmV0d29yay1OZXR3b3JrQWRkcmVzc1N1Ym5ldE1hc2sKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzR2F0ZXdheQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBHYXRld2F5CiAgICAgICAgICAgIE5hbWU6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NHYXRld2F5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBBZGRyZXNzCiAgICAgIE5hbWU6IE5ldHdvcmstTmV0d29ya0FkZHJlc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIE5ldHdvcmstTm90ZToKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBOb3RlCiAgICAgIE5hbWU6IE5ldHdvcmstTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTmV0d29yay1Pd25lcjoKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBPd25lcgogICAgICBOYW1lOiBOZXR3b3JrLU93bmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBOZXR3b3JrLVR5cGU6CiAgICAgIENJQ2xhc3M6IE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpOZXR3b3JrOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogTmV0d29yay1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IFNvZnR3YXJlCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLVZlbmRvcgogICAgICAgICAgLSBERjogU29mdHdhcmUtVmVyc2lvbgogICAgICAgICAgLSBERjogU29mdHdhcmUtRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IFNvZnR3YXJlLVR5cGUKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLU93bmVyCiAgICAgICAgICAtIERGOiBTb2Z0d2FyZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLUxpY2VuY2VUeXBlCiAgICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5CiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogU29mdHdhcmUtTWVkaWEKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLU5vdGUKICAgICAgICAgICAgTWFuZGF0b3J5OiAxCiAgRHluYW1pY0ZpZWxkczoKICAgIFNvZnR3YXJlLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogQ3VzdG9tZXIgQ29tcGFueQogICAgICBOYW1lOiBTb2Z0d2FyZS1DdXN0b21lcklECiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogRGVzY3JpcHRpb24KICAgICAgTmFtZTogU29mdHdhcmUtRGVzY3JpcHRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLUxpY2VuY2VLZXk6CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IFNvZnR3YXJlLUxpY2VuY2VLZXlTdWJQcmltYXJ5QXR0cmlidXRlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE5hbWUKICAgICAgICAgICAgTmFtZTogU29mdHdhcmUtTGljZW5jZUtleVN1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5UXVhbnRpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6IDEKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgICcxJzogMQogICAgICAgICAgICAgICAgJzEwJzogMTAKICAgICAgICAgICAgICAgICcxMDAnOiAxMDAKICAgICAgICAgICAgICAgICcxMDAwJzogMTAwMAogICAgICAgICAgICAgICAgJzEwMSc6IDEwMQogICAgICAgICAgICAgICAgJzEwMic6IDEwMgogICAgICAgICAgICAgICAgJzEwMyc6IDEwMwogICAgICAgICAgICAgICAgJzEwNCc6IDEwNAogICAgICAgICAgICAgICAgJzEwNSc6IDEwNQogICAgICAgICAgICAgICAgJzEwNic6IDEwNgogICAgICAgICAgICAgICAgJzEwNyc6IDEwNwogICAgICAgICAgICAgICAgJzEwOCc6IDEwOAogICAgICAgICAgICAgICAgJzEwOSc6IDEwOQogICAgICAgICAgICAgICAgJzExJzogMTEKICAgICAgICAgICAgICAgICcxMTAnOiAxMTAKICAgICAgICAgICAgICAgICcxMTEnOiAxMTEKICAgICAgICAgICAgICAgICcxMTInOiAxMTIKICAgICAgICAgICAgICAgICcxMTMnOiAxMTMKICAgICAgICAgICAgICAgICcxMTQnOiAxMTQKICAgICAgICAgICAgICAgICcxMTUnOiAxMTUKICAgICAgICAgICAgICAgICcxMTYnOiAxMTYKICAgICAgICAgICAgICAgICcxMTcnOiAxMTcKICAgICAgICAgICAgICAgICcxMTgnOiAxMTgKICAgICAgICAgICAgICAgICcxMTknOiAxMTkKICAgICAgICAgICAgICAgICcxMic6IDEyCiAgICAgICAgICAgICAgICAnMTIwJzogMTIwCiAgICAgICAgICAgICAgICAnMTIxJzogMTIxCiAgICAgICAgICAgICAgICAnMTIyJzogMTIyCiAgICAgICAgICAgICAgICAnMTIzJzogMTIzCiAgICAgICAgICAgICAgICAnMTI0JzogMTI0CiAgICAgICAgICAgICAgICAnMTI1JzogMTI1CiAgICAgICAgICAgICAgICAnMTI2JzogMTI2CiAgICAgICAgICAgICAgICAnMTI3JzogMTI3CiAgICAgICAgICAgICAgICAnMTI4JzogMTI4CiAgICAgICAgICAgICAgICAnMTI5JzogMTI5CiAgICAgICAgICAgICAgICAnMTMnOiAxMwogICAgICAgICAgICAgICAgJzEzMCc6IDEzMAogICAgICAgICAgICAgICAgJzEzMSc6IDEzMQogICAgICAgICAgICAgICAgJzEzMic6IDEzMgogICAgICAgICAgICAgICAgJzEzMyc6IDEzMwogICAgICAgICAgICAgICAgJzEzNCc6IDEzNAogICAgICAgICAgICAgICAgJzEzNSc6IDEzNQogICAgICAgICAgICAgICAgJzEzNic6IDEzNgogICAgICAgICAgICAgICAgJzEzNyc6IDEzNwogICAgICAgICAgICAgICAgJzEzOCc6IDEzOAogICAgICAgICAgICAgICAgJzEzOSc6IDEzOQogICAgICAgICAgICAgICAgJzE0JzogMTQKICAgICAgICAgICAgICAgICcxNDAnOiAxNDAKICAgICAgICAgICAgICAgICcxNDEnOiAxNDEKICAgICAgICAgICAgICAgICcxNDInOiAxNDIKICAgICAgICAgICAgICAgICcxNDMnOiAxNDMKICAgICAgICAgICAgICAgICcxNDQnOiAxNDQKICAgICAgICAgICAgICAgICcxNDUnOiAxNDUKICAgICAgICAgICAgICAgICcxNDYnOiAxNDYKICAgICAgICAgICAgICAgICcxNDcnOiAxNDcKICAgICAgICAgICAgICAgICcxNDgnOiAxNDgKICAgICAgICAgICAgICAgICcxNDknOiAxNDkKICAgICAgICAgICAgICAgICcxNSc6IDE1CiAgICAgICAgICAgICAgICAnMTUwJzogMTUwCiAgICAgICAgICAgICAgICAnMTUxJzogMTUxCiAgICAgICAgICAgICAgICAnMTUyJzogMTUyCiAgICAgICAgICAgICAgICAnMTUzJzogMTUzCiAgICAgICAgICAgICAgICAnMTU0JzogMTU0CiAgICAgICAgICAgICAgICAnMTU1JzogMTU1CiAgICAgICAgICAgICAgICAnMTU2JzogMTU2CiAgICAgICAgICAgICAgICAnMTU3JzogMTU3CiAgICAgICAgICAgICAgICAnMTU4JzogMTU4CiAgICAgICAgICAgICAgICAnMTU5JzogMTU5CiAgICAgICAgICAgICAgICAnMTYnOiAxNgogICAgICAgICAgICAgICAgJzE2MCc6IDE2MAogICAgICAgICAgICAgICAgJzE2MSc6IDE2MQogICAgICAgICAgICAgICAgJzE2Mic6IDE2MgogICAgICAgICAgICAgICAgJzE2Myc6IDE2MwogICAgICAgICAgICAgICAgJzE2NCc6IDE2NAogICAgICAgICAgICAgICAgJzE2NSc6IDE2NQogICAgICAgICAgICAgICAgJzE2Nic6IDE2NgogICAgICAgICAgICAgICAgJzE2Nyc6IDE2NwogICAgICAgICAgICAgICAgJzE2OCc6IDE2OAogICAgICAgICAgICAgICAgJzE2OSc6IDE2OQogICAgICAgICAgICAgICAgJzE3JzogMTcKICAgICAgICAgICAgICAgICcxNzAnOiAxNzAKICAgICAgICAgICAgICAgICcxNzEnOiAxNzEKICAgICAgICAgICAgICAgICcxNzInOiAxNzIKICAgICAgICAgICAgICAgICcxNzMnOiAxNzMKICAgICAgICAgICAgICAgICcxNzQnOiAxNzQKICAgICAgICAgICAgICAgICcxNzUnOiAxNzUKICAgICAgICAgICAgICAgICcxNzYnOiAxNzYKICAgICAgICAgICAgICAgICcxNzcnOiAxNzcKICAgICAgICAgICAgICAgICcxNzgnOiAxNzgKICAgICAgICAgICAgICAgICcxNzknOiAxNzkKICAgICAgICAgICAgICAgICcxOCc6IDE4CiAgICAgICAgICAgICAgICAnMTgwJzogMTgwCiAgICAgICAgICAgICAgICAnMTgxJzogMTgxCiAgICAgICAgICAgICAgICAnMTgyJzogMTgyCiAgICAgICAgICAgICAgICAnMTgzJzogMTgzCiAgICAgICAgICAgICAgICAnMTg0JzogMTg0CiAgICAgICAgICAgICAgICAnMTg1JzogMTg1CiAgICAgICAgICAgICAgICAnMTg2JzogMTg2CiAgICAgICAgICAgICAgICAnMTg3JzogMTg3CiAgICAgICAgICAgICAgICAnMTg4JzogMTg4CiAgICAgICAgICAgICAgICAnMTg5JzogMTg5CiAgICAgICAgICAgICAgICAnMTknOiAxOQogICAgICAgICAgICAgICAgJzE5MCc6IDE5MAogICAgICAgICAgICAgICAgJzE5MSc6IDE5MQogICAgICAgICAgICAgICAgJzE5Mic6IDE5MgogICAgICAgICAgICAgICAgJzE5Myc6IDE5MwogICAgICAgICAgICAgICAgJzE5NCc6IDE5NAogICAgICAgICAgICAgICAgJzE5NSc6IDE5NQogICAgICAgICAgICAgICAgJzE5Nic6IDE5NgogICAgICAgICAgICAgICAgJzE5Nyc6IDE5NwogICAgICAgICAgICAgICAgJzE5OCc6IDE5OAogICAgICAgICAgICAgICAgJzE5OSc6IDE5OQogICAgICAgICAgICAgICAgJzInOiAyCiAgICAgICAgICAgICAgICAnMjAnOiAyMAogICAgICAgICAgICAgICAgJzIwMCc6IDIwMAogICAgICAgICAgICAgICAgJzIwMSc6IDIwMQogICAgICAgICAgICAgICAgJzIwMic6IDIwMgogICAgICAgICAgICAgICAgJzIwMyc6IDIwMwogICAgICAgICAgICAgICAgJzIwNCc6IDIwNAogICAgICAgICAgICAgICAgJzIwNSc6IDIwNQogICAgICAgICAgICAgICAgJzIwNic6IDIwNgogICAgICAgICAgICAgICAgJzIwNyc6IDIwNwogICAgICAgICAgICAgICAgJzIwOCc6IDIwOAogICAgICAgICAgICAgICAgJzIwOSc6IDIwOQogICAgICAgICAgICAgICAgJzIxJzogMjEKICAgICAgICAgICAgICAgICcyMTAnOiAyMTAKICAgICAgICAgICAgICAgICcyMTEnOiAyMTEKICAgICAgICAgICAgICAgICcyMTInOiAyMTIKICAgICAgICAgICAgICAgICcyMTMnOiAyMTMKICAgICAgICAgICAgICAgICcyMTQnOiAyMTQKICAgICAgICAgICAgICAgICcyMTUnOiAyMTUKICAgICAgICAgICAgICAgICcyMTYnOiAyMTYKICAgICAgICAgICAgICAgICcyMTcnOiAyMTcKICAgICAgICAgICAgICAgICcyMTgnOiAyMTgKICAgICAgICAgICAgICAgICcyMTknOiAyMTkKICAgICAgICAgICAgICAgICcyMic6IDIyCiAgICAgICAgICAgICAgICAnMjIwJzogMjIwCiAgICAgICAgICAgICAgICAnMjIxJzogMjIxCiAgICAgICAgICAgICAgICAnMjIyJzogMjIyCiAgICAgICAgICAgICAgICAnMjIzJzogMjIzCiAgICAgICAgICAgICAgICAnMjI0JzogMjI0CiAgICAgICAgICAgICAgICAnMjI1JzogMjI1CiAgICAgICAgICAgICAgICAnMjI2JzogMjI2CiAgICAgICAgICAgICAgICAnMjI3JzogMjI3CiAgICAgICAgICAgICAgICAnMjI4JzogMjI4CiAgICAgICAgICAgICAgICAnMjI5JzogMjI5CiAgICAgICAgICAgICAgICAnMjMnOiAyMwogICAgICAgICAgICAgICAgJzIzMCc6IDIzMAogICAgICAgICAgICAgICAgJzIzMSc6IDIzMQogICAgICAgICAgICAgICAgJzIzMic6IDIzMgogICAgICAgICAgICAgICAgJzIzMyc6IDIzMwogICAgICAgICAgICAgICAgJzIzNCc6IDIzNAogICAgICAgICAgICAgICAgJzIzNSc6IDIzNQogICAgICAgICAgICAgICAgJzIzNic6IDIzNgogICAgICAgICAgICAgICAgJzIzNyc6IDIzNwogICAgICAgICAgICAgICAgJzIzOCc6IDIzOAogICAgICAgICAgICAgICAgJzIzOSc6IDIzOQogICAgICAgICAgICAgICAgJzI0JzogMjQKICAgICAgICAgICAgICAgICcyNDAnOiAyNDAKICAgICAgICAgICAgICAgICcyNDEnOiAyNDEKICAgICAgICAgICAgICAgICcyNDInOiAyNDIKICAgICAgICAgICAgICAgICcyNDMnOiAyNDMKICAgICAgICAgICAgICAgICcyNDQnOiAyNDQKICAgICAgICAgICAgICAgICcyNDUnOiAyNDUKICAgICAgICAgICAgICAgICcyNDYnOiAyNDYKICAgICAgICAgICAgICAgICcyNDcnOiAyNDcKICAgICAgICAgICAgICAgICcyNDgnOiAyNDgKICAgICAgICAgICAgICAgICcyNDknOiAyNDkKICAgICAgICAgICAgICAgICcyNSc6IDI1CiAgICAgICAgICAgICAgICAnMjUwJzogMjUwCiAgICAgICAgICAgICAgICAnMjUxJzogMjUxCiAgICAgICAgICAgICAgICAnMjUyJzogMjUyCiAgICAgICAgICAgICAgICAnMjUzJzogMjUzCiAgICAgICAgICAgICAgICAnMjU0JzogMjU0CiAgICAgICAgICAgICAgICAnMjU1JzogMjU1CiAgICAgICAgICAgICAgICAnMjU2JzogMjU2CiAgICAgICAgICAgICAgICAnMjU3JzogMjU3CiAgICAgICAgICAgICAgICAnMjU4JzogMjU4CiAgICAgICAgICAgICAgICAnMjU5JzogMjU5CiAgICAgICAgICAgICAgICAnMjYnOiAyNgogICAgICAgICAgICAgICAgJzI2MCc6IDI2MAogICAgICAgICAgICAgICAgJzI2MSc6IDI2MQogICAgICAgICAgICAgICAgJzI2Mic6IDI2MgogICAgICAgICAgICAgICAgJzI2Myc6IDI2MwogICAgICAgICAgICAgICAgJzI2NCc6IDI2NAogICAgICAgICAgICAgICAgJzI2NSc6IDI2NQogICAgICAgICAgICAgICAgJzI2Nic6IDI2NgogICAgICAgICAgICAgICAgJzI2Nyc6IDI2NwogICAgICAgICAgICAgICAgJzI2OCc6IDI2OAogICAgICAgICAgICAgICAgJzI2OSc6IDI2OQogICAgICAgICAgICAgICAgJzI3JzogMjcKICAgICAgICAgICAgICAgICcyNzAnOiAyNzAKICAgICAgICAgICAgICAgICcyNzEnOiAyNzEKICAgICAgICAgICAgICAgICcyNzInOiAyNzIKICAgICAgICAgICAgICAgICcyNzMnOiAyNzMKICAgICAgICAgICAgICAgICcyNzQnOiAyNzQKICAgICAgICAgICAgICAgICcyNzUnOiAyNzUKICAgICAgICAgICAgICAgICcyNzYnOiAyNzYKICAgICAgICAgICAgICAgICcyNzcnOiAyNzcKICAgICAgICAgICAgICAgICcyNzgnOiAyNzgKICAgICAgICAgICAgICAgICcyNzknOiAyNzkKICAgICAgICAgICAgICAgICcyOCc6IDI4CiAgICAgICAgICAgICAgICAnMjgwJzogMjgwCiAgICAgICAgICAgICAgICAnMjgxJzogMjgxCiAgICAgICAgICAgICAgICAnMjgyJzogMjgyCiAgICAgICAgICAgICAgICAnMjgzJzogMjgzCiAgICAgICAgICAgICAgICAnMjg0JzogMjg0CiAgICAgICAgICAgICAgICAnMjg1JzogMjg1CiAgICAgICAgICAgICAgICAnMjg2JzogMjg2CiAgICAgICAgICAgICAgICAnMjg3JzogMjg3CiAgICAgICAgICAgICAgICAnMjg4JzogMjg4CiAgICAgICAgICAgICAgICAnMjg5JzogMjg5CiAgICAgICAgICAgICAgICAnMjknOiAyOQogICAgICAgICAgICAgICAgJzI5MCc6IDI5MAogICAgICAgICAgICAgICAgJzI5MSc6IDI5MQogICAgICAgICAgICAgICAgJzI5Mic6IDI5MgogICAgICAgICAgICAgICAgJzI5Myc6IDI5MwogICAgICAgICAgICAgICAgJzI5NCc6IDI5NAogICAgICAgICAgICAgICAgJzI5NSc6IDI5NQogICAgICAgICAgICAgICAgJzI5Nic6IDI5NgogICAgICAgICAgICAgICAgJzI5Nyc6IDI5NwogICAgICAgICAgICAgICAgJzI5OCc6IDI5OAogICAgICAgICAgICAgICAgJzI5OSc6IDI5OQogICAgICAgICAgICAgICAgJzMnOiAzCiAgICAgICAgICAgICAgICAnMzAnOiAzMAogICAgICAgICAgICAgICAgJzMwMCc6IDMwMAogICAgICAgICAgICAgICAgJzMwMSc6IDMwMQogICAgICAgICAgICAgICAgJzMwMic6IDMwMgogICAgICAgICAgICAgICAgJzMwMyc6IDMwMwogICAgICAgICAgICAgICAgJzMwNCc6IDMwNAogICAgICAgICAgICAgICAgJzMwNSc6IDMwNQogICAgICAgICAgICAgICAgJzMwNic6IDMwNgogICAgICAgICAgICAgICAgJzMwNyc6IDMwNwogICAgICAgICAgICAgICAgJzMwOCc6IDMwOAogICAgICAgICAgICAgICAgJzMwOSc6IDMwOQogICAgICAgICAgICAgICAgJzMxJzogMzEKICAgICAgICAgICAgICAgICczMTAnOiAzMTAKICAgICAgICAgICAgICAgICczMTEnOiAzMTEKICAgICAgICAgICAgICAgICczMTInOiAzMTIKICAgICAgICAgICAgICAgICczMTMnOiAzMTMKICAgICAgICAgICAgICAgICczMTQnOiAzMTQKICAgICAgICAgICAgICAgICczMTUnOiAzMTUKICAgICAgICAgICAgICAgICczMTYnOiAzMTYKICAgICAgICAgICAgICAgICczMTcnOiAzMTcKICAgICAgICAgICAgICAgICczMTgnOiAzMTgKICAgICAgICAgICAgICAgICczMTknOiAzMTkKICAgICAgICAgICAgICAgICczMic6IDMyCiAgICAgICAgICAgICAgICAnMzIwJzogMzIwCiAgICAgICAgICAgICAgICAnMzIxJzogMzIxCiAgICAgICAgICAgICAgICAnMzIyJzogMzIyCiAgICAgICAgICAgICAgICAnMzIzJzogMzIzCiAgICAgICAgICAgICAgICAnMzI0JzogMzI0CiAgICAgICAgICAgICAgICAnMzI1JzogMzI1CiAgICAgICAgICAgICAgICAnMzI2JzogMzI2CiAgICAgICAgICAgICAgICAnMzI3JzogMzI3CiAgICAgICAgICAgICAgICAnMzI4JzogMzI4CiAgICAgICAgICAgICAgICAnMzI5JzogMzI5CiAgICAgICAgICAgICAgICAnMzMnOiAzMwogICAgICAgICAgICAgICAgJzMzMCc6IDMzMAogICAgICAgICAgICAgICAgJzMzMSc6IDMzMQogICAgICAgICAgICAgICAgJzMzMic6IDMzMgogICAgICAgICAgICAgICAgJzMzMyc6IDMzMwogICAgICAgICAgICAgICAgJzMzNCc6IDMzNAogICAgICAgICAgICAgICAgJzMzNSc6IDMzNQogICAgICAgICAgICAgICAgJzMzNic6IDMzNgogICAgICAgICAgICAgICAgJzMzNyc6IDMzNwogICAgICAgICAgICAgICAgJzMzOCc6IDMzOAogICAgICAgICAgICAgICAgJzMzOSc6IDMzOQogICAgICAgICAgICAgICAgJzM0JzogMzQKICAgICAgICAgICAgICAgICczNDAnOiAzNDAKICAgICAgICAgICAgICAgICczNDEnOiAzNDEKICAgICAgICAgICAgICAgICczNDInOiAzNDIKICAgICAgICAgICAgICAgICczNDMnOiAzNDMKICAgICAgICAgICAgICAgICczNDQnOiAzNDQKICAgICAgICAgICAgICAgICczNDUnOiAzNDUKICAgICAgICAgICAgICAgICczNDYnOiAzNDYKICAgICAgICAgICAgICAgICczNDcnOiAzNDcKICAgICAgICAgICAgICAgICczNDgnOiAzNDgKICAgICAgICAgICAgICAgICczNDknOiAzNDkKICAgICAgICAgICAgICAgICczNSc6IDM1CiAgICAgICAgICAgICAgICAnMzUwJzogMzUwCiAgICAgICAgICAgICAgICAnMzUxJzogMzUxCiAgICAgICAgICAgICAgICAnMzUyJzogMzUyCiAgICAgICAgICAgICAgICAnMzUzJzogMzUzCiAgICAgICAgICAgICAgICAnMzU0JzogMzU0CiAgICAgICAgICAgICAgICAnMzU1JzogMzU1CiAgICAgICAgICAgICAgICAnMzU2JzogMzU2CiAgICAgICAgICAgICAgICAnMzU3JzogMzU3CiAgICAgICAgICAgICAgICAnMzU4JzogMzU4CiAgICAgICAgICAgICAgICAnMzU5JzogMzU5CiAgICAgICAgICAgICAgICAnMzYnOiAzNgogICAgICAgICAgICAgICAgJzM2MCc6IDM2MAogICAgICAgICAgICAgICAgJzM2MSc6IDM2MQogICAgICAgICAgICAgICAgJzM2Mic6IDM2MgogICAgICAgICAgICAgICAgJzM2Myc6IDM2MwogICAgICAgICAgICAgICAgJzM2NCc6IDM2NAogICAgICAgICAgICAgICAgJzM2NSc6IDM2NQogICAgICAgICAgICAgICAgJzM2Nic6IDM2NgogICAgICAgICAgICAgICAgJzM2Nyc6IDM2NwogICAgICAgICAgICAgICAgJzM2OCc6IDM2OAogICAgICAgICAgICAgICAgJzM2OSc6IDM2OQogICAgICAgICAgICAgICAgJzM3JzogMzcKICAgICAgICAgICAgICAgICczNzAnOiAzNzAKICAgICAgICAgICAgICAgICczNzEnOiAzNzEKICAgICAgICAgICAgICAgICczNzInOiAzNzIKICAgICAgICAgICAgICAgICczNzMnOiAzNzMKICAgICAgICAgICAgICAgICczNzQnOiAzNzQKICAgICAgICAgICAgICAgICczNzUnOiAzNzUKICAgICAgICAgICAgICAgICczNzYnOiAzNzYKICAgICAgICAgICAgICAgICczNzcnOiAzNzcKICAgICAgICAgICAgICAgICczNzgnOiAzNzgKICAgICAgICAgICAgICAgICczNzknOiAzNzkKICAgICAgICAgICAgICAgICczOCc6IDM4CiAgICAgICAgICAgICAgICAnMzgwJzogMzgwCiAgICAgICAgICAgICAgICAnMzgxJzogMzgxCiAgICAgICAgICAgICAgICAnMzgyJzogMzgyCiAgICAgICAgICAgICAgICAnMzgzJzogMzgzCiAgICAgICAgICAgICAgICAnMzg0JzogMzg0CiAgICAgICAgICAgICAgICAnMzg1JzogMzg1CiAgICAgICAgICAgICAgICAnMzg2JzogMzg2CiAgICAgICAgICAgICAgICAnMzg3JzogMzg3CiAgICAgICAgICAgICAgICAnMzg4JzogMzg4CiAgICAgICAgICAgICAgICAnMzg5JzogMzg5CiAgICAgICAgICAgICAgICAnMzknOiAzOQogICAgICAgICAgICAgICAgJzM5MCc6IDM5MAogICAgICAgICAgICAgICAgJzM5MSc6IDM5MQogICAgICAgICAgICAgICAgJzM5Mic6IDM5MgogICAgICAgICAgICAgICAgJzM5Myc6IDM5MwogICAgICAgICAgICAgICAgJzM5NCc6IDM5NAogICAgICAgICAgICAgICAgJzM5NSc6IDM5NQogICAgICAgICAgICAgICAgJzM5Nic6IDM5NgogICAgICAgICAgICAgICAgJzM5Nyc6IDM5NwogICAgICAgICAgICAgICAgJzM5OCc6IDM5OAogICAgICAgICAgICAgICAgJzM5OSc6IDM5OQogICAgICAgICAgICAgICAgJzQnOiA0CiAgICAgICAgICAgICAgICAnNDAnOiA0MAogICAgICAgICAgICAgICAgJzQwMCc6IDQwMAogICAgICAgICAgICAgICAgJzQwMSc6IDQwMQogICAgICAgICAgICAgICAgJzQwMic6IDQwMgogICAgICAgICAgICAgICAgJzQwMyc6IDQwMwogICAgICAgICAgICAgICAgJzQwNCc6IDQwNAogICAgICAgICAgICAgICAgJzQwNSc6IDQwNQogICAgICAgICAgICAgICAgJzQwNic6IDQwNgogICAgICAgICAgICAgICAgJzQwNyc6IDQwNwogICAgICAgICAgICAgICAgJzQwOCc6IDQwOAogICAgICAgICAgICAgICAgJzQwOSc6IDQwOQogICAgICAgICAgICAgICAgJzQxJzogNDEKICAgICAgICAgICAgICAgICc0MTAnOiA0MTAKICAgICAgICAgICAgICAgICc0MTEnOiA0MTEKICAgICAgICAgICAgICAgICc0MTInOiA0MTIKICAgICAgICAgICAgICAgICc0MTMnOiA0MTMKICAgICAgICAgICAgICAgICc0MTQnOiA0MTQKICAgICAgICAgICAgICAgICc0MTUnOiA0MTUKICAgICAgICAgICAgICAgICc0MTYnOiA0MTYKICAgICAgICAgICAgICAgICc0MTcnOiA0MTcKICAgICAgICAgICAgICAgICc0MTgnOiA0MTgKICAgICAgICAgICAgICAgICc0MTknOiA0MTkKICAgICAgICAgICAgICAgICc0Mic6IDQyCiAgICAgICAgICAgICAgICAnNDIwJzogNDIwCiAgICAgICAgICAgICAgICAnNDIxJzogNDIxCiAgICAgICAgICAgICAgICAnNDIyJzogNDIyCiAgICAgICAgICAgICAgICAnNDIzJzogNDIzCiAgICAgICAgICAgICAgICAnNDI0JzogNDI0CiAgICAgICAgICAgICAgICAnNDI1JzogNDI1CiAgICAgICAgICAgICAgICAnNDI2JzogNDI2CiAgICAgICAgICAgICAgICAnNDI3JzogNDI3CiAgICAgICAgICAgICAgICAnNDI4JzogNDI4CiAgICAgICAgICAgICAgICAnNDI5JzogNDI5CiAgICAgICAgICAgICAgICAnNDMnOiA0MwogICAgICAgICAgICAgICAgJzQzMCc6IDQzMAogICAgICAgICAgICAgICAgJzQzMSc6IDQzMQogICAgICAgICAgICAgICAgJzQzMic6IDQzMgogICAgICAgICAgICAgICAgJzQzMyc6IDQzMwogICAgICAgICAgICAgICAgJzQzNCc6IDQzNAogICAgICAgICAgICAgICAgJzQzNSc6IDQzNQogICAgICAgICAgICAgICAgJzQzNic6IDQzNgogICAgICAgICAgICAgICAgJzQzNyc6IDQzNwogICAgICAgICAgICAgICAgJzQzOCc6IDQzOAogICAgICAgICAgICAgICAgJzQzOSc6IDQzOQogICAgICAgICAgICAgICAgJzQ0JzogNDQKICAgICAgICAgICAgICAgICc0NDAnOiA0NDAKICAgICAgICAgICAgICAgICc0NDEnOiA0NDEKICAgICAgICAgICAgICAgICc0NDInOiA0NDIKICAgICAgICAgICAgICAgICc0NDMnOiA0NDMKICAgICAgICAgICAgICAgICc0NDQnOiA0NDQKICAgICAgICAgICAgICAgICc0NDUnOiA0NDUKICAgICAgICAgICAgICAgICc0NDYnOiA0NDYKICAgICAgICAgICAgICAgICc0NDcnOiA0NDcKICAgICAgICAgICAgICAgICc0NDgnOiA0NDgKICAgICAgICAgICAgICAgICc0NDknOiA0NDkKICAgICAgICAgICAgICAgICc0NSc6IDQ1CiAgICAgICAgICAgICAgICAnNDUwJzogNDUwCiAgICAgICAgICAgICAgICAnNDUxJzogNDUxCiAgICAgICAgICAgICAgICAnNDUyJzogNDUyCiAgICAgICAgICAgICAgICAnNDUzJzogNDUzCiAgICAgICAgICAgICAgICAnNDU0JzogNDU0CiAgICAgICAgICAgICAgICAnNDU1JzogNDU1CiAgICAgICAgICAgICAgICAnNDU2JzogNDU2CiAgICAgICAgICAgICAgICAnNDU3JzogNDU3CiAgICAgICAgICAgICAgICAnNDU4JzogNDU4CiAgICAgICAgICAgICAgICAnNDU5JzogNDU5CiAgICAgICAgICAgICAgICAnNDYnOiA0NgogICAgICAgICAgICAgICAgJzQ2MCc6IDQ2MAogICAgICAgICAgICAgICAgJzQ2MSc6IDQ2MQogICAgICAgICAgICAgICAgJzQ2Mic6IDQ2MgogICAgICAgICAgICAgICAgJzQ2Myc6IDQ2MwogICAgICAgICAgICAgICAgJzQ2NCc6IDQ2NAogICAgICAgICAgICAgICAgJzQ2NSc6IDQ2NQogICAgICAgICAgICAgICAgJzQ2Nic6IDQ2NgogICAgICAgICAgICAgICAgJzQ2Nyc6IDQ2NwogICAgICAgICAgICAgICAgJzQ2OCc6IDQ2OAogICAgICAgICAgICAgICAgJzQ2OSc6IDQ2OQogICAgICAgICAgICAgICAgJzQ3JzogNDcKICAgICAgICAgICAgICAgICc0NzAnOiA0NzAKICAgICAgICAgICAgICAgICc0NzEnOiA0NzEKICAgICAgICAgICAgICAgICc0NzInOiA0NzIKICAgICAgICAgICAgICAgICc0NzMnOiA0NzMKICAgICAgICAgICAgICAgICc0NzQnOiA0NzQKICAgICAgICAgICAgICAgICc0NzUnOiA0NzUKICAgICAgICAgICAgICAgICc0NzYnOiA0NzYKICAgICAgICAgICAgICAgICc0NzcnOiA0NzcKICAgICAgICAgICAgICAgICc0NzgnOiA0NzgKICAgICAgICAgICAgICAgICc0NzknOiA0NzkKICAgICAgICAgICAgICAgICc0OCc6IDQ4CiAgICAgICAgICAgICAgICAnNDgwJzogNDgwCiAgICAgICAgICAgICAgICAnNDgxJzogNDgxCiAgICAgICAgICAgICAgICAnNDgyJzogNDgyCiAgICAgICAgICAgICAgICAnNDgzJzogNDgzCiAgICAgICAgICAgICAgICAnNDg0JzogNDg0CiAgICAgICAgICAgICAgICAnNDg1JzogNDg1CiAgICAgICAgICAgICAgICAnNDg2JzogNDg2CiAgICAgICAgICAgICAgICAnNDg3JzogNDg3CiAgICAgICAgICAgICAgICAnNDg4JzogNDg4CiAgICAgICAgICAgICAgICAnNDg5JzogNDg5CiAgICAgICAgICAgICAgICAnNDknOiA0OQogICAgICAgICAgICAgICAgJzQ5MCc6IDQ5MAogICAgICAgICAgICAgICAgJzQ5MSc6IDQ5MQogICAgICAgICAgICAgICAgJzQ5Mic6IDQ5MgogICAgICAgICAgICAgICAgJzQ5Myc6IDQ5MwogICAgICAgICAgICAgICAgJzQ5NCc6IDQ5NAogICAgICAgICAgICAgICAgJzQ5NSc6IDQ5NQogICAgICAgICAgICAgICAgJzQ5Nic6IDQ5NgogICAgICAgICAgICAgICAgJzQ5Nyc6IDQ5NwogICAgICAgICAgICAgICAgJzQ5OCc6IDQ5OAogICAgICAgICAgICAgICAgJzQ5OSc6IDQ5OQogICAgICAgICAgICAgICAgJzUnOiA1CiAgICAgICAgICAgICAgICAnNTAnOiA1MAogICAgICAgICAgICAgICAgJzUwMCc6IDUwMAogICAgICAgICAgICAgICAgJzUwMSc6IDUwMQogICAgICAgICAgICAgICAgJzUwMic6IDUwMgogICAgICAgICAgICAgICAgJzUwMyc6IDUwMwogICAgICAgICAgICAgICAgJzUwNCc6IDUwNAogICAgICAgICAgICAgICAgJzUwNSc6IDUwNQogICAgICAgICAgICAgICAgJzUwNic6IDUwNgogICAgICAgICAgICAgICAgJzUwNyc6IDUwNwogICAgICAgICAgICAgICAgJzUwOCc6IDUwOAogICAgICAgICAgICAgICAgJzUwOSc6IDUwOQogICAgICAgICAgICAgICAgJzUxJzogNTEKICAgICAgICAgICAgICAgICc1MTAnOiA1MTAKICAgICAgICAgICAgICAgICc1MTEnOiA1MTEKICAgICAgICAgICAgICAgICc1MTInOiA1MTIKICAgICAgICAgICAgICAgICc1MTMnOiA1MTMKICAgICAgICAgICAgICAgICc1MTQnOiA1MTQKICAgICAgICAgICAgICAgICc1MTUnOiA1MTUKICAgICAgICAgICAgICAgICc1MTYnOiA1MTYKICAgICAgICAgICAgICAgICc1MTcnOiA1MTcKICAgICAgICAgICAgICAgICc1MTgnOiA1MTgKICAgICAgICAgICAgICAgICc1MTknOiA1MTkKICAgICAgICAgICAgICAgICc1Mic6IDUyCiAgICAgICAgICAgICAgICAnNTIwJzogNTIwCiAgICAgICAgICAgICAgICAnNTIxJzogNTIxCiAgICAgICAgICAgICAgICAnNTIyJzogNTIyCiAgICAgICAgICAgICAgICAnNTIzJzogNTIzCiAgICAgICAgICAgICAgICAnNTI0JzogNTI0CiAgICAgICAgICAgICAgICAnNTI1JzogNTI1CiAgICAgICAgICAgICAgICAnNTI2JzogNTI2CiAgICAgICAgICAgICAgICAnNTI3JzogNTI3CiAgICAgICAgICAgICAgICAnNTI4JzogNTI4CiAgICAgICAgICAgICAgICAnNTI5JzogNTI5CiAgICAgICAgICAgICAgICAnNTMnOiA1MwogICAgICAgICAgICAgICAgJzUzMCc6IDUzMAogICAgICAgICAgICAgICAgJzUzMSc6IDUzMQogICAgICAgICAgICAgICAgJzUzMic6IDUzMgogICAgICAgICAgICAgICAgJzUzMyc6IDUzMwogICAgICAgICAgICAgICAgJzUzNCc6IDUzNAogICAgICAgICAgICAgICAgJzUzNSc6IDUzNQogICAgICAgICAgICAgICAgJzUzNic6IDUzNgogICAgICAgICAgICAgICAgJzUzNyc6IDUzNwogICAgICAgICAgICAgICAgJzUzOCc6IDUzOAogICAgICAgICAgICAgICAgJzUzOSc6IDUzOQogICAgICAgICAgICAgICAgJzU0JzogNTQKICAgICAgICAgICAgICAgICc1NDAnOiA1NDAKICAgICAgICAgICAgICAgICc1NDEnOiA1NDEKICAgICAgICAgICAgICAgICc1NDInOiA1NDIKICAgICAgICAgICAgICAgICc1NDMnOiA1NDMKICAgICAgICAgICAgICAgICc1NDQnOiA1NDQKICAgICAgICAgICAgICAgICc1NDUnOiA1NDUKICAgICAgICAgICAgICAgICc1NDYnOiA1NDYKICAgICAgICAgICAgICAgICc1NDcnOiA1NDcKICAgICAgICAgICAgICAgICc1NDgnOiA1NDgKICAgICAgICAgICAgICAgICc1NDknOiA1NDkKICAgICAgICAgICAgICAgICc1NSc6IDU1CiAgICAgICAgICAgICAgICAnNTUwJzogNTUwCiAgICAgICAgICAgICAgICAnNTUxJzogNTUxCiAgICAgICAgICAgICAgICAnNTUyJzogNTUyCiAgICAgICAgICAgICAgICAnNTUzJzogNTUzCiAgICAgICAgICAgICAgICAnNTU0JzogNTU0CiAgICAgICAgICAgICAgICAnNTU1JzogNTU1CiAgICAgICAgICAgICAgICAnNTU2JzogNTU2CiAgICAgICAgICAgICAgICAnNTU3JzogNTU3CiAgICAgICAgICAgICAgICAnNTU4JzogNTU4CiAgICAgICAgICAgICAgICAnNTU5JzogNTU5CiAgICAgICAgICAgICAgICAnNTYnOiA1NgogICAgICAgICAgICAgICAgJzU2MCc6IDU2MAogICAgICAgICAgICAgICAgJzU2MSc6IDU2MQogICAgICAgICAgICAgICAgJzU2Mic6IDU2MgogICAgICAgICAgICAgICAgJzU2Myc6IDU2MwogICAgICAgICAgICAgICAgJzU2NCc6IDU2NAogICAgICAgICAgICAgICAgJzU2NSc6IDU2NQogICAgICAgICAgICAgICAgJzU2Nic6IDU2NgogICAgICAgICAgICAgICAgJzU2Nyc6IDU2NwogICAgICAgICAgICAgICAgJzU2OCc6IDU2OAogICAgICAgICAgICAgICAgJzU2OSc6IDU2OQogICAgICAgICAgICAgICAgJzU3JzogNTcKICAgICAgICAgICAgICAgICc1NzAnOiA1NzAKICAgICAgICAgICAgICAgICc1NzEnOiA1NzEKICAgICAgICAgICAgICAgICc1NzInOiA1NzIKICAgICAgICAgICAgICAgICc1NzMnOiA1NzMKICAgICAgICAgICAgICAgICc1NzQnOiA1NzQKICAgICAgICAgICAgICAgICc1NzUnOiA1NzUKICAgICAgICAgICAgICAgICc1NzYnOiA1NzYKICAgICAgICAgICAgICAgICc1NzcnOiA1NzcKICAgICAgICAgICAgICAgICc1NzgnOiA1NzgKICAgICAgICAgICAgICAgICc1NzknOiA1NzkKICAgICAgICAgICAgICAgICc1OCc6IDU4CiAgICAgICAgICAgICAgICAnNTgwJzogNTgwCiAgICAgICAgICAgICAgICAnNTgxJzogNTgxCiAgICAgICAgICAgICAgICAnNTgyJzogNTgyCiAgICAgICAgICAgICAgICAnNTgzJzogNTgzCiAgICAgICAgICAgICAgICAnNTg0JzogNTg0CiAgICAgICAgICAgICAgICAnNTg1JzogNTg1CiAgICAgICAgICAgICAgICAnNTg2JzogNTg2CiAgICAgICAgICAgICAgICAnNTg3JzogNTg3CiAgICAgICAgICAgICAgICAnNTg4JzogNTg4CiAgICAgICAgICAgICAgICAnNTg5JzogNTg5CiAgICAgICAgICAgICAgICAnNTknOiA1OQogICAgICAgICAgICAgICAgJzU5MCc6IDU5MAogICAgICAgICAgICAgICAgJzU5MSc6IDU5MQogICAgICAgICAgICAgICAgJzU5Mic6IDU5MgogICAgICAgICAgICAgICAgJzU5Myc6IDU5MwogICAgICAgICAgICAgICAgJzU5NCc6IDU5NAogICAgICAgICAgICAgICAgJzU5NSc6IDU5NQogICAgICAgICAgICAgICAgJzU5Nic6IDU5NgogICAgICAgICAgICAgICAgJzU5Nyc6IDU5NwogICAgICAgICAgICAgICAgJzU5OCc6IDU5OAogICAgICAgICAgICAgICAgJzU5OSc6IDU5OQogICAgICAgICAgICAgICAgJzYnOiA2CiAgICAgICAgICAgICAgICAnNjAnOiA2MAogICAgICAgICAgICAgICAgJzYwMCc6IDYwMAogICAgICAgICAgICAgICAgJzYwMSc6IDYwMQogICAgICAgICAgICAgICAgJzYwMic6IDYwMgogICAgICAgICAgICAgICAgJzYwMyc6IDYwMwogICAgICAgICAgICAgICAgJzYwNCc6IDYwNAogICAgICAgICAgICAgICAgJzYwNSc6IDYwNQogICAgICAgICAgICAgICAgJzYwNic6IDYwNgogICAgICAgICAgICAgICAgJzYwNyc6IDYwNwogICAgICAgICAgICAgICAgJzYwOCc6IDYwOAogICAgICAgICAgICAgICAgJzYwOSc6IDYwOQogICAgICAgICAgICAgICAgJzYxJzogNjEKICAgICAgICAgICAgICAgICc2MTAnOiA2MTAKICAgICAgICAgICAgICAgICc2MTEnOiA2MTEKICAgICAgICAgICAgICAgICc2MTInOiA2MTIKICAgICAgICAgICAgICAgICc2MTMnOiA2MTMKICAgICAgICAgICAgICAgICc2MTQnOiA2MTQKICAgICAgICAgICAgICAgICc2MTUnOiA2MTUKICAgICAgICAgICAgICAgICc2MTYnOiA2MTYKICAgICAgICAgICAgICAgICc2MTcnOiA2MTcKICAgICAgICAgICAgICAgICc2MTgnOiA2MTgKICAgICAgICAgICAgICAgICc2MTknOiA2MTkKICAgICAgICAgICAgICAgICc2Mic6IDYyCiAgICAgICAgICAgICAgICAnNjIwJzogNjIwCiAgICAgICAgICAgICAgICAnNjIxJzogNjIxCiAgICAgICAgICAgICAgICAnNjIyJzogNjIyCiAgICAgICAgICAgICAgICAnNjIzJzogNjIzCiAgICAgICAgICAgICAgICAnNjI0JzogNjI0CiAgICAgICAgICAgICAgICAnNjI1JzogNjI1CiAgICAgICAgICAgICAgICAnNjI2JzogNjI2CiAgICAgICAgICAgICAgICAnNjI3JzogNjI3CiAgICAgICAgICAgICAgICAnNjI4JzogNjI4CiAgICAgICAgICAgICAgICAnNjI5JzogNjI5CiAgICAgICAgICAgICAgICAnNjMnOiA2MwogICAgICAgICAgICAgICAgJzYzMCc6IDYzMAogICAgICAgICAgICAgICAgJzYzMSc6IDYzMQogICAgICAgICAgICAgICAgJzYzMic6IDYzMgogICAgICAgICAgICAgICAgJzYzMyc6IDYzMwogICAgICAgICAgICAgICAgJzYzNCc6IDYzNAogICAgICAgICAgICAgICAgJzYzNSc6IDYzNQogICAgICAgICAgICAgICAgJzYzNic6IDYzNgogICAgICAgICAgICAgICAgJzYzNyc6IDYzNwogICAgICAgICAgICAgICAgJzYzOCc6IDYzOAogICAgICAgICAgICAgICAgJzYzOSc6IDYzOQogICAgICAgICAgICAgICAgJzY0JzogNjQKICAgICAgICAgICAgICAgICc2NDAnOiA2NDAKICAgICAgICAgICAgICAgICc2NDEnOiA2NDEKICAgICAgICAgICAgICAgICc2NDInOiA2NDIKICAgICAgICAgICAgICAgICc2NDMnOiA2NDMKICAgICAgICAgICAgICAgICc2NDQnOiA2NDQKICAgICAgICAgICAgICAgICc2NDUnOiA2NDUKICAgICAgICAgICAgICAgICc2NDYnOiA2NDYKICAgICAgICAgICAgICAgICc2NDcnOiA2NDcKICAgICAgICAgICAgICAgICc2NDgnOiA2NDgKICAgICAgICAgICAgICAgICc2NDknOiA2NDkKICAgICAgICAgICAgICAgICc2NSc6IDY1CiAgICAgICAgICAgICAgICAnNjUwJzogNjUwCiAgICAgICAgICAgICAgICAnNjUxJzogNjUxCiAgICAgICAgICAgICAgICAnNjUyJzogNjUyCiAgICAgICAgICAgICAgICAnNjUzJzogNjUzCiAgICAgICAgICAgICAgICAnNjU0JzogNjU0CiAgICAgICAgICAgICAgICAnNjU1JzogNjU1CiAgICAgICAgICAgICAgICAnNjU2JzogNjU2CiAgICAgICAgICAgICAgICAnNjU3JzogNjU3CiAgICAgICAgICAgICAgICAnNjU4JzogNjU4CiAgICAgICAgICAgICAgICAnNjU5JzogNjU5CiAgICAgICAgICAgICAgICAnNjYnOiA2NgogICAgICAgICAgICAgICAgJzY2MCc6IDY2MAogICAgICAgICAgICAgICAgJzY2MSc6IDY2MQogICAgICAgICAgICAgICAgJzY2Mic6IDY2MgogICAgICAgICAgICAgICAgJzY2Myc6IDY2MwogICAgICAgICAgICAgICAgJzY2NCc6IDY2NAogICAgICAgICAgICAgICAgJzY2NSc6IDY2NQogICAgICAgICAgICAgICAgJzY2Nic6IDY2NgogICAgICAgICAgICAgICAgJzY2Nyc6IDY2NwogICAgICAgICAgICAgICAgJzY2OCc6IDY2OAogICAgICAgICAgICAgICAgJzY2OSc6IDY2OQogICAgICAgICAgICAgICAgJzY3JzogNjcKICAgICAgICAgICAgICAgICc2NzAnOiA2NzAKICAgICAgICAgICAgICAgICc2NzEnOiA2NzEKICAgICAgICAgICAgICAgICc2NzInOiA2NzIKICAgICAgICAgICAgICAgICc2NzMnOiA2NzMKICAgICAgICAgICAgICAgICc2NzQnOiA2NzQKICAgICAgICAgICAgICAgICc2NzUnOiA2NzUKICAgICAgICAgICAgICAgICc2NzYnOiA2NzYKICAgICAgICAgICAgICAgICc2NzcnOiA2NzcKICAgICAgICAgICAgICAgICc2NzgnOiA2NzgKICAgICAgICAgICAgICAgICc2NzknOiA2NzkKICAgICAgICAgICAgICAgICc2OCc6IDY4CiAgICAgICAgICAgICAgICAnNjgwJzogNjgwCiAgICAgICAgICAgICAgICAnNjgxJzogNjgxCiAgICAgICAgICAgICAgICAnNjgyJzogNjgyCiAgICAgICAgICAgICAgICAnNjgzJzogNjgzCiAgICAgICAgICAgICAgICAnNjg0JzogNjg0CiAgICAgICAgICAgICAgICAnNjg1JzogNjg1CiAgICAgICAgICAgICAgICAnNjg2JzogNjg2CiAgICAgICAgICAgICAgICAnNjg3JzogNjg3CiAgICAgICAgICAgICAgICAnNjg4JzogNjg4CiAgICAgICAgICAgICAgICAnNjg5JzogNjg5CiAgICAgICAgICAgICAgICAnNjknOiA2OQogICAgICAgICAgICAgICAgJzY5MCc6IDY5MAogICAgICAgICAgICAgICAgJzY5MSc6IDY5MQogICAgICAgICAgICAgICAgJzY5Mic6IDY5MgogICAgICAgICAgICAgICAgJzY5Myc6IDY5MwogICAgICAgICAgICAgICAgJzY5NCc6IDY5NAogICAgICAgICAgICAgICAgJzY5NSc6IDY5NQogICAgICAgICAgICAgICAgJzY5Nic6IDY5NgogICAgICAgICAgICAgICAgJzY5Nyc6IDY5NwogICAgICAgICAgICAgICAgJzY5OCc6IDY5OAogICAgICAgICAgICAgICAgJzY5OSc6IDY5OQogICAgICAgICAgICAgICAgJzcnOiA3CiAgICAgICAgICAgICAgICAnNzAnOiA3MAogICAgICAgICAgICAgICAgJzcwMCc6IDcwMAogICAgICAgICAgICAgICAgJzcwMSc6IDcwMQogICAgICAgICAgICAgICAgJzcwMic6IDcwMgogICAgICAgICAgICAgICAgJzcwMyc6IDcwMwogICAgICAgICAgICAgICAgJzcwNCc6IDcwNAogICAgICAgICAgICAgICAgJzcwNSc6IDcwNQogICAgICAgICAgICAgICAgJzcwNic6IDcwNgogICAgICAgICAgICAgICAgJzcwNyc6IDcwNwogICAgICAgICAgICAgICAgJzcwOCc6IDcwOAogICAgICAgICAgICAgICAgJzcwOSc6IDcwOQogICAgICAgICAgICAgICAgJzcxJzogNzEKICAgICAgICAgICAgICAgICc3MTAnOiA3MTAKICAgICAgICAgICAgICAgICc3MTEnOiA3MTEKICAgICAgICAgICAgICAgICc3MTInOiA3MTIKICAgICAgICAgICAgICAgICc3MTMnOiA3MTMKICAgICAgICAgICAgICAgICc3MTQnOiA3MTQKICAgICAgICAgICAgICAgICc3MTUnOiA3MTUKICAgICAgICAgICAgICAgICc3MTYnOiA3MTYKICAgICAgICAgICAgICAgICc3MTcnOiA3MTcKICAgICAgICAgICAgICAgICc3MTgnOiA3MTgKICAgICAgICAgICAgICAgICc3MTknOiA3MTkKICAgICAgICAgICAgICAgICc3Mic6IDcyCiAgICAgICAgICAgICAgICAnNzIwJzogNzIwCiAgICAgICAgICAgICAgICAnNzIxJzogNzIxCiAgICAgICAgICAgICAgICAnNzIyJzogNzIyCiAgICAgICAgICAgICAgICAnNzIzJzogNzIzCiAgICAgICAgICAgICAgICAnNzI0JzogNzI0CiAgICAgICAgICAgICAgICAnNzI1JzogNzI1CiAgICAgICAgICAgICAgICAnNzI2JzogNzI2CiAgICAgICAgICAgICAgICAnNzI3JzogNzI3CiAgICAgICAgICAgICAgICAnNzI4JzogNzI4CiAgICAgICAgICAgICAgICAnNzI5JzogNzI5CiAgICAgICAgICAgICAgICAnNzMnOiA3MwogICAgICAgICAgICAgICAgJzczMCc6IDczMAogICAgICAgICAgICAgICAgJzczMSc6IDczMQogICAgICAgICAgICAgICAgJzczMic6IDczMgogICAgICAgICAgICAgICAgJzczMyc6IDczMwogICAgICAgICAgICAgICAgJzczNCc6IDczNAogICAgICAgICAgICAgICAgJzczNSc6IDczNQogICAgICAgICAgICAgICAgJzczNic6IDczNgogICAgICAgICAgICAgICAgJzczNyc6IDczNwogICAgICAgICAgICAgICAgJzczOCc6IDczOAogICAgICAgICAgICAgICAgJzczOSc6IDczOQogICAgICAgICAgICAgICAgJzc0JzogNzQKICAgICAgICAgICAgICAgICc3NDAnOiA3NDAKICAgICAgICAgICAgICAgICc3NDEnOiA3NDEKICAgICAgICAgICAgICAgICc3NDInOiA3NDIKICAgICAgICAgICAgICAgICc3NDMnOiA3NDMKICAgICAgICAgICAgICAgICc3NDQnOiA3NDQKICAgICAgICAgICAgICAgICc3NDUnOiA3NDUKICAgICAgICAgICAgICAgICc3NDYnOiA3NDYKICAgICAgICAgICAgICAgICc3NDcnOiA3NDcKICAgICAgICAgICAgICAgICc3NDgnOiA3NDgKICAgICAgICAgICAgICAgICc3NDknOiA3NDkKICAgICAgICAgICAgICAgICc3NSc6IDc1CiAgICAgICAgICAgICAgICAnNzUwJzogNzUwCiAgICAgICAgICAgICAgICAnNzUxJzogNzUxCiAgICAgICAgICAgICAgICAnNzUyJzogNzUyCiAgICAgICAgICAgICAgICAnNzUzJzogNzUzCiAgICAgICAgICAgICAgICAnNzU0JzogNzU0CiAgICAgICAgICAgICAgICAnNzU1JzogNzU1CiAgICAgICAgICAgICAgICAnNzU2JzogNzU2CiAgICAgICAgICAgICAgICAnNzU3JzogNzU3CiAgICAgICAgICAgICAgICAnNzU4JzogNzU4CiAgICAgICAgICAgICAgICAnNzU5JzogNzU5CiAgICAgICAgICAgICAgICAnNzYnOiA3NgogICAgICAgICAgICAgICAgJzc2MCc6IDc2MAogICAgICAgICAgICAgICAgJzc2MSc6IDc2MQogICAgICAgICAgICAgICAgJzc2Mic6IDc2MgogICAgICAgICAgICAgICAgJzc2Myc6IDc2MwogICAgICAgICAgICAgICAgJzc2NCc6IDc2NAogICAgICAgICAgICAgICAgJzc2NSc6IDc2NQogICAgICAgICAgICAgICAgJzc2Nic6IDc2NgogICAgICAgICAgICAgICAgJzc2Nyc6IDc2NwogICAgICAgICAgICAgICAgJzc2OCc6IDc2OAogICAgICAgICAgICAgICAgJzc2OSc6IDc2OQogICAgICAgICAgICAgICAgJzc3JzogNzcKICAgICAgICAgICAgICAgICc3NzAnOiA3NzAKICAgICAgICAgICAgICAgICc3NzEnOiA3NzEKICAgICAgICAgICAgICAgICc3NzInOiA3NzIKICAgICAgICAgICAgICAgICc3NzMnOiA3NzMKICAgICAgICAgICAgICAgICc3NzQnOiA3NzQKICAgICAgICAgICAgICAgICc3NzUnOiA3NzUKICAgICAgICAgICAgICAgICc3NzYnOiA3NzYKICAgICAgICAgICAgICAgICc3NzcnOiA3NzcKICAgICAgICAgICAgICAgICc3NzgnOiA3NzgKICAgICAgICAgICAgICAgICc3NzknOiA3NzkKICAgICAgICAgICAgICAgICc3OCc6IDc4CiAgICAgICAgICAgICAgICAnNzgwJzogNzgwCiAgICAgICAgICAgICAgICAnNzgxJzogNzgxCiAgICAgICAgICAgICAgICAnNzgyJzogNzgyCiAgICAgICAgICAgICAgICAnNzgzJzogNzgzCiAgICAgICAgICAgICAgICAnNzg0JzogNzg0CiAgICAgICAgICAgICAgICAnNzg1JzogNzg1CiAgICAgICAgICAgICAgICAnNzg2JzogNzg2CiAgICAgICAgICAgICAgICAnNzg3JzogNzg3CiAgICAgICAgICAgICAgICAnNzg4JzogNzg4CiAgICAgICAgICAgICAgICAnNzg5JzogNzg5CiAgICAgICAgICAgICAgICAnNzknOiA3OQogICAgICAgICAgICAgICAgJzc5MCc6IDc5MAogICAgICAgICAgICAgICAgJzc5MSc6IDc5MQogICAgICAgICAgICAgICAgJzc5Mic6IDc5MgogICAgICAgICAgICAgICAgJzc5Myc6IDc5MwogICAgICAgICAgICAgICAgJzc5NCc6IDc5NAogICAgICAgICAgICAgICAgJzc5NSc6IDc5NQogICAgICAgICAgICAgICAgJzc5Nic6IDc5NgogICAgICAgICAgICAgICAgJzc5Nyc6IDc5NwogICAgICAgICAgICAgICAgJzc5OCc6IDc5OAogICAgICAgICAgICAgICAgJzc5OSc6IDc5OQogICAgICAgICAgICAgICAgJzgnOiA4CiAgICAgICAgICAgICAgICAnODAnOiA4MAogICAgICAgICAgICAgICAgJzgwMCc6IDgwMAogICAgICAgICAgICAgICAgJzgwMSc6IDgwMQogICAgICAgICAgICAgICAgJzgwMic6IDgwMgogICAgICAgICAgICAgICAgJzgwMyc6IDgwMwogICAgICAgICAgICAgICAgJzgwNCc6IDgwNAogICAgICAgICAgICAgICAgJzgwNSc6IDgwNQogICAgICAgICAgICAgICAgJzgwNic6IDgwNgogICAgICAgICAgICAgICAgJzgwNyc6IDgwNwogICAgICAgICAgICAgICAgJzgwOCc6IDgwOAogICAgICAgICAgICAgICAgJzgwOSc6IDgwOQogICAgICAgICAgICAgICAgJzgxJzogODEKICAgICAgICAgICAgICAgICc4MTAnOiA4MTAKICAgICAgICAgICAgICAgICc4MTEnOiA4MTEKICAgICAgICAgICAgICAgICc4MTInOiA4MTIKICAgICAgICAgICAgICAgICc4MTMnOiA4MTMKICAgICAgICAgICAgICAgICc4MTQnOiA4MTQKICAgICAgICAgICAgICAgICc4MTUnOiA4MTUKICAgICAgICAgICAgICAgICc4MTYnOiA4MTYKICAgICAgICAgICAgICAgICc4MTcnOiA4MTcKICAgICAgICAgICAgICAgICc4MTgnOiA4MTgKICAgICAgICAgICAgICAgICc4MTknOiA4MTkKICAgICAgICAgICAgICAgICc4Mic6IDgyCiAgICAgICAgICAgICAgICAnODIwJzogODIwCiAgICAgICAgICAgICAgICAnODIxJzogODIxCiAgICAgICAgICAgICAgICAnODIyJzogODIyCiAgICAgICAgICAgICAgICAnODIzJzogODIzCiAgICAgICAgICAgICAgICAnODI0JzogODI0CiAgICAgICAgICAgICAgICAnODI1JzogODI1CiAgICAgICAgICAgICAgICAnODI2JzogODI2CiAgICAgICAgICAgICAgICAnODI3JzogODI3CiAgICAgICAgICAgICAgICAnODI4JzogODI4CiAgICAgICAgICAgICAgICAnODI5JzogODI5CiAgICAgICAgICAgICAgICAnODMnOiA4MwogICAgICAgICAgICAgICAgJzgzMCc6IDgzMAogICAgICAgICAgICAgICAgJzgzMSc6IDgzMQogICAgICAgICAgICAgICAgJzgzMic6IDgzMgogICAgICAgICAgICAgICAgJzgzMyc6IDgzMwogICAgICAgICAgICAgICAgJzgzNCc6IDgzNAogICAgICAgICAgICAgICAgJzgzNSc6IDgzNQogICAgICAgICAgICAgICAgJzgzNic6IDgzNgogICAgICAgICAgICAgICAgJzgzNyc6IDgzNwogICAgICAgICAgICAgICAgJzgzOCc6IDgzOAogICAgICAgICAgICAgICAgJzgzOSc6IDgzOQogICAgICAgICAgICAgICAgJzg0JzogODQKICAgICAgICAgICAgICAgICc4NDAnOiA4NDAKICAgICAgICAgICAgICAgICc4NDEnOiA4NDEKICAgICAgICAgICAgICAgICc4NDInOiA4NDIKICAgICAgICAgICAgICAgICc4NDMnOiA4NDMKICAgICAgICAgICAgICAgICc4NDQnOiA4NDQKICAgICAgICAgICAgICAgICc4NDUnOiA4NDUKICAgICAgICAgICAgICAgICc4NDYnOiA4NDYKICAgICAgICAgICAgICAgICc4NDcnOiA4NDcKICAgICAgICAgICAgICAgICc4NDgnOiA4NDgKICAgICAgICAgICAgICAgICc4NDknOiA4NDkKICAgICAgICAgICAgICAgICc4NSc6IDg1CiAgICAgICAgICAgICAgICAnODUwJzogODUwCiAgICAgICAgICAgICAgICAnODUxJzogODUxCiAgICAgICAgICAgICAgICAnODUyJzogODUyCiAgICAgICAgICAgICAgICAnODUzJzogODUzCiAgICAgICAgICAgICAgICAnODU0JzogODU0CiAgICAgICAgICAgICAgICAnODU1JzogODU1CiAgICAgICAgICAgICAgICAnODU2JzogODU2CiAgICAgICAgICAgICAgICAnODU3JzogODU3CiAgICAgICAgICAgICAgICAnODU4JzogODU4CiAgICAgICAgICAgICAgICAnODU5JzogODU5CiAgICAgICAgICAgICAgICAnODYnOiA4NgogICAgICAgICAgICAgICAgJzg2MCc6IDg2MAogICAgICAgICAgICAgICAgJzg2MSc6IDg2MQogICAgICAgICAgICAgICAgJzg2Mic6IDg2MgogICAgICAgICAgICAgICAgJzg2Myc6IDg2MwogICAgICAgICAgICAgICAgJzg2NCc6IDg2NAogICAgICAgICAgICAgICAgJzg2NSc6IDg2NQogICAgICAgICAgICAgICAgJzg2Nic6IDg2NgogICAgICAgICAgICAgICAgJzg2Nyc6IDg2NwogICAgICAgICAgICAgICAgJzg2OCc6IDg2OAogICAgICAgICAgICAgICAgJzg2OSc6IDg2OQogICAgICAgICAgICAgICAgJzg3JzogODcKICAgICAgICAgICAgICAgICc4NzAnOiA4NzAKICAgICAgICAgICAgICAgICc4NzEnOiA4NzEKICAgICAgICAgICAgICAgICc4NzInOiA4NzIKICAgICAgICAgICAgICAgICc4NzMnOiA4NzMKICAgICAgICAgICAgICAgICc4NzQnOiA4NzQKICAgICAgICAgICAgICAgICc4NzUnOiA4NzUKICAgICAgICAgICAgICAgICc4NzYnOiA4NzYKICAgICAgICAgICAgICAgICc4NzcnOiA4NzcKICAgICAgICAgICAgICAgICc4NzgnOiA4NzgKICAgICAgICAgICAgICAgICc4NzknOiA4NzkKICAgICAgICAgICAgICAgICc4OCc6IDg4CiAgICAgICAgICAgICAgICAnODgwJzogODgwCiAgICAgICAgICAgICAgICAnODgxJzogODgxCiAgICAgICAgICAgICAgICAnODgyJzogODgyCiAgICAgICAgICAgICAgICAnODgzJzogODgzCiAgICAgICAgICAgICAgICAnODg0JzogODg0CiAgICAgICAgICAgICAgICAnODg1JzogODg1CiAgICAgICAgICAgICAgICAnODg2JzogODg2CiAgICAgICAgICAgICAgICAnODg3JzogODg3CiAgICAgICAgICAgICAgICAnODg4JzogODg4CiAgICAgICAgICAgICAgICAnODg5JzogODg5CiAgICAgICAgICAgICAgICAnODknOiA4OQogICAgICAgICAgICAgICAgJzg5MCc6IDg5MAogICAgICAgICAgICAgICAgJzg5MSc6IDg5MQogICAgICAgICAgICAgICAgJzg5Mic6IDg5MgogICAgICAgICAgICAgICAgJzg5Myc6IDg5MwogICAgICAgICAgICAgICAgJzg5NCc6IDg5NAogICAgICAgICAgICAgICAgJzg5NSc6IDg5NQogICAgICAgICAgICAgICAgJzg5Nic6IDg5NgogICAgICAgICAgICAgICAgJzg5Nyc6IDg5NwogICAgICAgICAgICAgICAgJzg5OCc6IDg5OAogICAgICAgICAgICAgICAgJzg5OSc6IDg5OQogICAgICAgICAgICAgICAgJzknOiA5CiAgICAgICAgICAgICAgICAnOTAnOiA5MAogICAgICAgICAgICAgICAgJzkwMCc6IDkwMAogICAgICAgICAgICAgICAgJzkwMSc6IDkwMQogICAgICAgICAgICAgICAgJzkwMic6IDkwMgogICAgICAgICAgICAgICAgJzkwMyc6IDkwMwogICAgICAgICAgICAgICAgJzkwNCc6IDkwNAogICAgICAgICAgICAgICAgJzkwNSc6IDkwNQogICAgICAgICAgICAgICAgJzkwNic6IDkwNgogICAgICAgICAgICAgICAgJzkwNyc6IDkwNwogICAgICAgICAgICAgICAgJzkwOCc6IDkwOAogICAgICAgICAgICAgICAgJzkwOSc6IDkwOQogICAgICAgICAgICAgICAgJzkxJzogOTEKICAgICAgICAgICAgICAgICc5MTAnOiA5MTAKICAgICAgICAgICAgICAgICc5MTEnOiA5MTEKICAgICAgICAgICAgICAgICc5MTInOiA5MTIKICAgICAgICAgICAgICAgICc5MTMnOiA5MTMKICAgICAgICAgICAgICAgICc5MTQnOiA5MTQKICAgICAgICAgICAgICAgICc5MTUnOiA5MTUKICAgICAgICAgICAgICAgICc5MTYnOiA5MTYKICAgICAgICAgICAgICAgICc5MTcnOiA5MTcKICAgICAgICAgICAgICAgICc5MTgnOiA5MTgKICAgICAgICAgICAgICAgICc5MTknOiA5MTkKICAgICAgICAgICAgICAgICc5Mic6IDkyCiAgICAgICAgICAgICAgICAnOTIwJzogOTIwCiAgICAgICAgICAgICAgICAnOTIxJzogOTIxCiAgICAgICAgICAgICAgICAnOTIyJzogOTIyCiAgICAgICAgICAgICAgICAnOTIzJzogOTIzCiAgICAgICAgICAgICAgICAnOTI0JzogOTI0CiAgICAgICAgICAgICAgICAnOTI1JzogOTI1CiAgICAgICAgICAgICAgICAnOTI2JzogOTI2CiAgICAgICAgICAgICAgICAnOTI3JzogOTI3CiAgICAgICAgICAgICAgICAnOTI4JzogOTI4CiAgICAgICAgICAgICAgICAnOTI5JzogOTI5CiAgICAgICAgICAgICAgICAnOTMnOiA5MwogICAgICAgICAgICAgICAgJzkzMCc6IDkzMAogICAgICAgICAgICAgICAgJzkzMSc6IDkzMQogICAgICAgICAgICAgICAgJzkzMic6IDkzMgogICAgICAgICAgICAgICAgJzkzMyc6IDkzMwogICAgICAgICAgICAgICAgJzkzNCc6IDkzNAogICAgICAgICAgICAgICAgJzkzNSc6IDkzNQogICAgICAgICAgICAgICAgJzkzNic6IDkzNgogICAgICAgICAgICAgICAgJzkzNyc6IDkzNwogICAgICAgICAgICAgICAgJzkzOCc6IDkzOAogICAgICAgICAgICAgICAgJzkzOSc6IDkzOQogICAgICAgICAgICAgICAgJzk0JzogOTQKICAgICAgICAgICAgICAgICc5NDAnOiA5NDAKICAgICAgICAgICAgICAgICc5NDEnOiA5NDEKICAgICAgICAgICAgICAgICc5NDInOiA5NDIKICAgICAgICAgICAgICAgICc5NDMnOiA5NDMKICAgICAgICAgICAgICAgICc5NDQnOiA5NDQKICAgICAgICAgICAgICAgICc5NDUnOiA5NDUKICAgICAgICAgICAgICAgICc5NDYnOiA5NDYKICAgICAgICAgICAgICAgICc5NDcnOiA5NDcKICAgICAgICAgICAgICAgICc5NDgnOiA5NDgKICAgICAgICAgICAgICAgICc5NDknOiA5NDkKICAgICAgICAgICAgICAgICc5NSc6IDk1CiAgICAgICAgICAgICAgICAnOTUwJzogOTUwCiAgICAgICAgICAgICAgICAnOTUxJzogOTUxCiAgICAgICAgICAgICAgICAnOTUyJzogOTUyCiAgICAgICAgICAgICAgICAnOTUzJzogOTUzCiAgICAgICAgICAgICAgICAnOTU0JzogOTU0CiAgICAgICAgICAgICAgICAnOTU1JzogOTU1CiAgICAgICAgICAgICAgICAnOTU2JzogOTU2CiAgICAgICAgICAgICAgICAnOTU3JzogOTU3CiAgICAgICAgICAgICAgICAnOTU4JzogOTU4CiAgICAgICAgICAgICAgICAnOTU5JzogOTU5CiAgICAgICAgICAgICAgICAnOTYnOiA5NgogICAgICAgICAgICAgICAgJzk2MCc6IDk2MAogICAgICAgICAgICAgICAgJzk2MSc6IDk2MQogICAgICAgICAgICAgICAgJzk2Mic6IDk2MgogICAgICAgICAgICAgICAgJzk2Myc6IDk2MwogICAgICAgICAgICAgICAgJzk2NCc6IDk2NAogICAgICAgICAgICAgICAgJzk2NSc6IDk2NQogICAgICAgICAgICAgICAgJzk2Nic6IDk2NgogICAgICAgICAgICAgICAgJzk2Nyc6IDk2NwogICAgICAgICAgICAgICAgJzk2OCc6IDk2OAogICAgICAgICAgICAgICAgJzk2OSc6IDk2OQogICAgICAgICAgICAgICAgJzk3JzogOTcKICAgICAgICAgICAgICAgICc5NzAnOiA5NzAKICAgICAgICAgICAgICAgICc5NzEnOiA5NzEKICAgICAgICAgICAgICAgICc5NzInOiA5NzIKICAgICAgICAgICAgICAgICc5NzMnOiA5NzMKICAgICAgICAgICAgICAgICc5NzQnOiA5NzQKICAgICAgICAgICAgICAgICc5NzUnOiA5NzUKICAgICAgICAgICAgICAgICc5NzYnOiA5NzYKICAgICAgICAgICAgICAgICc5NzcnOiA5NzcKICAgICAgICAgICAgICAgICc5NzgnOiA5NzgKICAgICAgICAgICAgICAgICc5NzknOiA5NzkKICAgICAgICAgICAgICAgICc5OCc6IDk4CiAgICAgICAgICAgICAgICAnOTgwJzogOTgwCiAgICAgICAgICAgICAgICAnOTgxJzogOTgxCiAgICAgICAgICAgICAgICAnOTgyJzogOTgyCiAgICAgICAgICAgICAgICAnOTgzJzogOTgzCiAgICAgICAgICAgICAgICAnOTg0JzogOTg0CiAgICAgICAgICAgICAgICAnOTg1JzogOTg1CiAgICAgICAgICAgICAgICAnOTg2JzogOTg2CiAgICAgICAgICAgICAgICAnOTg3JzogOTg3CiAgICAgICAgICAgICAgICAnOTg4JzogOTg4CiAgICAgICAgICAgICAgICAnOTg5JzogOTg5CiAgICAgICAgICAgICAgICAnOTknOiA5OQogICAgICAgICAgICAgICAgJzk5MCc6IDk5MAogICAgICAgICAgICAgICAgJzk5MSc6IDk5MQogICAgICAgICAgICAgICAgJzk5Mic6IDk5MgogICAgICAgICAgICAgICAgJzk5Myc6IDk5MwogICAgICAgICAgICAgICAgJzk5NCc6IDk5NAogICAgICAgICAgICAgICAgJzk5NSc6IDk5NQogICAgICAgICAgICAgICAgJzk5Nic6IDk5NgogICAgICAgICAgICAgICAgJzk5Nyc6IDk5NwogICAgICAgICAgICAgICAgJzk5OCc6IDk5OAogICAgICAgICAgICAgICAgJzk5OSc6IDk5OQogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBRdWFudGl0eQogICAgICAgICAgICBOYW1lOiBTb2Z0d2FyZS1MaWNlbmNlS2V5UXVhbnRpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5RXhwaXJhdGlvbkRhdGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgICAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICAgICAgICBMYWJlbDogRXhwaXJhdGlvbiBEYXRlCiAgICAgICAgICAgIE5hbWU6IFNvZnR3YXJlLUxpY2VuY2VLZXlFeHBpcmF0aW9uRGF0ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IExpY2VuY2UgS2V5CiAgICAgIE5hbWU6IFNvZnR3YXJlLUxpY2VuY2VLZXkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLUxpY2VuY2VUeXBlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OlNvZnR3YXJlOjpMaWNlbmNlVHlwZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogMQogICAgICBGaWVsZFR5cGU6IEdlbmVyYWxDYXRhbG9nCiAgICAgIExhYmVsOiBMaWNlbmNlIFR5cGUKICAgICAgTmFtZTogU29mdHdhcmUtTGljZW5jZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLU1lZGlhOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1lZGlhCiAgICAgIE5hbWU6IFNvZnR3YXJlLU1lZGlhCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1Ob3RlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBOb3RlCiAgICAgIE5hbWU6IFNvZnR3YXJlLU5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLU93bmVyOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBPd25lcgogICAgICBOYW1lOiBTb2Z0d2FyZS1Pd25lcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgU29mdHdhcmUtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbCBOdW1iZXIKICAgICAgTmFtZTogU29mdHdhcmUtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1UeXBlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OlNvZnR3YXJlOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogU29mdHdhcmUtVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgU29mdHdhcmUtVmVuZG9yOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFZlbmRvcgogICAgICBOYW1lOiBTb2Z0d2FyZS1WZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLVZlcnNpb246CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogVmVyc2lvbgogICAgICBOYW1lOiBTb2Z0d2FyZS1WZXJzaW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCg==</File>
        <File Location="scripts/test/sample/ITSMConfigurationManagement/Links/unittest.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBMb2NhdGlvbgogICAgTmFtZTogQ291bnRyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gTG9jYXRpb24KICAgIE5hbWU6IFN1YnNpZGlhcnkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBBZGRyZXNzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvblxyXG5cclxuU2VjdGlvbnM6XHJcbiAgQWRkcmVzczpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gSGVhZGVyOgogICAgQWRkcmVzc1xyXG4gICAgICAtIERGOiBMb2NhdGlvbi1TdHJlZXRcclxuICAgICAgLSBERjogTG9jYXRpb24tQ2l0eVxyXG4gICAgICAtCiAgICBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLUxhdGl0dWRlXHJcbiAgICAgIC0gREY6CiAgICBMb2NhdGlvbi1Mb25naXR1ZGUiCiAgRHluYW1pY0ZpZWxkczoKICAgIExvY2F0aW9uLUNpdHk6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENpdHkKICAgICAgTmFtZTogTG9jYXRpb24tQ2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tTGF0aXR1ZGU6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IExhdGl0dWRlCiAgICAgIE5hbWU6IExvY2F0aW9uLUxhdGl0dWRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1Mb25naXR1ZGU6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IExvbmdpdHVkZQogICAgICBOYW1lOiBMb2NhdGlvbi1Mb25naXR1ZGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAwCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogQ291bnRyeQogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVN0cmVldDoKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU3RyZWV0CiAgICAgIE5hbWU6IExvY2F0aW9uLVN0cmVldAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBUeXBlOiBEZXNjcmlwdGlvblxyXG4gICAgSGVhZGVyOgogICAgRGVzY3JpcHRpb24iCiAgUm9sZU5hbWU6IENNREIgRGVzY3JpcHRpb24KLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEJhY2tsaW5rczpcclxuICAgIFR5cGU6IENvbmZpZ0l0ZW1MaW5rc1xyXG4gICAgSGVhZGVyOgogICAgQmFja2xpbmtzXHJcbiAgICBMaW5rZWRBczogU291cmNlIgogIFJvbGVOYW1lOiBDTURCIEJhY2tsaW5rcwo=</File>
        <File Location="scripts/webservices/GenericConfigItemConnectorSOAP.yml" Permission="660" Encode="Base64">LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAwCkRlc2NyaXB0aW9uOiBJVFNNIENvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBDb25uZWN0b3IgU2FtcGxlCkZyYW1ld29ya1ZlcnNpb246IDUuMC54IGdpdApQcm92aWRlcjoKICBPcGVyYXRpb246CiAgICBDb25maWdJdGVtQ3JlYXRlOgogICAgICBEZXNjcmlwdGlvbjogQ3JlYXRlcyBuZXcgQ29uZmlndXJhdGlvbiBJdGVtcyBmcm9tIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICBNYXBwaW5nSW5ib3VuZDoge30KICAgICAgTWFwcGluZ091dGJvdW5kOiB7fQogICAgICBUeXBlOiBDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlCiAgICBDb25maWdJdGVtRGVsZXRlOgogICAgICBEZXNjcmlwdGlvbjogRGVsZXRlcyBDb25maWd1cmF0aW9uIEl0ZW1zIGZyb20gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IENvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGUKICAgIENvbmZpZ0l0ZW1HZXQ6CiAgICAgIERlc2NyaXB0aW9uOiBHZXQgdGhlIGRldGFpbHMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMgZnJvbSBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldAogICAgQ29uZmlnSXRlbVNlYXJjaDoKICAgICAgRGVzY3JpcHRpb246IFNlYXJjaCBDb25maWd1cmF0aW9uIEl0ZW1zIGZyb20gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IENvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2gKICAgIENvbmZpZ0l0ZW1VcGRhdGU6CiAgICAgIERlc2NyaXB0aW9uOiBVcGRhdGVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZnJvbSBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZQogIFRyYW5zcG9ydDoKICAgIENvbmZpZzoKICAgICAgTWF4TGVuZ3RoOiAxMDAwMDAwMDAKICAgICAgTmFtZVNwYWNlOiBodHRwOi8vd3d3Lm90b2JvLm9yZy9Db25maWdJdGVtQ29ubmVjdG9yCiAgICAgIFJlcXVlc3ROYW1lRnJlZVRleHQ6ICcnCiAgICAgIFJlcXVlc3ROYW1lU2NoZW1lOiBQbGFpbgogICAgICBSZXNwb25zZU5hbWVGcmVlVGV4dDogJycKICAgICAgUmVzcG9uc2VOYW1lU2NoZW1lOiBSZXNwb25zZQogICAgVHlwZTogSFRUUDo6U09BUApSZW1vdGVTeXN0ZW06ICcnClJlcXVlc3RlcjoKICBUcmFuc3BvcnQ6CiAgICBUeXBlOiAnJwo=</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.TreeView.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuQWdlbnQgPSBDb3JlLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UgQ29yZS5BZ2VudC5UcmVlVmlldwogKiBAbWVtYmVyb2YgQ29yZS5BZ2VudAogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gVHJlZVZpZXcuCiAqLwpDb3JlLkFnZW50LlRyZWVWaWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIEluc3RhbmNlCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5BZG1pbi5Qcm9jZXNzTWFuYWdlbWVudC5DYW52YXMKICAgICAqIEBtZW1iZXIge0FycmF5fQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIGxvY2FsIHZhcmlhYmxlIGZvciBKU1BsdW1iCiAgICAgKi8KCiAgICB2YXIgSW5zdGFuY2U7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5UcmVlVmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgVHJlZVZpZXcuCiAgICAqLwoKICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CgogICAgICAgICQoIGRvY3VtZW50ICkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIFVwZGF0ZVRyZWUoKTsKICAgICAgICB9KTsKCiAgICAgICAgJCgiI0RlcHRoIikuYmluZCgna2V5dXAgbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgVXBkYXRlVHJlZSgpOwogICAgICAgIH0pOwoKICAgICAgICAkKCIjWm9vbSIpLmJpbmQoJ2tleWRvd24gbW91c2Vkb3duJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKCIjTGFzdFpvb20iKS52YWwoJCgiI1pvb20iKS52YWwoKSk7CiAgICAgICAgfSk7CgogICAgICAgICQoIiNab29tIikuYmluZCgna2V5dXAgbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgWm9vbUluT3V0KCk7CiAgICAgICAgfSk7CgogICAgICAgICQoIiNUcmVlVmlld0Nsb3NlTGluayIpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB3aW5kb3cuY2xvc2UoKTsKICAgICAgICB9KTsKCiAgICAgICAgd2luZG93LnNldFpvb20gPSBmdW5jdGlvbih6b29tLCBpbnN0YW5jZSwgdHJhbnNmb3JtT3JpZ2luKSB7CgogICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW4gPSB0cmFuc2Zvcm1PcmlnaW4gfHwgWzAuNSwgMC41XTsKICAgICAgICAgICAgdmFyIGVsID0gaW5zdGFuY2UuZ2V0Q29udGFpbmVyKCk7CgogICAgICAgICAgICB2YXIgcCA9IFsid2Via2l0IiwgIm1veiIsICJtcyIsICJvIl0sCiAgICAgICAgICAgICAgcyA9ICJzY2FsZSgiICsgem9vbSArICIpIiwKICAgICAgICAgICAgICBvU3RyaW5nID0gKHRyYW5zZm9ybU9yaWdpblswXSAqIDEwMCkgKyAiJSAiICsgKHRyYW5zZm9ybU9yaWdpblsxXSAqIDEwMCkgKyAiJSI7CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBlbC5zdHlsZVtwW2ldICsgIlRyYW5zZm9ybSJdID0gczsKICAgICAgICAgICAgICBlbC5zdHlsZVtwW2ldICsgIlRyYW5zZm9ybU9yaWdpbiJdID0gb1N0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWwuc3R5bGVbInRyYW5zZm9ybSJdID0gczsKICAgICAgICAgICAgZWwuc3R5bGVbInRyYW5zZm9ybU9yaWdpbiJdID0gb1N0cmluZzsKCiAgICAgICAgICAgIGluc3RhbmNlLnNldFpvb20oem9vbSk7CiAgICAgICAgICAgIGluc3RhbmNlLnJlcGFpbnRFdmVyeXRoaW5nKCk7CiAgICAgICAgfTsKCiAgICAgICAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpewogICAgICAgICAgICBJbnN0YW5jZS5yZXBhaW50RXZlcnl0aGluZygpOwogICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICogQHByaXZhdGUKICAgICogQG5hbWUgWm9vbUluT3V0CiAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LlRyZWVWaWV3CiAgICAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAgICAqIEBmdW5jdGlvbgogICAgKiBAZGVzY3JpcHRpb24KICAgICogICAgICBBcHBseSBab29tIGluIG9yIE91dCBvZiB0aGUgVHJlZVZpZXcgR3JhcGhpYy4KICAgICovCgogICAgZnVuY3Rpb24gWm9vbUluT3V0KCkgewogICAgICAgIHdpbmRvdy5zZXRab29tKHBhcnNlSW50KCQoIiNab29tIikudmFsKCkpLzEwMCwgSW5zdGFuY2UsIG51bGwpOwogICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvKioKICAgICogQHByaXZhdGUKICAgICogQG5hbWUgVXBkYXRlVHJlZQogICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5UcmVlVmlldwogICAgKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVXBkYXRlIFRyZWVWaWV3IHdpdGggZGVzaXJlZCBkZXB0aCBsZXZlbCBmb3IgdGhlIHNlbGVjdGVkIENvbmZpZ0l0ZW0uCiAgICAqICAgICAgVGhlIHRyZWUgbm9kZXMgYXJlIHB1dCBpbnRvIHRoZSBIVE1MIGVsZW1lbnQgJ0NhbnZhcycuCiAgICAqICAgICAgQWxzbyBpbmNsdWRlZCBpbiB0aGUgQ2FudmFzIGFyZSB0aGUgaGlkZGVuIGlucHV0IGZpZWxkcyBMaW5rRGF0YVNvdXJjZSBhbmQgTGlua0RhdGFUYXJnZXQKICAgICogICAgICB3aGljaCBsaXN0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgbm9kZXMuCiAgICAqLwoKICAgIGZ1bmN0aW9uIFVwZGF0ZVRyZWUoKSB7CiAgICAgICAganNQbHVtYi5yZXNldCgpOwogICAgICAgICQoJyNDYW52YXMnKS5lbXB0eSgpOwoKICAgICAgICBsZXQgUmVxdWVzdFBhcmFtcyA9IHsKICAgICAgICAgICAgQWN0aW9uOiAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3JywKICAgICAgICAgICAgU3ViYWN0aW9uOiAgICAnTG9hZFRyZWVWaWV3JywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEOiBlbmNvZGVVUklDb21wb25lbnQoJCgiI0NvbmZpZ0l0ZW1JRCIpLnZhbCgpKSwKICAgICAgICAgICAgVmVyc2lvbklEOiAgICBlbmNvZGVVUklDb21wb25lbnQoJCgiI1ZlcnNpb25JRCIpLnZhbCgpKSwKICAgICAgICAgICAgRGVwdGg6ICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoJCgiI0RlcHRoIikudmFsKCkpCiAgICAgICAgfTsKCiAgICAgICAgJCgiI0RlcHRoIikucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKICAgICAgICAkKCIjQUpBWExvYWRlckRlcHRoIikuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7CgogICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgIENvcmUuQ29uZmlnLkdldCgnQ0dJSGFuZGxlJyksCiAgICAgICAgICAgIFJlcXVlc3RQYXJhbXMsCiAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZSkgewogICAgICAgICAgICAgICAgJCgiI0NhbnZhcyIpLmh0bWwoUmVzcG9uc2UpOwoKICAgICAgICAgICAgICAgIEluc3RhbmNlID0ganNQbHVtYi5nZXRJbnN0YW5jZSh7CiAgICAgICAgICAgICAgICAgICAgUGFpbnRTdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IDAuMSwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlU3R5bGU6ICIjMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZUNvbG9yOiAiIzAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmVXaWR0aDogMC4xCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBDb25uZWN0b3I6IFsiU3RyYWlnaHQiXSwKICAgICAgICAgICAgICAgICAgICBhbmNob3I6IFsnUGVyaW1ldGVyJywge3NoYXBlOiAnQ2lyY2xlJ31dLAogICAgICAgICAgICAgICAgICAgIEVuZHBvaW50OiBbJ0RvdCcsIHtyYWRpdXM6IDN9XSwKICAgICAgICAgICAgICAgICAgICBlbmRwb2ludFN0eWxlOiB7ZmlsbDogJ3JnYig4MCwgODEsIDgxKSd9LAogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogJ0NhbnZhcycKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGRyYXdDb25uZWN0aW9ucyggSW5zdGFuY2UsICQoIiNMaW5rRGF0YVNvdXJjZSIpLnZhbCgpLCAnU291cmNlJyApOwogICAgICAgICAgICAgICAgZHJhd0Nvbm5lY3Rpb25zKCBJbnN0YW5jZSwgJCgiI0xpbmtEYXRhVGFyZ2V0IikudmFsKCksICdUYXJnZXQnICk7CgogICAgICAgICAgICAgICAgJCgiI0FKQVhMb2FkZXJEZXB0aCIpLmNzcygiZGlzcGxheSIsICJub25lIik7CiAgICAgICAgICAgICAgICAkKCIjRGVwdGgiKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKCiAgICAgICAgICAgICAgICBpZiAoIHBhcnNlSW50KCQoIiNEZXB0aCIpLnZhbCgpKSA+IHBhcnNlSW50KCQoIiNNYXhEZXB0aCIpLnZhbCgpKSApIHsKICAgICAgICAgICAgICAgICAgICAkKCIjRGVwdGgiKS52YWwoJCgiI01heERlcHRoIikudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICQoIiNUcmVlVmlld01lc3NhZ2VzIikucmVtb3ZlQ2xhc3MoIkhpZGRlbiIpOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkKCIjVHJlZVZpZXdNZXNzYWdlcyIpLmFkZENsYXNzKCJIaWRkZW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFuY2UucmVwYWludEV2ZXJ5dGhpbmcoKTsKICAgICAgICAgICAgICAgICAgICB9LCAzMDAwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICQoIiNUcmVlVmlld01lc3NhZ2VzIikuYWRkQ2xhc3MoIkhpZGRlbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgSW5zdGFuY2UucmVwYWludEV2ZXJ5dGhpbmcoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2h0bWwnCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIGRyYXdDb25uZWN0aW9ucwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuVHJlZWVWaWV3CiAgICAgKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2luc3RhbmNlfSAgSnNQbHVtYiBJbnN0YW5jZQogICAgICogQHBhcmFtIHtsaW5rX2RhdGF9IGxpbmsgbGlzdCwgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbgogICAgICogQHBhcmFtIHtvcHRpb259IFNwZWNpZnkgVGFyZ2V0L1NvdXJjZQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFdyaXRlIGFyY3MgKGFycm93cykgYmV0d2VlbiBlbGVtZW50cyBpbiB0aGUgZ3JhcGhpYy4KICAgICAqLwoKICAgIGZ1bmN0aW9uIGRyYXdDb25uZWN0aW9ucyhpbnN0YW5jZSwgbGlua19kYXRhLCBvcHRpb24pIHsKCiAgICAgICAgLy8gbm90aGluZyB0byBkbyB3aGVuIHRoZSBpbnB1dCBpcyBlbXB0ZQogICAgICAgIGlmIChsaW5rX2RhdGEgPT09ICIiKSByZXR1cm47CgogICAgICAgIHZhciBDb25uZWN0aW9ucyAgICA9IGxpbmtfZGF0YS5zcGxpdCgiOyIpOwogICAgICAgIHZhciBEaXJlY3Rpb24gICAgICA9IG9wdGlvbjsKICAgICAgICB2YXIgU2hvd0xpbmtMYWJlbHMgPSAkKCIjU2hvd0xpbmtMYWJlbHMiKS52YWwoKTsKCiAgICAgICAgQ29ubmVjdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHsKICAgICAgICAgICAgdmFyIExpbmsgPSBlbGVtZW50LnNwbGl0KCIsIik7CgogICAgICAgICAgICBsZXQgUGFyYW1zID0gewogICAgICAgICAgICAgICAgc291cmNlOiBMaW5rWzFdLAogICAgICAgICAgICAgICAgdGFyZ2V0OiBMaW5rWzBdLAogICAgICAgICAgICAgICAgc2NvcGU6ICJUcmVlVmlldyIsCiAgICAgICAgICAgICAgICBhbmNob3I6IFsiQm90dG9tIiwgIlRvcCJdLAogICAgICAgICAgICAgICAgcGFyYW1ldGVyczogewogICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpb25JRDogRGlyZWN0aW9uICsgTGlua1sxXSArICItIiArIExpbmtbMF0gKyAiLSIgKyBMaW5rWzJdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBpZiAoIFNob3dMaW5rTGFiZWxzID09PSAiWWVzIiApIHsKICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oUGFyYW1zLCB7CiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheXM6WwogICAgICAgICAgICAgICAgICAgICAgICBbICJBcnJvdyIsIHsgd2lkdGg6OSwgbGVuZ3RoOjEwLCBsb2NhdGlvbjogMC45NiwgaWQ6ImFycm93IiB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIkxhYmVsIiwgeyBsYWJlbDogTGlua1syXSwgbG9jYXRpb246MC41LCBpZDoiTGFiZWwiLCBzdHlsZTogImJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYiIH0gXQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihQYXJhbXMsIHsKICAgICAgICAgICAgICAgICAgICBvdmVybGF5czpbCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIkFycm93IiwgeyB3aWR0aDo5LCBsZW5ndGg6MTAsIGxvY2F0aW9uOiAwLjk2LCBpZDoiYXJyb3ciIH0gXQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBhc3N1bWluZyB2YWxpZCBpbnB1dAogICAgICAgICAgICBpbnN0YW5jZS5jb25uZWN0KFBhcmFtcyk7CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KENvcmUuQWdlbnQuVHJlZVZpZXcgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Admin.ITSMConfigItem.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWRtaW4gPSBJVFNNLkFkbWluIHx8IHt9OwoKLyoqCiogQG5hbWVzcGFjZSBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiogQG1lbWJlcm9mIElUU00uQWRtaW4KKiBAYXV0aG9yCiogQGRlc2NyaXB0aW9uCiogICAgICBbZGVzY3JpcHRpb25fcGxhY2Vob2xkZXJdCiovCklUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgJCgnI0ltcG9ydCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewoKICAgICAgICAvLyB2YWxpZGF0ZSBkcm9wZG93bgogICAgICAgIHZhciBDbGFzc1ZhbGlkYXRpb24gPSBDb3JlLkZvcm0uVmFsaWRhdGUuVmFsaWRhdGVFbGVtZW50KCQoJyNFeGFtcGxlQ2xhc3MnKSk7CiAgICAgICAgaWYgKCBDbGFzc1ZhbGlkYXRpb24gPT0gZmFsc2UgKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHZhciBJbXBvcnRJdGVtID0gJCgnI0V4YW1wbGVDbGFzcycpLnZhbCgpOwoKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICAnQWN0aW9uPScgKyAnQWRtaW5JVFNNQ29uZmlnSXRlbScgKyAnO1N1YmFjdGlvbj1GaWxlQ2xhc3NMaXN0O0V4YW1wbGVGaWxlPScgKyBJbXBvcnRJdGVtLAogICAgICAgICAgICBmdW5jdGlvbiAoUmVzcG9uc2UpIHsKCiAgICAgICAgICAgICAgICBpZiAoIVJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgYWxlcnQoQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIkFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLiIpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgSXRlbUxpc3QgPSBSZXNwb25zZTsKCiAgICAgICAgICAgICAgICB2YXIgSFRNTFN0cmluZyA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKCdBZ2VudC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvQ2xhc3NJbXBvcnRDb25maXJtJywgewogICAgICAgICAgICAgICAgICAgICdDbGFzc2VzJzogSXRlbUxpc3QuQ2xhc3NlcywKICAgICAgICAgICAgICAgICAgICAnUm9sZXMnOiBJdGVtTGlzdC5Sb2xlcywKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdmFyIFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMgPSAkKCcjVXBkYXRlRXhpc3RpbmdFbnRpdGllcycpLnByb3AoJ2NoZWNrZWQnKSA/ICcxJyA6ICcwJzsKCiAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgICAgICAgICBUaXRsZTogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIk92ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICBIVE1MOiBIVE1MU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIE1vZGFsOiB0cnVlLAogICAgICAgICAgICAgICAgICAgIENsb3NlT25DbGlja091dHNpZGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIENsb3NlT25Fc2NhcGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uVG9wOiAnMjAlJywKICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbkxlZnQ6ICdDZW50ZXInLAogICAgICAgICAgICAgICAgICAgIEFsbG93QXV0b0dyb3c6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgQnV0dG9uczogWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0NvbmZpcm0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnQ29uZmlybSBDYWxsRm9yQWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIERpYWxvZ1RlbXBsYXRlID0gQ29yZS5UZW1wbGF0ZS5SZW5kZXIoJ0RpYWxvZy9XYWl0aW5nJywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0OiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTDogRGlhbG9nVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlOiAiIiwgICAvLyBOb3QgYXBwbGljYWJsZSBpZiBoZWFkZXIgaXMgaGlkZGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGFsOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZU9uQ2xpY2tPdXRzaWRlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2VPbkVzY2FwZTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uVG9wOiAnMjAlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb25MZWZ0OiAnQ2VudGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dBdXRvR3JvdzogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpZGVIZWFkZXI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpZGVGb290ZXI6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWN0aW9uPScgKyAnQWRtaW5JVFNNQ29uZmlnSXRlbScgKyAnO1N1YmFjdGlvbj1DbGFzc0ltcG9ydDtFeGFtcGxlQ2xhc3M9JyArIEltcG9ydEl0ZW0gKyAnO1VwZGF0ZUV4aXN0aW5nRW50aXRpZXM9JyArIFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFSZXNwb25zZSB8fCAhUmVzcG9uc2UuU3VjY2VzcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dBbGVydCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlLkVycm9yTWVzc2FnZSB8fCBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2c6dmlzaWJsZScpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0Rpc21pc3MnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU6ICdDbG9zZScsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfSk7CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFkbWluLklUU01Db25maWdJdGVtIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Add.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkCiAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0KICogQGF1dGhvciBSb3RoZXIgT1NTIEdtYkgKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtIGFkZC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5BZGQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkFkZAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0YWJsZSBmaWx0ZXIuCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBDb3JlLlVJLlRhYmxlLkluaXRUYWJsZUZpbHRlcigkKCcjRmlsdGVyQ2xhc3NlcycpLCAkKCcjQ2xhc3NlcycpKTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.CustomerSearch.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5BZ2VudCA9IElUU00uQWdlbnQgfHwge307CklUU00uQWdlbnQuQ29uZmlnSXRlbSA9IElUU00uQWdlbnQuQ29uZmlnSXRlbSB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIHNlYXJjaC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5DdXN0b21lclNlYXJjaCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCAtIFRoZSBqUXVlcnkgb2JqZWN0IG9mIHRoZSBpbnB1dCBmaWVsZCB3aXRoIGF1dG9jb21wbGV0ZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICB2YXIgQ3VzdG9tZXJTZWFyY2hJdGVtSURzID0gQ29yZS5Db25maWcuR2V0KCdDdXN0b21lclNlYXJjaEl0ZW1JRHMnKTsKCiAgICAgICAgaWYgKHR5cGVvZiBDdXN0b21lclNlYXJjaEl0ZW1JRHMgIT09ICd1bmRlZmluZWQnICYmIEFycmF5LmlzQXJyYXkoQ3VzdG9tZXJTZWFyY2hJdGVtSURzKSAmJiBDdXN0b21lclNlYXJjaEl0ZW1JRHMubGVuZ3RoKSB7CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEN1c3RvbWVyU2VhcmNoSXRlbUlEcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgLy8gZXNjYXBlIHBvc3NpYmxlIGNvbG9ucyAoOikgaW4gZWxlbWVudCBpZCBiZWNhdXNlIGpRdWVyeSBjYW4gbm90IGhhbmRsZSBpdCBpbiBpZCBhdHRyaWJ1dGUgc2VsZWN0b3JzCiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoLkluaXQoICQoIiMiICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoQ3VzdG9tZXJTZWFyY2hJdGVtSURzW2ldKSApICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyU2VhcmNoIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Dashboard.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkCiAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0KICogQGF1dGhvciBSb3RoZXIgT1NTIEdtYkgKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG5hdmJhci4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5EYXNoYm9hcmQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkRhc2hib2FyZAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICB2YXIgRGFzaGxldERhdGEgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtR2VuZXJpYycpOwoKICAgICAgICBpZiAodHlwZW9mIERhc2hsZXREYXRhICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUdlbmVyaWMoRGFzaGxldERhdGEpOwoKICAgICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIENvbnRlbnRVcGRhdGUgZXZlbnQgdG8gaW5pdGlhdGUgdGlja2V0IGdlbmVyaWMgZXZlbnRzIG9uIHdpZGdldCB1cGRhdGUKICAgICAgICAgICAgQ29yZS5BcHAuU3Vic2NyaWJlKCdFdmVudC5BSkFYLkNvbnRlbnRVcGRhdGUuQ2FsbGJhY2snLCBmdW5jdGlvbigkV2lkZ2V0RWxlbWVudCkgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkV2lkZ2V0RWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgJFdpZGdldEVsZW1lbnQuc2VhcmNoKERhc2hsZXREYXRhLk5hbWUpICE9PSBwYXJzZUludCgnLTEnLCAxMCkpIHsKICAgICAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUdlbmVyaWMoRGFzaGxldERhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIElUU01Db25maWdJdGVtR2VuZXJpYwogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5EYXNoYm9hcmQKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IERhc2hsZXREYXRhIC0gSGFzaCB3aXRoIGNvbnRhaW5lciBuYW1lIGFuZCBIVE1MIG5hbWUKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyBkYXNoYm9hcmQgd2lkZ2V0IElUU01Db25maWdJdGVtR2VuZXJpYwogICAgICovCiAgICBmdW5jdGlvbiBJVFNNQ29uZmlnSXRlbUdlbmVyaWMgKERhc2hsZXREYXRhKSB7CgogICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpICsgJy1ib3gnKS5maW5kKCcuVGFiLkFjdGlvbnMgbGkgYScpLm9mZignY2xpY2snKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBDdXN0b21lcklELAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklELAogICAgICAgICAgICAgICAgICAgIEZpbHRlcjsKCiAgICAgICAgICAgICAgICBDdXN0b21lcklEICAgICAgPSAkKCdpbnB1dFtuYW1lPUN1c3RvbWVySURdJykudmFsKCkgfHwgJyc7CiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCAgPSAkKCdpbnB1dFtuYW1lPUN1c3RvbWVyVXNlcklEXScpLnZhbCgpIHx8ICcnOwogICAgICAgICAgICAgICAgRmlsdGVyICAgICAgICAgID0gJCh0aGlzKS5hdHRyKCdkYXRhLWZpbHRlcicpOwoKICAgICAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLmFkZENsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgICAgICAgICBDb3JlLkFKQVguQ29udGVudFVwZGF0ZSgkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpKSwgQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgJ0FjdGlvbj0nICsgQ29yZS5Db25maWcuR2V0KCdBY3Rpb24nKSArICc7U3ViYWN0aW9uPUVsZW1lbnQ7TmFtZT0nICsgRGFzaGxldERhdGEuTmFtZSArICc7Q3VzdG9tZXJJRD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEN1c3RvbWVySUQpICsgJztDdXN0b21lclVzZXJJRD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEN1c3RvbWVyVXNlcklEKSArICc7RmlsdGVyPScgKyBGaWx0ZXIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpICsgJy1ib3gnKS5yZW1vdmVDbGFzcygnTG9hZGluZycpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuZmluZCgnLkRhdGFUYWJsZSB0aCBhJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIEN1c3RvbWVySUQsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgID0gJCh0aGlzKS5hdHRyKCdkYXRhLWNvbHVtbicpLAogICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICA9ICcnLAogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5T2JqICAgICA9ICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLmZpbmQoJ3RoLlNvcnREZXNjZW5kaW5nTGFyZ2UsIHRoLlNvcnRBc2NlbmRpbmdMYXJnZScpOwoKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgICA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJJRF0nKS52YWwoKSB8fCAnJzsKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEICA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJVc2VySURdJykudmFsKCkgfHwgJyc7CgogICAgICAgICAgICAgICAgaWYgKCRPcmRlckJ5T2JqICYmICRPcmRlckJ5T2JqLmhhc0NsYXNzKCdTb3J0RGVzY2VuZGluZ0xhcmdlJykpIHsKICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0gJ0Rvd24nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoJE9yZGVyQnlPYmogJiYgJE9yZGVyQnlPYmouaGFzQ2xhc3MoJ1NvcnRBc2NlbmRpbmdMYXJnZScpKSB7CiAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuYWRkQ2xhc3MoJ0xvYWRpbmcnKTsKICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkpLCBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAnQWN0aW9uPScgKyBDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpICsgJztTdWJhY3Rpb249RWxlbWVudDtOYW1lPScgKyBEYXNobGV0RGF0YS5OYW1lICsgJztDdXN0b21lcklEPScgKyBlbmNvZGVVUklDb21wb25lbnQoQ3VzdG9tZXJJRCkgKyAnO0N1c3RvbWVyVXNlcklEPScgKyBlbmNvZGVVUklDb21wb25lbnQoQ3VzdG9tZXJVc2VySUQpICsgJztTb3J0Qnk9JyArIFNvcnRCeSArICc7T3JkZXJCeT0nICsgT3JkZXJCeSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLnJlbW92ZUNsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICB9CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Edit.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdAogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudAogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gZWRpdC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0CiAgICAqIEBmdW5jdGlvbgogICAgKiBAZGVzY3JpcHRpb24KICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBmb3JtIHN1Ym1pdCBidXR0b24uCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjQ2FuY2VsQnV0dG9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpZiAoQ29yZS5VSS5Qb3B1cC5DdXJyZW50SXNQb3B1cFdpbmRvdygpKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWYKICAgICAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuQ2xvc2VQb3B1cCgpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgSGlkZVNob3dDb21wbGV0ZVBhZ2VTZWN0aW9uKCAkKCcjQ2xhc3NJdGVtIC5Db250ZW50ID4gZmllbGRzZXQnKSApOwogICAgICAgIENvcmUuQXBwLlN1YnNjcmliZSgnRXZlbnQuQUpBWC5Gb3JtVXBkYXRlLkNhbGxiYWNrJywgZnVuY3Rpb24oKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWYKICAgICAgICAgICAgSGlkZVNob3dDb21wbGV0ZVBhZ2VTZWN0aW9uKCAkKCcjQ2xhc3NJdGVtIC5Db250ZW50ID4gZmllbGRzZXQnKSApCiAgICAgICAgfSk7CgogICAgICAgIE9wZW5SZWxldmFudFBhZ2VzKCk7CiAgICAgICAgJCgnZm9ybScpLm9uKCdzdWJtaXQnLCBPcGVuUmVsZXZhbnRQYWdlcyk7CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgT3BlbnMgdGhlIGRldGFpbHMgb2YgYWxsIHBhZ2VzIHRoYXQgY29udGFpbiBpbnZhbGlkIGZvcm0gaW5wdXQgZmllbGRzIG9yIGNvbnRhaW4gYSBjdXJyZW50bHkgZm9jdXNlZCBlbGVtZW50LgogICAgICovCiAgICBmdW5jdGlvbiBPcGVuUmVsZXZhbnRQYWdlcygpIHsKICAgICAgICBsZXQgJFJlbGV2YW50RGV0YWlsc09wZW5lZCA9IGZhbHNlOwogICAgICAgICQoJ2RldGFpbHMnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKCQodGhpcykuZmluZCgnLkVycm9yJykubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdvcGVuJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAkUmVsZXZhbnREZXRhaWxzT3BlbmVkID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICgkKHRoaXMpLmZpbmQoJzpmb2N1cycpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignb3BlbicsIHRydWUpOwogICAgICAgICAgICAgICAgJFJlbGV2YW50RGV0YWlsc09wZW5lZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBpZiAoISRSZWxldmFudERldGFpbHNPcGVuZWQpIHsKICAgICAgICAgICAgJCgnZGV0YWlsczpmaXJzdC1vZi10eXBlJykuYXR0cignb3BlbicsIHRydWUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEhpZGVTaG93IGEgc2VjdGlvbiBvciBwYWdlIGhlYWRlciBpZiB0aGUgY29tcGxldGUgY29udGVudCBpcyBBQ0xIaWRkZW4KICAgICAqLwogICAgZnVuY3Rpb24gSGlkZVNob3dDb21wbGV0ZVBhZ2VTZWN0aW9uKCAkRWxlbWVudCwgSXNQYWdlICkgewogICAgICAgIGlmICggIUlzUGFnZSApIHsKICAgICAgICAgICAgJEVsZW1lbnQuY2hpbGRyZW4oImRldGFpbHMuUGFnZUNvbnRlbnQiKS5lYWNoKCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIEhpZGVTaG93Q29tcGxldGVQYWdlU2VjdGlvbiggJCh0aGlzKSwgdHJ1ZSApCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgbGV0IEhpZGVQYWdlID0gSXNQYWdlICYmICRFbGVtZW50LmNoaWxkcmVuKCIuUm93X1NlY3Rpb25IZWFkZXIiKS5sZW5ndGggPiAwOwoKICAgICAgICAkRWxlbWVudC5jaGlsZHJlbigiLlJvd19TZWN0aW9uSGVhZGVyIikuZWFjaCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGxldCAkU2VjdGlvblJvd3MgPSAkKHRoaXMpLm5leHRVbnRpbCgiLlJvd19TZWN0aW9uSGVhZGVyIiksCiAgICAgICAgICAgICAgICBWaXNpYmxlUm93cyAgPSAkU2VjdGlvblJvd3MuZmlsdGVyKCI6bm90KC5vb29BQ0xIaWRkZW4pIikubGVuZ3RoID4gMDsKCiAgICAgICAgICAgIGlmICggJCh0aGlzKS5oYXNDbGFzcygib29vQUNMSGlkZGVuIikgKSB7CiAgICAgICAgICAgICAgICBpZiAoIFZpc2libGVSb3dzICkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoIm9vb0FDTEhpZGRlbiIpOwogICAgICAgICAgICAgICAgICAgIEhpZGVQYWdlID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCAhVmlzaWJsZVJvd3MgKSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygib29vQUNMSGlkZGVuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBIaWRlUGFnZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIGlmICggSXNQYWdlICkgewogICAgICAgICAgICBpZiAoICRFbGVtZW50Lmhhc0NsYXNzKCJvb29BQ0xIaWRkZW4iKSApIHsKICAgICAgICAgICAgICAgIGlmICggIUhpZGVQYWdlICkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LnJlbW92ZUNsYXNzKCJvb29BQ0xIaWRkZW4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICggSGlkZVBhZ2UgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuYWRkQ2xhc3MoIm9vb0FDTEhpZGRlbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZgoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdCB8fCB7fSkpOwo=</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.History.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgovKmVzbGludC1kaXNhYmxlIG5vLXdpbmRvdyovCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uSGlzdG9yeQogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtCiAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5LgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLkhpc3RvcnkgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkhpc3RvcnkKICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIHBvcHVwLgogICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgnYS5MaW5rWm9vbVZpZXcnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHdpbmRvdy5vcGVuZXIuQ29yZS5VSS5Qb3B1cC5GaXJlUG9wdXBFdmVudCgnVVJMJywgeyBVUkw6ICQodGhpcykuYXR0cignaHJlZicpfSk7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuQ2xvc2VQb3B1cCgpOwogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWdlbnQuQ29uZmlnSXRlbS5IaXN0b3J5IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Overview.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBJVFNNQ29uZmlnSXRlbVNlYXJjaCAgICA9IENvcmUuQ29uZmlnLkdldCgnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnKTsKICAgICAgICB2YXIgSVRTTUNvbmZpZ0l0ZW1BY3Rpb25Sb3cgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtQWN0aW9uUm93JykgfHwge307CgogICAgICAgIHZhciBVUkwsIENvbHVtbkZpbHRlciwgTmV3Q29sdW1uRmlsdGVyU3RyZywgTXlSZWdFeCwgU2Vzc2lvbkluZm9ybWF0aW9uOwoKICAgICAgICAkKCcjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTZXR0aW5ncyIpLCAnMTUlJywgJ0NlbnRlcicsIHRydWUsCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlN1Ym1pdCIpLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlOiAnU3VibWl0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICdQcmltYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkTGlzdENvbnRhaW5lciA9ICQoJy5BbGxvY2F0aW9uTGlzdENvbnRhaW5lcicpLmZpbmQoJy5Bc3NpZ25lZEZpZWxkcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlciA9ICQoJ2xpLkFjdGl2ZSA+IGEnKS50ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRJRDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkTGlzdENvbnRhaW5lcikgJiYgJExpc3RDb250YWluZXIubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCRMaXN0Q29udGFpbmVyLmZpbmQoJ2xpJyksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZElEID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZC0nICsgJCh0aGlzKS5hdHRyKCdkYXRhLWZpZWxkbmFtZScpICsgJy0nICsgRmlsdGVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBhZGQgdGhpcyBmaWVsZCBpZiBpdHMgbm90IGFscmVhZHkgdGhlcmUuIFRoaXMgY291bGQgaGFwcGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGUuZy4gdGhlIHNhdmUgYnV0dG9uIGlzIGNsaWNrZWQgbXVsdGlwbGUgdGltZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEZpZWxkSUQpKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxpbnB1dCBuYW1lPSJVc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQiIHR5cGU9ImhpZGRlbiIgLz4nKS5hdHRyKCdpZCcsIEZpZWxkSUQpLnZhbCgkKHRoaXMpLmF0dHIoJ2RhdGEtZmllbGRuYW1lJykpLmFwcGVuZFRvKCRMaXN0Q29udGFpbmVyLmNsb3Nlc3QoJ2RpdicpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLCB0cnVlKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLlNldEFsbG9jYXRpb25MaXN0KCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKElUU01Db25maWdJdGVtU2VhcmNoKSB7CiAgICAgICAgICAgICQoJyNJVFNNQ29uZmlnSXRlbVNlYXJjaCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guT3BlblNlYXJjaERpYWxvZygKICAgICAgICAgICAgICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1TZWFyY2guUHJvZmlsZSksCiAgICAgICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1TZWFyY2guQ2xhc3NJRCkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgJC5lYWNoKElUU01Db25maWdJdGVtQWN0aW9uUm93LCBmdW5jdGlvbihLZXksIERhdGEpIHsKICAgICAgICAgICAgSVRTTS5VSS5Db25maWdJdGVtQWN0aW9uUm93LkFkZEFjdGlvbnMoJCgnI0NvbmZpZ0l0ZW1JRF8nICsgS2V5KSwgRGF0YSk7CiAgICAgICAgfSk7CgogICAgICAgIElUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdy5Jbml0KCk7CgogICAgICAgIENvcmUuVUkuSW5pdENoZWNrYm94U2VsZWN0aW9uKCQoJ3RhYmxlIHRkLkNoZWNrYm94JykpOwoKICAgICAgICAvLyBjaGFuZ2UgZXZlbnQgZm9yIGNvbHVtbiBmaWx0ZXIKICAgICAgICAkKCcuQ29sdW1uRmlsdGVyJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgIC8vIGRlZmluZSB2YXJpYWJsZXMKICAgICAgICAgICAgVVJMID0gQ29yZS5Db25maWcuR2V0KCJCYXNlbGluayIpICsgJ0FjdGlvbj0nICsgQ29yZS5Db25maWcuR2V0KCJBY3Rpb24iKSArICc7JyArIENvcmUuQ29uZmlnLkdldCgnTGlua1BhZ2UnKSArICdDYXRlZ29yeT0nICsgQ29yZS5Db25maWcuR2V0KCdDYXRlZ29yeScpICsgJzsnOwogICAgICAgICAgICBTZXNzaW9uSW5mb3JtYXRpb24gPSBDb3JlLkFwcC5HZXRTZXNzaW9uSW5mb3JtYXRpb24oKTsKICAgICAgICAgICAgJC5lYWNoKFNlc3Npb25JbmZvcm1hdGlvbiwgZnVuY3Rpb24gKEtleSwgVmFsdWUpIHsKICAgICAgICAgICAgICAgIFVSTCArPSBlbmNvZGVVUklDb21wb25lbnQoS2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChWYWx1ZSkgKyAnOyc7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgPSAkKHRoaXMpWzBdLm5hbWU7CiAgICAgICAgICAgIE5ld0NvbHVtbkZpbHRlclN0cmcgPSAkKHRoaXMpWzBdLm5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoJCh0aGlzKS52YWwoKSkgKyAnOyc7CgogICAgICAgICAgICBNeVJlZ0V4ID0gbmV3ICBSZWdFeHAoQ29sdW1uRmlsdGVyKyI9W147XSo7Iik7CgogICAgICAgICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeSBzZXQgcGFyYW1ldGVyIGFuZCByZXBsYWNlCiAgICAgICAgICAgIGlmIChVUkwubWF0Y2goTXlSZWdFeCkpIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTC5yZXBsYWNlKE15UmVnRXgsIE5ld0NvbHVtbkZpbHRlclN0cmcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBvdGhlcndpc2UgYWRkIHRoZSBuZXcgY29sdW1uIGZpbHRlcgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTCArIE5ld0NvbHVtbkZpbHRlclN0cmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlZGlyZWN0CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gIFVSTDsKICAgICAgICB9KTsKCiAgICAgICAgLy8gY2xpY2sgZXZlbnQgb24gdGFibGUgaGVhZGVyIHRyaWdnZXIKICAgICAgICAkKCcuT3ZlcnZpZXdIZWFkZXInKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICRUcmlnZ2VyT2JqID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIEZpbHRlck5hbWU7CgogICAgICAgICAgICBpZiAoJFRyaWdnZXJPYmouaGFzQ2xhc3MoJ0FjdGl2ZScpKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgIC5maW5kKCcuQ29sdW1uU2V0dGluZ3NCb3gnKQogICAgICAgICAgICAgICAgICAgIC5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLnJlbW92ZUNsYXNzKCdBY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAvLyBzbGlkZSB1cCBhbGwgb3BlbiBzZXR0aW5ncyB3aWRnZXRzCiAgICAgICAgICAgICAgICAkKCcuQ29sdW1uU2V0dGluZ3NUcmlnZ2VyJykKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLnByZXYoJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInKS5yZW1vdmVDbGFzcygnQWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBUSElTIHNldHRpbmdzIHdpZGdldAogICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZUluKCdmYXN0JywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5hZGRDbGFzcygnQWN0aXZlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZyZXNoIGZpbHRlciBkcm9wZG93bgogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJOYW1lID0gJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignbmFtZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVySUQnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVyVXNlcklEJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbG9zZXN0KCd0aCcpLmhhc0NsYXNzKCdSZXNwb25zaWJsZScpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmouY2xvc2VzdCgndGgnKS5oYXNDbGFzcygnT3duZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkVHJpZ2dlck9iai5wYXJlbnQoKS5maW5kKCcuU2VsZWN0ZWRWYWx1ZScpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNOb3RoaW5nJyksICdBSkFYRmlsdGVyVXBkYXRlJywgRmlsdGVyTmFtZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBdXRvQ29tcGxldGVWYWx1ZSA9ICRUcmlnZ2VyT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHQoJy5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlVGV4dCAgPSAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXV0b0NvbXBsZXRlVmFsdWUgIT09ICdEZWxldGVGaWx0ZXInKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxzcGFuIGNsYXNzPSJTZWxlY3RlZFZhbHVlIEhpZGRlbiI+JyArIEF1dG9Db21wbGV0ZVRleHQgKyAnICgnICsgQXV0b0NvbXBsZXRlVmFsdWUgKyAnKTwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxhIGhyZWY9IiMiIGNsYXNzPSJEZWxldGVGaWx0ZXIiPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2EuRGVsZXRlRmlsdGVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub2ZmKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKCdEZWxldGVGaWx0ZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29sdW1uRmlsdGVyQXR0cmlidXRlcycpLCAnQUpBWEZpbHRlclVwZGF0ZScsIEZpbHRlck5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuTWFzdGVyQWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgICAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Search.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5BZ2VudCA9IElUU00uQWdlbnQgfHwge307CklUU00uQWdlbnQuQ29uZmlnSXRlbSA9IElUU00uQWdlbnQuQ29uZmlnSXRlbSB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIHNlYXJjaC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2ggPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzZWFyY2ggc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBJVFNNQ29uZmlnSXRlbU9wZW5TZWFyY2hEaWFsb2cgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtT3BlblNlYXJjaERpYWxvZycpOwogICAgICAgIGlmICggSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nICkgewogICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coCiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbU9wZW5TZWFyY2hEaWFsb2cuQWN0aW9uLAogICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nLlByb2ZpbGUpLAogICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nLkNsYXNzSUQpCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gcmVidWlsZCBhdHRyaWJ1dGUgc2VsZWN0aW9uLCBvbmx5IHNob3cgYXZhaWxhYmxlIGF0dHJpYnV0ZXMuCiAgICAgKi8KICAgIFRhcmdldE5TLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAvLyBnZXQgb3JpZ2luYWwgc2VsZWN0aW9uIHdpdGggYWxsIHBvc3NpYmxlIGZpZWxkcyBhbmQgY2xvbmUgaXQKICAgICAgICB2YXIgJEF0dHJpYnV0ZUNsb25lID0gJCgnI0F0dHJpYnV0ZU9yaWcgb3B0aW9uJykuY2xvbmUoKSwKICAgICAgICAgICAgJEF0dHJpYnV0ZVNlbGVjdGlvbiA9ICQoJyNBdHRyaWJ1dGUnKS5lbXB0eSgpLAogICAgICAgICAgICBWYWx1ZTsKCiAgICAgICAgLy8gc3RyaXAgYWxsIGFscmVhZHkgdXNlZCBhdHRyaWJ1dGVzCiAgICAgICAgJEF0dHJpYnV0ZUNsb25lLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICBWYWx1ZSA9IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCQodGhpcykuYXR0cigndmFsdWUnKSk7CiAgICAgICAgICAgIGlmICghJCgnI1NlYXJjaEluc2VydCBsYWJlbCNMYWJlbCcgKyBWYWx1ZSkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlU2VsZWN0aW9uLmFwcGVuZCgkKHRoaXMpKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkQXR0cmlidXRlU2VsZWN0aW9uLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJyk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IG9mIGF0dHJpYnV0ZSB0byBhZGQuCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBhZGRzIG9uZSBhdHRyaWJ1dGUgZm9yIHNlYXJjaAogICAgICovCiAgICBUYXJnZXROUy5TZWFyY2hBdHRyaWJ1dGVBZGQgPSBmdW5jdGlvbiAoQXR0cmlidXRlKSB7CgogICAgICAgIC8vIGVzY2FwZSBwb3NzaWJsZSBjb2xvbnMgKDopIGluIGVsZW1lbnQgaWQgYmVjYXVzZSBqUXVlcnkgY2FuIG5vdCBoYW5kbGUgaXQgaW4gaWQgYXR0cmlidXRlIHNlbGVjdG9ycwogICAgICAgIEF0dHJpYnV0ZSA9IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEF0dHJpYnV0ZSk7CgogICAgICAgIHZhciAkTGFiZWwgPSAkKCcjU2VhcmNoQXR0cmlidXRlc0hpZGRlbiBsYWJlbCNMYWJlbCcgKyBBdHRyaWJ1dGUpOwoKICAgICAgICBpZiAoJExhYmVsLmxlbmd0aCkgewogICAgICAgICAgICAkTGFiZWwucHJldigpLmNsb25lKCkuYXBwZW5kVG8oJyNTZWFyY2hJbnNlcnQnKTsKICAgICAgICAgICAgJExhYmVsLmNsb25lKCkuYXBwZW5kVG8oJyNTZWFyY2hJbnNlcnQnKTsKICAgICAgICAgICAgJExhYmVsLm5leHQoKS5jbG9uZSgpLmFwcGVuZFRvKCcjU2VhcmNoSW5zZXJ0JykKCiAgICAgICAgICAgICAgICAvLyBiaW5kIGNsaWNrIGZ1bmN0aW9uIHRvIHJlbW92ZSBidXR0b24gbm93CiAgICAgICAgICAgICAgICAuZmluZCgnLlJlbW92ZUJ1dHRvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgJEVsZW1lbnQgPSAkKHRoaXMpLnBhcmVudCgpOwogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZVJlbW92ZSgkRWxlbWVudCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkaXRpb25hbEF0dHJpYnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2V0IGF1dG9jb21wbGV0ZSB0byBjdXN0b21lciB0eXBlIGZpZWxkcwogICAgICAgICAgICAgICAgJCgnI1NlYXJjaEluc2VydCcpLmZpbmQoJy5JVFNNQ3VzdG9tZXJTZWFyY2gnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBJbnB1dElEID0gJCh0aGlzKS5hdHRyKCdpZCcpICsgJ0F1dG9jb21wbGV0ZSc7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnSVRTTUN1c3RvbWVyU2VhcmNoJyk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdpZCcsIElucHV0SUQpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykucHJldigpLmF0dHIoJ2lkJywgSW5wdXRJRCArICdTZWxlY3RlZCcpOwoKICAgICAgICAgICAgICAgICAgICAvLyBlc2NhcGUgcG9zc2libGUgY29sb25zICg6KSBpbiBlbGVtZW50IGlkIGJlY2F1c2UgalF1ZXJ5IGNhbiBub3QgaGFuZGxlIGl0IGluIGlkIGF0dHJpYnV0ZSBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoLkluaXQoICQoJyMnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSW5wdXRJRCkgKSApOwoKICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IGRpYWxvZyBjbG9zdXJlIHdoZW4gc2VsZWN0IGEgY3VzdG9tZXIgZnJvbSB0aGUgbGlzdAogICAgICAgICAgICAgICAgICAgICQoJ3VsLnVpLWF1dG9jb21wbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCQoJyNTZWFyY2hJbnNlcnQnKSk7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgZm9ybSAgb3IgYW55IGVsZW1lbnQKICAgICAqICAgICAgd2l0aGluIHRoaXMgZm9ybSBjaGVjay4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlbW92ZSBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudC4KICAgICAqLwoKICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZVJlbW92ZSA9IGZ1bmN0aW9uICgkRWxlbWVudCkgewogICAgICAgICRFbGVtZW50LnByZXYoKS5wcmV2KCkucmVtb3ZlKCk7CiAgICAgICAgJEVsZW1lbnQucHJldigpLnJlbW92ZSgpOwogICAgICAgICRFbGVtZW50LnJlbW92ZSgpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHByaXZhdGUKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQcm9maWxlIFRoZSBwcm9maWxlIG5hbWUgdGhhdCB3aWxsIGJlIGRlbGV0ZS4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhIHByb2ZpbGUgdmlhIGFuIGFqYXggcmVxdWVzdHMuCiAgICAgKi8KICAgIGZ1bmN0aW9uIFNlYXJjaFByb2ZpbGVEZWxldGUoUHJvZmlsZSkgewogICAgICAgIHZhciBEYXRhID0gewogICAgICAgICAgICBBY3Rpb246ICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgU3ViYWN0aW9uOiAnQUpBWFByb2ZpbGVEZWxldGUnLAogICAgICAgICAgICBQcm9maWxlOiBQcm9maWxlLAogICAgICAgICAgICBDbGFzc0lEOiAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpCiAgICAgICAgfTsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBmdW5jdGlvbiAoKSB7fQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqIEBkZXNjcmlwdGlvbiBTaG93cyB3YWl0aW5nIGRpYWxvZyB1bnRpbCBzZWFyY2ggc2NyZWVuIGlzIHJlYWR5LgogICAgICovCiAgICBmdW5jdGlvbiBTaG93V2FpdGluZ0RpYWxvZygpIHsKICAgICAgICB2YXIgQ29udGVudCA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKAogICAgICAgICAgICAnQWdlbnQvSVRTTUNvcmUvTG9hZGluZ0RpYWxvZycsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNwYW5UaXRsZTogQ29yZS5Db25maWcuR2V0KCdMb2FkaW5nTXNnJykKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKAogICAgICAgICAgICBDb250ZW50LAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0xvYWRpbmdNc2cnKSwKICAgICAgICAgICAgJzEwcHgnLAogICAgICAgICAgICAnQ2VudGVyJywKICAgICAgICAgICAgdHJ1ZQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSBub25lCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBzZXRzIGFsbCBzZWFyY2ggZGlhbG9nIHNldHRpbmdzCiAgICAgKi8KCiAgICBUYXJnZXROUy5TZXRTZWFyY2hEaWFsb2cgPSBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gaGlkZSBhZGQgdGVtcGxhdGUgYmxvY2sKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEJsb2NrJykuaGlkZSgpOwoKICAgICAgICAvLyBoaWRlIHNhdmUgY2hhbmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICQoJyNTYXZlUHJvZmlsZScpLnBhcmVudCgpLmhpZGUoKS5wcmV2KCkuaGlkZSgpLnByZXYoKS5oaWRlKCk7CgogICAgICAgIC8vIHNlYXJjaCBwcm9maWxlIGlzIHNlbGVjdGVkCiAgICAgICAgaWYgKCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgJiYgJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSAhPT0gJ2xhc3Qtc2VhcmNoJykgewoKICAgICAgICAgICAgLy8gc2hvdyBkZWxldGUgYnV0dG9uCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlRGVsZXRlJykuc2hvdygpOwoKICAgICAgICAgICAgLy8gc2hvdyBwcm9maWxlIGxpbmsKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBc0xpbmsnKS5zaG93KCk7CgogICAgICAgICAgICAvLyBzaG93IHNhdmUgY2hhbmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICAgICAkKCcjU2F2ZVByb2ZpbGUnKS5wYXJlbnQoKS5zaG93KCkucHJldigpLnNob3coKS5wcmV2KCkuc2hvdygpOwoKICAgICAgICAgICAgLy8gc2V0IFNhdmVQcm9maWxlIHRvIDAKICAgICAgICAgICAgJCgnI1NhdmVQcm9maWxlJykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoJCgnLkRpYWxvZzp2aXNpYmxlJykpOwoKICAgICAgICAvLyByZWdpc3RlciBhZGQgb2YgYXR0cmlidXRlCiAgICAgICAgJCgnI0F0dHJpYnV0ZScpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBBdHRyaWJ1dGUgPSAkKCcjQXR0cmlidXRlJykudmFsKCk7CiAgICAgICAgICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZUFkZChBdHRyaWJ1dGUpOwogICAgICAgICAgICBUYXJnZXROUy5BZGRpdGlvbmFsQXR0cmlidXRlU2VsZWN0aW9uUmVidWlsZCgpOwoKICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZXZlbnQgZm9yIHRyZWUgc2VsZWN0aW9uIGRpYWxvZwogICAgICAgICAgICAkKCcuU2hvd1RyZWVTZWxlY3Rpb24nKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgQ29yZS5VSS5UcmVlU2VsZWN0aW9uLlNob3dUcmVlU2VsZWN0aW9uKCQodGhpcykpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gcmVnaXN0ZXIgcmV0dXJuIGtleQogICAgICAgICQoJyNTZWFyY2hGb3JtJykub2ZmKCdrZXlwcmVzcy5GaWx0ZXJJbnB1dCcpLm9uKCdrZXlwcmVzcy5GaWx0ZXJJbnB1dCcsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBpZiAoKEV2ZW50LmNoYXJDb2RlIHx8IEV2ZW50LmtleUNvZGUpID09PSAxMykgewogICAgICAgICAgICAgICAgaWYgKCFDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybVN1Ym1pdCcpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gcmVnaXN0ZXIgc3VibWl0CiAgICAgICAgJCgnI1NlYXJjaEZvcm1TdWJtaXQnKS5vZmYoJ2NsaWNrLkRvU2VhcmNoJykub24oJ2NsaWNrLkRvU2VhcmNoJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgdmFyIFNob3duQXR0cmlidXRlcyA9IFtdOwoKICAgICAgICAgICAgaWYgKCQoJyNTZWFyY2hQcm9maWxlQWRkQWN0aW9uLCAjU2VhcmNoUHJvZmlsZUFkZE5hbWUnKS5pcygnOnZpc2libGUnKSAmJiAkKCcjU2VhcmNoUHJvZmlsZUFkZE5hbWUnKS52YWwoKSkgewogICAgICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGRBY3Rpb24nKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyByZW1lbWJlciBzaG93biBhdHRyaWJ1dGVzCiAgICAgICAgICAgICQoJyNTZWFyY2hJbnNlcnQgbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmF0dHIoJ2lkJykpIHsKICAgICAgICAgICAgICAgICAgICBTaG93bkF0dHJpYnV0ZXMucHVzaCgkKHRoaXMpLmF0dHIoJ2lkJykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI1NlYXJjaEZvcm0gI1Nob3duQXR0cmlidXRlcycpLnZhbChTaG93bkF0dHJpYnV0ZXMuam9pbignOycpKTsKCiAgICAgICAgICAgIC8vIE5vcm1hbCByZXN1bHRzIG1vZGUgd2lsbCByZXR1cm4gSFRNTCBpbiB0aGUgc2FtZSB3aW5kb3cKICAgICAgICAgICAgaWYgKCQoJyNTZWFyY2hGb3JtICNSZXN1bHRGb3JtJykudmFsKCkgPT09ICdOb3JtYWwnKSB7CgogICAgICAgICAgICAgICAgaWYgKCFDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBDaGVja1NlYXJjaFN0cmluZ3NGb3JTdG9wV29yZHMoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybScpLnN1Ym1pdCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsgLy8gUHJpbnQgYW5kIENTViBzaG91bGQgb3BlbiBpbiBhIG5ldyB3aW5kb3csIG5vIHdhaXRpbmcgZGlhbG9nCiAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybScpLmF0dHIoJ3RhcmdldCcsICdTZWFyY2hSZXN1bHRQYWdlJyk7CiAgICAgICAgICAgICAgICBpZiAoIUNoZWNrRm9yU2VhcmNoZWRWYWx1ZXMoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIENoZWNrU2VhcmNoU3RyaW5nc0ZvclN0b3BXb3JkcyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuc3VibWl0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuYXR0cigndGFyZ2V0JywgJycpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgQ29yZS5Gb3JtLlZhbGlkYXRlLkluaXQoKTsKICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuU2V0U3VibWl0RnVuY3Rpb24oJCgnI1NlYXJjaEZvcm0nKSwgZnVuY3Rpb24gKEZvcm0pIHsKICAgICAgICAgICAgRm9ybS5zdWJtaXQoKTsKCiAgICAgICAgICAgIC8vIFNob3cgb25seSBhIHdhaXRpbmcgZGlhbG9nIGZvciBOb3JtYWwgcmVzdWx0cyBtb2RlLCBiZWNhdXNlIHRoaXMgcmVzdWx0CiAgICAgICAgICAgIC8vICB3aWxsIHJldHVybiB0aGUgSFRNTCBpbiB0aGUgc2FtZSB3aW5kb3cuCiAgICAgICAgICAgIGlmICgkKCcjU2VhcmNoRm9ybSAjUmVzdWx0Rm9ybScpLnZhbCgpID09PSAnTm9ybWFsJykgewogICAgICAgICAgICAgICAgU2hvd1dhaXRpbmdEaWFsb2coKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBsb2FkIHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZScpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5Mb2FkUHJvZmlsZSggJCh0aGlzKS52YWwoKSApOwogICAgICAgIH0pOwoKICAgICAgICAvLyBzaG93IGFkZCBwcm9maWxlIGJsb2NrIG9yIG5vdAogICAgICAgICQoJyNTZWFyY2hQcm9maWxlTmV3Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQWRkQmxvY2snKS50b2dnbGUoKTsKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGROYW1lJykuZm9jdXMoKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAvLyBhZGQgbmV3IHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEFjdGlvbicpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgUHJvZmlsZU5hbWUsICRFbGVtZW50MTsKCiAgICAgICAgICAgIC8vIGdldCBuYW1lCiAgICAgICAgICAgIFByb2ZpbGVOYW1lID0gJCgnI1NlYXJjaFByb2ZpbGVBZGROYW1lJykudmFsKCk7CgogICAgICAgICAgICAvLyBjaGVjayBuYW1lCiAgICAgICAgICAgIGlmICghUHJvZmlsZU5hbWUubGVuZ3RoIHx8IFByb2ZpbGVOYW1lLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIG5hbWUgdG8gcHJvZmlsZSBzZWxlY3Rpb24KICAgICAgICAgICAgJEVsZW1lbnQxID0gJCgnI1NlYXJjaFByb2ZpbGUnKS5jaGlsZHJlbigpLmZpcnN0KCkuY2xvbmUoKTsKICAgICAgICAgICAgJEVsZW1lbnQxLnRleHQoUHJvZmlsZU5hbWUpOwogICAgICAgICAgICAkRWxlbWVudDEuYXR0cigndmFsdWUnLCBQcm9maWxlTmFtZSk7CiAgICAgICAgICAgICRFbGVtZW50MS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZScpLmFwcGVuZCgkRWxlbWVudDEpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJyk7CgogICAgICAgICAgICAvLyBzZXQgaW5wdXQgYm94IHRvIGVtcHR5CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQWRkTmFtZScpLnZhbCgnJyk7CgogICAgICAgICAgICAvLyBoaWRlIGFkZCB0ZW1wbGF0ZSBibG9jawogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEJsb2NrJykuaGlkZSgpOwoKICAgICAgICAgICAgLy8gaGlkZSBzYXZlIGNoYW5nZXMgaW4gdGVtcGxhdGUgYmxvY2sKICAgICAgICAgICAgJCgnI1NhdmVQcm9maWxlJykucGFyZW50KCkuaGlkZSgpLnByZXYoKS5oaWRlKCkucHJldigpLmhpZGUoKTsKCiAgICAgICAgICAgIC8vIHNldCBTYXZlUHJvZmlsZSB0byAxCiAgICAgICAgICAgICQoJyNTYXZlUHJvZmlsZScpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsKCiAgICAgICAgICAgIC8vIHNob3cgZGVsZXRlIGJ1dHRvbgogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZURlbGV0ZScpLnNob3coKTsKCiAgICAgICAgICAgIC8vIHNob3cgcHJvZmlsZSBsaW5rCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQXNMaW5rJykuc2hvdygpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBkaXJlY3QgbGluayB0byBwcm9maWxlCiAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBc0xpbmsnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFNlYXJjaFByb2ZpbGUgPSAkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpLAogICAgICAgICAgICAgICAgU2VhcmNoUHJvZmlsZUFjdGlvbiA9ICQoJyNTZWFyY2hBY3Rpb24nKS52YWwoKSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPSAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpOwoKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAnQWN0aW9uPScgKyBTZWFyY2hQcm9maWxlQWN0aW9uICsKICAgICAgICAgICAgJztTdWJhY3Rpb249U2VhcmNoO1Rha2VMYXN0U2VhcmNoPTE7U2F2ZVByb2ZpbGU9MTtQcm9maWxlPScgKyBlbmNvZGVVUklDb21wb25lbnQoU2VhcmNoUHJvZmlsZSkKICAgICAgICAgICAgKyAnO0NsYXNzSUQ9JyArIENsYXNzSUQ7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gZGVsZXRlIHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZURlbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgICAgICAgICAgLy8gc3RyaXAgYWxsIGFscmVhZHkgdXNlZCBhdHRyaWJ1dGVzCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCd2YWx1ZScpICE9PSAnbGFzdC1zZWFyY2gnKSB7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hJbnNlcnQnKS50ZXh0KCcnKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHJlbW90ZQogICAgICAgICAgICAgICAgICAgIFNlYXJjaFByb2ZpbGVEZWxldGUoJCh0aGlzKS52YWwoKSk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBsb2NhbAogICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlKCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHNob3cgZnVsbHRleHQKICAgICAgICAgICAgICAgICAgICBUYXJnZXROUy5TZWFyY2hBdHRyaWJ1dGVBZGQoJ0Z1bGx0ZXh0Jyk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkaXRpb25hbEF0dHJpYnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykudHJpZ2dlcignY2hhbmdlJyk7CgogICAgICAgICAgICBpZiAoJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSAmJiAkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpID09PSAnbGFzdC1zZWFyY2gnKSB7CgogICAgICAgICAgICAgICAgLy8gaGlkZSBkZWxldGUgbGluawogICAgICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVEZWxldGUnKS5oaWRlKCk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBwcm9maWxlIGxpbmsKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQXNMaW5rJykuaGlkZSgpOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7UHJvZmlsZX0gVGhlIHByb2ZpbGUgdGhhdCBpcyBzZXQgdG8gdGhlIHNlYXJjaCBkaWFsb2cKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlZnJlc2ggdGhlIHNlYXJjaCBkaWFsb2cgd2l0aCB0aGUgc2VsZWN0ZWQgcHJvZmlsZQogICAgICovCgogICAgVGFyZ2V0TlMuTG9hZFByb2ZpbGUgPSBmdW5jdGlvbiAoUHJvZmlsZSkgewogICAgICAgIHZhciBCYXNlTGluayA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwKICAgICAgICAgICAgQWN0aW9uID0gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoOycsCiAgICAgICAgICAgIFN1YkFjdGlvbiA9ICdTdWJhY3Rpb249TG9hZFByb2ZpbGU7JywKICAgICAgICAgICAgQ2xhc3NJRCA9ICdDbGFzc0lEPScgKyAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpICsgJzsnLAogICAgICAgICAgICBTZWFyY2hQcm9maWxlID0gJ1Byb2ZpbGU9JyArIFByb2ZpbGUsCiAgICAgICAgICAgIFVSTCA9ICBCYXNlTGluayArIEFjdGlvbiArIFN1YkFjdGlvbiArIENsYXNzSUQgKyBTZWFyY2hQcm9maWxlOwoKICAgICAgICAkKCcjRGl2Q2xhc3NJRCcpLmFkZENsYXNzKCd1aS1hdXRvY29tcGxldGUtbG9hZGluZycpOwogICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNBSkFYVXBkYXRlJyksIFVSTCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBJVFNNU2VhcmNoUHJvZmlsZUF0dHJpYnV0ZXMgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01TZWFyY2hQcm9maWxlQXR0cmlidXRlcycpIHx8IFtdOwogICAgICAgICAgICAkLmVhY2goSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzLCBmdW5jdGlvbihfSWR4LCBBdHRyaWJ1dGUpIHsKICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guU2VhcmNoQXR0cmlidXRlQWRkKENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEF0dHJpYnV0ZSkpOwogICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5BZGRpdGlvbmFsQXR0cmlidXRlU2VsZWN0aW9uUmVidWlsZCgpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIFRhcmdldE5TLlNldFNlYXJjaERpYWxvZyggJyRFbnZ7IkFjdGlvbiJ9JyApOwogICAgICAgICAgICAkKCcjSVRTTVNlYXJjaFByb2ZpbGUnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICQoJyNJVFNNU2VhcmNoRmllbGRzJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAkKCcuRGlhbG9nOnZpc2libGUgI1NlYXJjaEZvcm1TdWJtaXQnKS5hcHBlbmRUbygkKCcuRGlhbG9nOnZpc2libGUgPiAuQ29udGVudCA+IC5Db250ZW50Rm9vdGVyJykpOwogICAgICAgICAgICAkKCcjU2VhcmNoRm9ybVN1Ym1pdCcpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnI0RpdkNsYXNzSUQnKS5yZW1vdmVDbGFzcygndWktYXV0b2NvbXBsZXRlLWxvYWRpbmcnKTsKICAgICAgICAgICAgQ29yZS5VSS5JbnB1dEZpZWxkcy5BY3RpdmF0ZSgkKCcjU2VhcmNoRm9ybScpKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Q2xhc3NJRH0gVGhlIGNsYXNzIGlkIHRoYXQgaXMgc2V0IHRvIHRoZSBzZWFyY2ggZGlhbG9nCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiByZWZyZXNoIHRoZSBzZWFyY2ggZGlhbG9nIHdpdGggdGhlIHNlbGVjdGVkIGNsYXNzCiAgICAgKi8KCiAgICBUYXJnZXROUy5Mb2FkQ2xhc3MgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIEJhc2VMaW5rID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpLAogICAgICAgICAgICBBY3Rpb24gPSAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g7JywKICAgICAgICAgICAgU3ViQWN0aW9uID0gJ1N1YmFjdGlvbj1BSkFYVXBkYXRlOycsCiAgICAgICAgICAgIENsYXNzSUQgPSAnQ2xhc3NJRD0nICsgJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKSArICc7JywKICAgICAgICAgICAgVVJMID0gIEJhc2VMaW5rICsgQWN0aW9uICsgU3ViQWN0aW9uICsgQ2xhc3NJRCArIFNlYXJjaFByb2ZpbGU7CgogICAgICAgICQoJyNEaXZDbGFzc0lEJykuYWRkQ2xhc3MoJ3VpLWF1dG9jb21wbGV0ZS1sb2FkaW5nJyk7CiAgICAgICAgQ29yZS5BSkFYLkNvbnRlbnRVcGRhdGUoJCgnI0FKQVhVcGRhdGUnKSwgVVJMLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIElUU01TZWFyY2hQcm9maWxlQXR0cmlidXRlcyA9IENvcmUuQ29uZmlnLkdldCgnSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzJykgfHwgW107CiAgICAgICAgICAgICQuZWFjaChJVFNNU2VhcmNoUHJvZmlsZUF0dHJpYnV0ZXMsIGZ1bmN0aW9uKF9JZHgsIEF0dHJpYnV0ZSkgewogICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5TZWFyY2hBdHRyaWJ1dGVBZGQoQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoQXR0cmlidXRlKSk7CiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgVGFyZ2V0TlMuU2V0U2VhcmNoRGlhbG9nKCAnJEVudnsiQWN0aW9uIn0nICk7CiAgICAgICAgICAgICQoJyNJVFNNU2VhcmNoUHJvZmlsZScpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnI0lUU01TZWFyY2hGaWVsZHMnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICQoJy5EaWFsb2c6dmlzaWJsZSAjU2VhcmNoRm9ybVN1Ym1pdCcpLmFwcGVuZFRvKCQoJy5EaWFsb2c6dmlzaWJsZSA+IC5Db250ZW50ID4gLkNvbnRlbnRGb290ZXInKSk7CiAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtU3VibWl0JykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAkKCcjRGl2Q2xhc3NJRCcpLnJlbW92ZUNsYXNzKCd1aS1hdXRvY29tcGxldGUtbG9hZGluZycpOwogICAgICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCQoJyNTZWFyY2hGb3JtJykpOwogICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBDaGVja0ZvclNlYXJjaGVkVmFsdWVzCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5TZWFyY2gKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybnMge0Jvb2xlYW59IEZhbHNlIGlmIG5vIHZhbHVlcyB3ZXJlIGZvdW5kLCB0cnVlIGlmIHZhbHVlcyB3aGVyZSB0aGVyZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBDaGVja3MgaWYgYW55IHZhbHVlcyB3ZXJlIGVudGVyZWQgaW4gdGhlIHNlYXJjaC4KICAgICAqICAgICAgSWYgbm90aGluZyBhdCBhbGwgZXhpc3RzLCBpdCBhbGVydHMgd2l0aCB0cmFuc2xhdGVkOgogICAgICogICAgICAiUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nIgogICAgICovCiAgICBmdW5jdGlvbiBDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkgewogICAgICAgIC8vIGxvb3AgdGhyb3VnaCB0aGUgU2VhcmNoRm9ybSBsYWJlbHMKICAgICAgICB2YXIgU2VhcmNoVmFsdWVGbGFnID0gZmFsc2U7CiAgICAgICAgJCgnI1NlYXJjaEZvcm0gbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIEVsZW1lbnROYW1lLAogICAgICAgICAgICAgICAgJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAkTGFiZWxFbGVtZW50ID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgICRGaWVsZEVsZW1lbnQgPSAkTGFiZWxFbGVtZW50Lm5leHQoJy5GaWVsZCcpOwogICAgICAgICAgICAvLyB0aG9zZSB3aXRoIElEJ3MgYXJlIHVzZWQgZm9yIHNlYXJjaGluZwogICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdpZCcpKSB7CgogICAgICAgICAgICAgICAgLy8gc3Vic3RyaW5nICJMYWJlbCIgKGUuZy4gZmlyc3QgZml2ZSBjaGFyYWN0ZXJzICkgZnJvbSB0aGUKICAgICAgICAgICAgICAgIC8vIGxhYmVsIGlkLCB1c2UgdGhlIHJlbWFpbmluZyBuYW1lIGFzIG5hbWUgc3RyaW5nIGZvciBhY2Nlc3NpbmcKICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtIGlucHV0J3MgdmFsdWUKICAgICAgICAgICAgICAgIEVsZW1lbnROYW1lID0gJCh0aGlzKS5hdHRyKCdpZCcpLnN1YnN0cmluZyg1KTsKICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCgnI1NlYXJjaEZvcm0gaW5wdXRbbmFtZT0nICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRWxlbWVudE5hbWUpICsgJ10nKTsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGlucHV0IGVsZW1lbnQgd2l0aCB0aGUgc2VsZWN0ZWQgbmFtZQogICAgICAgICAgICAgICAgLy8gZmluZCB0aGUgbmV4dCAic2VsZWN0IiBlbGVtZW50IGFuZCB1c2UgdGhhdCBvbmUgZm9yIGNoZWNraW5nCiAgICAgICAgICAgICAgICBpZiAoISRFbGVtZW50Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCh0aGlzKS5uZXh0KCkuZmluZCgnc2VsZWN0Jyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gRml4IGZvciBidWcjMTA4NDU6IG1ha2Ugc3VyZSB0aW1lIHNsb3QgZmllbGRzIHdpdGggVGltZUlucHV0Rm9ybWF0CiAgICAgICAgICAgICAgICAvLyAnSW5wdXQnIHNldCBhcmUgYmVpbmcgY29uc2lkZXJlZCBjb3JyZWN0bHksIHRvby4gQXMgdGhpcyBpcyBvbmx5CiAgICAgICAgICAgICAgICAvLyByZWxldmFudCBmb3Igc2VhcmNoIHR5cGUgJ1RpbWVTbG90Jywgd2UgY2hlY2sgZm9yIHRoZSBmaXJzdAogICAgICAgICAgICAgICAgLy8gaW5wdXQgdHlwZT10ZXh0IGVsZW1lbnQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZmllbGQgZWxlbWVudC4KICAgICAgICAgICAgICAgIC8vIEFsbCB0aW1lIGZpZWxkIGVsZW1lbnRzIGhhdmUgdG8gYmUgZmlsbGVkIGluLCBidXQgaWYgb25seSBvbmUKICAgICAgICAgICAgICAgIC8vIGlzIG1pc3NpbmcsIHdlIHRyZWF0IHRoZSB3aG9sZSBmaWVsZCBhcyBpbnZhbGlkLgogICAgICAgICAgICAgICAgaWYgKCRGaWVsZEVsZW1lbnQuZmluZCgnaW5wdXRbbmFtZSQ9IlNlYXJjaFR5cGUiXScpLnZhbCgpID09PSAnVGltZVNsb3QnICYmICEkRmllbGRFbGVtZW50LmZpbmQoJ3NlbGVjdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJEZpZWxkRWxlbWVudC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykuZmlyc3QoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJEVsZW1lbnQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRFbGVtZW50LnZhbCgpICYmICRFbGVtZW50LnZhbCgpICE9PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICBTZWFyY2hWYWx1ZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGlmICghU2VhcmNoVmFsdWVGbGFnKSB7CiAgICAgICAgICAgYWxlcnQoQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBTZWFyY2hWYWx1ZUZsYWc7CiAgICB9CgogICAgICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIENoZWNrU2VhcmNoU3RyaW5nc0ZvclN0b3BXb3JkcwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IENhbGxiYWNrIC0gZnVuY3Rpb24gdG8gZXhlY3V0ZSwgaWYgbm8gc3RvcCB3b3JkcyB3ZXJlIGZvdW5kLgogICAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBzcGVjaWZpYyB2YWx1ZXMgb2YgdGhlIHNlYXJjaCBmb3JtIGNvbnRhaW4gc3RvcCB3b3Jkcy4KICAgICAqICAgICAgICAgICAgICBJZiBzdG9wIHdvcmRzIGFyZSBwcmVzZW50LCBhIHdhcm5pbmcgd2lsbCBiZSBkaXNwbGF5ZWQuCiAgICAgKiAgICAgICAgICAgICAgSWYgc3RvcCB3b3JkcyBhcmUgbm90IHByZXNlbnQsIHRoZSBnaXZlbiBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkLgogICAgICovCiAgICBmdW5jdGlvbiBDaGVja1NlYXJjaFN0cmluZ3NGb3JTdG9wV29yZHMoQ2FsbGJhY2spIHsKICAgICAgICB2YXIgU2VhcmNoU3RyaW5ncyA9IHt9LAogICAgICAgICAgICBTZWFyY2hTdHJpbmdzRm91bmQgPSAwLAogICAgICAgICAgICBSZWxldmFudEVsZW1lbnROYW1lcyA9IHsKICAgICAgICAgICAgICAgICdGcm9tJzogMSwKICAgICAgICAgICAgICAgICdUbyc6IDEsCiAgICAgICAgICAgICAgICAnQ2MnOiAxLAogICAgICAgICAgICAgICAgJ1N1YmplY3QnOiAxLAogICAgICAgICAgICAgICAgJ0JvZHknOiAxLAogICAgICAgICAgICAgICAgJ0Z1bGx0ZXh0JzogMQogICAgICAgICAgICB9OwoKICAgICAgICBpZiAoIUNvcmUuQ29uZmlnLkdldCgnQ2hlY2tTZWFyY2hTdHJpbmdzRm9yU3RvcFdvcmRzJykpIHsKICAgICAgICAgICAgQ2FsbGJhY2soKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJCgnI1NlYXJjaEZvcm0gbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIEVsZW1lbnROYW1lLAogICAgICAgICAgICAgICAgJEVsZW1lbnQ7CgogICAgICAgICAgICAvLyB0aG9zZSB3aXRoIElEJ3MgYXJlIHVzZWQgZm9yIHNlYXJjaGluZwogICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdpZCcpKSB7CgogICAgICAgICAgICAgICAgLy8gc3Vic3RyaW5nICJMYWJlbCIgKGUuZy4gZmlyc3QgZml2ZSBjaGFyYWN0ZXJzICkgZnJvbSB0aGUKICAgICAgICAgICAgICAgIC8vIGxhYmVsIGlkLCB1c2UgdGhlIHJlbWFpbmluZyBuYW1lIGFzIG5hbWUgc3RyaW5nIGZvciBhY2Nlc3NpbmcKICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtIGlucHV0J3MgdmFsdWUKICAgICAgICAgICAgICAgIEVsZW1lbnROYW1lID0gJCh0aGlzKS5hdHRyKCdpZCcpLnN1YnN0cmluZyg1KTsKICAgICAgICAgICAgICAgIGlmICghUmVsZXZhbnRFbGVtZW50TmFtZXNbRWxlbWVudE5hbWVdKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCgnI1NlYXJjaEZvcm0gaW5wdXRbbmFtZT0nICsgRWxlbWVudE5hbWUgKyAnXScpOwoKICAgICAgICAgICAgICAgIGlmICgkRWxlbWVudC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJEVsZW1lbnQudmFsKCkgJiYgJEVsZW1lbnQudmFsKCkgIT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFN0cmluZ3NbRWxlbWVudE5hbWVdID0gJEVsZW1lbnQudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFN0cmluZ3NGb3VuZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIC8vIENoZWNrIGlmIHN0b3Agd29yZHMgYXJlIHByZXNlbnQuCiAgICAgICAgaWYgKCFTZWFyY2hTdHJpbmdzRm91bmQpIHsKICAgICAgICAgICAgQ2FsbGJhY2soKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgQUpBWFN0b3BXb3JkQ2hlY2soCiAgICAgICAgICAgIFNlYXJjaFN0cmluZ3MsCiAgICAgICAgICAgIGZ1bmN0aW9uIChGb3VuZFN0b3BXb3JkcykgewogICAgICAgICAgICAgICAgYWxlcnQoQ29yZS5Db25maWcuR2V0KCdTZWFyY2hTdHJpbmdzQ29udGFpblN0b3BXb3Jkc01zZycpICsgIlxuIiArIEZvdW5kU3RvcFdvcmRzKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2FsbGJhY2sKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge0V2ZW50fSBBY3Rpb24KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIG9wZW4gdGhlIHNlYXJjaCBkaWFsb2cKICAgICAqLwoKICAgIFRhcmdldE5TLk9wZW5TZWFyY2hEaWFsb2cgPSBmdW5jdGlvbiAoQWN0aW9uLCBQcm9maWxlLCBDbGFzcykgewoKICAgICAgICB2YXIgUmVmZXJyZXIgPSBDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpLAogICAgICAgICAgICBEYXRhOwoKICAgICAgICBpZiAoIUFjdGlvbikgewogICAgICAgICAgICBBY3Rpb24gPSdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJzsKICAgICAgICB9CiAgICAgICAgRGF0YSA9IHsKICAgICAgICAgICAgQWN0aW9uOiBBY3Rpb24sCiAgICAgICAgICAgIFJlZmVycmVyOiBSZWZlcnJlciwKICAgICAgICAgICAgUHJvZmlsZTogUHJvZmlsZSwKICAgICAgICAgICAgU3ViYWN0aW9uOiAnQUpBWCcsCiAgICAgICAgICAgIENsYXNzSUQ6IENsYXNzCiAgICAgICAgfTsKCiAgICAgICAgU2hvd1dhaXRpbmdEaWFsb2coKTsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBmdW5jdGlvbiAoSFRNTCkgewoKICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB3YWl0aW5nIGRpYWxvZyB3YXMgY2FuY2VsZWQsIGRvIG5vdCBzaG93IHRoZSBzZWFyY2gKICAgICAgICAgICAgICAgIC8vICBkaWFsb2cgYXMgd2VsbAogICAgICAgICAgICAgICAgaWYgKCEkKCcuRGlhbG9nOnZpc2libGUnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coSFRNTCwgQ29yZS5Db25maWcuR2V0KCdTZWFyY2hNc2cnKSwgJzEwcHgnLCAnQ2VudGVyJywgdHJ1ZSwgW10sIHRydWUpOwoKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hDbGFzc0lEJykub2ZmKCdjaGFuZ2UuU2VhcmNoUHJvZmlsZScpLm9uKCdjaGFuZ2UuU2VhcmNoUHJvZmlsZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICggJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKSAhPT0gIiIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guTG9hZFByb2ZpbGUoICQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykuYXR0cigiaWQiLCAiU2VhcmNoUHJvZmlsZU9sZCIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHZhciBDbGFzc1NlbGVjdGVkID0gJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKTsKICAgICAgICAgICAgICAgIGlmIChDbGFzc1NlbGVjdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5Mb2FkUHJvZmlsZSgkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBUYXJnZXROUy5TZXRTZWFyY2hEaWFsb2coKTsKICAgICAgICAgICAgfSwgJ2h0bWwnCiAgICAgICAgKTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Zoom.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbQogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtCiAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSBhZGQuCiAqLwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKgogICAgKiBAbmFtZSBJbml0CiAgICAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbQogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBjb25maWcgaXRlbSB6b29tIHNlY3Rpb24uCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjVmVyc2lvblNlbGVjdGlvbicpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBSZWRpcmVjdCA9ICQodGhpcykudmFsKCk7CiAgICAgICAgICAgIGlmICggUmVkaXJlY3QgKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBSZWRpcmVjdDsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICB2YXIgSVRTTVNob3dDb25maXJtRGlhbG9nID0gQ29yZS5Db25maWcuR2V0KCdJVFNNU2hvd0NvbmZpcm1EaWFsb2cnKTsKCiAgICAgICAgSVRTTS5BZ2VudC5ab29tLkluaXQoQ29yZS5Db25maWcuR2V0KCdVc2VyQ29uZmlnSXRlbVpvb21UYWJsZUhlaWdodCcpKTsKCiAgICAgICAgJCgndWwuQWN0aW9ucyBhLkFzUG9wdXAnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKCQodGhpcykuYXR0cignaHJlZicpLCAnQWN0aW9uJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnLk1hc3RlckFjdGlvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQoMCkpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBJbml0aWFsaXplIGFsbG9jYXRpb24gbGlzdCBmb3IgbGluayBvYmplY3QgdGFibGUuCiAgICAgICAgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuU2V0QWxsb2NhdGlvbkxpc3QoKTsKCiAgICAgICAgaWYgKElUU01TaG93Q29uZmlybURpYWxvZykgewogICAgICAgICAgICAkLmVhY2goSVRTTVNob3dDb25maXJtRGlhbG9nLCBmdW5jdGlvbihfS2V5LCBEYXRhKSB7CiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpcm1EaWFsb2cuQmluZENvbmZpcm1EaWFsb2coewogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRJRDogICAgICAgICAgICAgICAgICBEYXRhLk1lbnVJRCwKICAgICAgICAgICAgICAgICAgICBFbGVtZW50U2VsZWN0b3I6ICAgICAgICAgICAgRGF0YS5FbGVtZW50U2VsZWN0b3IsCiAgICAgICAgICAgICAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgIERhdGEuRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nLAogICAgICAgICAgICAgICAgICAgIENvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOiBEYXRhLkNvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nLAogICAgICAgICAgICAgICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICBEYXRhLkRpYWxvZ1RpdGxlLAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFllczogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlllcyIpLAogICAgICAgICAgICAgICAgICAgICAgICBObzogIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJObyIpLAogICAgICAgICAgICAgICAgICAgICAgICBPazogIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJPayIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxldCBMaW5rQ2VsbHMgPSAkKCcuQ29uZmlnSXRlbUxpbmtzX0NlbGwnKTsKICAgICAgICAgICAgaWYgKExpbmtDZWxscy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBMaW5rQ2VsbHMuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBsZXQgJENvbnRlbnQgPSAkKCcuQ2VsbENvbnRlbnQnLCB0aGlzKTsKICAgICAgICAgICAgICAgIGlmICgkQ29udGVudC5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oZWlnaHQoKSA+ICRDb250ZW50LmhlaWdodCgpKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnQuY3NzKCdtYXgtaGVpZ2h0JywgJCh0aGlzKS5oZWlnaHQoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgMTAwKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBJZnJhbWVBdXRvSGVpZ2h0CiAgICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20KICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRJZnJhbWUgLSBUaGUgaWZyYW1lIHdoaWNoIHNob3VsZCBiZSBhdXRvLWhlaWdodGVkCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgU2V0IGlmcmFtZSBoZWlnaHQgYXV0b21hdGljYWxseSBiYXNlZCBvbiByZWFsIGNvbnRlbnQgaGVpZ2h0IGFuZCBoYXJkY29kZWQgbWF4IGhlaWdodC4KICAgICAqLwogICAgVGFyZ2V0TlMuSWZyYW1lQXV0b0hlaWdodCA9IGZ1bmN0aW9uICgkSWZyYW1lKSB7CgogICAgICAgIHZhciBOZXdIZWlnaHQsCiAgICAgICAgICAgIElmcmFtZUJvZHlIZWlnaHQsCgogICAgICAgICAgICAvLyBtYXggaGVpZ2h0CiAgICAgICAgICAgIERlc2NyaXB0aW9uSGVpZ2h0TWF4ID0gMTAwMDsKCiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRJZnJhbWUpKSB7CiAgICAgICAgICAgIElmcmFtZUJvZHlIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuZmluZCgnYm9keScpLmhlaWdodCgpOwogICAgICAgICAgICBOZXdIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuaGVpZ2h0KCk7CiAgICAgICAgICAgIGlmICghTmV3SGVpZ2h0IHx8IGlzTmFOKE5ld0hlaWdodCkpIHsKCiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IGhlaWdodAogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gMTAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKElmcmFtZUJvZHlIZWlnaHQgPiBEZXNjcmlwdGlvbkhlaWdodE1heAogICAgICAgICAgICAgICAgICAgIHx8IE5ld0hlaWdodCA+IERlc2NyaXB0aW9uSGVpZ2h0TWF4KSB7CiAgICAgICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gRGVzY3JpcHRpb25IZWlnaHRNYXg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChJZnJhbWVCb2R5SGVpZ2h0ID4gTmV3SGVpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gSWZyYW1lQm9keUhlaWdodDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIGRlbHRhIGZvciBzY3JvbGxiYXIKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gcGFyc2VJbnQoTmV3SGVpZ2h0LCAxMCkgKyAyNTsKCiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgbWluaW11bSBoZWlnaHQgaXMgaW4gbGluZSB3aXRoIHRoZSBhdmF0YXIgaW1hZ2VzCiAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPCA0NikgewogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gNDY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbSB8fCB7fSkpOwo=</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.DynamicFieldITSMConfigItemLensSearch.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxOSBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgSVRTTS5BZ2VudC5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnNTZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbnRhY3QgZGF0YSBzZWFyY2guCiAqLwpJVFNNLkFnZW50LkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVuc1NlYXJjaCA9IChmdW5jdGlvbihUYXJnZXROUykgewoKICAgIGlmICgKICAgICAgICAhQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoJywgJ0NvcmUuQ29uZmlnJywgJ0NvcmUuQ29uZmlnJywgdHJ1ZSkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdAogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMKICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uKCkgewoKICAgICAgICBmdW5jdGlvbiBJbml0RHluYW1pY0ZpZWxkcygkQ29udGV4dCkgewogICAgICAgICAgICB2YXIgQXV0b0NvbXBsZXRlID0gQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUnKSwKICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZUFjdGl2ZSA9IGZhbHNlOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgdHlwZW9mIEF1dG9Db21wbGV0ZSAhPT0gJ3VuZGVmaW5lZCcKICAgICAgICAgICAgICAgICYmIHR5cGVvZiBBdXRvQ29tcGxldGUuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zICE9PSAndW5kZWZpbmVkJwogICAgICAgICAgICAgICAgJiYgdHlwZW9mIEF1dG9Db21wbGV0ZS5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnMuQXV0b0NvbXBsZXRlQWN0aXZlICE9PSAndW5kZWZpbmVkJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGVBY3RpdmUgPSBBdXRvQ29tcGxldGUuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zLkF1dG9Db21wbGV0ZUFjdGl2ZSAhPT0gJzAnCiAgICAgICAgICAgICAgICAgICAgPyB0cnVlCiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJCgnLkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVucycsICRDb250ZXh0KS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIFRhcmdldE5TLkluaXRFbGVtZW50KCQodGhpcyksIEF1dG9Db21wbGV0ZUFjdGl2ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgSW5pdER5bmFtaWNGaWVsZHMoKTsKCiAgICAgICAgLy8gU2luY2UgbmV3IHByb2Nlc3Mgc2NyZWVuIGxvYWRzIGFjdGl2aXR5IHZpYSBhbiBBSkFYIGNhbGwsIHdlIG5lZWQgdG8gc3Vic2NyaWJlIHRvIGFuIGV2ZW50CiAgICAgICAgLy8gICBpbiBvcmRlciB0byByZS1pbml0YWxpemUgZHluYW1pYyBmaWVsZHMuIFBsZWFzZSBzZWUgYnVnIzEzMTQ2IGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgIENvcmUuQXBwLlN1YnNjcmliZSgnVGlja2V0UHJvY2Vzcy5Jbml0LkZpcnN0QWN0aXZpdHlEaWFsb2cuTG9hZCcsIGZ1bmN0aW9uICgkQWN0aXZpdHlEaWFsb2cpIHsKICAgICAgICAgICAgSW5pdER5bmFtaWNGaWVsZHMoJEFjdGl2aXR5RGlhbG9nKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBJbml0RWxlbWVudAogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgaW5wdXQgZmllbGQgd2l0aCBhdXRvY29tcGxldGUKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gQXV0b0NvbXBsZXRlQWN0aXZlIFNldCB0byBmYWxzZSwgaWYgYXV0b2NvbXBsZXRlIHNob3VsZCBvbmx5IGJlIHN0YXJ0ZWQgYnkgY2xpY2sgb24gYSBidXR0b24gbmV4dCB0byB0aGUgaW5wdXQgZmllbGQKICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIGV2ZXJ5IENvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZAogICAgICovCiAgICBUYXJnZXROUy5Jbml0RWxlbWVudCA9IGZ1bmN0aW9uKCRFbGVtZW50LCBBdXRvQ29tcGxldGVBY3RpdmUpIHsKICAgICAgICB2YXIgQXV0b0NvbXBsZXRlQ29uZmlnID0gQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUnKS5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnMKICAgICAgICAgICAgPyBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZScpLkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVucwogICAgICAgICAgICA6IHsKICAgICAgICAgICAgICAgIE1pblF1ZXJ5TGVuZ3RoOiAyLAogICAgICAgICAgICAgICAgUXVlcnlEZWxheTogMTAwLAogICAgICAgICAgICAgICAgTWF4UmVzdWx0c0Rpc3BsYXllZDogMjAsCiAgICAgICAgICAgICAgICBCdXR0b25UZXh0OiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnU2VhcmNoJyksCiAgICAgICAgICAgIH07CgogICAgICAgIGlmKGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewoKICAgICAgICAgICAgJEVsZW1lbnQubmV4dCgnaW5wdXRbdHlwZT1idXR0b25dJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQodGhpcykucHJldignaW5wdXQnKS52YWwoJycpLnByZXZBbGwoJ2lucHV0JykudmFsKCcnKTsKICAgICAgICAgICAgICAgICQodGhpcykucHJldignaW5wdXQnKS5ibHVyKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gSGlkZSB0b29sdGlwIGluIGF1dG9jb21wbGV0ZSBmaWVsZCwgaWYgdXNlciBhbHJlYWR5IHR5cGVkIHNvbWV0aGluZyB0byBwcmV2ZW50IHRoZSBhdXRvY29tcGxldGUgbGlzdAogICAgICAgICAgICAvLyB0byBiZSBoaWRkZW4gdW5kZXIgdGhlIHRvb2x0aXAuIChPbmx5IG5lZWRlZCBmb3Igc2VydmVyc2lkZSBlcnJvcnMpCiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgna2V5dXAuVmFsaWRhdGUnKS5iaW5kKCdrZXl1cC5WYWxpZGF0ZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIFZhbHVlID0gJEVsZW1lbnQudmFsKCk7CiAgICAgICAgICAgICAgICBpZigkRWxlbWVudC5oYXNDbGFzcygnU2VydmVyRXJyb3InKSAmJiBWYWx1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjT1RPQk9fVUlfVG9vbHRpcHNfRXJyb3JUb29sdGlwJykuaGlkZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSh7CiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IEF1dG9Db21wbGV0ZUFjdGl2ZSA/IEF1dG9Db21wbGV0ZUNvbmZpZy5NaW5RdWVyeUxlbmd0aCA6IDUwMCwKICAgICAgICAgICAgICAgIGRlbGF5OiBBdXRvQ29tcGxldGVDb25maWcuUXVlcnlEZWxheSwKICAgICAgICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24oUmVxdWVzdCwgUmVzcG9uc2UpIHsKCiAgICAgICAgICAgICAgICAgICAgdmFyIFVSTCA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbjogJ0FnZW50RHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm06IFJlcXVlc3QudGVybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkOiAkRWxlbWVudC5hdHRyKCdpZCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4UmVzdWx0czogQXV0b0NvbXBsZXRlQ29uZmlnLk1heFJlc3VsdHNEaXNwbGF5ZWQKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW4gb2xkIGFqYXggcmVxdWVzdCBpcyBhbHJlYWR5IHJ1bm5pbmcsIHN0b3AgdGhlIG9sZCByZXF1ZXN0IGFuZCBzdGFydCB0aGUgbmV3IG9uZS4KICAgICAgICAgICAgICAgICAgICBpZigkRWxlbWVudC5kYXRhKCdBdXRvQ29tcGxldGVYSFInKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5kYXRhKCdBdXRvQ29tcGxldGVYSFInKS5hYm9ydCgpOwogICAgICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5yZW1vdmVEYXRhKCdBdXRvQ29tcGxldGVYSFInKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUnVuIHRoZSByZXNwb25zZSBmdW5jdGlvbiB0byBoaWRlIHRoZSByZXF1ZXN0IGFuaW1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2Uoe30pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuZGF0YSgnQXV0b0NvbXBsZXRlWEhSJywgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChVUkwsIERhdGEsIGZ1bmN0aW9uKFJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgVmFsdWVEYXRhID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICRFbGVtZW50LnJlbW92ZURhdGEoJ0F1dG9Db21wbGV0ZVhIUicpOwogICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2goUmVzdWx0LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlRGF0YS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5WYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5WYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHRoaXMuS2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlKFZhbHVlRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNlbGVjdDogZnVuY3Rpb24oRXZlbnQsIFVJKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciBDb250YWN0S2V5ID0gVUkuaXRlbS5rZXksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhY3RWYWx1ZSA9IFVJLml0ZW0udmFsdWU7CgogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLkFkZFRpY2tldENvbnRhY3QoJCh0aGlzKS5hdHRyKCdpZCcpLCBDb250YWN0VmFsdWUsIENvbnRhY3RLZXkpOwogICAgICAgICAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICRFbGVtZW50LmJsdXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgVmlzaWJsZSA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIGlmICghJCh0aGlzKS52YWwoKSkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykucHJldkFsbCgnaW5wdXRbdHlwZT1oaWRkZW5dJykudmFsKCcnKTsKICAgICAgICAgICAgICAgICAgICAkKCcuJyArICQodGhpcykucHJldkFsbCgnaW5wdXRbdHlwZT1oaWRkZW5dJykuYXR0cignaWQnKSkuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLmZpbmQoJy5Db25maWdJdGVtJykuaGFzQ2xhc3MoJ0hpZGRlbicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjQ29udGFjdEluZm8nKS5maW5kKCcuQ29udGFjdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0NvbnRhY3RJbmZvJykuZmluZCgncC5Ob25lJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFZpc2libGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNDb250YWN0SW5mbycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5Db250YWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbnRhY3RXRCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNDb250YWN0SW5mbycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5Db250YWN0OmZpcnN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbnRhY3RXRCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNob3coKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoIUF1dG9Db21wbGV0ZUFjdGl2ZSkgewogICAgICAgICAgICAgICAgJEVsZW1lbnQuYWZ0ZXIoJzxidXR0b24gaWQ9IicgKyAkRWxlbWVudC5hdHRyKCdpZCcpICsgJ1NlYXJjaCIgdHlwZT0iYnV0dG9uIj4nICsgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoQXV0b0NvbXBsZXRlQ29uZmlnLkJ1dHRvblRleHQpICsgJzwvYnV0dG9uPicpOwogICAgICAgICAgICAgICAgJCgnIycgKyAkRWxlbWVudC5hdHRyKCdpZCcpICsgJ1NlYXJjaCcpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgnb3B0aW9uJywgJ21pbkxlbmd0aCcsIDApOwogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgnc2VhcmNoJyk7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuYXV0b2NvbXBsZXRlKCdvcHRpb24nLCAnbWluTGVuZ3RoJywgNTAwKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBPbiB1bmxvYWQgcmVtb3ZlIG9sZCBzZWxlY3RlZCBkYXRhLiBJZiB0aGUgcGFnZSBpcyByZWxvYWRlZCAod2l0aCBGNSkgdGhpcyBkYXRhIHN0YXlzIGluIHRoZSBmaWVsZCBhbmQgaW52b2tlcyBhbiBhamF4IHJlcXVlc3Qgb3RoZXJ3aXNlLgogICAgICAgICQod2luZG93KS5iaW5kKCdiZWZvcmV1bmxvYWQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJCgnLkNvbnRhY3RBdXRvQ29tcGxldGUnKS52YWwoJycpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gRmllbGQKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBDb250YWN0VmFsdWUgVGhlIHJlYWRhYmxlIGN1c3RvbWVyIGlkZW50aWZpZXIuCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gQ29udGFjdEtleSBvbiBzeXN0ZW0uCiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBhZGQgYSBuZXcgdGlja2V0IGNvbnRhY3QKICAgICAqIEByZXR1cm5zIHtib29sZWFufQogICAgICovCiAgICBUYXJnZXROUy5BZGRUaWNrZXRDb250YWN0ID0gZnVuY3Rpb24oRmllbGQsIENvbnRhY3RWYWx1ZSwgQ29udGFjdEtleSkgewoKICAgICAgICB2YXIgVmFsdWVGaWVsZCA9IEZpZWxkLnJlcGxhY2UoJ0F1dG9jb21wbGV0ZV8nLCAnJyk7CgogICAgICAgIGlmKCFWYWx1ZUZpZWxkLmxlbmd0aCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkKCcjJyArIFZhbHVlRmllbGQpLnZhbChDb250YWN0S2V5KTsKICAgICAgICAkKCcjJyArIEZpZWxkKS52YWwoQ29udGFjdFZhbHVlKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnNTZWFyY2ggfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItem.Overview.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwpJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gPSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtLk92ZXJ2aWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5PdmVydmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBVUkwsIENvbHVtbkZpbHRlciwgTmV3Q29sdW1uRmlsdGVyU3RyZywgTXlSZWdFeCwgU2Vzc2lvbkluZm9ybWF0aW9uOwoKICAgICAgICAkKCcjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTZXR0aW5ncyIpLCAnMTUlJywgJ0NlbnRlcicsIHRydWUsCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlN1Ym1pdCIpLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlOiAnU3VibWl0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICdQcmltYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkTGlzdENvbnRhaW5lciA9ICQoJy5BbGxvY2F0aW9uTGlzdENvbnRhaW5lcicpLmZpbmQoJy5Bc3NpZ25lZEZpZWxkcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlciA9ICQoJ2xpLkFjdGl2ZSA+IGEnKS50ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRJRDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkTGlzdENvbnRhaW5lcikgJiYgJExpc3RDb250YWluZXIubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCRMaXN0Q29udGFpbmVyLmZpbmQoJ2xpJyksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZElEID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZC0nICsgJCh0aGlzKS5hdHRyKCdkYXRhLWZpZWxkbmFtZScpICsgJy0nICsgRmlsdGVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBhZGQgdGhpcyBmaWVsZCBpZiBpdHMgbm90IGFscmVhZHkgdGhlcmUuIFRoaXMgY291bGQgaGFwcGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGUuZy4gdGhlIHNhdmUgYnV0dG9uIGlzIGNsaWNrZWQgbXVsdGlwbGUgdGltZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEZpZWxkSUQpKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxpbnB1dCBuYW1lPSJVc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQiIHR5cGU9ImhpZGRlbiIgLz4nKS5hdHRyKCdpZCcsIEZpZWxkSUQpLnZhbCgkKHRoaXMpLmF0dHIoJ2RhdGEtZmllbGRuYW1lJykpLmFwcGVuZFRvKCRMaXN0Q29udGFpbmVyLmNsb3Nlc3QoJ2RpdicpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLCB0cnVlKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIENvcmUuQ3VzdG9tZXIuVGFibGVGaWx0ZXJzLlNldEFsbG9jYXRpb25MaXN0KCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgQ29yZS5VSS5Jbml0Q2hlY2tib3hTZWxlY3Rpb24oJCgndGFibGUgdGQuQ2hlY2tib3gnKSk7CgogICAgICAgIC8vIGNoYW5nZSBldmVudCBmb3IgY29sdW1uIGZpbHRlcgogICAgICAgICQoJy5Db2x1bW5GaWx0ZXInKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgLy8gZGVmaW5lIHZhcmlhYmxlcwogICAgICAgICAgICBVUkwgPSBDb3JlLkNvbmZpZy5HZXQoIkJhc2VsaW5rIikgKyAnQWN0aW9uPScgKyBDb3JlLkNvbmZpZy5HZXQoIkFjdGlvbiIpICsgJzsnICsgQ29yZS5Db25maWcuR2V0KCdMaW5rUGFnZScpOwogICAgICAgICAgICBTZXNzaW9uSW5mb3JtYXRpb24gPSBDb3JlLkFwcC5HZXRTZXNzaW9uSW5mb3JtYXRpb24oKTsKICAgICAgICAgICAgJC5lYWNoKFNlc3Npb25JbmZvcm1hdGlvbiwgZnVuY3Rpb24gKEtleSwgVmFsdWUpIHsKICAgICAgICAgICAgICAgIFVSTCArPSBlbmNvZGVVUklDb21wb25lbnQoS2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChWYWx1ZSkgKyAnOyc7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgPSAkKHRoaXMpWzBdLm5hbWU7CiAgICAgICAgICAgIE5ld0NvbHVtbkZpbHRlclN0cmcgPSAkKHRoaXMpWzBdLm5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoJCh0aGlzKS52YWwoKSkgKyAnOyc7CgogICAgICAgICAgICBNeVJlZ0V4ID0gbmV3ICBSZWdFeHAoQ29sdW1uRmlsdGVyKyI9W147XSo7Iik7CgogICAgICAgICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeSBzZXQgcGFyYW1ldGVyIGFuZCByZXBsYWNlCiAgICAgICAgICAgIGlmIChVUkwubWF0Y2goTXlSZWdFeCkpIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTC5yZXBsYWNlKE15UmVnRXgsIE5ld0NvbHVtbkZpbHRlclN0cmcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBvdGhlcndpc2UgYWRkIHRoZSBuZXcgY29sdW1uIGZpbHRlcgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTCArIE5ld0NvbHVtbkZpbHRlclN0cmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlZGlyZWN0CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gIFVSTDsKICAgICAgICB9KTsKCiAgICAgICAgLy8gY2xpY2sgZXZlbnQgb24gdGFibGUgaGVhZGVyIHRyaWdnZXIKICAgICAgICAkKCcuT3ZlcnZpZXdIZWFkZXInKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICRUcmlnZ2VyT2JqID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIEZpbHRlck5hbWU7CgogICAgICAgICAgICBpZiAoJFRyaWdnZXJPYmouaGFzQ2xhc3MoJ0FjdGl2ZScpKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgIC5maW5kKCcuQ29sdW1uU2V0dGluZ3NCb3gnKQogICAgICAgICAgICAgICAgICAgIC5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLnJlbW92ZUNsYXNzKCdBY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAvLyBzbGlkZSB1cCBhbGwgb3BlbiBzZXR0aW5ncyB3aWRnZXRzCiAgICAgICAgICAgICAgICAkKCcuQ29sdW1uU2V0dGluZ3NUcmlnZ2VyJykKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLnByZXYoJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInKS5yZW1vdmVDbGFzcygnQWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBUSElTIHNldHRpbmdzIHdpZGdldAogICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZUluKCdmYXN0JywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5hZGRDbGFzcygnQWN0aXZlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZyZXNoIGZpbHRlciBkcm9wZG93bgogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJOYW1lID0gJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignbmFtZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVySUQnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVyVXNlcklEJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbG9zZXN0KCd0aCcpLmhhc0NsYXNzKCdSZXNwb25zaWJsZScpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmouY2xvc2VzdCgndGgnKS5oYXNDbGFzcygnT3duZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkVHJpZ2dlck9iai5wYXJlbnQoKS5maW5kKCcuU2VsZWN0ZWRWYWx1ZScpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNOb3RoaW5nJyksICdBSkFYRmlsdGVyVXBkYXRlJywgRmlsdGVyTmFtZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBdXRvQ29tcGxldGVWYWx1ZSA9ICRUcmlnZ2VyT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHQoJy5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlVGV4dCAgPSAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXV0b0NvbXBsZXRlVmFsdWUgIT09ICdEZWxldGVGaWx0ZXInKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxzcGFuIGNsYXNzPSJTZWxlY3RlZFZhbHVlIEhpZGRlbiI+JyArIEF1dG9Db21wbGV0ZVRleHQgKyAnICgnICsgQXV0b0NvbXBsZXRlVmFsdWUgKyAnKTwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxhIGhyZWY9IiMiIGNsYXNzPSJEZWxldGVGaWx0ZXIiPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2EuRGVsZXRlRmlsdGVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub2ZmKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKCdEZWxldGVGaWx0ZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29sdW1uRmlsdGVyQXR0cmlidXRlcycpLCAnQUpBWEZpbHRlclVwZGF0ZScsIEZpbHRlck5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuTWFzdGVyQWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgICAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5DdXN0b21lci5Db25maWdJdGVtLk92ZXJ2aWV3IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItem.Zoom.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwpJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gPSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20KICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIG92ZXJ2aWV3IGJlaGF2aW91cnMuCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjVmVyc2lvblNlbGVjdGlvbicpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBSZWRpcmVjdCA9ICQodGhpcykudmFsKCk7CiAgICAgICAgICAgIGlmICggUmVkaXJlY3QgKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBSZWRpcmVjdDsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkKCcjQXR0YWNobWVudHMnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICQoJyNBdHRhY2htZW50Qm94JykuY3NzKAogICAgICAgICAgICAgICAgJ3JpZ2h0JywgJCh3aW5kb3cpLndpZHRoKCkgLSAkKCcjQXR0YWNobWVudHMnKS5vZmZzZXQoKS5sZWZ0IC0gJCgnI0F0dGFjaG1lbnRzJykud2lkdGgoKSAtIDI0CiAgICAgICAgICAgICk7CiAgICAgICAgICAgICQoJyNBdHRhY2htZW50Qm94JykudG9nZ2xlKCk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIHNjcm9sbCBldmVudHMKICAgICAgICAkKHdpbmRvdykuc2Nyb2xsKCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8gY2hhbmdlIEhlYWRlciBvbiBzY3JvbGwKICAgICAgICAgICAgaWYgKCAkKHdpbmRvdykud2lkdGgoKSA+IDc2NyApIHsKICAgICAgICAgICAgICAgIGlmICggJCh3aW5kb3cpLnNjcm9sbFRvcCgpID4gOTAgJiYgJCgiI29vb0hlYWRlciIpLmhlaWdodCgpID4gNTYgKSB7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmhlaWdodCggJzQ4cHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctdG9wJywgJzhweCcgKTsKICAgICAgICAgICAgICAgICAgICAkKCIjb29vSGVhZGVyIikuY3NzKCAncGFkZGluZy1ib3R0b20nLCAnOHB4JyApOwogICAgICAgICAgICAgICAgICAgICQoIiNDSUluZm9CYXIiKS5mYWRlT3V0KDIwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICggJCh3aW5kb3cpLnNjcm9sbFRvcCgpIDwgOCApIHsKICAgICAgICAgICAgICAgICAgICAkKCIjb29vSGVhZGVyIikuaGVpZ2h0KCAnMTAxcHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctdG9wJywgJzIycHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctYm90dG9tJywgJzIycHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI0NJSW5mb0JhciIpLmZhZGVJbigyMDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgSWZyYW1lQXV0b0hlaWdodAogICAgICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkSWZyYW1lIC0gVGhlIGlmcmFtZSB3aGljaCBzaG91bGQgYmUgYXV0by1oZWlnaHRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNldCBpZnJhbWUgaGVpZ2h0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gcmVhbCBjb250ZW50IGhlaWdodCBhbmQgaGFyZGNvZGVkIG1heCBoZWlnaHQuCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewoKICAgICAgICB2YXIgTmV3SGVpZ2h0LAogICAgICAgICAgICBJZnJhbWVCb2R5SGVpZ2h0LAoKICAgICAgICAgICAgLy8gbWF4IGhlaWdodAogICAgICAgICAgICBEZXNjcmlwdGlvbkhlaWdodE1heCA9IDEwMDA7CgogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICBJZnJhbWVCb2R5SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmZpbmQoJ2JvZHknKS5oZWlnaHQoKTsKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmhlaWdodCgpOwogICAgICAgICAgICBpZiAoIU5ld0hlaWdodCB8fCBpc05hTihOZXdIZWlnaHQpKSB7CgogICAgICAgICAgICAgICAgLy8gZGVmYXVsdCBoZWlnaHQKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IDEwMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChJZnJhbWVCb2R5SGVpZ2h0ID4gRGVzY3JpcHRpb25IZWlnaHRNYXgKICAgICAgICAgICAgICAgICAgICB8fCBOZXdIZWlnaHQgPiBEZXNjcmlwdGlvbkhlaWdodE1heCkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IERlc2NyaXB0aW9uSGVpZ2h0TWF4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoSWZyYW1lQm9keUhlaWdodCA+IE5ld0hlaWdodCkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IElmcmFtZUJvZHlIZWlnaHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGFkZCBkZWx0YSBmb3Igc2Nyb2xsYmFyCiAgICAgICAgICAgIE5ld0hlaWdodCA9IHBhcnNlSW50KE5ld0hlaWdodCwgMTApICsgMjU7CgogICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIG1pbmltdW0gaGVpZ2h0IGlzIGluIGxpbmUgd2l0aCB0aGUgYXZhdGFyIGltYWdlcwogICAgICAgICAgICBpZiAoTmV3SGVpZ2h0IDwgNDYpIHsKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IDQ2OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkSWZyYW1lLmhlaWdodChOZXdIZWlnaHQgKyAncHgnKTsKICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20gfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItemList.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UgSVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdAogKiBAbWVtYmVyb2YgSVRTTS5DdXN0b21lcgogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBOYXZpZ2F0aW9uIEJhcgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBOYXZCYXJTaHJpbmsKICAgICAqIEBtZW1iZXJvZiBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0CiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIE5hdkJhciB0byBpdHMgZGVmYXVsdC4KICAgICAqLwogICAgLypmdW5jdGlvbiBOYXZCYXJTaHJpbmsoKSB7CiAgICAgICAgJCgnI05hdmlnYXRpb24nKS5vZmYoJ21vdXNlbGVhdmUnLCBOYXZCYXJTaHJpbmspOwogICAgICAgICQoJyNOYXZpZ2F0aW9uJykucmVtb3ZlQ2xhc3MoIm9vb0V4cGFuZGVkIik7CiAgICAgICAgJCgnI05hdkJhck1vZHVsZUljb25zID4gYSA+IC5OYXZCYXJEZXNjcmlwdGlvbiA+IHAnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKHRoaXMpLmhpZGUoKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gd2FpdCwgdGlsbCB0aGUgTmF2QmFyIGlzIHNtYWxsCiAgICAgICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQoJyNOYXZCYXJFeHBhbmQnKS5zaG93KCk7CiAgICAgICAgfSwgMjUwKTsKICAgIH07Ki8KCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0CiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIENvbmZpZ0l0ZW1MaXN0IGphdmFzY3JpcHQgZnVuY3Rpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gbW92ZSBhbGwgZWxlbWVudHMgdG8gdGhlIHJvd3MKICAgICAgICAkKCcub29vVGlja2V0SXRlbUNhdCcpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBSb3cxICAgICAgID0gJCh0aGlzKS5jaGlsZHJlbigiLm9vb1JvdzEiKS5maXJzdCgpOwogICAgICAgICAgICB2YXIgUm93MiAgICAgICA9ICQodGhpcykuY2hpbGRyZW4oIi5vb29Sb3cyIikuZmlyc3QoKTsKICAgICAgICAgICAgdmFyIFdpZHRoMSAgICAgPSAwOwogICAgICAgICAgICB2YXIgV2lkdGgyICAgICA9IDA7CiAgICAgICAgICAgIHZhciBNYXhXaWR0aCAgID0gJCh0aGlzKS53aWR0aCgpOwogICAgICAgICAgICB2YXIgQ2F0ZWdvcmllcyA9ICQodGhpcykuY2hpbGRyZW4oInAiKTsKCi8vICAgICAgICAgICAgZm9yICh2YXIgQ2F0IG9mIENhdGVnb3JpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBDYXRlZ29yaWVzLmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgdmFyIENhdGVnb3J5ID0gJCggQ2F0ZWdvcmllc1tpXSApOwogICAgICAgICAgICAgICAgdmFyIE91dGVyICAgID0gQ2F0ZWdvcnkub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgIGlmICggV2lkdGgxIDw9IFdpZHRoMiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIFdpZHRoMSArIE91dGVyIDwgTWF4V2lkdGggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIENhdGVnb3J5LmFwcGVuZFRvKFJvdzEpOwogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aDEgKz0gT3V0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeS5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBXaWR0aDIgKyBPdXRlciA8IE1heFdpZHRoICkgewogICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeS5hcHBlbmRUbyhSb3cyKTsKICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGgyICs9IE91dGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnkuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.UI.ConfigItemActionRow.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5VSSA9IElUU00uVUkgfHwge307CgovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBJVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cKICogQGRlc2NyaXB0aW9uCiAqICAgICAgQWN0aW9uIHJvdyBmdW5jdGlvbmFsaXR5CiAqIEByZXF1aXJlcwogKiAgICAgIENvcmUuSlNPTgogKiAgICAgIENvcmUuRGF0YQogKi8KSVRTTS5VSS5Db25maWdJdGVtQWN0aW9uUm93ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdycsICdDb3JlLkpTT04nLCAnSlNPTiBBUEknKSkgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdycsICdDb3JlLkRhdGEnLCAnRGF0YSBBUEknKSkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgQ29uZmlnSXRlbUVsZW1lbnRTZWxlY3RvcnMgPSB7CiAgICAgICAgICAgICdTbWFsbCc6ICdkaXYuT3ZlcnZpZXcgdGFibGUgdGQgaW5wdXQ6Y2hlY2tib3hbbmFtZT1Db25maWdJdGVtSURdJywKICAgICAgICAgICAgJ01lZGl1bSc6ICd1bC5PdmVydmlldyBpbnB1dDpjaGVja2JveFtuYW1lPUNvbmZpZ0l0ZW1JRF0nLAogICAgICAgICAgICAnTGFyZ2UnOiAndWwuT3ZlcnZpZXcgaW5wdXQ6Y2hlY2tib3hbbmFtZT1Db25maWdJdGVtSURdJwogICAgICAgIH0sCiAgICAgICAgQ29uZmlnSXRlbVZpZXc7CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gRGF0YSBUaGUgZGF0YSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge3N0cmluZ30gcXVlcnkgc3RyaW5nIG9mIHRoZSBkYXRhCiAgICAgKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBnaXZlbiBoYXNoIGludG8gYSBxdWVyeSBzdHJpbmcKICAgICAqLwogICAgZnVuY3Rpb24gU2VyaWFsaXplRGF0YShEYXRhKSB7CiAgICAgICAgdmFyIFF1ZXJ5U3RyaW5nID0gJyc7CiAgICAgICAgJC5lYWNoKERhdGEsIGZ1bmN0aW9uIChLZXksIFZhbHVlKSB7CiAgICAgICAgICAgIFF1ZXJ5U3RyaW5nICs9ICc7JyArIGVuY29kZVVSSUNvbXBvbmVudChLZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KFZhbHVlKTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gUXVlcnlTdHJpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9ucyBhZGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YWxpZCBhY3Rpb24gb2YgYW4gZWxlbWVudCB0byB0aGUgZWxlbWVudC4KICAgICAqICAgICAgVGhlc2UgaW5mb3JtYXRpb24gYXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGFjdGlvbiByb3cgaW5kaXZpZHVhbGx5IGZvciB0aGlzIGVsZW1lbnQuCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQKICAgICAqICAgICAgVGhlIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBkYXRhIGlzIHN0b3JlZAogICAgICogQHBhcmFtIHtTdHJpbmd9IEpTT05TdHJpbmcKICAgICAqICAgICAgVGhlIEpTT04gc3RyaW5nIHdoaWNoIGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmFsaWQgYWN0aW9ucyBvZiB0aGUgZWxlbWVudCAoZ2VuZXJhdGVkIGJ5IFBlcmwgbW9kdWxlKQogICAgICogICAgICBDb3VsZCBhbHNvIGJlIGFuIGphdmFzY3JpcHQgb2JqZWN0IGRpcmVjdGx5CiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqLwogICAgVGFyZ2V0TlMuQWRkQWN0aW9ucyA9IGZ1bmN0aW9uICgkRWxlbWVudCwgSlNPTlN0cmluZykgewogICAgICAgIHZhciBBY3Rpb25zOwogICAgICAgIC8vIFRoZSBlbGVtZW50IG9mIHRoZSBnaXZlbiBJRCBtdXN0IGV4aXN0LCBKU09OU3RyaW5nIG11c3Qgbm90IGJlIGVtcHR5CiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewogICAgICAgICAgICBpZiAodHlwZW9mIEpTT05TdHJpbmcgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICBBY3Rpb25zID0gQ29yZS5KU09OLlBhcnNlKEpTT05TdHJpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQWN0aW9ucyA9IEpTT05TdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHNhdmUgYWN0aW9uIGRhdGEgdG8gdGhlIGdpdmVuIGVsZW1lbnQKICAgICAgICAgICAgQ29yZS5EYXRhLlNldCgkRWxlbWVudCwgJ0FjdGlvbnMnLCBBY3Rpb25zKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIENvcmUuRGVidWcuTG9nKCdFbGVtZW50IGRvZXMgbm90IGV4aXN0IG9yIG5vIHZhbGlkIGRhdGEgc3RydWN0dXJlIHBhc3NlZC4nKTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb24gY2xpY2sgb24gdGhlIGNoZWNrYm94IG9mIGFuIENvbmZpZ0l0ZW0gZWxlbWVudCBhbmQgdXBkYXRlcyB0aGUgYWN0aW9uIHJvdyBmb3IgdGhpcyBlbGVtZW50LgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRDbGlja2VkRWxlbWVudAogICAgICogICAgICBqUXVlcnlPYmplY3Qgb2YgdGhlIGNsaWNrZWQgZWxlbWVudCAobm9ybWFsbHkgJCh0aGlzKSkKICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSBDaGVja2JveGVzCiAgICAgKiAgICAgIGpRdWVyeU9iamVjdCBvZiB0aGUgY2hlY2tib3hlcyBvZiB0aGUgZGlmZmVyZW50IENvbmZpZ0l0ZW1zCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEFjdGlvblJvdwogICAgICogICAgICBUaGUgalF1ZXJ5T2JqZWN0IG9mIHRoZSBBY3Rpb25Sb3cgd3JhcHBlciAobm9ybWFsbHkgdGhlIDx1bD4tRWxlbWVudCkKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5VcGRhdGVBY3Rpb25Sb3cgPSBmdW5jdGlvbiAoXyRDbGlja2VkRWxlbWVudCwgJENoZWNrYm94ZXMsICRBY3Rpb25Sb3cpIHsKICAgICAgICB2YXIgQ29uZmlnSXRlbUFjdGlvbkRhdGEsCiAgICAgICAgICAgIEFjdGlvblJvd0VsZW1lbnQ7CgogICAgICAgIC8vIENoZWNrLCBpZiBvbmUgb3IgbW9yZSBpdGVtcyBhcmUgc2VsZWN0ZWQKICAgICAgICAkQ2hlY2tib3hlcyA9ICRDaGVja2JveGVzLmZpbHRlcignOmNoZWNrZWQnKTsKICAgICAgICAvLyBObyBjaGVja2JveCBpcyBzZWxlY3RlZAogICAgICAgIGlmICghJENoZWNrYm94ZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIC8vIFJlbW92ZSBhY3Rpb25zIGFuZCBkZWFjdGl2YXRlIGJ1bGsgYWN0aW9uCiAgICAgICAgICAgICRBY3Rpb25Sb3cKICAgICAgICAgICAgICAgIC5maW5kKCdsaScpLmZpbHRlcignOm5vdCguQnVsayknKS5yZW1vdmUoKQogICAgICAgICAgICAgICAgLmVuZCgpLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnI0NvbmZpZ0l0ZW1CdWxrQWN0aW9uJykuYWRkQ2xhc3MoJ0luYWN0aXZlJykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpLkxhc3QnKS5yZW1vdmVDbGFzcygnTGFzdCcpCiAgICAgICAgICAgICAgICAuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCdsaTpsYXN0JykuYWRkQ2xhc3MoJ0xhc3QnKTsKICAgICAgICB9CiAgICAgICAgLy8gRXhhY3RseSBvbmUgY2hlY2tib3ggaXMgc2VsZWN0ZWQKICAgICAgICBlbHNlIGlmICgkQ2hlY2tib3hlcy5sZW5ndGggPT09IDEgJiYgISQoJyNTZWxlY3RBbGxDb25maWdJdGVtcycpLmlzKCc6Y2hlY2tlZCcpICkgewogICAgICAgICAgICAvLyBVcGRhdGUgYWN0aW9ucyBhbmQgYWN0aXZhdGUgYnVsayBhY3Rpb24KICAgICAgICAgICAgJEFjdGlvblJvdy5maW5kKCcjQ29uZmlnSXRlbUJ1bGtBY3Rpb24nKS5yZW1vdmVDbGFzcygnSW5hY3RpdmUnKTsKCiAgICAgICAgICAgIC8vIEZpbmQgdGhlIGVsZW1lbnQgd2hpY2ggaXMgYWN0aXZlIChpdCBtdXN0IG5vdCBiZSB0aGUgY2xpY2tlZCBlbGVtZW50ISkKICAgICAgICAgICAgLy8gYW5kIGdldCB0aGUgZGF0YQogICAgICAgICAgICBDb25maWdJdGVtQWN0aW9uRGF0YSA9IENvcmUuRGF0YS5HZXQoJENoZWNrYm94ZXMuY2xvc2VzdCgnbGksIHRyJyksICdBY3Rpb25zJyk7CiAgICAgICAgICAgIGlmICh0eXBlb2YgQ29uZmlnSXRlbUFjdGlvbkRhdGEgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAkLmVhY2goQ29uZmlnSXRlbUFjdGlvbkRhdGEsIGZ1bmN0aW9uIChfSW5kZXgsIFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlLkhUTUwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJChWYWx1ZS5IVE1MKS5hdHRyKCdpZCcsIFZhbHVlLklEKS5hcHBlbmRUbygkQWN0aW9uUm93KTsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudCA9ICRBY3Rpb25Sb3cuZmluZCgnIycgKyBWYWx1ZS5JRCkuZmluZCgnYScpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIFZhbHVlLlRhcmdldCA9PT0gJ3VuZGVmaW5lZCcgfHwgVmFsdWUuVGFyZ2V0ID09PSAiIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudC5hdHRyKCdocmVmJywgVmFsdWUuTGluayk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlLlBvcHVwVHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudC5vbignY2xpY2suUG9wdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAoVmFsdWUuTGluaywgVmFsdWUuUG9wdXBUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBBcHBseSB0aGUgTGFzdCBjbGFzcyB0byB0aGUgcmlnaHQgZWxlbWVudAogICAgICAgICAgICAkQWN0aW9uUm93CiAgICAgICAgICAgICAgICAuZmluZCgnbGkuTGFzdCcpLnJlbW92ZUNsYXNzKCdMYXN0JykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpOmxhc3QnKS5hZGRDbGFzcygnTGFzdCcpOwogICAgICAgIH0KICAgICAgICAvLyBUd28gb3JlIG1vcmUgY2hlY2tib3hlcyBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBSZW1vdmUgYWN0aW9ucyBhbmQgYWN0aXZhdGUgYnVsayBhY3Rpb24KICAgICAgICAgICAgJEFjdGlvblJvdwogICAgICAgICAgICAgICAgLmZpbmQoJ2xpJykuZmlsdGVyKCc6bm90KC5CdWxrKScpLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAuZW5kKCkuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCcjQ29uZmlnSXRlbUJ1bGtBY3Rpb24nKS5yZW1vdmVDbGFzcygnSW5hY3RpdmUnKQogICAgICAgICAgICAgICAgLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnbGkuTGFzdCcpLnJlbW92ZUNsYXNzKCdMYXN0JykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpOmxhc3QnKS5hZGRDbGFzcygnTGFzdCcpOwogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBjb21wbGV0ZSBBY3Rpb25Sb3cgZnVuY3Rpb25hbGl0eSBhbmQgYmluZHMgYWxsIGNsaWNrIGV2ZW50cy4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIC8vIEdldCB1c2VkIENvbmZpZ0l0ZW0gdmlldyBtb2RlCiAgICAgICAgaWYgKCQoJyNDb25maWdJdGVtT3ZlcnZpZXdNZWRpdW0nKS5sZW5ndGgpIHsKICAgICAgICAgICAgQ29uZmlnSXRlbVZpZXcgPSAnTWVkaXVtJzsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoJCgnI0NvbmZpZ0l0ZW1PdmVydmlld0xhcmdlJykubGVuZ3RoKSB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1WaWV3ID0gJ0xhcmdlJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1WaWV3ID0gJ1NtYWxsJzsKICAgICAgICB9CgogICAgICAgICQoJyNTZWxlY3RBbGxDb25maWdJdGVtcycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFN0YXR1cyA9ICQodGhpcykucHJvcCgnY2hlY2tlZCcpOwogICAgICAgICAgICAkKENvbmZpZ0l0ZW1FbGVtZW50U2VsZWN0b3JzW0NvbmZpZ0l0ZW1WaWV3XSkucHJvcCgnY2hlY2tlZCcsIFN0YXR1cykudHJpZ2dlckhhbmRsZXIoJ2NsaWNrJyk7CiAgICAgICAgfSk7CgogICAgICAgICQoQ29uZmlnSXRlbUVsZW1lbnRTZWxlY3RvcnNbQ29uZmlnSXRlbVZpZXddKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIElUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdy5VcGRhdGVBY3Rpb25Sb3coJCh0aGlzKSwgJChDb25maWdJdGVtRWxlbWVudFNlbGVjdG9yc1tDb25maWdJdGVtVmlld10pLCAkKCdkaXYuT3ZlcnZpZXdBY3Rpb25zIHVsLkFjdGlvbnMnKSk7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNDb25maWdJdGVtQnVsa0FjdGlvbiBhJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgJEVsZW1lbnQgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgJFNlbGVjdGVkQ29uZmlnSXRlbXMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURQYXJhbWV0ZXIgPSAiQ29uZmlnSXRlbUlEPSIsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0gIiIsCiAgICAgICAgICAgICAgICBVUkw7CiAgICAgICAgICAgIGlmICgkRWxlbWVudC5wYXJlbnQoJ2xpJykuaGFzQ2xhc3MoJ0luYWN0aXZlJykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxlY3RlZENvbmZpZ0l0ZW1zID0gJChDb25maWdJdGVtRWxlbWVudFNlbGVjdG9yc1tDb25maWdJdGVtVmlld10gKyAnOmNoZWNrZWQnKTsKICAgICAgICAgICAgICAgICRTZWxlY3RlZENvbmZpZ0l0ZW1zLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgKz0gQ29uZmlnSXRlbUlEUGFyYW1ldGVyICsgJCh0aGlzKS52YWwoKSArICI7IjsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgVVJMID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQnVsazsiICsgQ29uZmlnSXRlbUlEczsKICAgICAgICAgICAgICAgIFVSTCArPSBTZXJpYWxpemVEYXRhKENvcmUuQXBwLkdldFNlc3Npb25JbmZvcm1hdGlvbigpKTsKICAgICAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKFVSTCwgJ0NvbmZpZ0l0ZW1BY3Rpb24nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.Admin.ITSMConfigItem.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEFwcGxpY2F0aW9uCiAqIEBzdWJzZWN0aW9uICBJVFNNQ29uZmlnSXRlbURlZmluaXRpb25zCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKCi8qKgogKiBAc3Vic3Vic2VjdGlvbiAgICAgQWRtaW5JVFNNQ29uZmlnSXRlbQogKi8KCi5TaWRlYmFyQ29sdW1uIC5XaWRnZXRTaW1wbGUgLkNhbGxGb3JBY3Rpb24gewogICAgbWFyZ2luLXRvcDogNHB4OwogICAgbWFyZ2luLWJvdHRvbTogNHB4Owp9CgpmaWVsZHNldCA+IC5GaWVsZCAuQ29kZU1pcnJvci13cmFwIHsKICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDUwMHB4KTsKICAgIG1pbi1oZWlnaHQ6IDMyMHB4Owp9CgouQ29kZU1pcnJvckNvbnRhaW5lciB7CiAgICB3aWR0aDogOTAlOwp9CgouQ29kZU1pcnJvckNvbnRhaW5lciArIHAgewogICAgd2lkdGg6IDkwJTsKfQp9LyogZW5kIEBtZWRpYSAqLwo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Edit.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIElUU00gQ29uZmlnSXRlbQogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgouUm93X1NlY3Rpb25IZWFkZXIgewogICAgbWFyZ2luLXRvcDogOHB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLlJvd19QYWdlSGVhZGVyIHsKICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KCi5Sb3dfU2VjdGlvbkhlYWRlciA+IGgzLAouUm93X1BhZ2VIZWFkZXIgPiBoMiB7CiAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICBtYXJnaW4tbGVmdDogMzAlOwogICAgcGFkZGluZy1sZWZ0OiAxMHB4Owp9CgouUm93X1NlY3Rpb25IZWFkZXIgPiBoMyB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKLlJvd19QYWdlSGVhZGVyID4gaHIgewogICAgYm9yZGVyLXRvcDogMC41cHggc29saWQgdmFyKC0tY29sQkdEYXJrKTsKICAgIHdpZHRoOiA4MCU7CiAgICBtYXJnaW4tbGVmdDogMjAlOwp9CgpmaWVsZHNldC5UYWJsZUxpa2UgZGV0YWlscyA+IGxhYmVsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IDMwJTsKICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgIHBhZGRpbmctdG9wOiA0cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNHB4OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLyogUGFnZSBIZWFkZXIgTmF2aWdhdGlvbiAqLwpkZXRhaWxzIHN1bW1hcnkgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCmRldGFpbHNbb3Blbl0gc3VtbWFyeSAuVG9nZ2xlIC5mYS1jYXJldC1yaWdodCwKZGV0YWlscyBzdW1tYXJ5IC5Ub2dnbGUgLmZhLWNhcmV0LWRvd24gewogICAgZGlzcGxheTogbm9uZTsKfQoKZGV0YWlsc1tvcGVuXSBzdW1tYXJ5IC5Ub2dnbGUgLmZhLWNhcmV0LWRvd24gewogICAgZGlzcGxheTogYmxvY2s7Cn0KCmRldGFpbHMgc3VtbWFyeSAuUm93X1BhZ2VIZWFkZXIgLlRvZ2dsZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBwYWRkaW5nLWJvdHRvbTogNHB4OyAvKiB0byBhbGlnbiB3aXRoIGgyICovCiAgICBsZWZ0OiAzMCU7CiAgICB0b3A6IDA7IAp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Overview.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogICogQHBhY2thZ2UgICAgIFNraW4gIkRlZmF1bHQiCiAgKiBAc2VjdGlvbiAgICAgSVRTTSBDb25maWdJdGVtCiAgKiBAc3Vic2VjdGlvbiAgT3ZlcnZpZXcKICAqLwoKLyoqCiAqIEBzdWJzZWN0aW9uICBDb25maWdJdGVtIExpc3QgVGFibGVzCiAqLwoKLkNvbmZpZ0l0ZW1MaXN0IHsKICAgIG92ZXJmbG93OiBhdXRvOwp9CgouQ29uZmlnSXRlbUxpc3QgdGFibGUgewogICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5Db25maWdJdGVtTGlzdCB0ZCB7CiAgICBsaW5lLWhlaWdodDogMThweDsKfQoKLkNvbmZpZ0l0ZW1MaXN0IHRhYmxlIHRkLkNoZWNrYm94IHsKICAgIG1hcmdpbi1sZWZ0OiAwcHg7Cn0KCi5Db25maWdJdGVtTGlzdCB0YWJsZSBpbnB1dC5DaGVja2JveCB7CiAgICBtYXJnaW4tcmlnaHQ6IDdweDsKfQoKLkNvbmZpZ0l0ZW1MaXN0IHRkLkZyb20gZGl2LAouQ29uZmlnSXRlbUxpc3QgdGQuU3ViamVjdCBkaXYsCi5Db25maWdJdGVtTGlzdCB0ZC5DcmVhdGVkIGEgewogICAgaGVpZ2h0OiAyMHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouQ29uZmlnSXRlbUxpc3QgLk5vIHsKICAgIHdpZHRoOiAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouQ29uZmlnSXRlbUxpc3QgLkF0dGFjaG1lbnRzIHsKICAgIHdpZHRoOiAyMHB4Owp9CgojT3ZlcnZpZXdCb2R5Lk92ZXJ2aWV3LkNvbmZpZ0l0ZW1MaXN0IHsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXI6IDA7CiAgICBncmlkLWFyZWE6IDEgLyAyIC8gMiAvIDM7Cn0KCiNPdmVydmlld0JvZHkuT3ZlcnZpZXcuQ29uZmlnSXRlbUxpc3QgdGFibGUgewogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjREREOwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0RERDsKfQoKI092ZXJ2aWV3Qm9keS5PdmVydmlldy5Db25maWdJdGVtTGlzdCB0YWJsZS5UYWJsZVNtYWxsLk5vQ2VsbHNwYWNpbmcgewogICAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KCiNPdmVydmlld0NvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgN2ZyOwogICAgbWFyZ2luOiAwcHggMTZweCA4cHggOHB4Owp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1jb2xCR01lZGl1bSk7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7Cn0KCiNPdmVydmlld0NvbnRhaW5lciA+ICNPdmVydmlld0NvbnRyb2wgPiB1bCA+IGxpIHsKICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICBwYWRkaW5nLXRvcDogNHB4OwogICAgcGFkZGluZy1ib3R0b206IDRweDsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sID4gdWwgPiBsaSA+IGEgewogICAgcGFkZGluZy10b3A6IDRweDsKICAgIHBhZGRpbmctYm90dG9tOiA0cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDhweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sID4gdWwgPiBsaS5BY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdNZWRpdW1EYXJrKTsKfQoKI092ZXJ2aWV3Q29udGFpbmVyID4gI092ZXJ2aWV3Q29udHJvbCA+IHVsID4gbGkuQWN0aXZlID4gYSB7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwp9CgouT3ZlcnZpZXdDb250cm9sIC5BY3Rpb25Sb3cgewogICAgbWFyZ2luLWxlZnQ6IDEyLjUlOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEwcHg7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTBweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDBweDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwcHg7Cn0KCmRpdi5GbGFnLlNtYWxsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiAxNnB4OwogICAgaGVpZ2h0OiAxNHB4OwogICAgbWFyZ2luOiAycHggOHB4IDAgMDsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCmRpdi5GbGFnLlNtYWxsID4gc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTJweDsKfQoKLkZsYWdnZWROYW1lIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLyogIEFsbCBkZXZpY2VzIHdpdGggYSBzbWFsbGVyIHJlc29sdXRpb24gdGhhbiB0aGUgY3VycmVudCBPVE9CTyBtaW5pbXVtIHNvbHV0aW9uICovCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMHB4KSBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7CgogICAgICAgICNPdmVydmlld0JvZHkuT3ZlcnZpZXcuQ29uZmlnSXRlbUxpc3QgewogICAgICAgIG92ZXJmbG93LXk6YXV0bzsKICAgIH0KfQo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.TreeView.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIENNREIgVHJlZVZpZXcKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLkNvbnRhaW5lckNhbnZhcyB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl3aWR0aDogMTAwJTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCW1hcmdpbi10b3A6IDIwcHg7CgltYXJnaW4tYm90dG9tOiAyMHB4OwoJei1pbmRleDogMDsKfQoKLlNwYWNlclRyZWUgewoJaGVpZ2h0OiAyMHB4OwkKfQoKLkJveCB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb2xvcjogYmxhY2s7Cgl3aWR0aDogODAlOwoJbWluLXdpZHRoOiAyMDBweDsKCW1heC13aWR0aDogbWF4LWNvbnRlbnQ7CgloZWlnaHQ6IG1heC1jb250ZW50OwoJbWluLWhlaWdodDogNzBweDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCS13ZWJraXQtdHJhbnNpdGlvbjogYWxsIGVhc2UtaW4tb3V0IC4yczsKCS1tb3otdHJhbnNpdGlvbjogYWxsIGVhc2UtaW4tb3V0IC4yczsKCXRyYW5zaXRpb246IGFsbCBlYXNlLWluLW91dCAuMnM7CgliYWNrZ3JvdW5kOiAjZmZmZmZmOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbjogMTBweDsKCWJvcmRlci1yYWRpdXM6IDhweDsKCWJveC1zaGFkb3c6IDJweCA0cHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7Cglib3JkZXI6IG5vbmU7Cgl6LWluZGV4OiAxMDAwOwp9CgouQ29uZmlnSXRlbUluZm8gewoJZGlzcGxheTogdGFibGU7CgloZWlnaHQ6IDEwMCU7Cgl3aWR0aDogMTAwJTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmCn0KCi5BZGRpdGlvbmFsSW5mbyB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CglwYWRkaW5nOiA2cHg7Cglmb250LXNpemU6IDExcHg7Cn0KCi5Db25maWdJdGVtVGl0bGUgewoJZGlzcGxheTogdGFibGUtcm93OwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWNvbG9yOiAjZmZmZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDA5OTsKCWhlaWdodDogbWF4LWNvbnRlbnQ7Cglmb250LXdlaWdodDogNjAwOwoJZm9udC1zaXplOiAxNHB4Owp9CgouQ29uZmlnSXRlbVRpdGxlIHAgewoJbWFyZ2luLXRvcDogM3B4OwoJbWFyZ2luLWJvdHRvbTogM3B4OwogICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7CQp9CgouVGFyZ2V0U2VjdGlvbiB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCmg0IHsKCW1hcmdpbi1ibG9jay1zdGFydDogMWVtOwp9CgouX2pzUGx1bWJfY29ubmVjdG9yIHsKCXotaW5kZXg6IDE7Cn0KCi5fanNQbHVtYl9vdmVybGF5IHsKCXotaW5kZXg6IDE7Cglmb250LXNpemU6IDEwcHg7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwoJZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi5DaGlsZENvbnRhaW5lciB7CgltYXJnaW4tdG9wOiAzNXB4OwoJZGlzcGxheTogYmxvY2s7Cn0KCi5Sb3dUaXRsZSB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cgl0b3A6IDlweDsKCWxlZnQ6IDEwcHg7Cglmb250LXNpemU6IDE0cHg7Cn0KCi5PcHRDb250YWluZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOyAKCXotaW5kZXg6IDEwMDA7Cgl0b3A6IC03cHg7CgloZWlnaHQ6IDE1cHg7CgltYXJnaW46IDAgYXV0bzsKfQoKLk9wdERlcHRoIHsKCW1hcmdpbi1yaWdodDogM3B4OwoJZm9udC1zaXplOiAxM3B4OwoJYm9yZGVyLXJhZGl1czogNnB4OwoJYm9yZGVyOiAxcHggc29saWQ7CglvdXRsaW5lOiBub25lOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJYm9yZGVyLWNvbG9yOiAjZGNkYmRiOwoJYm94LXNoYWRvdzogMHB4IDBweCAycHggcmdiYSg2Niw2Niw2NiwuODYpOwp9CgouQ29udGFpbmVyQmFyIHsKCWhlaWdodDogMzNweDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDEwMDA7Cn0KCi5UcmVlVmlld01lc3NhZ2VzIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbjogMCBhdXRvOwoJcGFkZGluZzogOHB4OwoJd2lkdGg6IDEwMCU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjRTk1RjUzOwoJY29sb3I6ICNmZmY7Cn0KCiNXaWRnZXRDb250YWluZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMTAwMDsJCn0KCiNTZWN0aW9uQ29udGFpbmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWhlaWdodDogMTAwJTsKCWRpc3BsYXk6IGJsb2NrOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXotaW5kZXg6IDA7Cn0KCiNBSkFYTG9hZGVyRGVwdGggewoJcG9zaXRpb246IHJlbGF0aXZlOwoJbWFyZ2luOiAwIGF1dG87CglkaXNwbGF5OiBibG9jazsKCXRvcDogMTBweDsKCWJvcmRlcjogbm9uZTsKfQoKI1pvb21Jbk91dExhYmVsIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWxlZnQ6IDE1cHg7Cglmb250LXNpemU6IDE0cHg7Cn0KCiNEZXB0aExhYmVsIHsKCWZvbnQtc2l6ZTogMTRweDsKfQoKI1pvb20gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJbGVmdDogMTVweDsKCWZvbnQtc2l6ZTogMTNweDsKCWJvcmRlci1yYWRpdXM6IDZweDsKCWJvcmRlcjogMXB4IHNvbGlkOwoJb3V0bGluZTogbm9uZTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWJvcmRlci1jb2xvcjogI2RjZGJkYjsKCWJveC1zaGFkb3c6IDBweCAwcHggMnB4IHJnYmEoNjYsNjYsNjYsLjg2KTsKfQoKLlpvb21MaW5rIHsKCWNvbG9yOiAjZmZmZmZmOwoJY3Vyc29yOiBwb2ludGVyOwoJZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi5ab29tTGluazpob3ZlciwgLlpvb21MaW5rOnZpc2l0ZWQgewoJY29sb3I6ICNmZmZmZmY7Cn0KCmlucHV0W3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLCAKaW5wdXRbdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24geyAKICAgIG9wYWNpdHk6IDE7Cn0KCn0gLyogZW5kIEBtZWRpYSAqLwo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIElUU00gQ29uZmlnSXRlbQogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgogICAgI1NlbGVjdGlvblJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgICB9CgogICAgI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICB9CgogICAgI1BhZ2VTZWxlY3Rpb24gewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIGRpc3BsYXk6IGlubGluZSBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7CiAgICAgICAgd2lkdGg6IDgwJTsKICAgIH0KCiAgICAjUGFnZVNlbGVjdGlvbiA+IGEgewogICAgICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgfQoKICAgICNQYWdlU2VsZWN0aW9uID4gaDIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgY29sb3I6ICMwMDAyM2M7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA3cHg7CiAgICB9CgogICAgI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIG1heC13aWR0aDogMjQwcHg7CiAgICAgICAgaGVpZ2h0OiAyMnB4OwogICAgfQogICAgCiAgICAjUGFnZVNlbGVjdGlvbiBidXR0b24uUGFnZVNlbGVjdGlvbkJ1dHRvbi5TZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDBmYzsKICAgIH0KCiAgICAub29vQ29udGVudEdyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgICBncmlkLXJvdy1nYXA6IDEycHg7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiAxMnB4OwogICAgICAgIGdyaWQtYXV0by1yb3dzOiBtaW5tYXgobWluLWNvbnRlbnQsIDF2aCk7CiAgICB9CgogICAgLm9vb0NvbnRlbnRDZWxsIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgfQoKICAgIC5vb29Db250ZW50Q2VsbC5Db25maWdJdGVtTGlua3NfQ2VsbCAuQ2VsbENvbnRlbnQgewogICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICB9CgogICAgLkZpZWxkRGlzcGxheVJvdyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgIH0KCiAgICAuRmllbGREaXNwbGF5Um93Om5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tdG9wOiAxMnB4OwogICAgfQoKICAgIC5GaWVsZERpc3BsYXlSb3cgPiBsYWJlbCwKICAgIC5GaWVsZERpc3BsYXlSb3cgPiBwIHsKICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICB9CgogICAgLkZpZWxkRGlzcGxheVJvdyBsYWJlbCwKICAgIC5GaWVsZERpc3BsYXlSb3cgcCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4OwogICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtOwogICAgfQoKICAgIC5vb29Db250ZW50R3JpZCBsYWJlbCB7CiAgICAgICAgY29sb3I6ICM5MjkyOTI7CiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKICAgIH0KCiAgICAuRHluYW1pY0ZpZWxkU2V0TGFiZWwgewogICAgICAgIHBhZGRpbmctdG9wOiA4cHg7CiAgICB9CgogICAgLlNldERpc3BsYXlWYWx1ZSB7CiAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICBtYXJnaW4tbGVmdDogMjRweDsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggNTAlIC0gMTJweCApIGNhbGMoIDUwJSArIDEycHggKTsKICAgIH0KCiAgICAuU2V0RGlzcGxheVZhbHVlID4gbGFiZWwsCiAgICAuU2V0RGlzcGxheVZhbHVlID4gcCB7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgfQoKICAgIC5TZXREaXNwbGF5VmFsdWUgZGl2LkNsZWFyIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC5EeW5hbWljRmllbGRSaWNoVGV4dExpbmsgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLkR5bmFtaWNGaWVsZFJpY2hUZXh0Q29udGVudC5IaWRkZW4gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQoKICAgIC5EeW5hbWljRmllbGRSaWNoVGV4dENvbnRlbnQgPiAuT3ZlcmxheUR5bmFtaWNGaWVsZFJpY2hUZXh0aUZyYW1lIHsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDY0cHgpOwogICAgfQoKfSAvKiBlbmQgQG1lZGlhICovCg==</File>
        <File Location="var/httpd/htdocs/skins/Agent/highcontrast/css/ITSM.Agent.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiSGlnaENvbnRyYXN0IgogKiBAc2VjdGlvbiAgICAgSVRTTSBDb25maWdJdGVtCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKICAgIAogICAgI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24uU2VsZWN0ZWQgewogICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7CiAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbEJHRGFyayk7CiAgICAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwogICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbEJHRGFyayk7CiAgICB9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemSearch.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBoZWlnaHQ6IDEyOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHggMjBweCAwcHggMHB4OwogICAgfQoKICAgIC5Sb3cgPiBkaXYuRmllbGQsCiAgICAuUm93ID4gZGl2LklucHV0RmllbGRfQ29udGFpbmVyLAogICAgLlJvdyA+IHNlbGVjdCwKICAgICNja2VfUmljaFRleHQsCiAgICAjUmljaFRleHQgewogICAgICAgIHdpZHRoOiBjYWxjKCA1MCUgKyAxNTBweCApICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoIDI1JSAtIDc2cHggKTsKICAgIH0KCiAgICAuUm93ID4gaW5wdXRbdHlwZT0idGV4dCJdIHsKICAgICAgICB3aWR0aDogY2FsYyggNTAlICsgMTE4cHggKSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKCAyNSUgLSA3NnB4ICk7CiAgICB9CgogICAgLlJvdyA+IGxhYmVsLAogICAgLlJpY2hUZXh0SG9sZGVyID4gbGFiZWwgewogICAgICAgIGxlZnQ6IGNhbGMoIC01MCUgLSAxMjZweCApOwogICAgfQoKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewoKICAgICNvb29IZWFkZXIgewogICAgICAgIGhlaWdodDogMTQ1cHg7CiAgICB9CgogICAgLlJvd19EeW5hbWljRmllbGQgewogICAgICAgIHdpZHRoOiA2NiU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE3JTsKICAgICAgICBncmlkLXJvdy1nYXA6IDE2cHg7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiA0MHB4OwogICAgfQoKICAgIC5Sb3cgPiBkaXYuRmllbGQsCiAgICAuUm93ID4gZGl2LklucHV0RmllbGRfQ29udGFpbmVyLAogICAgLlJvdyA+IHNlbGVjdCwKICAgICNja2VfUmljaFRleHQsCiAgICAjUmljaFRleHQgewogICAgICAgIHdpZHRoOiA2NiUgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMTclOwogICAgfQoKICAgIC5Sb3cgPiBpbnB1dFt0eXBlPSJ0ZXh0Il0gewogICAgICAgIHdpZHRoOiBjYWxjKCA2NiUgLSAzMnB4ICkgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMTclOwogICAgfQoKICAgIC5Sb3cgPiBsYWJlbCwKICAgIC5SaWNoVGV4dEhvbGRlciA+IGxhYmVsIHsKICAgICAgICBsZWZ0OiBjYWxjKCAtNjYlICsgMjRweCApOwogICAgfQoKfQoKLlJvdyA+IHNlbGVjdCwKLlJvdyA+IGlucHV0W3R5cGU9InRleHQiXSB7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4Owp9CgouUm93ID4gaW5wdXRbdHlwZT0idGV4dCJdLAppbnB1dC5EeW5hbWljRmllbGRUZXh0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjI1OwogICAgbGV0dGVyLXNwYWNpbmc6IDAuNHB4OwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLlJvdyA+IGlucHV0W3R5cGU9InRleHQiXSB7CiAgICBoZWlnaHQ6IDU2cHg7CiAgICBwYWRkaW5nOiAwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDMycHg7Cn0KCiNvb29IZWFkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKfQoKI29vb0N1c3RvbWVyTm90aWZpY2F0aW9ucyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwp9CgojQm90dG9tQWN0aW9uUm93IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi10b3A6IDgwcHg7Cn0KCi5vb29JVFNNQ29uZmlnSXRlbVNlYXJjaCA+IGRpdiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiBjYWxjKCAxMDAlIC0gODBweCApOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWFyZ2luLXRvcDogOHB4OwogICAgcGFkZGluZy10b3A6IDI0cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMjRweDsKICAgIHBhZGRpbmctbGVmdDogNDBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7CiAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7Cn0K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMTZweCAyNHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMC42cHggc29saWQgI2U1ZTVlYjsKICAgICAgICBoZWlnaHQ6IDEyMXB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CgogICAgI29vb01haW5Cb3ggewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjk7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7CiAgICAgICAgbWluLWhlaWdodDogY2FsYyggMTAwdmggLSAyNjVweCApOwogICAgfQoKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewogICAgCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nLXRvcDogMjJweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjJweDsKICAgICAgICBoZWlnaHQ6IDEwMXB4OwogICAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvcmRlci1ib3R0b206IDEuMnB4IHNvbGlkICNlNWU1ZWI7CiAgICAgICAgei1pbmRleDogMTIwMDsKCi13ZWJraXQtdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgIC1tb3otdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICAgLW8tdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICB9Cgp9Cgojb29vSGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoNDhweCwgMWZyKSBhdXRvOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKI0NJSW5mb0JhciB7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBtYXJnaW46IDI2cHggMCA1cHggMDsKfQoKI0NJSW5mb0JhciBwLAojQ0lJbmZvQmFyIGRpdiwKI0NJSW5mb0JhciBsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXNpemU6IDEycHg7Cn0KCiNDSUluZm9CYXIgbGFiZWwgewogICAgcGFkZGluZzogMnB4IDA7Cn0KCiNDSUluZm9CYXIgcCB7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7CiAgICBwYWRkaW5nOiAycHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKfQoKCi5ncmVlbmxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzRjZGZhOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sTm90aWZ5T0spOwp9CgoueWVsbG93bGVkIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZjY2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xOb3RpZnlXYXJuKTsKfQoKLnJlZGxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjliY2IyOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sTm90aWZ5RXJyKTsKfQoKI29vb0N1c3RvbWVyTm90aWZpY2F0aW9ucyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y5OwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7Cn0KCiNBY3Rpb25Sb3cgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG8gYXV0bzsKICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4Owp9CgojUGFnZVNlbGVjdGlvbiA+IHAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgojUGFnZVNlbGVjdGlvbiA+IGEgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgojUGFnZVNlbGVjdGlvbiBidXR0b24uUGFnZVNlbGVjdGlvbkJ1dHRvbiB7CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogMjQwcHg7CiAgICBwYWRkaW5nOiAwcHggMTZweDsKICAgIGhlaWdodDogMzJweDsKfQoKI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24uU2VsZWN0ZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDA5OTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbE1haW5Ib3Zlcik7Cn0KCiNBdHRhY2htZW50Q29udGFpbmVyIHsKICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgIHBhZGRpbmctdG9wOiA3cHg7Cn0KCiNBdHRhY2htZW50cyA+IGkgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAxcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7Cn0KCiNBdHRhY2htZW50Qm94IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDIwMDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIG1hcmdpbi10b3A6IDJweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgewogICAgd2lkdGg6IDIyMHB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uIHsKICAgIHdpZHRoOiAyMjBweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgPiAuRmllbGQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgaGVpZ2h0OiAzMnB4OwogICAgbWFyZ2luLXRvcDogLTFweDsKICAgIHdpZHRoOiAxMDAlOwp9CgojVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciAuSW5wdXRGaWVsZF9Db250YWluZXIgewogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyIC5JbnB1dEZpZWxkX0lucHV0Q29udGFpbmVyIHsKICAgIGhlaWdodDogMTAwJTsKICAgIHdpZHRoOiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgojVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciA+IGxhYmVsIHsKICAgIGxlZnQ6IGNhbGMoIC0xMDAlICsgMTZweCApOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgdG9wOiAxcHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBwYWRkaW5nLWxlZnQ6IDhweDsKICAgIHBhZGRpbmctcmlnaHQ6IDhweDsKICAgIHBhZGRpbmctYm90dG9tOiAwcHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgZm9udC1zdHJldGNoOiBub3JtYWw7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBsaW5lLWhlaWdodDogMS4yNTsKICAgIGxldHRlci1zcGFjaW5nOiAwLjRweDsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dExpZ2h0KTsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgPiAuRmllbGQ6aG92ZXIgfiBsYWJlbCwKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgPiAuRmllbGQub29vU2VsZWN0ZWQgfiBsYWJlbCwKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgPiBsYWJlbC5vb29Gb2N1cyB7CiAgICBmb250LXNpemU6IDEwcHg7CiAgICB0b3A6IC0xN3B4OwogICAgbGVmdDogY2FsYyggLTEwMCUgKyAxNnB4ICk7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzsKICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyID4gbGFiZWwub29vRm9jdXMgewogICAgY29sb3I6IHZhcigtLWNvbE1haW5MaWdodCk7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyIGlucHV0IHsKICAgIGJvcmRlcjogc29saWQgMXB4IHZhcigtLWNvbFRleHRMaWdodCk7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICB3aWR0aDogY2FsYyggMTAwJSAtIDMycHggKSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIHBhZGRpbmc6IDBweDsKICAgIHBhZGRpbmctbGVmdDogMzJweDsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgZm9udC1zaXplOiAxMDAlOwogICAgY29sb3I6IHZhcigtLWNvbFRleHRMaWdodCk7CiAgICB0cmFuc2l0aW9uOiBib3JkZXIgMC4ycyBlYXNlLCBjb2xvciAwLjJzIGVhc2U7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgLklucHV0RmllbGRfU2VsZWN0aW9uIHsKICAgIHRvcDogMXB4OwogICAgcGFkZGluZzogMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCmRpdi5JbnB1dEZpZWxkX0xpc3RDb250YWluZXIgewogICAgcmlnaHQ6IDRweDsKICAgIG1heC13aWR0aDogbWF4LWNvbnRlbnQ7CiAgICBtYXJnaW4tdG9wOiAtMjBweDsKfQoKZGl2LklucHV0RmllbGRfVHJlZUNvbnRhaW5lciB7CiAgICBtYXJnaW4tdG9wOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tYm90dG9tOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IG1heC1jb250ZW50ICFpbXBvcnRhbnQ7CiAgICBtYXgtaGVpZ2h0OiBtYXgtY29udGVudCAhaW1wb3J0YW50Owp9CgouanN0cmVlLWFuY2hvciB7CiAgICBtYXJnaW46IDhweCAwcHggOHB4IDI0cHggIWltcG9ydGFudDsKICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7CiAgICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDsKfQoKLmpzdHJlZS1ub2RlIHsKICAgIG1pbi1oZWlnaHQ6IDMycHg7Cn0KCi5qc3RyZWUtbm9kZSA+IC5qc3RyZWUtd2hvbGVyb3cgewogICAgaGVpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7Cn0KCi5vb29DbG9zZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5vb29Db250ZW50R3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgbWFyZ2luLXRvcDogMTZweDsKICAgIGdyaWQtcm93LWdhcDogMTZweDsKICAgIGdyaWQtY29sdW1uLWdhcDogMTZweDsKfQoKLm9vb0NvbnRlbnRDZWxsIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgcGFkZGluZzogMTZweCAyNHB4Owp9Cgoub29vQ29udGVudENlbGwgaDIgewogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQoKLkZpZWxkRGlzcGxheVJvdyB7CiAgICBkaXNwbGF5OiBncmlkOwp9CgouRmllbGREaXNwbGF5Um93Om5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgIG1hcmdpbi10b3A6IDEycHg7Cn0KCi5GaWVsZERpc3BsYXlSb3cgbGFiZWwsCi5GaWVsZERpc3BsYXlSb3cgcCB7CiAgICBtYXJnaW4tdG9wOiA0cHg7Cn0KCi5GaWVsZERpc3BsYXlSb3cgcCwKLkZpZWxkRGlzcGxheVJvdyBsYWJlbCB7CiAgICBwYWRkaW5nLWxlZnQ6IDhweDsKICAgIHBhZGRpbmctcmlnaHQ6IDhweDsKICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICBsaW5lLWhlaWdodDogMS41ZW07Cn0KCi5vb29Db250ZW50R3JpZCBsYWJlbCB7CiAgICBjb2xvcjogIzkyOTI5MjsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNGQUZBRkE7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5EeW5hbWljRmllbGRTZXRMYWJlbCB7CiAgICBwYWRkaW5nLXRvcDogMTZweDsKfQoKLlNldERpc3BsYXlWYWx1ZSB7CiAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICBtYXJnaW4tbGVmdDogMjRweDsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGNhbGMoIDUwJSAtIDEycHggKSBjYWxjKCA1MCUgKyAxMnB4ICk7Cn0KCi5TZXREaXNwbGF5VmFsdWUgZGl2LkNsZWFyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5EeW5hbWljRmllbGRSaWNoVGV4dExpbmsgewogICAgZGlzcGxheTogbm9uZTsKfQoKLkR5bmFtaWNGaWVsZFJpY2hUZXh0Q29udGVudC5IaWRkZW4gewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5PdmVybGF5RHluYW1pY0ZpZWxkUmljaFRleHRpRnJhbWUgewogICAgaGVpZ2h0OiBhdXRvOwogICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNjRweCk7CiAgICBwYWRkaW5nOiAwIDMycHg7Cn0K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemList.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAub29vQ29uZmlnSXRlbUxpc3QgewogICAgICAgIHdpZHRoOiBjYWxjKCAxMDAlIC0gNDhweCApOwogICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogMjRweDsKICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDsKCiAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDQsIDAsIDcxLCAwLjE2KTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgfQoKICAgIC5vb29Db25maWdJdGVtTGlzdFNjcm9sbENvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDhweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgIH0KfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewoKICAgIC5vb29Db25maWdJdGVtTGlzdCB7CiAgICAgICAgd2lkdGg6IGNhbGMoIDEwMCUgLSA4MHB4ICk7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDU2cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogNTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjRweDsKCiAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDQsIDAsIDcxLCAwLjE2KTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgfQoKICAgIC5vb29Db25maWdJdGVtTGlzdFNjcm9sbENvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZy10b3A6IDMycHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICB9Cn0KCi5vb29Db25maWdJdGVtTGlzdCBoMywKLm9vb0NvbmZpZ0l0ZW1MaXN0IHAgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKfQoKLm9vb0lUU01Db25maWdJdGVtTGlzdEl0ZW06Zmlyc3QtY2hpbGQgewogICAgbWFyZ2luLXRvcDogOHB4Owp9Cg==</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemOverview.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMTZweCAyNHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMC42cHggc29saWQgI2U1ZTVlYjsKICAgICAgICBoZWlnaHQ6IDEyMXB4OwoKICAgICAgICAvKiB0ZXh0IC8gdGlja2V0IHNlYXJjaCAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggMTAwJSAtIDMycHgpOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogNjRweCA1N3B4IDBweDsKICAgICAgICBhbGlnbi1pdGVtczogZW5kOwoKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKCSNvb29IZWFkZXJCdXR0b24gc3BhbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAjb29vSGVhZGVyQnV0dG9uID4gYnV0dG9uIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYm90dG9tOiAzMnB4OwogICAgICAgIHJpZ2h0OiAxNnB4OwogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIHotaW5kZXg6IDYwMDsKICAgICAgICBib3gtc2hhZG93OiAwIDEycHggMTZweCAwIHJnYmEoMCwgMjcsIDI1NSwgMC4yNCk7CiAgICAgICAgYm94LXNoYWRvdzogMCAxMnB4IDE2cHggMCB2YXIoLS1jb2xTaGFkb3dNYWluKTsKCX0KCgkjb29vSGVhZGVyIGkgewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIAlwYWRkaW5nLWJvdHRvbTogMnB4OwoJfQoKICAgICNvb29TZWFyY2hCb3ggaS5vb29mby1zZWFyY2ggewogICAgICAgIHRvcDogMTUycHg7CiAgICAgICAgbGVmdDogMjZweDsKICAgIH0KCiAgICAjb29vTWFpbkJveCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmOTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xCR0xpZ2h0KTsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKCAxMDB2aCAtIDI2NXB4ICk7CiAgICB9CgogICAgI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNnB4OwogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAvKiBzZWFyY2g/IC8gYWxsIC8gb3BlbiAvIGNsb3NlZCAvLyBwYWdlPyAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvIDFmcjsKICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gYXV0bzsKICAgICAgICBncmlkLWNvbHVtbi1nYXA6IDI0cHg7CiAgICAgICAgZ3JpZC1yb3ctZ2FwOiA4cHg7CiAgICB9CgogICAgI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciA+IGRpdiB7CiAgICAgICAgZ3JpZC1yb3ctc3RhcnQ6IDI7CiAgICAgICAgZ3JpZC1yb3ctZW5kOiAzOwogICAgICAgIGdyaWQtY29sdW1uLXN0YXJ0OiAzOwogICAgICAgIGdyaWQtY29sdW1uLWVuZDogNDsKICAgIH0KCn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIAogICAgI29vb0hlYWRlciB7CiAgICAgICAgaGVpZ2h0OiAxNDVweDsKICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgIHRvcDogMDsKICAgICAgICBib3JkZXItYm90dG9tOiAxLjJweCBzb2xpZCAjZTVlNWViOwoKICAgICAgICAvKiB0ZXh0IC8gdGlja2V0IHNlYXJjaCAvIG5ldyB0aWNrZXQgYnV0dG9uICovCiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0byBhdXRvOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMTAwJTsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgfQoKICAgICNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMnB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMzJweDsKICAgICAgICBtYXJnaW4tdG9wOiAyNHB4OwogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgLyogc2VhcmNoPyAvIGFsbCAvIG9wZW4gLyBjbG9zZWQgLyBwYWdlPyAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvIGF1dG8gYXV0byAxZnI7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiA0MHB4OwogICAgfQoKICAgICNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiBkaXYgewogICAgICAgIGdyaWQtY29sdW1uLXN0YXJ0OiA1OwogICAgICAgIGdyaWQtY29sdW1uLWVuZDogNjsKICAgIH0KCgkjb29vSGVhZGVyQnV0dG9uIGkgewogICAgCXBhZGRpbmctcmlnaHQ6IDhweDsKCX0KCgkjb29vSGVhZGVyIGkgewogICAgCXBhZGRpbmctYm90dG9tOiAzcHg7Cgl9Cgp9Cgojb29vSGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CgogICAgZGlzcGxheTogZ3JpZDsKfQoKI29vb0hlYWRlciBpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiAub29vbCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9Cgojb29vSVRTTUNvbmZpZ0l0ZW1MaXN0SGVhZGVyID4gLm9vb3IgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiBkaXYgPiBwIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmctcmlnaHQ6IDRweDsKfQoKI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciA+IGRpdiA+IGEgewogICAgcGFkZGluZy1sZWZ0OiA0cHg7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgLlNlbGVjdGVkIHsKICAgIGNvbG9yOiAjMDAwMjNjOwogICAgY29sb3I6IHZhcigtLWNvbFRleHREYXJrKTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUZpbHRlckRlbGV0ZSA+IGEgewogICAgZmxvYXQ6IHJpZ2h0Owp9Cgojb29vSVRTTUNvbmZpZ0l0ZW1GaWx0ZXJEZWxldGUgPiBhID4gaS5vb29mbyB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IDJweDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7Cn0KCiNvb29DdXN0b21lck5vdGlmaWNhdGlvbnMgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmOTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbEJHTGlnaHQpOwp9CgovKiBJRSAqLwpAbWVkaWEgYWxsIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpLCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkgewoKICAgICNvb29IZWFkZXIgewogICAgICAgIGRpc3BsYXk6IC1tcy1ncmlkOwogICAgICAgIC8qIHRleHQgLyB0aWNrZXQgc2VhcmNoICovCiAgICAgICAgLW1zLWdyaWQtY29sdW1uczogMWZyIGF1dG8gYXV0bzsKICAgICAgICAtbXMtZ3JpZC1yb3dzOiAxMDAlOwogICAgfQoKICAgICNvb29IZWFkZXIgPiBoMSB7CiAgICAgICAgLW1zLWdyaWQtY29sdW1uOiAxOwogICAgICAgIC1tcy1ncmlkLXJvdy1hbGlnbjogY2VudGVyOwogICAgfQoKICAgICNvb29TZWFyY2hCb3ggewogICAgICAgIC1tcy1ncmlkLWNvbHVtbjogMjsKICAgICAgICAtbXMtZ3JpZC1yb3ctYWxpZ246IGNlbnRlcjsKICAgIH0KCiAgICAjb29vSGVhZGVyID4gYSB7CiAgICAgICAgLW1zLWdyaWQtY29sdW1uOiAzOwogICAgICAgIC1tcy1ncmlkLXJvdy1hbGlnbjogY2VudGVyOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQoKICAgIEBzdXBwb3J0cyAoZGlzcGxheTogZ3JpZCkgewogICAgICAgICNvb29IZWFkZXIgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIH0KICAgIH0KCn0K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Public.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXI6aGFzKCsub29vSVRTTUNvbmZpZ0l0ZW1TZWFyY2gpIHsKICAgIHBhZGRpbmctYm90dG9tOiA2cHg7Cn0KCi5CYWNrbGluayA+IHNwYW4gewogICAgbWFyZ2luLWxlZnQ6NHB4Owp9CgouQmFja2xpbmtCb3ggLkJhY2tsaW5rID4gLm9vb2ZvLWFycm93X2wgewogICAgZm9udC1zaXplOjEzcHg7Cn0KCi5CYWNrbGluayA+IC5vb29mby1hcnJvd19sIHsKICAgIGZvbnQtc2l6ZToxMnB4Owp9CgouQmFja2xpbmtCb3ggewogICAgcGFkZGluZy10b3A6IDE4cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTJweDsKICAgIGZvbnQtc2l6ZTogMTZweDsKfQoKCiAK</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Table.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIFRhYmxlcwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gIEdlbmVyYWwgc3R1ZmYKICovCgovKgogKiBGRjMuNiBoYXMgYSBwcm9ibGVtIHdpdGggc2V0dGluZyB0aGUgcG9zaXRpb246cmVsYXRpdmUgb25seSBvbiA6aG92ZXIgc3RhdGUuCiAqIEFzIGEgd29ya2Fyb3VuZCBpdCBpcyBzZXQgYWx3YXlzIGFuZCBhIHNwZWNpYWwgei1pbmRleCBvbiBob3Zlci4KICovCi5UYWJsZVNtYWxsIHRib2R5IHRyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLlRhYmxlU21hbGwgdGJvZHkgdHI6aG92ZXIgewogICAgei1pbmRleDogMTA7Cn0KCi5UYWJsZVNtYWxsIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9CgovKioKICogQHN1YnNlY3Rpb24gIEdlbmVyaWMgdGFibGUgZWxlbWVudHMKICovCi5UYWJsZVNtYWxsIHRkLAouVGFibGVTbWFsbCB0aCB7CiAgICBsaW5lLWhlaWdodDogMTVweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICB3b3JkLWJyZWFrOiBrZWVwLWFsbDsKfQoKLlRhYmxlU21hbGwgdHI6aG92ZXIgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCnRhYmxlIHRyLk1hc3RlckFjdGlvbiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0RGVzY2VuZGluZyA+IGE6YWZ0ZXIgewogICAgY29udGVudDogIlwyNUJDIjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMnB4OwogICAgdG9wOiAzcHg7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0QXNjZW5kaW5nID4gYTphZnRlciB7CiAgICBjb250ZW50OiAiXDI1QjIiOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAycHg7CiAgICB0b3A6IDNweDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uICBRdWV1ZU92ZXJ2aWV3VG90YWxzIERhdGFUYWJsZQogKi8KCi5Sb3cgdGQuUXVldWVPdmVydmlld1RvdGFscywKLlJvdyBhLlF1ZXVlT3ZlcnZpZXdUb3RhbHMgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgT3ZlcnZpZXcgU21hbGwgVmlldyBUYWJsZQogKi8KLlRhYmxlU21hbGwgewogICAgd2lkdGg6IDEwMCU7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBjb2xvcjogIzAwMDIzYzsKfQoKLlRhYmxlU21hbGwgLkNoZWNrYm94IHsKICAgIG1hcmdpbi1sZWZ0OiA3cHg7Cn0KCi5TdGF0aWNDb2x1bW4gewogICAgcG9zaXRpb246IHN0aWNreTsKICAgIGxlZnQ6IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKdGguQ2hlY2tib3gsCnRkLkNoZWNrYm94IHsKICAgIHdpZHRoOiAzMHB4Owp9Cgp0aC5GbGFncyB7CiAgICB3aWR0aDogMzRweDsKfQoKdGQuRmxhZ3MgewogICAgd2lkdGg6IDI5cHg7Cn0KCnRoLkRpcmVjdGlvbiwKdGQuRGlyZWN0aW9uIHsKICAgIHdpZHRoOiAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Cgp0aC5BdHRhY2htZW50LAp0ZC5BdHRhY2htZW50IHsKICAgIHdpZHRoOiA0MHB4OwogICAgcGFkZGluZy1sZWZ0OiA1cHggIWltcG9ydGFudDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGggewogICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGggYSwKLlRhYmxlU21hbGwgdGhlYWQgdGggc3BhbiB7CiAgICBwYWRkaW5nLXRvcDogMnB4OwogICAgcGFkZGluZy1ib3R0b206IDJweDsKfQoKLlJUTCAuVGFibGVTbWFsbCB0aGVhZCB0aCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IGJvdHRvbTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgYSwKLlRhYmxlU21hbGwgdGhlYWQgc3BhbiB7CiAgICBtYXJnaW46IDAgMnB4IDFweCAxcHg7CiAgICBwYWRkaW5nOiAwIDEwcHg7CiAgICBjb2xvcjogIzRBNEE0QTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxNXB4OwogICAgaGVpZ2h0OiAxNXB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLlJUTCAuVGFibGVTbWFsbCB0aGVhZCBhLAouUlRMIC5UYWJsZVNtYWxsIHRoZWFkIHNwYW4gewogICAgbWFyZ2luOiAwIDFweCAxcHggMnB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCBzcGFuIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9Cgp0aGVhZCAuU29ydEFzY2VuZGluZyBhLAp0aGVhZCAuaGVhZGVyU29ydFVwIGEsCnRoZWFkIC5Tb3J0RGVzY2VuZGluZyBhLAp0aGVhZCAuaGVhZGVyU29ydERvd24gYSB7CiAgICBjb2xvcjogIzAwMDIzYzsKfQoKLlRhYmxlU21hbGwgdGhlYWQgYSBzcGFuIHsKICAgIGhlaWdodDogMTVweDsKICAgIHdpZHRoOiAxNnB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIGEgc3Bhbi5GbGFnIHsKICAgIGhlaWdodDogOXB4OwogICAgd2lkdGg6IDE2cHg7CiAgICBtYXJnaW4tdG9wOiA2cHg7Cn0KCi5UYWJsZVNtYWxsIHRkIHsKICAgIHBhZGRpbmc6IDE2cHggMTBweCAwcHggMHB4Owp9CgouVGFibGVTbWFsbCB0ZC5Ob25UZXh0Q29udGVudCB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwp9CgouVGFibGVTbWFsbCB0Ym9keSB0ci5BY3RpdmUgdGQgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRkIGEgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRyOmhvdmVyIHRkIGEsCi5UYWJsZVNtYWxsIHRyLkFjdGl2ZSB0ZCBhIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9CgouVGFibGVTbWFsbCB0ZCBhLkR5bmFtaWNGaWVsZExpbmsgewogICAgY29sb3I6ICNGRjc3MjI7Cn0KCi5UYWJsZVNtYWxsIHRyOmhvdmVyIHRkIGEuRHluYW1pY0ZpZWxkTGluaywKLlRhYmxlU21hbGwgdHIuQWN0aXZlIHRkIGEuRHluYW1pY0ZpZWxkTGluayB7CiAgICBjb2xvcjogI0ZGRkZGRjsKfQoKLlRhYmxlU21hbGwgdGJvZHkgLkZsYWdzIHsKICAgIGxpbmUtaGVpZ2h0OiAxMXB4OwogICAgcGFkZGluZy10b3A6IDJweDsKICAgIHBhZGRpbmctbGVmdDogNXB4Owp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBzcGFuLkRpcmVjdGlvbiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIHdpZHRoOiAzMHB4Owp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBzcGFuLkRpcmVjdGlvbiBpIHsKICAgIGNvbG9yOiAjNTU1Owp9CgovKiBUT0RPIGNoYW5nZSBpY29uIGNsYXNzZXMgKi8KLlRhYmxlU21hbGwgdGJvZHkgdGQgc3Bhbi5EaXJlY3Rpb24uSW5jb21pbmcgLmZhLWxvbmctYXJyb3ctbGVmdCwKLlRhYmxlU21hbGwgdGJvZHkgdGQgc3Bhbi5EaXJlY3Rpb24uT3V0Z29pbmcgLmZhLWxvbmctYXJyb3ctcmlnaHQgewogICAgY29sb3I6ICMwMDAyM2M7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5UYWJsZVNtYWxsIHRib2R5IHRkLkF0dGFjaG1lbnQgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBhLkF0dGFjaG1lbnQgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlRhYmxlU21hbGwgdGJvZHkgdGQgYS5BdHRhY2htZW50IGkgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRkIGgyIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgVGFibGUgQ29udGV4dCBTZXR0aW5ncwogKi8KLlRhYmxlQ29udGV4dFNldHRpbmdzIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiAyOHB4Owp9CgouVGFibGVDb250ZXh0U2V0dGluZ3MgYSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxOHB4OwogICAgaGVpZ2h0OiAxOXB4OwogICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb250ZXh0c2V0dGluZ3MucG5nKSBuby1yZXBlYXQgNXB4IDRweDsKICAgIHRleHQtaW5kZW50OiAtOTk5OXB4Owp9CgovKioKICogQHN1YnNlY3Rpb24gIEhhbmRsZSBmb3IgcmVzaXppbmcgdGFibGVzCiAqLwouSGFuZGxlIHsKICAgIHdpZHRoOiAxMDAlOwp9CgouSGFuZGxlIGEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW46IGF1dG87CiAgICBoZWlnaHQ6IDE0cHg7CiAgICB3aWR0aDogNzlweDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCguLi9pbWcvaGFuZGxlLnBuZykgbm8tcmVwZWF0OwogICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgICBjdXJzb3I6IG5zLXJlc2l6ZTsKfQoKLkhhbmRsZS51aS1yZXNpemFibGUtcyB7CiAgICBjdXJzb3I6YXV0bzsKICAgIGhlaWdodDphdXRvICFpbXBvcnRhbnQ7CiAgICBsZWZ0OmF1dG87Cn0KCi5IYW5kbGUudWktcmVzaXphYmxlLWhhbmRsZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIHotaW5kZXg6IDE5Owp9CgovKioKICogQHN1YnNlY3Rpb24gIFRhYmxlIGhlYWRlcnMtZmlsdGVycwogKi8KIC5UYWJsZVNtYWxsIHRoZWFkIHNwYW4uR3JheSB7CiAgICBjb2xvcjogIzQ0NDsKfQoKLkNvbHVtbkZpbHRlciArIC5BSkFYTG9hZGVyIHsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbjogM3B4IDBweCAwcHggMnB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogOTk7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCnNlbGVjdC5Db2x1bW5GaWx0ZXIgewogICAgd2lkdGg6IDEwMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCAuU29ydEFzY2VuZGluZ0xhcmdlIGEsCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0RGVzY2VuZGluZ0xhcmdlIGEgewogICAgY29sb3I6ICMwMDAyM2M7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgLlNvcnREZXNjZW5kaW5nTGFyZ2UgPiBhOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICJcMjVCQyI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICB0ZXh0LXNoYWRvdzogMXB4IDFweCAwcHggI2ZmZjsKICAgIHotaW5kZXg6IDE7Cn0KCnRoZWFkIC5oZWFkZXJTb3J0VXAgPiBhOmJlZm9yZSwKdGhlYWQgLnRhYmxlc29ydGVyLWhlYWRlckRlc2MgPiBkaXYudGFibGVzb3J0ZXItaGVhZGVyLWlubmVyID4gYTpiZWZvcmUgewogICAgY29udGVudDogIlwyNUJDIjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1yaWdodDogMnB4Owp9Cgp0aGVhZCAuaGVhZGVyU29ydERvd24gPiBhOmJlZm9yZSwKdGhlYWQgLnRhYmxlc29ydGVyLWhlYWRlckFzYyA+IGRpdi50YWJsZXNvcnRlci1oZWFkZXItaW5uZXIgPiBhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDI1QjIiOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAycHg7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0QXNjZW5kaW5nTGFyZ2UgPiBhOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICJcMjVCMiI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICB0ZXh0LXNoYWRvdzogMXB4IDFweCAwcHggI2ZmZjsKICAgIHotaW5kZXg6IDE7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIGEsCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIHNwYW4uR3JheSB7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBsaW5lLWhlaWdodDogMTZweDsKICAgIHBhZGRpbmctbGVmdDogMHB4OwogICAgbWFyZ2luLWxlZnQ6IDBweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxN3B4OwogICAgaGVpZ2h0OiAxN3B4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgb3BhY2l0eTogMC41OwogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAwcHggLThweCA0cHggMHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMjsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlciBpIHsKICAgIGNvbG9yOiAjNzc3Nzc3OwogICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXIgewogICAgbWFyZ2luOiAwcHggLThweCA0cHggMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlci5GaWx0ZXJBY3RpdmUgLkNvbHVtblNldHRpbmdzVHJpZ2dlciwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlcjpob3ZlciwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlci5BY3RpdmUgewogICAgb3BhY2l0eTogMS4wOwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIuRmlsdGVyQWN0aXZlIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXIgaSwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlci5BY3RpdmUgaSB7CgogICAgY29sb3I6ICMzMzMzMzM7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXI6YWZ0ZXIgewogICAgY29udGVudDogIiI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI0JCQkJCQjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDRweCAwIHJnYmEoNCwgMCwgNzEsIDAuMTYpOwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgdmFyKC0tY29sU2hhZG93RGFyayk7CiAgICBkaXNwbGF5OiBub25lOwogICAgcGFkZGluZzogNHB4IDhweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwcHg7CiAgICB0b3A6IDJweDsKICAgIHdpZHRoOiAxODBweDsKICAgIHotaW5kZXg6IDEwMDsKfQoKLk1haW5Cb3guRGFzaGJvYXJkIC5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCB7CiAgICB0b3A6IC0xMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggc2VsZWN0IHsKICAgIG1hcmdpbi10b3A6IDBweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZzogNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSBhIHsKICAgIGJhY2tncm91bmQ6ICNBQUFBQUE7CiAgICBib3JkZXItcmFkaXVzOiAxNHB4OwogICAgY29sb3I6ICNGRkZGRkY7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGhlaWdodDogMTVweDsKICAgIGxpbmUtaGVpZ2h0OiAxM3B4OwogICAgbGVmdDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB0b3A6IC0xcHg7CiAgICB3aWR0aDogMTBweDsKICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDVweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IGEuRGVsZXRlRmlsdGVyIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxMnB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggYS5EZWxldGVGaWx0ZXIuSGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCBzcGFuLlNlbGVjdGVkVmFsdWUgYTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjODg4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggaW5wdXRbdHlwZT0idGV4dCJdIHsKICAgIHdpZHRoOiAxMDBweDsKfQoKCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIHsKICAgIHBhZGRpbmc6IDBweCAyMHB4IDBweCAxcHg7Cn0KCi5UYWJsZVNtYWxsIC5Db2x1bW5GaWx0ZXIgewogICAgZm9udC1zaXplOiAxMnB4OwogICAgZmxvYXQ6IGxlZnQ7Cn0KCi8qIERlbGV0ZSBmaWx0ZXJzICovCi5Db250ZXh0U2V0dGluZ3MuUmVtb3ZlRmlsdGVycyBhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouQ29udGV4dFNldHRpbmdzLlJlbW92ZUZpbHRlcnMgYSBpIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgovKioKICogQHN1YnNlY3Rpb24gIFBhY2thZ2UgbWFuYWdlcgogKi8KCnAuSW50cm9JbnN0YWxsIHsKICAgIHdpZHRoOiA3MCU7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tYm90dG9tOiA3cHg7Cn0KCi5PVE9CT1ZlcmlmeUxvZ29CaWcgewogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIHdpZHRoOiAyMDBweDsKICAgIGhlaWdodDogNDVweDsKfQoKLk9UT0JPVmVyaWZ5TG9nbyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbjogM3B4IDBweCAwcHggM3B4OwogICAgd2lkdGg6IDc2cHg7CiAgICBoZWlnaHQ6IDE2cHg7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgSWNvbnMgaW4gdGFibGVzCiAqLwoKdGQgaSwKdGQgYSBpIHsKICAgIGNvbG9yOiAjOTk5OwogICAgbWFyZ2luLXJpZ2h0OiAzcHg7Cn0KCnRyOmhvdmVyIHRkIGksCnRyOmhvdmVyIHRkIGEgaSwKdGQgYTpob3ZlciBpIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/img/devices_black_24dp.svg" Permission="660" Encode="Base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTQgN2MwLS41NS40NS0xIDEtMWgxNmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUg0Yy0xLjEgMC0yIC45LTIgMnYxMWgtLjVjLS44MyAwLTEuNS42Ny0xLjUgMS41Uy42NyAyMCAxLjUgMjBIMTR2LTNINFY3em0xOSAxaC02Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTR2LTdoNHY3eiIvPjwvc3ZnPg==</File>
        <File Location="var/itsm/configitemclasses/IT-Servicemanagement-11_0_3.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IEFwcGxpYW5jZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsCiAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4KICAgIFwgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIEFwcGxpYW5jZVxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbgogICAgXCBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZToKICAgIElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BcHBsaWFuY2UtQXBwbGlhbmNlVHlwZToKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQ29udGFpbmVyIE1hbmFnZW1lbnQ6IENvbnRhaW5lciBNYW5hZ2VtZW50CiAgICAgICAgICBETlMtU2VydmVyOiBETlMtU2VydmVyCiAgICAgICAgICBGaXJld2FsbDogRmlyZXdhbGwKICAgICAgICAgIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKTogSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pCiAgICAgICAgICBPVE9CTzogT1RPQk8KICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGhvbmUgLyBWb0lQOiBQaG9uZSAvIFZvSVAKICAgICAgICAgIFZQTjogVlBOCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQXBwbGlhbmNlIFR5cGUKICAgICAgTmFtZTogSVRTTUFwcGxpYW5jZS1BcHBsaWFuY2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBMb2NhdGlvbgogICAgTmFtZTogQnVpbGRpbmcKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBTdWJzaWRpYXJ5XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlCiAgICBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQKICAgIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiCiAgICBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbgogICAgXCBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvblxyXG4gICAgXHJcblNlY3Rpb25zOlxyXG4gIFN1YnNpZGlhcnk6XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gSGVhZGVyOiBTdWJzaWRpYXJ5XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeVxyXG4KICAgIFwgQWRkcmVzczpcclxuICAgIFR5cGU6IFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5XHJcbgogICAgXCAgIFNlY3Rpb25OYW1lOiBBZGRyZXNzXHJcbiAgICBGaWVsZExpc3RQcmU6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeSIKICBEeW5hbWljRmllbGRzOgogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5OgogICAgICBDSUNsYXNzOiBCdWlsZGluZwogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAwCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU3Vic2lkaWFyeQogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1N1YnNpZGlhcnkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBDb250cmFjdAogICAgTmFtZTogQ2VydGlmaWNhdGUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bVNwYW46CiAgICAyXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIENlcnRpZmljYXRlXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTUNlcnRpZmljYXRlLUNyZWF0aW9uRGF0ZToKICAgICAgQ0lDbGFzczogQ2VydGlmaWNhdGUKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6IDAKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzAnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogQ3JlYXRpb24gRGF0ZQogICAgICBOYW1lOiBJVFNNQ2VydGlmaWNhdGUtQ3JlYXRpb25EYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQ2VydGlmaWNhdGUtRXhwaXJ5RGF0ZToKICAgICAgQ0lDbGFzczogQ2VydGlmaWNhdGUKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6IDAKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRXhwaXJ5IERhdGUKICAgICAgTmFtZTogSVRTTUNlcnRpZmljYXRlLUV4cGlyeURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01DZXJ0aWZpY2F0ZS1UeXBlOgogICAgICBDSUNsYXNzOiBDZXJ0aWZpY2F0ZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIENsaWVudCBDZXJ0aWZpY2F0ZXM6IENsaWVudCBDZXJ0aWZpY2F0ZXMKICAgICAgICAgIENvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXM6IENvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMKICAgICAgICAgIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzOiBEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcwogICAgICAgICAgRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKTogRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBTU0wvVExTIENlcnRpZmljYXRlczogU1NML1RMUyBDZXJ0aWZpY2F0ZXMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IElUU01DZXJ0aWZpY2F0ZS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBDbGllbnQKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbAogICAgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbiAgLSBOYW1lOiBIYXJkd2FyZVxyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlCiAgICBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuCiAgICBcIC0gTmFtZTogU29mdHdhcmVcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgT3BlcmF0aW5nIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDbGllbnQgU29mdHdhcmU6OkNsaWVudCBTb2Z0d2FyZVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOgogICAgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuICAtIE5hbWU6IERldGFpbHNcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6CiAgICAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrCiAgICBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENsaWVudAogICAgU29mdHdhcmU6OkNsaWVudCBTb2Z0d2FyZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjo6U3RvcmFnZSBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDVcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiA2XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOgogICAgMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyCiAgICBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlCiAgICBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZQogICAgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcwogICAgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTQogICAgR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4KICAgIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbCBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIENsaWVudFxyXG4gIElUU00gTW9kZWw6XHJcbgogICAgXCAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQKICAgIGluOlxyXG4gICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBPcGVyYXRpbmcgU3lzdGVtOlxyXG4gICAgTmFtZTogSVRTTQogICAgT3BlcmF0aW5nIFN5c3RlbVxyXG4gIElUU00gQ2xpZW50IFNvZnR3YXJlOlxyXG4gICAgTmFtZTogSVRTTSBDbGllbnQgU29mdHdhcmUKICAgIFwgXHJcbiAgSVRTTSBDUFU6XHJcbiAgICBOYW1lOiBJVFNNIENQVVxyXG4gIElUU00gTWVtb3J5OlxyXG4gICAgTmFtZTogSVRTTSBNZW1vcnlcclxuCiAgICBcIElUU00gR3JhcGhpY3MgQ2FyZDpcclxuICAgIE5hbWU6IElUU00gR3JhcGhpY3MgQ2FyZFxyXG4gIElUU00gU3RvcmFnZTpcclxuICAgIE5hbWU6CiAgICBJVFNNIFN0b3JhZ2VcclxuICBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOlxyXG4gICAgTmFtZTogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbgogICAgXCAgIFxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZTogSVRTTSBOZXR3b3JrIEluZm9cclxuICBJVFNNIExpY2Vuc2U6XHJcbgogICAgXCAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ1BVLUNQVUNsYXNzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEZXNrdG9wOiBEZXNrdG9wCiAgICAgICAgICBMYXB0b3A6IExhcHRvcAogICAgICAgICAgTW9iaWxlRW1iZWRkZWQ6IE1vYmlsZS9FbWJlZGRlZAogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBTZXJ2ZXI6IFNlcnZlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENQVSBDbGFzcwogICAgICBOYW1lOiBDUFUtQ1BVQ2xhc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1DbG9ja3NwZWVkOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAxNkdIejogMS42IEdIegogICAgICAgICAgMTdHSHo6IDEuNyBHSHoKICAgICAgICAgIDE4R0h6OiAxLjggR0h6CiAgICAgICAgICAxOUdIejogMS45IEdIegogICAgICAgICAgMjBHSHo6IDIuMCBHSHoKICAgICAgICAgIDIxR0h6OiAyLjEgR0h6CiAgICAgICAgICAyMkdIejogMi4yIEdIegogICAgICAgICAgMjNHSHo6IDIuMyBHSHoKICAgICAgICAgIDI0R0h6OiAyLjQgR0h6CiAgICAgICAgICAyNUdIejogMi41IEdIegogICAgICAgICAgMjZHSHo6IDIuNiBHSHoKICAgICAgICAgIDI3R0h6OiAyLjcgR0h6CiAgICAgICAgICAyOEdIejogMi44IEdIegogICAgICAgICAgMjlHSHo6IDIuOSBHSHoKICAgICAgICAgIDMwR0h6OiAzLjAgR0h6CiAgICAgICAgICAzMUdIejogMy4xIEdIegogICAgICAgICAgMzJHSHo6IDMuMiBHSHoKICAgICAgICAgIDMzR0h6OiAzLjMgR0h6CiAgICAgICAgICAzNEdIejogMy40IEdIegogICAgICAgICAgMzVHSHo6IDMuNSBHSHoKICAgICAgICAgIDM2R0h6OiAzLjYgR0h6CiAgICAgICAgICAzN0dIejogMy43IEdIegogICAgICAgICAgMzhHSHo6IDMuOCBHSHoKICAgICAgICAgIDM5R0h6OiAzLjkgR0h6CiAgICAgICAgICA0MEdIejogNC4wIEdIegogICAgICAgICAgNDFHSHo6IDQuMSBHSHoKICAgICAgICAgIDQyR0h6OiA0LjIgR0h6CiAgICAgICAgICA0M0dIejogNC4zIEdIegogICAgICAgICAgNDRHSHo6IDQuNCBHSHoKICAgICAgICAgIDQ1R0h6OiA0LjUgR0h6CiAgICAgICAgICA0NkdIejogNC42IEdIegogICAgICAgICAgNDdHSHo6IDQuNyBHSHoKICAgICAgICAgIDQ4R0h6OiA0LjggR0h6CiAgICAgICAgICA0OUdIejogNC45IEdIegogICAgICAgICAgNTBHSHo6IDUuMCBHSHoKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENsb2Nrc3BlZWQKICAgICAgTmFtZTogQ1BVLUNsb2Nrc3BlZWQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1OdW1iZXJPZkNQVToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgQ1BVcwogICAgICBOYW1lOiBDUFUtTnVtYmVyT2ZDUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1QaHlzaWNhbENvcmVzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUGh5c2ljYWwgQ29yZXMKICAgICAgTmFtZTogQ1BVLVBoeXNpY2FsQ29yZXMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1Tb2NrZXRUeXBlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTTQ6IEFNNAogICAgICAgICAgQkdBOiBCR0EKICAgICAgICAgIExHQTExNTE6IExHQTExNTEKICAgICAgICAgIExHQTEyMDA6IExHQTEyMDAKICAgICAgICAgIExHQTEzNjY6IExHQTEzNjYKICAgICAgICAgIExHQTE3MDA6IExHQTE3MDAKICAgICAgICAgIExHQTIwMTE6IExHQTIwMTEKICAgICAgICAgIExHQTIwMTEzOiBMR0EyMDExLTMKICAgICAgICAgIExHQTIwNjY6IExHQTIwNjYKICAgICAgICAgIExHQTc3NTogTEdBNzc1CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBHQTogUEdBCiAgICAgICAgICBTb2NrZXQzNzA6IFNvY2tldCAzNzAKICAgICAgICAgIFNvY2tldDQ3ODogU29ja2V0IDQ3OAogICAgICAgICAgVFI0OiBUUjQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBTb2NrZXQgVHlwZQogICAgICBOYW1lOiBDUFUtU29ja2V0VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVRocmVhZHM6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUaHJlYWRzCiAgICAgIE5hbWU6IENQVS1UaHJlYWRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1SZWZlcmVuY2VUb09TOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gT3BlcmF0aW5nIFN5c3RlbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9PUwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQ2xpZW50LUNsaWVudENhdGVnb3J5OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEZXNrdG9wOiBEZXNrdG9wCiAgICAgICAgICBOb3RlYm9vazogTm90ZWJvb2sKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVGhpbkNsaWVudDogVGhpbiBDbGllbnQKICAgICAgICAgIFZpcnR1YWxDbGllbnQ6IFZpcnR1YWwgQ2xpZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xpZW50IGNhdGVnb3J5CiAgICAgIE5hbWU6IElUU01DbGllbnQtQ2xpZW50Q2F0ZWdvcnkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01DbGllbnQtRmlybXdhcmU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRmlybXdhcmUKICAgICAgTmFtZTogSVRTTUNsaWVudC1GaXJtd2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudFNvZnR3YXJlLVJlZmVyZW5jZVRvQ2xpZW50U29mdHdhcmU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBDbGllbnQgU29mdHdhcmUKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogQ2xpZW50IFNvZnR3YXJlCiAgICAgIE5hbWU6IElUU01DbGllbnRTb2Z0d2FyZS1SZWZlcmVuY2VUb0NsaWVudFNvZnR3YXJlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLUJ1c0ludGVyZmFjZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQUdQOiBBR1AKICAgICAgICAgIEVJU0E6IEVJU0EKICAgICAgICAgIEZpcmVXaXJlSUVFRTEzOTQ6IEZpcmVXaXJlIChJRUVFIDEzOTQpCiAgICAgICAgICBJU0E6IElTQQogICAgICAgICAgTFBDTG93UGluQ291bnQ6IExQQyAoTG93IFBpbiBDb3VudCkKICAgICAgICAgIE1DQU1pY3JvQ2hhbm5lbEFyY2hpdGVjdHVyZTogTUNBIChNaWNybyBDaGFubmVsIEFyY2hpdGVjdHVyZSkKICAgICAgICAgIE51QnVzOiBOdUJ1cwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQQ0k6IFBDSQogICAgICAgICAgUENJRXhwcmVzc1BDSWU6IFBDSSBFeHByZXNzIChQQ0llKQogICAgICAgICAgUENJWDogUENJLVgKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFVTQlVuaXZlcnNhbFNlcmlhbEJ1czogVVNCIChVbml2ZXJzYWwgU2VyaWFsIEJ1cykKICAgICAgICAgIFZFU0FMb2NhbEJ1c1ZMQjogVkVTQSBMb2NhbCBCdXMgKFZMQikKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBCdXMgSW50ZXJmYWNlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQnVzSW50ZXJmYWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLUNvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNRFJhZGVvbkhENjc1MDogQU1EIFJhZGVvbiBIRCA2NzUwCiAgICAgICAgICBBTURSYWRlb25IRDY3NzA6IEFNRCBSYWRlb24gSEQgNjc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzkwOiBBTUQgUmFkZW9uIEhEIDY3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENjg1MDogQU1EIFJhZGVvbiBIRCA2ODUwCiAgICAgICAgICBBTURSYWRlb25IRDY4NzA6IEFNRCBSYWRlb24gSEQgNjg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTUwOiBBTUQgUmFkZW9uIEhEIDY5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjk3MDogQU1EIFJhZGVvbiBIRCA2OTcwCiAgICAgICAgICBBTURSYWRlb25IRDY5OTA6IEFNRCBSYWRlb24gSEQgNjk5MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzUwOiBBTUQgUmFkZW9uIEhEIDc3NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc3MDogQU1EIFJhZGVvbiBIRCA3NzcwCiAgICAgICAgICBBTURSYWRlb25IRDc3OTA6IEFNRCBSYWRlb24gSEQgNzc5MAogICAgICAgICAgQU1EUmFkZW9uSEQ3ODUwOiBBTUQgUmFkZW9uIEhEIDc4NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg3MDogQU1EIFJhZGVvbiBIRCA3ODcwCiAgICAgICAgICBBTURSYWRlb25IRDc5NTA6IEFNRCBSYWRlb24gSEQgNzk1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTcwOiBBTUQgUmFkZW9uIEhEIDc5NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzk5MDogQU1EIFJhZGVvbiBIRCA3OTkwCiAgICAgICAgICBBTURSYWRlb25Qcm9EdW86IEFNRCBSYWRlb24gUHJvIER1bwogICAgICAgICAgQU1EUmFkZW9uUHJvU1NHOiBBTUQgUmFkZW9uIFBybyBTU0cKICAgICAgICAgIEFNRFJhZGVvblByb1dYMjEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMjEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1gzMTAwOiBBTUQgUmFkZW9uIFBybyBXWCAzMTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDQxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDQxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNTEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNTEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g3MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA3MTAwCiAgICAgICAgICBBTURSYWRlb25SNTIxMDogQU1EIFJhZGVvbiBSNSAyMTAKICAgICAgICAgIEFNRFJhZGVvblI1MjIwOiBBTUQgUmFkZW9uIFI1IDIyMAogICAgICAgICAgQU1EUmFkZW9uUjUyMzA6IEFNRCBSYWRlb24gUjUgMjMwCiAgICAgICAgICBBTURSYWRlb25SNTMyMDogQU1EIFJhZGVvbiBSNSAzMjAKICAgICAgICAgIEFNRFJhZGVvblI1MzMwOiBBTUQgUmFkZW9uIFI1IDMzMAogICAgICAgICAgQU1EUmFkZW9uUjUzNDA6IEFNRCBSYWRlb24gUjUgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzI0MDogQU1EIFJhZGVvbiBSNyAyNDAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwOiBBTUQgUmFkZW9uIFI3IDI1MAogICAgICAgICAgQU1EUmFkZW9uUjcyNTBYOiBBTUQgUmFkZW9uIFI3IDI1MFgKICAgICAgICAgIEFNRFJhZGVvblI3MjYwWDogQU1EIFJhZGVvbiBSNyAyNjBYCiAgICAgICAgICBBTURSYWRlb25SNzM0MDogQU1EIFJhZGVvbiBSNyAzNDAKICAgICAgICAgIEFNRFJhZGVvblI3MzUwOiBBTUQgUmFkZW9uIFI3IDM1MAogICAgICAgICAgQU1EUmFkZW9uUjczNjA6IEFNRCBSYWRlb24gUjcgMzYwCiAgICAgICAgICBBTURSYWRlb25SNzM3MDogQU1EIFJhZGVvbiBSNyAzNzAKICAgICAgICAgIEFNRFJhZGVvblI5Mjg1OiBBTUQgUmFkZW9uIFI5IDI4NQogICAgICAgICAgQU1EUmFkZW9uUjkyOTA6IEFNRCBSYWRlb24gUjkgMjkwCiAgICAgICAgICBBTURSYWRlb25SOTI5MFg6IEFNRCBSYWRlb24gUjkgMjkwWAogICAgICAgICAgQU1EUmFkZW9uUjkyOTVYMjogQU1EIFJhZGVvbiBSOSAyOTVYMgogICAgICAgICAgQU1EUmFkZW9uUjkzODA6IEFNRCBSYWRlb24gUjkgMzgwCiAgICAgICAgICBBTURSYWRlb25SOTM4MFg6IEFNRCBSYWRlb24gUjkgMzgwWAogICAgICAgICAgQU1EUmFkZW9uUjkzOTA6IEFNRCBSYWRlb24gUjkgMzkwCiAgICAgICAgICBBTURSYWRlb25SOTM5MFg6IEFNRCBSYWRlb24gUjkgMzkwWAogICAgICAgICAgQU1EUmFkZW9uUjlGdXJ5WDogQU1EIFJhZGVvbiBSOSBGdXJ5IFgKICAgICAgICAgIEFNRFJhZGVvblI5TmFubzogQU1EIFJhZGVvbiBSOSBOYW5vCiAgICAgICAgICBBTURSYWRlb25SWDU0MDBYVDogQU1EIFJhZGVvbiBSWCA1NDAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU1MDA6IEFNRCBSYWRlb24gUlggNTUwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwWFQ6IEFNRCBSYWRlb24gUlggNTUwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NjAwOiBBTUQgUmFkZW9uIFJYIDU2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMFhUOiBBTUQgUmFkZW9uIFJYIDU2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTcwOiBBTUQgUmFkZW9uIFJYIDU3MAogICAgICAgICAgQU1EUmFkZW9uUlg1NzAwOiBBTUQgUmFkZW9uIFJYIDU3MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMFhUOiBBTUQgUmFkZW9uIFJYIDU3MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTgwOiBBTUQgUmFkZW9uIFJYIDU4MAogICAgICAgICAgQU1EUmFkZW9uUlg1OTA6IEFNRCBSYWRlb24gUlggNTkwCiAgICAgICAgICBBTURSYWRlb25SWDY2MDA6IEFNRCBSYWRlb24gUlggNjYwMAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwWFQ6IEFNRCBSYWRlb24gUlggNjYwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2NzAwOiBBTUQgUmFkZW9uIFJYIDY3MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMFhUOiBBTUQgUmFkZW9uIFJYIDY3MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjgwMFhUOiBBTUQgUmFkZW9uIFJYIDY4MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjkwMFhUOiBBTUQgUmFkZW9uIFJYIDY5MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYVmVnYTU2OiBBTUQgUmFkZW9uIFJYIFZlZ2EgNTYKICAgICAgICAgIEFNRFJhZGVvblJYVmVnYTY0OiBBTUQgUmFkZW9uIFJYIFZlZ2EgNjQKICAgICAgICAgIE5WSURJQUdlRm9yY2UyMTA6IE5WSURJQSBHZUZvcmNlIDIxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUMTAzMDogTlZJRElBIEdlRm9yY2UgR1QgMTAzMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTEwOiBOVklESUEgR2VGb3JjZSBHVCA1MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUyMDogTlZJRElBIEdlRm9yY2UgR1QgNTIwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MzA6IE5WSURJQSBHZUZvcmNlIEdUIDUzMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTQ1OiBOVklESUEgR2VGb3JjZSBHVCA1NDUKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYxMDogTlZJRElBIEdlRm9yY2UgR1QgNjEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MjA6IE5WSURJQSBHZUZvcmNlIEdUIDYyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjMwOiBOVklESUEgR2VGb3JjZSBHVCA2MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDY0MDogTlZJRElBIEdlRm9yY2UgR1QgNjQwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q3MTA6IE5WSURJQSBHZUZvcmNlIEdUIDcxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzMwOiBOVklESUEgR2VGb3JjZSBHVCA3MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwOiBOVklESUEgR2VGb3JjZSBHVFggMTA1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNTBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDYwOiBOVklESUEgR2VGb3JjZSBHVFggMTA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNzA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY1MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwOiBOVklESUEgR2VGb3JjZSBHVFggMTY2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NDU6IE5WSURJQSBHZUZvcmNlIEdUWCA3NDUKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NTA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NTBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc2MDogTlZJRElBIEdlRm9yY2UgR1RYIDc2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc2MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzcwOiBOVklESUEgR2VGb3JjZSBHVFggNzcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzgwOiBOVklESUEgR2VGb3JjZSBHVFggNzgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg5NTA6IE5WSURJQSBHZUZvcmNlIEdUWCA5NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg5NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA5NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg5NzA6IE5WSURJQSBHZUZvcmNlIEdUWCA5NzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg5ODA6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg5ODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDk4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZU1YMTUwOiBOVklESUEgR2VGb3JjZSBNWDE1MAogICAgICAgICAgTlZJRElBR2VGb3JjZU1YMzUwOiBOVklESUEgR2VGb3JjZSBNWDM1MAogICAgICAgICAgTlZJRElBR2VGb3JjZU1YNDUwOiBOVklESUEgR2VGb3JjZSBNWDQ1MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNjA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDYwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA3MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwNzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwOiBOVklESUEgR2VGb3JjZSBSVFggMjA4MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwODBUaTogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwOiBOVklESUEgR2VGb3JjZSBSVFggMzA1MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNTBUaTogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDYwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA3MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDgwOiBOVklESUEgR2VGb3JjZSBSVFggMzA4MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwOTA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDkwCiAgICAgICAgICBOVklESUFOVlMzMDA6IE5WSURJQSBOVlMgMzAwCiAgICAgICAgICBOVklESUFOVlMzMTA6IE5WSURJQSBOVlMgMzEwCiAgICAgICAgICBOVklESUFOVlM1MTA6IE5WSURJQSBOVlMgNTEwCiAgICAgICAgICBOVklESUFRdWFkcm8yMDAwOiBOVklESUEgUXVhZHJvIDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRybzYwMDogTlZJRElBIFF1YWRybyA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb0sxMjAwOiBOVklESUEgUXVhZHJvIEsxMjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMjIwMDogTlZJRElBIFF1YWRybyBLMjIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzQwMDA6IE5WSURJQSBRdWFkcm8gSzQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjA6IE5WSURJQSBRdWFkcm8gSzQyMAogICAgICAgICAgTlZJRElBUXVhZHJvSzQyMDA6IE5WSURJQSBRdWFkcm8gSzQyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s1MjAwOiBOVklESUEgUXVhZHJvIEs1MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjAwOiBOVklESUEgUXVhZHJvIEs2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s2MTBNOiBOVklESUEgUXVhZHJvIEs2MTBNCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwOiBOVklESUEgUXVhZHJvIEs2MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s2MjBNOiBOVklESUEgUXVhZHJvIEs2MjBNCiAgICAgICAgICBOVklESUFRdWFkcm9NMTAwME06IE5WSURJQSBRdWFkcm8gTTEwMDBNCiAgICAgICAgICBOVklESUFRdWFkcm9NMjAwMDogTlZJRElBIFF1YWRybyBNMjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTQwMDA6IE5WSURJQSBRdWFkcm8gTTQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb001MDAwOiBOVklESUEgUXVhZHJvIE01MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNjAwMDogTlZJRElBIFF1YWRybyBNNjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwME06IE5WSURJQSBRdWFkcm8gTTYwME0KICAgICAgICAgIE5WSURJQVF1YWRyb1AxMDAwOiBOVklESUEgUXVhZHJvIFAxMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QMjAwMDogTlZJRElBIFF1YWRybyBQMjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDogTlZJRElBIFF1YWRybyBQNDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNDAwMDogTlZJRElBIFF1YWRybyBQNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDUwMDA6IE5WSURJQSBRdWFkcm8gUDUwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDA6IE5WSURJQSBRdWFkcm8gUDYwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYwMDA6IE5WSURJQSBRdWFkcm8gUDYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MjA6IE5WSURJQSBRdWFkcm8gUDYyMAogICAgICAgICAgTlZJRElBVGVzbGFLODA6IE5WSURJQSBUZXNsYSBLODAKICAgICAgICAgIE5WSURJQVRlc2xhUDEwMDogTlZJRElBIFRlc2xhIFAxMDAKICAgICAgICAgIE5WSURJQVRlc2xhVDQ6IE5WSURJQSBUZXNsYSBUNAogICAgICAgICAgTlZJRElBVGVzbGFWMTAwOiBOVklESUEgVGVzbGEgVjEwMAogICAgICAgICAgTlZJRElBVGl0YW5SVFg6IE5WSURJQSBUaXRhbiBSVFgKICAgICAgICAgIE5WSURJQVRpdGFuVjogTlZJRElBIFRpdGFuIFYKICAgICAgICAgIE5WSURJQVRpdGFuWFBhc2NhbDogTlZJRElBIFRpdGFuIFggKFBhc2NhbCkKICAgICAgICAgIE5WSURJQVRpdGFuWHA6IE5WSURJQSBUaXRhbiBYcAogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogR3JhcGhpY3MgY2FyZAogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLUdyYXBoaWNzQ2FyZFZlbmRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6IDEgR0IKICAgICAgICAgICcxMSc6IDExIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzInOiAyIEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0JzogNCBHQgogICAgICAgICAgJzQ4JzogNDggR0IKICAgICAgICAgICc1MTInOiA1MTIgR0IKICAgICAgICAgICc2NCc6IDY0IEdCCiAgICAgICAgICAnOCc6IDggR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERWSTogRFZJCiAgICAgICAgICBEaXNwbGF5UG9ydDogRGlzcGxheVBvcnQKICAgICAgICAgIEhETUk6IEhETUkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVkdBOiBWR0EKICAgICAgICAgIFZpcnR1YWxMaW5rOiBWaXJ0dWFsTGluawogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE91dHB1dHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLVRvdGFsUkFNR0I6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBFeHByZXNzaW9uOiAiWyUgQ291bnQgPSBcIkR5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50XCIgJV1bJSBDYXBhY2l0eQogICAgICAgICAgPSBcIkR5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemVcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50CiAgICAgICAgICAqIERhdGEuJENhcGFjaXR5ICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBOYW1lVXBkYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkNyZWF0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLVRvdGFsUkFNR0IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU01NZW1vcnktQ2FwYWNpdHk6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEwMCc6ICcxMDAnCiAgICAgICAgICAnMTMzJzogJzEzMycKICAgICAgICAgICcxNjYnOiAnMTY2JwogICAgICAgICAgJzIwMCc6ICcyMDAnCiAgICAgICAgICAnMjMzJzogJzIzMycKICAgICAgICAgICcyNjYnOiAnMjY2JwogICAgICAgICAgJzMwMCc6ICczMDAnCiAgICAgICAgICAnMzMzJzogJzMzMycKICAgICAgICAgICczNjYnOiAnMzY2JwogICAgICAgICAgJzQwMCc6ICc0MDAnCiAgICAgICAgICAnNDUwJzogJzQ1MCcKICAgICAgICAgICc1MDAnOiAnNTAwJwogICAgICAgICAgJzUyNSc6ICc1MjUnCiAgICAgICAgICAnNjAwJzogJzYwMCcKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENsb2NrcmF0ZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNsb2NrUmF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1Db3VudDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBSQU0gbW9kdWxlcwogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LVRvdGFsUkFNR0I6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEREUjogRERSCiAgICAgICAgICBERFIyOiBERFIyCiAgICAgICAgICBERFIzOiBERFIzCiAgICAgICAgICBERFI0OiBERFI0CiAgICAgICAgICBERFI1OiBERFI1CiAgICAgICAgICBTRFJBTTogU0RSQU0KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IElUU01NZW1vcnktVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TdG9yYWdlLVN0b3JhZ2U6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBIRERIYXJkRGlza0RyaXZlOiBIREQgKEhhcmQgRGlzayBEcml2ZSkKICAgICAgICAgICAgICAgIE5WTWVTU0ROb25Wb2xhdGlsZU1lbW9yeUV4cHJlc3NTb2xpZFN0YXRlRHJpdmU6IE5WTWUgU1NEIChOb24tVm9sYXRpbGUKICAgICAgICAgICAgICAgICAgTWVtb3J5IEV4cHJlc3MgU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFNTRFNvbGlkU3RhdGVEcml2ZTogU1NEIChTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIFNTSERTb2xpZFN0YXRlSHlicmlkRHJpdmU6IFNTSEQgKFNvbGlkIFN0YXRlIEh5YnJpZCBEcml2ZSkKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFR5cGUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEFEQVRBOiBBREFUQQogICAgICAgICAgICAgICAgQURBVEFUZWNobm9sb2d5OiBBREFUQSBUZWNobm9sb2d5CiAgICAgICAgICAgICAgICBBcGFjZXI6IEFwYWNlcgogICAgICAgICAgICAgICAgQnVmZmFsbzogQnVmZmFsbwogICAgICAgICAgICAgICAgQ29yc2FpcjogQ29yc2FpcgogICAgICAgICAgICAgICAgQ3J1Y2lhbE1pY3JvbjogQ3J1Y2lhbCAoTWljcm9uKQogICAgICAgICAgICAgICAgR1RlY2hub2xvZ3lXZXN0ZXJuRGlnaXRhbDogRy1UZWNobm9sb2d5IChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIR1NUV2VzdGVybkRpZ2l0YWw6IEhHU1QgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhpdGFjaGk6IEhpdGFjaGkKICAgICAgICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgICAgICAgS2luZ3N0b246IEtpbmdzdG9uCiAgICAgICAgICAgICAgICBLaW5nc3RvbkRpZ2l0YWw6IEtpbmdzdG9uIERpZ2l0YWwKICAgICAgICAgICAgICAgIExhQ2llU2VhZ2F0ZTogTGFDaWUgKFNlYWdhdGUpCiAgICAgICAgICAgICAgICBMZXhhcjogTGV4YXIKICAgICAgICAgICAgICAgIE1heHRvcjogTWF4dG9yCiAgICAgICAgICAgICAgICBPQ1pUb3NoaWJhOiBPQ1ogKFRvc2hpYmEpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFBOWTogUE5ZCiAgICAgICAgICAgICAgICBQbGV4dG9yOiBQbGV4dG9yCiAgICAgICAgICAgICAgICBTS2h5bml4OiBTSyBoeW5peAogICAgICAgICAgICAgICAgU2Ftc3VuZzogU2Ftc3VuZwogICAgICAgICAgICAgICAgU2Ftc3VuZ1NlbWljb25kdWN0b3I6IFNhbXN1bmcgU2VtaWNvbmR1Y3RvcgogICAgICAgICAgICAgICAgU2FuRGlza1dlc3Rlcm5EaWdpdGFsOiBTYW5EaXNrIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBTZWFnYXRlOiBTZWFnYXRlCiAgICAgICAgICAgICAgICBTaWxpY29uUG93ZXI6IFNpbGljb24gUG93ZXIKICAgICAgICAgICAgICAgIFNvbnk6IFNvbnkKICAgICAgICAgICAgICAgIFN1cGVyVGFsZW50OiBTdXBlciBUYWxlbnQKICAgICAgICAgICAgICAgIFRlYW1Hcm91cDogVGVhbSBHcm91cAogICAgICAgICAgICAgICAgVG9zaGliYTogVG9zaGliYQogICAgICAgICAgICAgICAgVHJhbnNjZW5kOiBUcmFuc2NlbmQKICAgICAgICAgICAgICAgIFdlc3Rlcm5EaWdpdGFsOiBXZXN0ZXJuIERpZ2l0YWwKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIE1hbnVmYWN0dXJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNb2RlbAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFNlcmlhbE51bWJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlCiAgICAgIE5hbWU6IElUU01TdG9yYWdlLVN0b3JhZ2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TdG9yYWdlUGFydGl0aW9uLVBhcnRpdGlvbjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gRnJlZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIFVzZWQgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gTW91bnQgUG9pbnQKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UgUGFydGl0aW9uCiAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVBhcnRpdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBTb2Z0d2FyZQogICAgLSBXb3JrcGxhY2UKICAgIE5hbWU6IENsaWVudCAodmlydHVhbCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbAogICAgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIExpY2Vuc2U6OkxpY2Vuc2VcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjoKICAgIDJcclxuXHJcbiAgLSBOYW1lOiBIYXJkd2FyZVxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlCiAgICBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG4gIC0gTmFtZTogU29mdHdhcmVcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcKICAgIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBDbGllbnQgU29mdHdhcmU6OkNsaWVudCBTb2Z0d2FyZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG4gIC0gTmFtZTogRGV0YWlsc1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIENsaWVudCBTb2Z0d2FyZTo6Q2xpZW50IFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlCiAgICBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDogNVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OiA2XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA3XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogNFxyXG4KICAgIFwgICAgICAgUm93U3BhbjogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgQ2xpZW50XHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuCiAgICBcIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIKICAgIExvY2F0ZWQgaW5cclxuICBJVFNNIE9wZXJhdGluZyBTeXN0ZW06XHJcbiAgICBOYW1lOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW1cclxuCiAgICBcIElUU00gQ2xpZW50IFNvZnR3YXJlOlxyXG4gICAgTmFtZTogSVRTTSBDbGllbnQgU29mdHdhcmUgIFxyXG4gIElUU00gQ1BVOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIENQVVxyXG4gIElUU00gTWVtb3J5OlxyXG4gICAgTmFtZTogSVRTTSBNZW1vcnlcclxuICBJVFNNIEdyYXBoaWNzCiAgICBDYXJkOlxyXG4gICAgTmFtZTogSVRTTSBHcmFwaGljcyBDYXJkXHJcbiAgSVRTTSBTdG9yYWdlOlxyXG4gICAgTmFtZTogSVRTTSBTdG9yYWdlXHJcbgogICAgXCBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOlxyXG4gICAgTmFtZTogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbiAgICBcclxuICBJVFNNIE5ldHdvcmsKICAgIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4KICAgIFwgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOgogICAgQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ1BVLUNQVUNsYXNzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE2R0h6OiAxLjYgR0h6CiAgICAgICAgICAxN0dIejogMS43IEdIegogICAgICAgICAgMThHSHo6IDEuOCBHSHoKICAgICAgICAgIDE5R0h6OiAxLjkgR0h6CiAgICAgICAgICAyMEdIejogMi4wIEdIegogICAgICAgICAgMjFHSHo6IDIuMSBHSHoKICAgICAgICAgIDIyR0h6OiAyLjIgR0h6CiAgICAgICAgICAyM0dIejogMi4zIEdIegogICAgICAgICAgMjRHSHo6IDIuNCBHSHoKICAgICAgICAgIDI1R0h6OiAyLjUgR0h6CiAgICAgICAgICAyNkdIejogMi42IEdIegogICAgICAgICAgMjdHSHo6IDIuNyBHSHoKICAgICAgICAgIDI4R0h6OiAyLjggR0h6CiAgICAgICAgICAyOUdIejogMi45IEdIegogICAgICAgICAgMzBHSHo6IDMuMCBHSHoKICAgICAgICAgIDMxR0h6OiAzLjEgR0h6CiAgICAgICAgICAzMkdIejogMy4yIEdIegogICAgICAgICAgMzNHSHo6IDMuMyBHSHoKICAgICAgICAgIDM0R0h6OiAzLjQgR0h6CiAgICAgICAgICAzNUdIejogMy41IEdIegogICAgICAgICAgMzZHSHo6IDMuNiBHSHoKICAgICAgICAgIDM3R0h6OiAzLjcgR0h6CiAgICAgICAgICAzOEdIejogMy44IEdIegogICAgICAgICAgMzlHSHo6IDMuOSBHSHoKICAgICAgICAgIDQwR0h6OiA0LjAgR0h6CiAgICAgICAgICA0MUdIejogNC4xIEdIegogICAgICAgICAgNDJHSHo6IDQuMiBHSHoKICAgICAgICAgIDQzR0h6OiA0LjMgR0h6CiAgICAgICAgICA0NEdIejogNC40IEdIegogICAgICAgICAgNDVHSHo6IDQuNSBHSHoKICAgICAgICAgIDQ2R0h6OiA0LjYgR0h6CiAgICAgICAgICA0N0dIejogNC43IEdIegogICAgICAgICAgNDhHSHo6IDQuOCBHSHoKICAgICAgICAgIDQ5R0h6OiA0LjkgR0h6CiAgICAgICAgICA1MEdIejogNS4wIEdIegogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tzcGVlZAogICAgICBOYW1lOiBDUFUtQ2xvY2tzcGVlZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLU51bWJlck9mQ1BVOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgQ1BVcwogICAgICBOYW1lOiBDUFUtTnVtYmVyT2ZDUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1QaHlzaWNhbENvcmVzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNNDogQU00CiAgICAgICAgICBCR0E6IEJHQQogICAgICAgICAgTEdBMTE1MTogTEdBMTE1MQogICAgICAgICAgTEdBMTIwMDogTEdBMTIwMAogICAgICAgICAgTEdBMTM2NjogTEdBMTM2NgogICAgICAgICAgTEdBMTcwMDogTEdBMTcwMAogICAgICAgICAgTEdBMjAxMTogTEdBMjAxMQogICAgICAgICAgTEdBMjAxMTM6IExHQTIwMTEtMwogICAgICAgICAgTEdBMjA2NjogTEdBMjA2NgogICAgICAgICAgTEdBNzc1OiBMR0E3NzUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUEdBOiBQR0EKICAgICAgICAgIFNvY2tldDM3MDogU29ja2V0IDM3MAogICAgICAgICAgU29ja2V0NDc4OiBTb2NrZXQgNDc4CiAgICAgICAgICBUUjQ6IFRSNAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFNvY2tldCBUeXBlCiAgICAgIE5hbWU6IENQVS1Tb2NrZXRUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtVGhyZWFkczoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUaHJlYWRzCiAgICAgIE5hbWU6IENQVS1UaHJlYWRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvT1M6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gT3BlcmF0aW5nIFN5c3RlbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9PUwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERlc2t0b3A6IERlc2t0b3AKICAgICAgICAgIE5vdGVib29rOiBOb3RlYm9vawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaGluQ2xpZW50OiBUaGluIENsaWVudAogICAgICAgICAgVmlydHVhbENsaWVudDogVmlydHVhbCBDbGllbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbGllbnQgY2F0ZWdvcnkKICAgICAgTmFtZTogSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1GaXJtd2FyZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRmlybXdhcmUKICAgICAgTmFtZTogSVRTTUNsaWVudC1GaXJtd2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudFNvZnR3YXJlLVJlZmVyZW5jZVRvQ2xpZW50U29mdHdhcmU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQ2xpZW50IFNvZnR3YXJlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IENsaWVudCBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZS1TdG9yYWdlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBIRERIYXJkRGlza0RyaXZlOiBIREQgKEhhcmQgRGlzayBEcml2ZSkKICAgICAgICAgICAgICAgIE5WTWVTU0ROb25Wb2xhdGlsZU1lbW9yeUV4cHJlc3NTb2xpZFN0YXRlRHJpdmU6IE5WTWUgU1NEIChOb24tVm9sYXRpbGUKICAgICAgICAgICAgICAgICAgTWVtb3J5IEV4cHJlc3MgU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFNTRFNvbGlkU3RhdGVEcml2ZTogU1NEIChTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIFNTSERTb2xpZFN0YXRlSHlicmlkRHJpdmU6IFNTSEQgKFNvbGlkIFN0YXRlIEh5YnJpZCBEcml2ZSkKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFR5cGUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgQURBVEE6IEFEQVRBCiAgICAgICAgICAgICAgICBBREFUQVRlY2hub2xvZ3k6IEFEQVRBIFRlY2hub2xvZ3kKICAgICAgICAgICAgICAgIEFwYWNlcjogQXBhY2VyCiAgICAgICAgICAgICAgICBCdWZmYWxvOiBCdWZmYWxvCiAgICAgICAgICAgICAgICBDb3JzYWlyOiBDb3JzYWlyCiAgICAgICAgICAgICAgICBDcnVjaWFsTWljcm9uOiBDcnVjaWFsIChNaWNyb24pCiAgICAgICAgICAgICAgICBHVGVjaG5vbG9neVdlc3Rlcm5EaWdpdGFsOiBHLVRlY2hub2xvZ3kgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhHU1RXZXN0ZXJuRGlnaXRhbDogSEdTVCAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSGl0YWNoaTogSGl0YWNoaQogICAgICAgICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICAgICAgICBLaW5nc3RvbjogS2luZ3N0b24KICAgICAgICAgICAgICAgIEtpbmdzdG9uRGlnaXRhbDogS2luZ3N0b24gRGlnaXRhbAogICAgICAgICAgICAgICAgTGFDaWVTZWFnYXRlOiBMYUNpZSAoU2VhZ2F0ZSkKICAgICAgICAgICAgICAgIExleGFyOiBMZXhhcgogICAgICAgICAgICAgICAgTWF4dG9yOiBNYXh0b3IKICAgICAgICAgICAgICAgIE9DWlRvc2hpYmE6IE9DWiAoVG9zaGliYSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgUE5ZOiBQTlkKICAgICAgICAgICAgICAgIFBsZXh0b3I6IFBsZXh0b3IKICAgICAgICAgICAgICAgIFNLaHluaXg6IFNLIGh5bml4CiAgICAgICAgICAgICAgICBTYW1zdW5nOiBTYW1zdW5nCiAgICAgICAgICAgICAgICBTYW1zdW5nU2VtaWNvbmR1Y3RvcjogU2Ftc3VuZyBTZW1pY29uZHVjdG9yCiAgICAgICAgICAgICAgICBTYW5EaXNrV2VzdGVybkRpZ2l0YWw6IFNhbkRpc2sgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIFNlYWdhdGU6IFNlYWdhdGUKICAgICAgICAgICAgICAgIFNpbGljb25Qb3dlcjogU2lsaWNvbiBQb3dlcgogICAgICAgICAgICAgICAgU29ueTogU29ueQogICAgICAgICAgICAgICAgU3VwZXJUYWxlbnQ6IFN1cGVyIFRhbGVudAogICAgICAgICAgICAgICAgVGVhbUdyb3VwOiBUZWFtIEdyb3VwCiAgICAgICAgICAgICAgICBUb3NoaWJhOiBUb3NoaWJhCiAgICAgICAgICAgICAgICBUcmFuc2NlbmQ6IFRyYW5zY2VuZAogICAgICAgICAgICAgICAgV2VzdGVybkRpZ2l0YWw6IFdlc3Rlcm4gRGlnaXRhbAogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNb2RlbAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBTZXJpYWxOdW1iZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZQogICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TdG9yYWdlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb246CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBGcmVlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIFVzZWQgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE1vdW50IFBvaW50CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlIFBhcnRpdGlvbgogICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICBOYW1lOiBDbGllbnQgU29mdHdhcmUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIExpY2Vuc2U6OkxpY2Vuc2VcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUKICAgIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zCiAgICBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5CiAgICBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoCiAgICBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZwogICAgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMKICAgIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00KICAgIExpY2Vuc2VcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuCiAgICBcICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDbGllbnQgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbGllbnQgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogQ2xpZW50IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBDbHVzdGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZAogICAgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zCiAgICBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5CiAgICBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoCiAgICBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZwogICAgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMKICAgIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTQogICAgR0YgQ2x1c3RlclxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1SZWZlcmVuY2VUb1NlcnZlcjoKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlcgogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBBY2NvdW50aW5nOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgQWNjb3VudGluZyBJbmZvcm1hdGlvblxyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyXHJcbiAgICAtIERGOgogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZVxyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlXHJcbiAgICAtIERGOgogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlXHJcbiAgICAtIERGOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdFxyXG4gICAgLSBERjoKICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyXHJcbiAgICAtIERGOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyXHJcbiAgICAtCiAgICBERjogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzXHJcbiAgICAtIERGOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0c1xyXG4KICAgIFwgICAtIERGOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQiCiAgUm9sZU5hbWU6IENNREIgQWNjb3VudGluZwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQmFja2xpbmtzOlxyXG4gICAgVHlwZTogQ29uZmlnSXRlbUxpbmtzXHJcbiAgICBIZWFkZXI6CiAgICBCYWNrbGlua3NcclxuICAgIExpbmtlZEFzOiBTb3VyY2UiCiAgUm9sZU5hbWU6IENNREIgQmFja2xpbmtzCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBEZXNjcmlwdGlvbjpcclxuICAgIFR5cGU6IERlc2NyaXB0aW9uXHJcbiAgICBIZWFkZXI6CiAgICBEZXNjcmlwdGlvbiIKICBSb2xlTmFtZTogQ01EQiBEZXNjcmlwdGlvbgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgU3Vic2lkaWFyeTpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gSGVhZGVyOgogICAgU3Vic2lkaWFyeVxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1N1YnNpZGlhcnlcclxuICBBZGRyZXNzOlxyXG4gICAgVHlwZToKICAgIFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5XHJcbiAgICBTZWN0aW9uTmFtZToKICAgIEFkZHJlc3NcclxuICAgIEZpZWxkTGlzdFByZTpcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5IgogIFJvbGVOYW1lOiBDTURCIEdGIEJ1aWxkaW5nCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBMb2NhdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gSGVhZGVyOgogICAgTG9jYXRpb25cclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvblxyXG4gIEFkZHJlc3M6XHJcbiAgICBUeXBlOgogICAgUmVmZXJlbmNlZFNlY3Rpb25cclxuICAgIFJlZmVyZW5jZUZpZWxkOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uXHJcbiAgICBTZWN0aW9uTmFtZToKICAgIEFkZHJlc3MiCiAgUm9sZU5hbWU6IENNREIgTG9jYXRlZCBpbgotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIENvbnRyYWN0CiAgICBOYW1lOiBDb250cmFjdAogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtCiAgICBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcblJvbGVzOgogICAgXHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuCiAgICBcICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgQ29udHJhY3RcclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCCiAgICBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbgogICAgXCAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRyYWN0LVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzAnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogQ29udHJhY3QgcGVyaW9kIGZyb20KICAgICAgTmFtZTogQ29udHJhY3QtUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udHJhY3QtUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzAnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogQ29udHJhY3QgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IENvbnRyYWN0LVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250cmFjdC1UeXBlOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICdDb25zdWx0aW5nIEFncmVlbWVudDonOiBDb25zdWx0aW5nIEFncmVlbWVudAogICAgICAgICAgRW1wbG95bWVudCBDb250cmFjdDogRW1wbG95bWVudCBDb250cmFjdAogICAgICAgICAgRnJhbmNoaXNlIEFncmVlbWVudDogRnJhbmNoaXNlIEFncmVlbWVudAogICAgICAgICAgTGVhc2UgQWdyZWVtZW50OiBMZWFzZSBBZ3JlZW1lbnQKICAgICAgICAgIExpY2Vuc2UgQWdyZWVtZW50OiBMaWNlbnNlIEFncmVlbWVudAogICAgICAgICAgTG9hbiBBZ3JlZW1lbnQ6IExvYW4gQWdyZWVtZW50CiAgICAgICAgICBOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSk6IE5vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQ6IFBhcnRuZXJzaGlwIEFncmVlbWVudAogICAgICAgICAgU2FsZXMgQ29udHJhY3Q6IFNhbGVzIENvbnRyYWN0CiAgICAgICAgICBTZXJ2aWNlIEFncmVlbWVudDogU2VydmljZSBBZ3JlZW1lbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDb250cmFjdCBUeXBlCiAgICAgIE5hbWU6IENvbnRyYWN0LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTG9jYXRpb24KICAgIE5hbWU6IENvdW50cnkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAzXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMKICAgIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLAogICAgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZQogICAgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2gKICAgIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbgogICAgcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZQogICAgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBDTURCIEJhY2tsaW5rczpcclxuCiAgICBcICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBTb2Z0d2FyZQogICAgTmFtZTogRGF0YWJhc2UKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbAogICAgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gU2VydmVyOjpTZXJ2ZXJcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZQogICAgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMKICAgIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkKICAgIG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGgKICAgIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nCiAgICB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcwogICAgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbCBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNCiAgICBHRiBEYXRhYmFzZVxyXG4gIElUU00gU2VydmVyOlxyXG4gICAgTmFtZTogSVRTTSBTZXJ2ZXJcclxuICBJVFNNIExpY2Vuc2U6XHJcbgogICAgXCAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCCiAgICBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogRGF0YWJhc2UKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvU2VydmVyOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlcgogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU29mdHdhcmUtRGF0YWJhc2VUeXBlOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIENocm9tYSBEQjogQ2hyb21hIERCCiAgICAgICAgICBFbGFzdGljc2VhcmNoOiBFbGFzdGljc2VhcmNoCiAgICAgICAgICBJQk0gRGIyOiBJQk0gRGIyCiAgICAgICAgICBNYXJpYURCOiBNYXJpYURCCiAgICAgICAgICBNaWNyb3NvZnQgU1FMIFNlcnZlcjogTWljcm9zb2Z0IFNRTCBTZXJ2ZXIKICAgICAgICAgIE1vbmdvREI6IE1vbmdvREIKICAgICAgICAgIE15U1FMOiBNeVNRTAogICAgICAgICAgT3JhY2xlIERhdGFiYXNlOiBPcmFjbGUgRGF0YWJhc2UKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUG9zdGdyZVNRTDogUG9zdGdyZVNRTAogICAgICAgICAgUmVkaXM6IFJlZGlzCiAgICAgICAgICBTUUxpdGU6IFNRTGl0ZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IERhdGFiYXNlCiAgICAgIE5hbWU6IElUU01Tb2Z0d2FyZS1EYXRhYmFzZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Tb2Z0d2FyZS1EYXRlRW5kT2ZTdXBwb3J0OgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMTAnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBFbmQgb2Ygc3VwcG9ydAogICAgICBOYW1lOiBJVFNNU29mdHdhcmUtRGF0ZUVuZE9mU3VwcG9ydAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNvZnR3YXJlLURhdGVSZWxlYXNlOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgcmVsZWFzZQogICAgICBOYW1lOiBJVFNNU29mdHdhcmUtRGF0ZVJlbGVhc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogRGV2aWNlICh1bmlkZW50aWZpZWQpCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogICAgVmVyc2lvblRyaWdnZXI6CiAgICAtIERlZmluaXRpb25VcGRhdGUKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6CiAgICBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBDTURCIEJhY2tsaW5rczpcclxuCiAgICBcICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBEZXZpY2UgKHVuaWRlbnRpZmllZCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBEZXZpY2UgKHVuaWRlbnRpZmllZCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IERldmljZSAodW5pZGVudGlmaWVkKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IERldmljZSAodW5pZGVudGlmaWVkKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBEaXNwbGF5CiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgIFxyXG4KICAgIFwgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIERpc3BsYXlcclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4KICAgIFwgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkIGluOlxyXG4gICAgTmFtZTogQ01EQgogICAgTG9jYXRlZCBpblxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktUG93ZXJEZWxpdmVyeToKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIE5vOiBObwogICAgICAgICAgWWVzOiBZZXMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQb3dlciBEZWxpdmVyeQogICAgICBOYW1lOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1SZXNvbHV0aW9uOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMksgKDIwNDggeCAxMDgwKTogMksgKDIwNDggeCAxMDgwKQogICAgICAgICAgJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JzogJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JwogICAgICAgICAgNUsgKDUxMjAgeCAyODgwKTogNUsgKDUxMjAgeCAyODgwKQogICAgICAgICAgOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKTogOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKQogICAgICAgICAgRnVsbCBIRCAoMTkyMCB4IDEwODApOiBGdWxsIEhEICgxOTIwIHggMTA4MCkKICAgICAgICAgIEhEICgxMjgwIHggNzIwKTogSEQgKDEyODAgeCA3MjApCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFF1YWQgSEQgKDI1NjAgeCAxNDQwKTogUXVhZCBIRCAoMjU2MCB4IDE0NDApCiAgICAgICAgICBVV1FIRCAoMzQ0MCB4IDE0NDApOiBVV1FIRCAoMzQ0MCB4IDE0NDApCiAgICAgICAgICBXVVhHQSAoMTkyMCB4IDEyMDApOiBXVVhHQSAoMTkyMCB4IDEyMDApCiAgICAgICAgICBXWEdBICgxMzY2IHggNzY4KTogV1hHQSAoMTM2NiB4IDc2OCkKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNb25pdG9yIFJlc29sdXRpb24KICAgICAgTmFtZTogSVRTTURpc3BsYXktUmVzb2x1dGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktU2l6ZUluY2g6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMjcnOiAyNyIKICAgICAgICAgICczMic6IDMyIgogICAgICAgICAgJzM0JzogMzQiCiAgICAgICAgICAnMzUnOiAzNSIKICAgICAgICAgICc0MCc6IDQwIgogICAgICAgICAgJzQzJzogNDMiCiAgICAgICAgICAnNDknOiA0OSIKICAgICAgICAgICc1NSc6IDU1IgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTW9uaXRvciBTaXplCiAgICAgIE5hbWU6IElUU01EaXNwbGF5LVNpemVJbmNoCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1UeXBlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpOiBMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSkKICAgICAgICAgIExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSk6IExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSk6IE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodAogICAgICAgICAgICBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVG91Y2hzY3JlZW4gTW9uaXRvcjogVG91Y2hzY3JlZW4gTW9uaXRvcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTURpc3BsYXktVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gQ29udHJhY3QKICAgIE5hbWU6IEZpbGVzCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvbiIKLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBJUCBOZXR3b3JrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgSVAgTmV0d29ya1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU01JUE5ldHdvcmstQWRkcmVzc0FsbG9jYXRpb246CiAgICAgIENJQ2xhc3M6IElQIE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgIE5hbWU6IElUU01JUE5ldHdvcmstQWRkcmVzc0FsbG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstQ0lEUjoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ0lEUgogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUNJRFIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstSVBQcm90b2NvbDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUlQUHJvdG9jb2wKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstSVBSYW5nZUVuZDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRW5kIElQIEFkZHJlc3MKICAgICAgTmFtZTogSVRTTUlQTmV0d29yay1JUFJhbmdlRW5kCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNSVBOZXR3b3JrLUlQUmFuZ2VTdGFydDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU3RhcnQgSVAgQWRkcmVzcwogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUlQUmFuZ2VTdGFydAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUlQTmV0d29yay1OZXR3b3JrTGF5ZXI6CiAgICAgIENJQ2xhc3M6IElQIE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInOiAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInCiAgICAgICAgICAnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJzogJ0xheWVyIDI6IERhdGEgTGluayBMYXllcicKICAgICAgICAgICdMYXllciAzOiBOZXR3b3JrIExheWVyJzogJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInCiAgICAgICAgICAnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJzogJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KScKICAgICAgICAgICdMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInOiAnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJwogICAgICAgICAgJ0xheWVyIDU6IFNlc3Npb24gTGF5ZXInOiAnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcicKICAgICAgICAgICdMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInOiAnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJwogICAgICAgICAgJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJzogJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTmV0d29yayBMYXllcgogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLU5ldHdvcmtMYXllcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ2xpZW50IFNvZnR3YXJlOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgQ2xpZW50IFNvZnR3YXJlXHJcbiAgICAtIERGOiBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZSIKICBSb2xlTmFtZTogSVRTTSBDbGllbnQgU29mdHdhcmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIENvbnRhY3Q6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IENvbnRhY3RcclxuCiAgICBcICAgLSBERjogQ29udGFjdC1EaXN0cmlidXRvclxyXG4gICAgLSBERjogQ29udGFjdC1Vc2VyXHJcbiAgICAtIERGOiBDb250YWN0LUFkbWluaXN0cmF0b3IiCiAgUm9sZU5hbWU6IElUU00gQ29udGFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ29udHJhY3Q6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IENvbnRyYWN0XHJcbgogICAgXCAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdFxyXG4gICAgLSBERjogSVRTTS1MZW5zVG9Db250cmFjdFR5cGVcclxuICAgICAgUmVhZG9ubHk6CiAgICAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kRnJvbVxyXG4gICAgICBSZWFkb25seTogMVxyXG4gICAgLSBERjoKICAgIElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RVbnRpbFxyXG4gICAgICBSZWFkb25seTogMSIKICBSb2xlTmFtZTogSVRTTSBDb250cmFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ1BVOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBIZWFkZXI6IENQVVxyXG4KICAgIFwgICAgIC0gREY6IENQVS1DUFVDbGFzc1xyXG4gICAgICAtIERGOiBDUFUtTnVtYmVyT2ZDUFVcclxuICAgICAgLSBERjogQ1BVLVBoeXNpY2FsQ29yZXNcclxuCiAgICBcICAgICAtIERGOiBDUFUtVGhyZWFkc1xyXG4gICAgICAtIERGOiBDUFUtQ2xvY2tzcGVlZFxyXG4gICAgICAtIERGOiBDUFUtU29ja2V0VHlwZSIKICBSb2xlTmFtZTogSVRTTSBDUFUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEZvcm0gRmFjdG9yOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgRm9ybSBGYWN0b3JcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVR5cGVcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0c1xyXG4KICAgIFwgICAtIERGOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGhcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVdlaWdodCIKICBSb2xlTmFtZTogSVRTTSBGb3JtIEZhY3RvcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNQXBwbGlhbmNlLUFwcGxpYW5jZVR5cGUiCiAgUm9sZU5hbWU6IElUU00gR0YgQXBwbGlhbmNlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01DZXJ0aWZpY2F0ZS1UeXBlXHJcbiAgICAgIC0gREY6CiAgICBJVFNNQ2VydGlmaWNhdGUtQ3JlYXRpb25EYXRlXHJcbiAgICAgIC0gREY6IElUU01DZXJ0aWZpY2F0ZS1FeHBpcnlEYXRlIgogIFJvbGVOYW1lOiBJVFNNIEdGIENlcnRpZmljYXRlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01DbGllbnQtQ2xpZW50Q2F0ZWdvcnlcclxuICAgICAgLQogICAgREY6IElUU01DbGllbnQtRmlybXdhcmUiCiAgUm9sZU5hbWU6IElUU00gR0YgQ2xpZW50Ci0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBTdW1tYXJ5XHJcbiAgICAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9TZXJ2ZXIiCiAgUm9sZU5hbWU6IElUU00gR0YgQ2x1c3RlcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBDb250cmFjdC1UeXBlXHJcbiAgICAgIC0gREY6IENvbnRyYWN0LVBlcmlvZEZyb21cclxuCiAgICBcICAgICAtIERGOiBDb250cmFjdC1QZXJpb2RVbnRpbCIKICBSb2xlTmFtZTogSVRTTSBHRiBDb250cmFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNU29mdHdhcmUtRGF0YWJhc2VUeXBlXHJcbiAgICAgIC0KICAgIERGOiBJVFNNU29mdHdhcmUtRGF0ZVJlbGVhc2VcclxuICAgICAgLSBERjogSVRTTVNvZnR3YXJlLURhdGVFbmRPZlN1cHBvcnQiCiAgUm9sZU5hbWU6IElUU00gR0YgRGF0YWJhc2UKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTURpc3BsYXktU2l6ZUluY2hcclxuICAgICAgLSBERjoKICAgIElUU01EaXNwbGF5LVR5cGVcclxuICAgICAgLSBERjogSVRTTURpc3BsYXktUmVzb2x1dGlvblxyXG4gICAgICAtIERGOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5IgogIFJvbGVOYW1lOiBJVFNNIEdGIERpc3BsYXkKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTUlQTmV0d29yay1OZXR3b3JrTGF5ZXJcclxuICAgICAgLQogICAgREY6IElUU01JUE5ldHdvcmstSVBQcm90b2NvbFxyXG4gICAgICAtIERGOiBJVFNNSVBOZXR3b3JrLUFkZHJlc3NBbGxvY2F0aW9uXHJcbgogICAgXCAgICAgLSBERjogSVRTTUlQTmV0d29yay1JUFJhbmdlU3RhcnRcclxuICAgICAgLSBERjogSVRTTUlQTmV0d29yay1JUFJhbmdlRW5kXHJcbgogICAgXCAgICAgLSBERjogSVRTTUlQTmV0d29yay1DSURSIgogIFJvbGVOYW1lOiBJVFNNIEdGIElQIE5ldHdvcmsKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGVcclxuICAgICAgLQogICAgREY6IElUU01MaWNlbnNlLUxpY2Vuc2VLZXlcclxuICAgICAgLSBERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50XHJcbiAgICAgIC0KICAgIERGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbVxyXG4gICAgICAtIERGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwiCiAgUm9sZU5hbWU6IElUU00gR0YgTGljZW5zZQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNT3RoZXJBY2Nlc3Nvcmllcy1UeXBlIgogIFJvbGVOYW1lOiBJVFNNIEdGIE90aGVyIEFjY2Vzc29yaWVzCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01QaG9uZS1UeXBlXHJcbiAgICAgIC0gREY6IElUU01QaG9uZS1OdW1iZXIiCiAgUm9sZU5hbWU6IElUU00gR0YgUGhvbmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFJhY2s6XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1Jvb21cclxuCiAgICBcIEFkZHJlc3M6XHJcbiAgICBUeXBlOiBSZWZlcmVuY2VkU2VjdGlvblxyXG4gICAgUmVmZXJlbmNlRmllbGQ6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbVxyXG4KICAgIFwgICBTZWN0aW9uTmFtZTogQWRkcmVzcyIKICBSb2xlTmFtZTogSVRTTSBHRiBSYWNrCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01TSU0tQ2FyZG51bWJlclxyXG4gICAgICAtIERGOiBJVFNNU0lNLVBJTlxyXG4KICAgIFwgICAgIC0gREY6IElUU01TSU0tUElOMlxyXG4gICAgICAtIERGOiBJVFNNU0lNLVBVS1xyXG4gICAgICAtIERGOiBJVFNNU0lNLVBVSzJcclxuCiAgICBcICAgICAtIERGOiBJVFNNU0lNLU1vYmlsZU51bWJlclxyXG4gICAgICAtIERGOiBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3RcclxuICAgICAgLQogICAgREY6IElUU01TSU0tVHlwZSIKICBSb2xlTmFtZTogSVRTTSBHRiBTSU0gQ2FyZAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNVVBTLU1heGltdW1Mb2FkQ2FwYWNpdHlcclxuICAgICAgLQogICAgREY6IElUU01VUFMtQmF0dGVyeVR5cGVcclxuICAgICAgLSBERjogSVRTTVVQUy1CYXR0ZXJ5Q2FwYWNpdHkiCiAgUm9sZU5hbWU6IElUU00gR0YgVVBTCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHcmFwaGljcyBDYXJkOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgR3JhcGhpY3MgQ2FyZHNcclxuICAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yXHJcbiAgICAtIERGOiBJVFNNR3JhcGhpY3NDYXJkLUNvdW50XHJcbgogICAgXCAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVxyXG4gICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCXHJcbgogICAgXCAgICAgUmVhZG9ubHk6IDFcclxuICAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZVxyXG4gICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2VcclxuCiAgICBcICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzIgogIFJvbGVOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmQKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIExpY2Vuc2U6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IExpY2Vuc2VcclxuCiAgICBcICAgLSBERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2VcclxuICAgIC0gREY6IElUU00tTGVuc1RvTGljZW5zZVR5cGVcclxuICAgICAgUmVhZG9ubHk6CiAgICAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudFxyXG4gICAgICBSZWFkb25seTogMVxyXG4gICAgLSBERjogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbVxyXG4KICAgIFwgICAgIFJlYWRvbmx5OiAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbFxyXG4gICAgICBSZWFkb25seToKICAgIDEiCiAgUm9sZU5hbWU6IElUU00gTGljZW5zZQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTWVtb3J5OlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOiBNZW1vcnlcclxuCiAgICBcICAgLSBERjogSVRTTU1lbW9yeS1Db3VudFxyXG4gICAgLSBERjogSVRTTU1lbW9yeS1DYXBhY2l0eVxyXG4gICAgLSBERjogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCXHJcbgogICAgXCAgICAgUmVhZG9ubHk6IDFcclxuICAgIC0gREY6IElUU01NZW1vcnktQ2xvY2tSYXRlXHJcbiAgICAtIERGOiBJVFNNTWVtb3J5LVR5cGUiCiAgUm9sZU5hbWU6IElUU00gTWVtb3J5Ci0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBNb2RlbDpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjogSGFyZHdhcmUKICAgIE1vZGVsXHJcbiAgICAtIERGOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyXHJcbiAgICAtIERGOiBJVFNNTW9kZWwtTW9kZWxcclxuICAgIC0KICAgIERGOiBJVFNNTW9kZWwtU2VydmljZVRhZ1xyXG4gICAgLSBERjogSVRTTU1vZGVsLVNlcmlhbE51bWJlclxyXG4gICAgLSBERjogSVRTTU1vZGVsLU1vZGVsTm90ZSIKICBSb2xlTmFtZTogSVRTTSBNb2RlbAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTmV0d29yayBJbmZvOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgTmV0d29ya1xyXG4gICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvIgogIFJvbGVOYW1lOiBJVFNNIE5ldHdvcmsgSW5mbwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIE9wZXJhdGluZyBTeXN0ZW1cclxuICAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9PUyIKICBSb2xlTmFtZTogSVRTTSBPcGVyYXRpbmcgU3lzdGVtCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBTZXJ2ZXI6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IFNlcnZlclxyXG4KICAgIFwgICAtIERGOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyIgogIFJvbGVOYW1lOiBJVFNNIFNlcnZlcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgU2VydmVyIFNvZnR3YXJlOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgU2VydmVyIFNvZnR3YXJlXHJcbiAgICAtIERGOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZSIKICBSb2xlTmFtZTogSVRTTSBTZXJ2ZXIgU29mdHdhcmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFNJTSBDYXJkOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOiBTSU0KICAgIENhcmRcclxuICAgIC0gREY6IElUU01TSU0tUmVmZXJlbmNldG9TSU1DYXJkXHJcbiAgICAtIERGOiBJVFNNU0lNLUxlbnN0b1NJTUlNb2JpbGVOdW1iZXIiCiAgUm9sZU5hbWU6IElUU00gU0lNIENhcmQKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFN0b3JhZ2U6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IFN0b3JhZ2VcclxuCiAgICBcICAgLSBERjogSVRTTVN0b3JhZ2UtU3RvcmFnZSIKICBSb2xlTmFtZTogSVRTTSBTdG9yYWdlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIFN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24iCiAgUm9sZU5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBDb250cmFjdAogICAgTmFtZTogTGljZW5zZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtCiAgICBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvdW50IG9mIGxpY2Vuc2VzCiAgICAgIE5hbWU6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZUtleToKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBMaWNlbnNlIEtleQogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlS2V5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogMAogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6IDAKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxMCcKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1BMQWZmZXJvR2VuZXJhbFB1YmxpY0xpY2Vuc2U6IEFHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgQXBhY2hlTGljZW5zZTogQXBhY2hlIExpY2Vuc2UKICAgICAgICAgIEJTRExpY2Vuc2VCZXJrZWxleVNvZnR3YXJlRGlzdHJpYnV0aW9uTGljZW5zZTogQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlCiAgICAgICAgICAgIERpc3RyaWJ1dGlvbiBMaWNlbnNlKQogICAgICAgICAgQ0MwQ3JlYXRpdmVDb21tb25zWmVybzogQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pCiAgICAgICAgICBDcmVhdGl2ZUNvbW1vbnM6IENyZWF0aXZlIENvbW1vbnMKICAgICAgICAgIEVQTEVjbGlwc2VQdWJsaWNMaWNlbnNlOiBFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpCiAgICAgICAgICBGcmVld2FyZTogRnJlZXdhcmUKICAgICAgICAgIEdQTEdlbmVyYWxQdWJsaWNMaWNlbnNlOiBHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpCiAgICAgICAgICBMR1BMTGVzc2VyR2VuZXJhbFB1YmxpY0xpY2Vuc2U6IExHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgTUlUTGljZW5zZTogTUlUIExpY2Vuc2UKICAgICAgICAgIE1QTE1vemlsbGFQdWJsaWNMaWNlbnNlOiBNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBlcnBldHVhbGxpY2Vuc2VzOiBQZXJwZXR1YWwgbGljZW5zZXMKICAgICAgICAgIFB1YmxpY0RvbWFpbjogUHVibGljIERvbWFpbgogICAgICAgICAgU2VhdGxpY2Vuc2VzOiBTZWF0IGxpY2Vuc2VzCiAgICAgICAgICBTaGFyZXdhcmU6IFNoYXJld2FyZQogICAgICAgICAgU3Vic2NyaXB0aW9uYmFzZWRsaWNlbnNlczogU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzCiAgICAgICAgICBWb2x1bWVsaWNlbnNlczogVm9sdW1lIGxpY2Vuc2VzCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBNb2JpbGUgRGV2aWNlCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFNJTSBDYXJkOjpTSU0KICAgIENhcmRcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUKICAgIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZAogICAgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIKICAgIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLAogICAgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lCiAgICBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcwogICAgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIFNJTSBDYXJkOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIFNJTSBDYXJkXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQgogICAgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLUxlbnN0b1NJTUlNb2JpbGVOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNU0lNLU1vYmlsZU51bWJlcgogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNU0lNLVJlZmVyZW5jZXRvU0lNQ2FyZAogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU01TSU0tUmVmZXJlbmNldG9TSU1DYXJkCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBNb2JpbGUgTnVtYmVyCiAgICAgIE5hbWU6IElUU01TSU0tTGVuc3RvU0lNSU1vYmlsZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNJTS1SZWZlcmVuY2V0b1NJTUNhcmQ6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gU0lNIENhcmQKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU0lNIENhcmQKICAgICAgTmFtZTogSVRTTVNJTS1SZWZlcmVuY2V0b1NJTUNhcmQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBTb2Z0d2FyZQogICAgTmFtZTogT3BlcmF0aW5nIFN5c3RlbQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIExpY2Vuc2U6OkxpY2Vuc2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOgogICAgMlxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTQogICAgTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBPdGhlciBBY2Nlc3NvcmllcwogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIE90aGVyIEFjY2Vzc29yaWVzXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZToKICAgIENNREIgQWNjb3VudGluZ1xyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZAogICAgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbgogICAgXCBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNT3RoZXJBY2Nlc3Nvcmllcy1UeXBlOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIENhcmQgUmVhZGVyOiBDYXJkIFJlYWRlcgogICAgICAgICAgRXh0ZXJuYWwgSGFyZCBEcml2ZTogRXh0ZXJuYWwgSGFyZCBEcml2ZQogICAgICAgICAgSGVhZHNldDogSGVhZHNldAogICAgICAgICAgS2V5Ym9hcmQ6IEtleWJvYXJkCiAgICAgICAgICBNb3VzZTogTW91c2UKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU3BlYWtlcnM6IFNwZWFrZXJzCiAgICAgICAgICBVU0IgSHViOiBVU0IgSHViCiAgICAgICAgICBWUiBIZWFkc2V0OiBWUiBIZWFkc2V0CiAgICAgICAgICBXZWJjYW06IFdlYmNhbQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTU90aGVyQWNjZXNzb3JpZXMtVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogUGhvbmUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAzXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbAogICAgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuCiAgICBcIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuCiAgICBcIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4KICAgIFwgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBQaG9uZVxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbgogICAgXCBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6CiAgICBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIENNREIKICAgIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIKICAgIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNUGhvbmUtTnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUGhvbmUgTnVtYmVyCiAgICAgIE5hbWU6IElUU01QaG9uZS1OdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01QaG9uZS1UeXBlOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFuYWxvZyBQaG9uZTogQW5hbG9nIFBob25lCiAgICAgICAgICBDb25mZXJlbmNlIFBob25lOiBDb25mZXJlbmNlIFBob25lCiAgICAgICAgICBDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSk6IENvcmRsZXNzIFBob25lIChERUNUIFBob25lKQogICAgICAgICAgTGFuZGxpbmUgUGhvbmU6IExhbmRsaW5lIFBob25lCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFNhdGVsbGl0ZSBQaG9uZTogU2F0ZWxsaXRlIFBob25lCiAgICAgICAgICBWb0lQIFBob25lOiBWb0lQIFBob25lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUGhvbmUgVHlwZQogICAgICBOYW1lOiBJVFNNUGhvbmUtVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogUHJpbnRlcgogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrCiAgICBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG4KICAgIFwgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUKICAgIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvCiAgICBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkCiAgICB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljCiAgICBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aAogICAgdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUKICAgIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuCiAgICBcIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZTogSVRTTSBOZXR3b3JrIEluZm9cclxuICBDTURCIEFjY291bnRpbmc6XHJcbgogICAgXCAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuCiAgICBcIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogUHJvamVjdG9yCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsKICAgIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZQogICAgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28KICAgIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQKICAgIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMKICAgIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoCiAgICB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZQogICAgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbgogICAgXCAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4KICAgIFwgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICAtIExvY2F0aW9uCiAgICAtIE5ldHdvcmsgSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFJhY2sKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBSb29tXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDIgICAgICAgIFxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcblJvbGVzOlxyXG4KICAgIFwgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjCiAgICBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuCiAgICBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTQogICAgRm9ybSBGYWN0b3I6XHJcbiAgICBOYW1lOiBJVFNNIEZvcm0gRmFjdG9yXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvblxyXG5cclxuU2VjdGlvbnM6XHJcbgogICAgXCBSb29tOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tXHJcbiAgQWRkcmVzczpcclxuCiAgICBcICAgVHlwZTogUmVmZXJlbmNlZFNlY3Rpb25cclxuICAgIFJlZmVyZW5jZUZpZWxkOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1Jvb21cclxuCiAgICBcICAgU2VjdGlvbk5hbWU6IEFkZHJlc3NcclxuICAgIEZpZWxkTGlzdFByZTpcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tIgogIER5bmFtaWNGaWVsZHM6CiAgICBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGg6CiAgICAgIENJQ2xhc3M6IFJhY2sKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAyMy42IGluY2hlcyAoNjAwIG1tKTogMjMuNiBpbmNoZXMgKDYwMCBtbSkKICAgICAgICAgIDMxLjUgaW5jaGVzICg4MDAgbW0pOiAzMS41IGluY2hlcyAoODAwIG1tKQogICAgICAgICAgMzUuNCBpbmNoZXMgKDkwMCBtbSk6IDM1LjQgaW5jaGVzICg5MDAgbW0pCiAgICAgICAgICAzOS40IGluY2hlcyAoMTAwMCBtbSk6IDM5LjQgaW5jaGVzICgxMDAwIG1tKQogICAgICAgICAgNDMuMyBpbmNoZXMgKDExMDAgbW0pOiAnNDMuMyBpbmNoZXMgKDExMDAgbW0pOicKICAgICAgICAgIDQ3LjIgaW5jaGVzICgxMjAwIG1tKTogNDcuMiBpbmNoZXMgKDEyMDAgbW0pCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBSYWNrIERlcHRoCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tEZXB0aAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItUmFja1VuaXRzOgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKScKICAgICAgICAgICcxMCc6ICcxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknCiAgICAgICAgICAnMTInOiAnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKScKICAgICAgICAgICcxNSc6ICcxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJwogICAgICAgICAgJzE4JzogJzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKScKICAgICAgICAgICcyJzogJzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKScKICAgICAgICAgICcyMCc6ICcyMFU6IDM1IGluY2hlcyAoODguOSBjbSknCiAgICAgICAgICAnMjInOiAnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJwogICAgICAgICAgJzI0JzogJzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJwogICAgICAgICAgJzI3JzogJzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJwogICAgICAgICAgJzMnOiAnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknCiAgICAgICAgICAnMzAnOiAnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKScKICAgICAgICAgICczMyc6ICczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKScKICAgICAgICAgICczNic6ICczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKScKICAgICAgICAgICczOSc6ICczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKScKICAgICAgICAgICc0JzogJzRVOiA3IGluY2hlcyAoMTcuNzggY20pJwogICAgICAgICAgJzQyJzogJzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknCiAgICAgICAgICAnNDUnOiAnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknCiAgICAgICAgICAnNDgnOiAnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknCiAgICAgICAgICAnNSc6ICc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKScKICAgICAgICAgICc2JzogJzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJwogICAgICAgICAgJzcnOiAnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJwogICAgICAgICAgJzgnOiAnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJwogICAgICAgICAgJzknOiAnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBVbml0cyAoVSkKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItUmFja1VuaXRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1UeXBlOgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTktaW5jaCBSYWNrOiAxOS1pbmNoIFJhY2sKICAgICAgICAgIDIxLWluY2ggUmFjazogMjEtaW5jaCBSYWNrCiAgICAgICAgICAyMy1pbmNoIFJhY2s6IDIzLWluY2ggUmFjawogICAgICAgICAgQ3VzdG9tIFJhY2s6IEN1c3RvbSBSYWNrCiAgICAgICAgICBFVFNJIFJhY2s6IEVUU0kgUmFjawogICAgICAgICAgTWluaS1SYWNrOiBNaW5pLVJhY2sKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVG93ZXI6IFRvd2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogRm9ybSBGYWN0b3IKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItV2VpZ2h0OgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBIYXJkd2FyZSBXZWlnaHQKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItV2VpZ2h0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb1Jvb206CiAgICAgIENJQ2xhc3M6IFJhY2sKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gUm9vbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFJvb20KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTG9jYXRpb24KICAgIE5hbWU6IFJvb20KICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBCdWlsZGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46CiAgICAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzCiAgICBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwKICAgIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UKICAgIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoCiAgICBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24KICAgIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUKICAgIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbgogICAgXCAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb25cclxuXHJcblNlY3Rpb25zOlxyXG4KICAgIFwgQnVpbGRpbmc6XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nXHJcbiAgQWRkcmVzczpcclxuCiAgICBcICAgVHlwZTogUmVmZXJlbmNlZFNlY3Rpb25cclxuICAgIFJlZmVyZW5jZUZpZWxkOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nXHJcbgogICAgXCAgIFNlY3Rpb25OYW1lOiBBZGRyZXNzXHJcbiAgICBGaWVsZExpc3RQcmU6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvQnVpbGRpbmciCiAgRHluYW1pY0ZpZWxkczoKICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvQnVpbGRpbmc6CiAgICAgIENJQ2xhc3M6IFJvb20KICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IEJ1aWxkaW5nCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvQnVpbGRpbmcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIFJvd1NwYW46CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yawogICAgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuICAtIE5hbWU6IExvY2F0ZWQKICAgIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTQogICAgTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbgogICAgXCBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6CiAgICBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIKICAgIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIKICAgIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFNlcnZlcgogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuCiAgICBcIC0gTmFtZTogSGFyZHdhcmVcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjo6U3RvcmFnZSBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcblxyXG4gIC0gTmFtZTogU29mdHdhcmVcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbiAgLSBOYW1lOiBBY2NvdW50aW5nXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IERldGFpbHNcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gU2VydmVyIFNvZnR3YXJlOjpTZXJ2ZXIgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UKICAgIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBGb3JtIEZhY3Rvcjo6Rm9ybSBGYWN0b3JcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDVcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOgogICAgSVRTTSBNb2RlbFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuCiAgICBcICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBPcGVyYXRpbmcgU3lzdGVtOlxyXG4gICAgTmFtZTogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbVxyXG4gIElUU00gU2VydmVyIFNvZnR3YXJlOlxyXG4gICAgTmFtZTogSVRTTSBTZXJ2ZXIgU29mdHdhcmUgIFxyXG4gIElUU00KICAgIENQVTpcclxuICAgIE5hbWU6IElUU00gQ1BVXHJcbiAgSVRTTSBNZW1vcnk6XHJcbiAgICBOYW1lOiBJVFNNIE1lbW9yeVxyXG4gIElUU00KICAgIEdyYXBoaWNzIENhcmQ6XHJcbiAgICBOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmRcclxuICBJVFNNIFN0b3JhZ2U6XHJcbiAgICBOYW1lOgogICAgSVRTTSBTdG9yYWdlXHJcbiAgSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIE5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KICAgIFwgICBcclxuICBJVFNNIEZvcm0gRmFjdG9yOlxyXG4gICAgTmFtZTogSVRTTSBGb3JtIEZhY3RvclxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIKICAgIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIKICAgIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDUFUtQ1BVQ2xhc3M6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERlc2t0b3A6IERlc2t0b3AKICAgICAgICAgIExhcHRvcDogTGFwdG9wCiAgICAgICAgICBNb2JpbGVFbWJlZGRlZDogTW9iaWxlL0VtYmVkZGVkCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFNlcnZlcjogU2VydmVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ1BVIENsYXNzCiAgICAgIE5hbWU6IENQVS1DUFVDbGFzcwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLUNsb2Nrc3BlZWQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE2R0h6OiAxLjYgR0h6CiAgICAgICAgICAxN0dIejogMS43IEdIegogICAgICAgICAgMThHSHo6IDEuOCBHSHoKICAgICAgICAgIDE5R0h6OiAxLjkgR0h6CiAgICAgICAgICAyMEdIejogMi4wIEdIegogICAgICAgICAgMjFHSHo6IDIuMSBHSHoKICAgICAgICAgIDIyR0h6OiAyLjIgR0h6CiAgICAgICAgICAyM0dIejogMi4zIEdIegogICAgICAgICAgMjRHSHo6IDIuNCBHSHoKICAgICAgICAgIDI1R0h6OiAyLjUgR0h6CiAgICAgICAgICAyNkdIejogMi42IEdIegogICAgICAgICAgMjdHSHo6IDIuNyBHSHoKICAgICAgICAgIDI4R0h6OiAyLjggR0h6CiAgICAgICAgICAyOUdIejogMi45IEdIegogICAgICAgICAgMzBHSHo6IDMuMCBHSHoKICAgICAgICAgIDMxR0h6OiAzLjEgR0h6CiAgICAgICAgICAzMkdIejogMy4yIEdIegogICAgICAgICAgMzNHSHo6IDMuMyBHSHoKICAgICAgICAgIDM0R0h6OiAzLjQgR0h6CiAgICAgICAgICAzNUdIejogMy41IEdIegogICAgICAgICAgMzZHSHo6IDMuNiBHSHoKICAgICAgICAgIDM3R0h6OiAzLjcgR0h6CiAgICAgICAgICAzOEdIejogMy44IEdIegogICAgICAgICAgMzlHSHo6IDMuOSBHSHoKICAgICAgICAgIDQwR0h6OiA0LjAgR0h6CiAgICAgICAgICA0MUdIejogNC4xIEdIegogICAgICAgICAgNDJHSHo6IDQuMiBHSHoKICAgICAgICAgIDQzR0h6OiA0LjMgR0h6CiAgICAgICAgICA0NEdIejogNC40IEdIegogICAgICAgICAgNDVHSHo6IDQuNSBHSHoKICAgICAgICAgIDQ2R0h6OiA0LjYgR0h6CiAgICAgICAgICA0N0dIejogNC43IEdIegogICAgICAgICAgNDhHSHo6IDQuOCBHSHoKICAgICAgICAgIDQ5R0h6OiA0LjkgR0h6CiAgICAgICAgICA1MEdIejogNS4wIEdIegogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tzcGVlZAogICAgICBOYW1lOiBDUFUtQ2xvY2tzcGVlZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLU51bWJlck9mQ1BVOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBDUFVzCiAgICAgIE5hbWU6IENQVS1OdW1iZXJPZkNQVQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVBoeXNpY2FsQ29yZXM6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQaHlzaWNhbCBDb3JlcwogICAgICBOYW1lOiBDUFUtUGh5c2ljYWxDb3JlcwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVNvY2tldFR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNNDogQU00CiAgICAgICAgICBCR0E6IEJHQQogICAgICAgICAgTEdBMTE1MTogTEdBMTE1MQogICAgICAgICAgTEdBMTIwMDogTEdBMTIwMAogICAgICAgICAgTEdBMTM2NjogTEdBMTM2NgogICAgICAgICAgTEdBMTcwMDogTEdBMTcwMAogICAgICAgICAgTEdBMjAxMTogTEdBMjAxMQogICAgICAgICAgTEdBMjAxMTM6IExHQTIwMTEtMwogICAgICAgICAgTEdBMjA2NjogTEdBMjA2NgogICAgICAgICAgTEdBNzc1OiBMR0E3NzUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUEdBOiBQR0EKICAgICAgICAgIFNvY2tldDM3MDogU29ja2V0IDM3MAogICAgICAgICAgU29ja2V0NDc4OiBTb2NrZXQgNDc4CiAgICAgICAgICBUUjQ6IFRSNAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFNvY2tldCBUeXBlCiAgICAgIE5hbWU6IENQVS1Tb2NrZXRUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtVGhyZWFkczoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFRocmVhZHMKICAgICAgTmFtZTogQ1BVLVRocmVhZHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvT1M6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBPcGVyYXRpbmcgU3lzdGVtCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb09TCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tEZXB0aDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKScKICAgICAgICAgICcxMCc6ICcxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknCiAgICAgICAgICAnMTInOiAnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKScKICAgICAgICAgICcxNSc6ICcxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJwogICAgICAgICAgJzE4JzogJzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKScKICAgICAgICAgICcyJzogJzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKScKICAgICAgICAgICcyMCc6ICcyMFU6IDM1IGluY2hlcyAoODguOSBjbSknCiAgICAgICAgICAnMjInOiAnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJwogICAgICAgICAgJzI0JzogJzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJwogICAgICAgICAgJzI3JzogJzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJwogICAgICAgICAgJzMnOiAnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknCiAgICAgICAgICAnMzAnOiAnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKScKICAgICAgICAgICczMyc6ICczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKScKICAgICAgICAgICczNic6ICczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKScKICAgICAgICAgICczOSc6ICczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKScKICAgICAgICAgICc0JzogJzRVOiA3IGluY2hlcyAoMTcuNzggY20pJwogICAgICAgICAgJzQyJzogJzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknCiAgICAgICAgICAnNDUnOiAnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknCiAgICAgICAgICAnNDgnOiAnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknCiAgICAgICAgICAnNSc6ICc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKScKICAgICAgICAgICc2JzogJzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJwogICAgICAgICAgJzcnOiAnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJwogICAgICAgICAgJzgnOiAnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJwogICAgICAgICAgJzknOiAnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBVbml0cyAoVSkKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItUmFja1VuaXRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAxOS1pbmNoIFJhY2s6IDE5LWluY2ggUmFjawogICAgICAgICAgMjEtaW5jaCBSYWNrOiAyMS1pbmNoIFJhY2sKICAgICAgICAgIDIzLWluY2ggUmFjazogMjMtaW5jaCBSYWNrCiAgICAgICAgICBDdXN0b20gUmFjazogQ3VzdG9tIFJhY2sKICAgICAgICAgIEVUU0kgUmFjazogRVRTSSBSYWNrCiAgICAgICAgICBNaW5pLVJhY2s6IE1pbmktUmFjawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUb3dlcjogVG93ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBGb3JtIEZhY3RvcgogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1XZWlnaHQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFHUDogQUdQCiAgICAgICAgICBFSVNBOiBFSVNBCiAgICAgICAgICBGaXJlV2lyZUlFRUUxMzk0OiBGaXJlV2lyZSAoSUVFRSAxMzk0KQogICAgICAgICAgSVNBOiBJU0EKICAgICAgICAgIExQQ0xvd1BpbkNvdW50OiBMUEMgKExvdyBQaW4gQ291bnQpCiAgICAgICAgICBNQ0FNaWNyb0NoYW5uZWxBcmNoaXRlY3R1cmU6IE1DQSAoTWljcm8gQ2hhbm5lbCBBcmNoaXRlY3R1cmUpCiAgICAgICAgICBOdUJ1czogTnVCdXMKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUENJOiBQQ0kKICAgICAgICAgIFBDSUV4cHJlc3NQQ0llOiBQQ0kgRXhwcmVzcyAoUENJZSkKICAgICAgICAgIFBDSVg6IFBDSS1YCiAgICAgICAgICBUaHVuZGVyYm9sdDogVGh1bmRlcmJvbHQKICAgICAgICAgIFVTQkM6IFVTQi1DCiAgICAgICAgICBVU0JVbml2ZXJzYWxTZXJpYWxCdXM6IFVTQiAoVW5pdmVyc2FsIFNlcmlhbCBCdXMpCiAgICAgICAgICBWRVNBTG9jYWxCdXNWTEI6IFZFU0EgTG9jYWwgQnVzIChWTEIpCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQnVzIEludGVyZmFjZQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLUJ1c0ludGVyZmFjZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Db3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAxIEdCCiAgICAgICAgICAnMTEnOiAxMSBHQgogICAgICAgICAgJzEyOCc6IDEyOCBHQgogICAgICAgICAgJzE2JzogMTYgR0IKICAgICAgICAgICcyJzogMiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNCc6IDQgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZAogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgR0REUjU6IEdERFI1CiAgICAgICAgICBHRERSNVg6IEdERFI1WAogICAgICAgICAgR0REUjY6IEdERFI2CiAgICAgICAgICBHRERSNlg6IEdERFI2WAogICAgICAgICAgSEJNMjogSEJNMgogICAgICAgICAgSEJNMkU6IEhCTTJFCiAgICAgICAgICBIQk1IaWdoQmFuZHdpZHRoTWVtb3J5OiBIQk0gKEhpZ2ggQmFuZHdpZHRoIE1lbW9yeSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1lbW9yeSBUeXBlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudFwiICVdWyUgQ2FwYWNpdHkKICAgICAgICAgID0gXCJEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplXCIgJV1cclxuWyUgVG90YWwgPSBEYXRhLiRDb3VudAogICAgICAgICAgKiBEYXRhLiRDYXBhY2l0eSAlXVxyXG5bJSBUb3RhbCAlXSBHQiIKICAgICAgICBJbnRlcnByZXRlcjogfgogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgUmVhZG9ubHk6ICcxJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSZXF1aXJlZEFyZ3M6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gTmFtZVVwZGF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25DcmVhdGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQikKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LUNhcGFjaXR5OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAyNCc6IDEwMjQgR0IKICAgICAgICAgICcxMic6IDEyIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgJzk2JzogOTYgR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1DbG9ja1JhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgUkFNIG1vZHVsZXMKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnRcIiAlXVslIENhcGFjaXR5ID0KICAgICAgICAgIFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHlcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50ICogRGF0YS4kQ2FwYWNpdHkKICAgICAgICAgICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25EZWxldGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01NZW1vcnktVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFNlcnZlciBTb2Z0d2FyZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU2VydmVyIFNvZnR3YXJlCiAgICAgIE5hbWU6IElUU01TZXJ2ZXJTb2Z0d2FyZS1SZWZlcmVuY2VUb1NlcnZlclNvZnR3YXJlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZS1TdG9yYWdlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBBREFUQTogQURBVEEKICAgICAgICAgICAgICAgIEFEQVRBVGVjaG5vbG9neTogQURBVEEgVGVjaG5vbG9neQogICAgICAgICAgICAgICAgQXBhY2VyOiBBcGFjZXIKICAgICAgICAgICAgICAgIEJ1ZmZhbG86IEJ1ZmZhbG8KICAgICAgICAgICAgICAgIENvcnNhaXI6IENvcnNhaXIKICAgICAgICAgICAgICAgIENydWNpYWxNaWNyb246IENydWNpYWwgKE1pY3JvbikKICAgICAgICAgICAgICAgIEdUZWNobm9sb2d5V2VzdGVybkRpZ2l0YWw6IEctVGVjaG5vbG9neSAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSEdTVFdlc3Rlcm5EaWdpdGFsOiBIR1NUIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIaXRhY2hpOiBIaXRhY2hpCiAgICAgICAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgICAgICAgIEtpbmdzdG9uOiBLaW5nc3RvbgogICAgICAgICAgICAgICAgS2luZ3N0b25EaWdpdGFsOiBLaW5nc3RvbiBEaWdpdGFsCiAgICAgICAgICAgICAgICBMYUNpZVNlYWdhdGU6IExhQ2llIChTZWFnYXRlKQogICAgICAgICAgICAgICAgTGV4YXI6IExleGFyCiAgICAgICAgICAgICAgICBNYXh0b3I6IE1heHRvcgogICAgICAgICAgICAgICAgT0NaVG9zaGliYTogT0NaIChUb3NoaWJhKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBQTlk6IFBOWQogICAgICAgICAgICAgICAgUGxleHRvcjogUGxleHRvcgogICAgICAgICAgICAgICAgU0toeW5peDogU0sgaHluaXgKICAgICAgICAgICAgICAgIFNhbXN1bmc6IFNhbXN1bmcKICAgICAgICAgICAgICAgIFNhbXN1bmdTZW1pY29uZHVjdG9yOiBTYW1zdW5nIFNlbWljb25kdWN0b3IKICAgICAgICAgICAgICAgIFNhbkRpc2tXZXN0ZXJuRGlnaXRhbDogU2FuRGlzayAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgU2VhZ2F0ZTogU2VhZ2F0ZQogICAgICAgICAgICAgICAgU2lsaWNvblBvd2VyOiBTaWxpY29uIFBvd2VyCiAgICAgICAgICAgICAgICBTb255OiBTb255CiAgICAgICAgICAgICAgICBTdXBlclRhbGVudDogU3VwZXIgVGFsZW50CiAgICAgICAgICAgICAgICBUZWFtR3JvdXA6IFRlYW0gR3JvdXAKICAgICAgICAgICAgICAgIFRvc2hpYmE6IFRvc2hpYmEKICAgICAgICAgICAgICAgIFRyYW5zY2VuZDogVHJhbnNjZW5kCiAgICAgICAgICAgICAgICBXZXN0ZXJuRGlnaXRhbDogV2VzdGVybiBEaWdpdGFsCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBNYW51ZmFjdHVyZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBTZXJpYWxOdW1iZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZQogICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TdG9yYWdlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb246CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIEZyZWUgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE1vdW50IFBvaW50CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlIFBhcnRpdGlvbgogICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFNlcnZlciAodmlydHVhbCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IEhhcmR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG5cclxuICAtIE5hbWU6IFNvZnR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXIgU29mdHdhcmU6OlNlcnZlciBTb2Z0d2FyZVxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuICAtIE5hbWU6IExvY2F0ZWQKICAgIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlCiAgICBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogNVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMKICAgIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLAogICAgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZQogICAgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2gKICAgIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbgogICAgcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZQogICAgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZToKICAgIElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbgogICAgXCAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW1cclxuICBJVFNNIFNlcnZlciBTb2Z0d2FyZTpcclxuICAgIE5hbWU6IElUU00gU2VydmVyIFNvZnR3YXJlICBcclxuICBJVFNNCiAgICBDUFU6XHJcbiAgICBOYW1lOiBJVFNNIENQVVxyXG4gIElUU00gTWVtb3J5OlxyXG4gICAgTmFtZTogSVRTTSBNZW1vcnlcclxuICBJVFNNCiAgICBHcmFwaGljcyBDYXJkOlxyXG4gICAgTmFtZTogSVRTTSBHcmFwaGljcyBDYXJkXHJcbiAgSVRTTSBTdG9yYWdlOlxyXG4gICAgTmFtZToKICAgIElUU00gU3RvcmFnZVxyXG4gIElUU00gU3RvcmFnZSBQYXJ0aXRpb246XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uCiAgICBcICAgXHJcbiAgSVRTTSBGb3JtIEZhY3RvcjpcclxuICAgIE5hbWU6IElUU00gRm9ybSBGYWN0b3JcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuCiAgICBcICAgTmFtZTogSVRTTSBOZXR3b3JrIEluZm9cclxuICBJVFNNIExpY2Vuc2U6XHJcbiAgICBOYW1lOiBJVFNNIExpY2Vuc2VcclxuICBDTURCCiAgICBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ1BVLUNQVUNsYXNzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE2R0h6OiAxLjYgR0h6CiAgICAgICAgICAxN0dIejogMS43IEdIegogICAgICAgICAgMThHSHo6IDEuOCBHSHoKICAgICAgICAgIDE5R0h6OiAxLjkgR0h6CiAgICAgICAgICAyMEdIejogMi4wIEdIegogICAgICAgICAgMjFHSHo6IDIuMSBHSHoKICAgICAgICAgIDIyR0h6OiAyLjIgR0h6CiAgICAgICAgICAyM0dIejogMi4zIEdIegogICAgICAgICAgMjRHSHo6IDIuNCBHSHoKICAgICAgICAgIDI1R0h6OiAyLjUgR0h6CiAgICAgICAgICAyNkdIejogMi42IEdIegogICAgICAgICAgMjdHSHo6IDIuNyBHSHoKICAgICAgICAgIDI4R0h6OiAyLjggR0h6CiAgICAgICAgICAyOUdIejogMi45IEdIegogICAgICAgICAgMzBHSHo6IDMuMCBHSHoKICAgICAgICAgIDMxR0h6OiAzLjEgR0h6CiAgICAgICAgICAzMkdIejogMy4yIEdIegogICAgICAgICAgMzNHSHo6IDMuMyBHSHoKICAgICAgICAgIDM0R0h6OiAzLjQgR0h6CiAgICAgICAgICAzNUdIejogMy41IEdIegogICAgICAgICAgMzZHSHo6IDMuNiBHSHoKICAgICAgICAgIDM3R0h6OiAzLjcgR0h6CiAgICAgICAgICAzOEdIejogMy44IEdIegogICAgICAgICAgMzlHSHo6IDMuOSBHSHoKICAgICAgICAgIDQwR0h6OiA0LjAgR0h6CiAgICAgICAgICA0MUdIejogNC4xIEdIegogICAgICAgICAgNDJHSHo6IDQuMiBHSHoKICAgICAgICAgIDQzR0h6OiA0LjMgR0h6CiAgICAgICAgICA0NEdIejogNC40IEdIegogICAgICAgICAgNDVHSHo6IDQuNSBHSHoKICAgICAgICAgIDQ2R0h6OiA0LjYgR0h6CiAgICAgICAgICA0N0dIejogNC43IEdIegogICAgICAgICAgNDhHSHo6IDQuOCBHSHoKICAgICAgICAgIDQ5R0h6OiA0LjkgR0h6CiAgICAgICAgICA1MEdIejogNS4wIEdIegogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tzcGVlZAogICAgICBOYW1lOiBDUFUtQ2xvY2tzcGVlZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLU51bWJlck9mQ1BVOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgQ1BVcwogICAgICBOYW1lOiBDUFUtTnVtYmVyT2ZDUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1QaHlzaWNhbENvcmVzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNNDogQU00CiAgICAgICAgICBCR0E6IEJHQQogICAgICAgICAgTEdBMTE1MTogTEdBMTE1MQogICAgICAgICAgTEdBMTIwMDogTEdBMTIwMAogICAgICAgICAgTEdBMTM2NjogTEdBMTM2NgogICAgICAgICAgTEdBMTcwMDogTEdBMTcwMAogICAgICAgICAgTEdBMjAxMTogTEdBMjAxMQogICAgICAgICAgTEdBMjAxMTM6IExHQTIwMTEtMwogICAgICAgICAgTEdBMjA2NjogTEdBMjA2NgogICAgICAgICAgTEdBNzc1OiBMR0E3NzUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUEdBOiBQR0EKICAgICAgICAgIFNvY2tldDM3MDogU29ja2V0IDM3MAogICAgICAgICAgU29ja2V0NDc4OiBTb2NrZXQgNDc4CiAgICAgICAgICBUUjQ6IFRSNAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFNvY2tldCBUeXBlCiAgICAgIE5hbWU6IENQVS1Tb2NrZXRUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtVGhyZWFkczoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUaHJlYWRzCiAgICAgIE5hbWU6IENQVS1UaHJlYWRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvT1M6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gT3BlcmF0aW5nIFN5c3RlbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9PUwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknCiAgICAgICAgICAnMTAnOiAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJwogICAgICAgICAgJzEyJzogJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknCiAgICAgICAgICAnMTUnOiAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKScKICAgICAgICAgICcxOCc6ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknCiAgICAgICAgICAnMic6ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknCiAgICAgICAgICAnMjAnOiAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJwogICAgICAgICAgJzIyJzogJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKScKICAgICAgICAgICcyNCc6ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKScKICAgICAgICAgICcyNyc6ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKScKICAgICAgICAgICczJzogJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJwogICAgICAgICAgJzMwJzogJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknCiAgICAgICAgICAnMzMnOiAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknCiAgICAgICAgICAnMzYnOiAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknCiAgICAgICAgICAnMzknOiAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknCiAgICAgICAgICAnNCc6ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKScKICAgICAgICAgICc0Mic6ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJwogICAgICAgICAgJzQ1JzogJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJwogICAgICAgICAgJzQ4JzogJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJwogICAgICAgICAgJzUnOiAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknCiAgICAgICAgICAnNic6ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKScKICAgICAgICAgICc3JzogJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKScKICAgICAgICAgICc4JzogJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKScKICAgICAgICAgICc5JzogJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgVW5pdHMgKFUpCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItVHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE5LWluY2ggUmFjazogMTktaW5jaCBSYWNrCiAgICAgICAgICAyMS1pbmNoIFJhY2s6IDIxLWluY2ggUmFjawogICAgICAgICAgMjMtaW5jaCBSYWNrOiAyMy1pbmNoIFJhY2sKICAgICAgICAgIEN1c3RvbSBSYWNrOiBDdXN0b20gUmFjawogICAgICAgICAgRVRTSSBSYWNrOiBFVFNJIFJhY2sKICAgICAgICAgIE1pbmktUmFjazogTWluaS1SYWNrCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRvd2VyOiBUb3dlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEZvcm0gRmFjdG9yCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVdlaWdodDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIgU29mdHdhcmUKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlciBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2UtU3RvcmFnZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEFEQVRBOiBBREFUQQogICAgICAgICAgICAgICAgQURBVEFUZWNobm9sb2d5OiBBREFUQSBUZWNobm9sb2d5CiAgICAgICAgICAgICAgICBBcGFjZXI6IEFwYWNlcgogICAgICAgICAgICAgICAgQnVmZmFsbzogQnVmZmFsbwogICAgICAgICAgICAgICAgQ29yc2FpcjogQ29yc2FpcgogICAgICAgICAgICAgICAgQ3J1Y2lhbE1pY3JvbjogQ3J1Y2lhbCAoTWljcm9uKQogICAgICAgICAgICAgICAgR1RlY2hub2xvZ3lXZXN0ZXJuRGlnaXRhbDogRy1UZWNobm9sb2d5IChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIR1NUV2VzdGVybkRpZ2l0YWw6IEhHU1QgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhpdGFjaGk6IEhpdGFjaGkKICAgICAgICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgICAgICAgS2luZ3N0b246IEtpbmdzdG9uCiAgICAgICAgICAgICAgICBLaW5nc3RvbkRpZ2l0YWw6IEtpbmdzdG9uIERpZ2l0YWwKICAgICAgICAgICAgICAgIExhQ2llU2VhZ2F0ZTogTGFDaWUgKFNlYWdhdGUpCiAgICAgICAgICAgICAgICBMZXhhcjogTGV4YXIKICAgICAgICAgICAgICAgIE1heHRvcjogTWF4dG9yCiAgICAgICAgICAgICAgICBPQ1pUb3NoaWJhOiBPQ1ogKFRvc2hpYmEpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFBOWTogUE5ZCiAgICAgICAgICAgICAgICBQbGV4dG9yOiBQbGV4dG9yCiAgICAgICAgICAgICAgICBTS2h5bml4OiBTSyBoeW5peAogICAgICAgICAgICAgICAgU2Ftc3VuZzogU2Ftc3VuZwogICAgICAgICAgICAgICAgU2Ftc3VuZ1NlbWljb25kdWN0b3I6IFNhbXN1bmcgU2VtaWNvbmR1Y3RvcgogICAgICAgICAgICAgICAgU2FuRGlza1dlc3Rlcm5EaWdpdGFsOiBTYW5EaXNrIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBTZWFnYXRlOiBTZWFnYXRlCiAgICAgICAgICAgICAgICBTaWxpY29uUG93ZXI6IFNpbGljb24gUG93ZXIKICAgICAgICAgICAgICAgIFNvbnk6IFNvbnkKICAgICAgICAgICAgICAgIFN1cGVyVGFsZW50OiBTdXBlciBUYWxlbnQKICAgICAgICAgICAgICAgIFRlYW1Hcm91cDogVGVhbSBHcm91cAogICAgICAgICAgICAgICAgVG9zaGliYTogVG9zaGliYQogICAgICAgICAgICAgICAgVHJhbnNjZW5kOiBUcmFuc2NlbmQKICAgICAgICAgICAgICAgIFdlc3Rlcm5EaWdpdGFsOiBXZXN0ZXJuIERpZ2l0YWwKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIE1hbnVmYWN0dXJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UKICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU3RvcmFnZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gRnJlZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBNb3VudCBQb2ludAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZSBQYXJ0aXRpb24KICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBTb2Z0d2FyZQogICAgTmFtZTogU2VydmVyIFNvZnR3YXJlCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXI6OlNlcnZlclxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBMaWNlbnNlOjpMaWNlbnNlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00KICAgIFNlcnZlcjpcclxuICAgIE5hbWU6IElUU00gU2VydmVyXHJcbiAgSVRTTSBMaWNlbnNlOlxyXG4gICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbgogICAgXCBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6CiAgICBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyIFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IFNlcnZlciBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlciBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyIFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvU2VydmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gU2VydmVyCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBTZXJ2ZXIKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb1NlcnZlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogU0lNIENhcmQKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udHJhY3Q6OkNvbnRyYWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIFxyXG5Sb2xlczoKICAgIFxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbgogICAgXCAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIFNJTSBDYXJkXHJcbiAgSVRTTSBDb250cmFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udHJhY3RcclxuCiAgICBcIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZToKICAgIENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IENvbnRyYWN0LVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBDb250cmFjdCBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9Db250cmFjdFBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IENvbnRyYWN0LVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogQ29udHJhY3QgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9Db250cmFjdFR5cGU6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogQ29udHJhY3QtVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3QKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvQ29udHJhY3QKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9Db250cmFjdFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9Db250cmFjdDoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQ29udHJhY3QKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogQ29udHJhY3QKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLUNhcmRudW1iZXI6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDYXJkIE51bWJlcgogICAgICBOYW1lOiBJVFNNU0lNLUNhcmRudW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tTW9iaWxlTnVtYmVyOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9iaWxlIE51bWJlcgogICAgICBOYW1lOiBJVFNNU0lNLU1vYmlsZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNJTS1QSU46CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQSU4KICAgICAgTmFtZTogSVRTTVNJTS1QSU4KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tUElOMjoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFBJTiAyCiAgICAgIE5hbWU6IElUU01TSU0tUElOMgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNJTS1QVUs6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQVUsKICAgICAgTmFtZTogSVRTTVNJTS1QVUsKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tUFVLMjoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFBVSyAyCiAgICAgIE5hbWU6IElUU01TSU0tUFVLMgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNJTS1UeXBlOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEVtYmVkZGVkIFNJTSAoZVNJTSk6IEVtYmVkZGVkIFNJTSAoZVNJTSkKICAgICAgICAgIE1pY3JvIFNJTTogTWljcm8gU0lNCiAgICAgICAgICBOYW5vIFNJTTogTmFubyBTSU0KICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU3RhbmRhcmQgU0lNOiBTdGFuZGFyZCBTSU0KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDYXJkIFR5cGUKICAgICAgTmFtZTogSVRTTVNJTS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBTbWFydGJvYXJkCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgIFxyXG4KICAgIFwgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIERpc3BsYXlcclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4KICAgIFwgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkIGluOlxyXG4gICAgTmFtZTogQ01EQgogICAgTG9jYXRlZCBpblxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktUG93ZXJEZWxpdmVyeToKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIE5vOiBObwogICAgICAgICAgWWVzOiBZZXMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQb3dlciBEZWxpdmVyeQogICAgICBOYW1lOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1SZXNvbHV0aW9uOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMksgKDIwNDggeCAxMDgwKTogMksgKDIwNDggeCAxMDgwKQogICAgICAgICAgJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JzogJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JwogICAgICAgICAgNUsgKDUxMjAgeCAyODgwKTogNUsgKDUxMjAgeCAyODgwKQogICAgICAgICAgOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKTogOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKQogICAgICAgICAgRnVsbCBIRCAoMTkyMCB4IDEwODApOiBGdWxsIEhEICgxOTIwIHggMTA4MCkKICAgICAgICAgIEhEICgxMjgwIHggNzIwKTogSEQgKDEyODAgeCA3MjApCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFF1YWQgSEQgKDI1NjAgeCAxNDQwKTogUXVhZCBIRCAoMjU2MCB4IDE0NDApCiAgICAgICAgICBVV1FIRCAoMzQ0MCB4IDE0NDApOiBVV1FIRCAoMzQ0MCB4IDE0NDApCiAgICAgICAgICBXVVhHQSAoMTkyMCB4IDEyMDApOiBXVVhHQSAoMTkyMCB4IDEyMDApCiAgICAgICAgICBXWEdBICgxMzY2IHggNzY4KTogV1hHQSAoMTM2NiB4IDc2OCkKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNb25pdG9yIFJlc29sdXRpb24KICAgICAgTmFtZTogSVRTTURpc3BsYXktUmVzb2x1dGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktU2l6ZUluY2g6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMjcnOiAyNyIKICAgICAgICAgICczMic6IDMyIgogICAgICAgICAgJzM0JzogMzQiCiAgICAgICAgICAnMzUnOiAzNSIKICAgICAgICAgICc0MCc6IDQwIgogICAgICAgICAgJzQzJzogNDMiCiAgICAgICAgICAnNDknOiA0OSIKICAgICAgICAgICc1NSc6IDU1IgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTW9uaXRvciBTaXplCiAgICAgIE5hbWU6IElUU01EaXNwbGF5LVNpemVJbmNoCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1UeXBlOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpOiBMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSkKICAgICAgICAgIExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSk6IExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSk6IE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodAogICAgICAgICAgICBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVG91Y2hzY3JlZW4gTW9uaXRvcjogVG91Y2hzY3JlZW4gTW9uaXRvcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTURpc3BsYXktVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFN0b3JhZ2UKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IEhhcmR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG5cclxuICAtIE5hbWU6IFNvZnR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXIgU29mdHdhcmU6OlNlcnZlciBTb2Z0d2FyZVxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuICAtIE5hbWU6IExvY2F0ZWQKICAgIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlCiAgICBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogNVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMKICAgIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLAogICAgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZQogICAgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2gKICAgIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbgogICAgcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZQogICAgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZToKICAgIElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbgogICAgXCAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW1cclxuICBJVFNNIFNlcnZlciBTb2Z0d2FyZTpcclxuICAgIE5hbWU6IElUU00gU2VydmVyIFNvZnR3YXJlICBcclxuICBJVFNNCiAgICBDUFU6XHJcbiAgICBOYW1lOiBJVFNNIENQVVxyXG4gIElUU00gTWVtb3J5OlxyXG4gICAgTmFtZTogSVRTTSBNZW1vcnlcclxuICBJVFNNCiAgICBHcmFwaGljcyBDYXJkOlxyXG4gICAgTmFtZTogSVRTTSBHcmFwaGljcyBDYXJkXHJcbiAgSVRTTSBTdG9yYWdlOlxyXG4gICAgTmFtZToKICAgIElUU00gU3RvcmFnZVxyXG4gIElUU00gU3RvcmFnZSBQYXJ0aXRpb246XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uCiAgICBcICAgXHJcbiAgSVRTTSBGb3JtIEZhY3RvcjpcclxuICAgIE5hbWU6IElUU00gRm9ybSBGYWN0b3JcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuCiAgICBcICAgTmFtZTogSVRTTSBOZXR3b3JrIEluZm9cclxuICBJVFNNIExpY2Vuc2U6XHJcbiAgICBOYW1lOiBJVFNNIExpY2Vuc2VcclxuICBDTURCCiAgICBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ1BVLUNQVUNsYXNzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE2R0h6OiAxLjYgR0h6CiAgICAgICAgICAxN0dIejogMS43IEdIegogICAgICAgICAgMThHSHo6IDEuOCBHSHoKICAgICAgICAgIDE5R0h6OiAxLjkgR0h6CiAgICAgICAgICAyMEdIejogMi4wIEdIegogICAgICAgICAgMjFHSHo6IDIuMSBHSHoKICAgICAgICAgIDIyR0h6OiAyLjIgR0h6CiAgICAgICAgICAyM0dIejogMi4zIEdIegogICAgICAgICAgMjRHSHo6IDIuNCBHSHoKICAgICAgICAgIDI1R0h6OiAyLjUgR0h6CiAgICAgICAgICAyNkdIejogMi42IEdIegogICAgICAgICAgMjdHSHo6IDIuNyBHSHoKICAgICAgICAgIDI4R0h6OiAyLjggR0h6CiAgICAgICAgICAyOUdIejogMi45IEdIegogICAgICAgICAgMzBHSHo6IDMuMCBHSHoKICAgICAgICAgIDMxR0h6OiAzLjEgR0h6CiAgICAgICAgICAzMkdIejogMy4yIEdIegogICAgICAgICAgMzNHSHo6IDMuMyBHSHoKICAgICAgICAgIDM0R0h6OiAzLjQgR0h6CiAgICAgICAgICAzNUdIejogMy41IEdIegogICAgICAgICAgMzZHSHo6IDMuNiBHSHoKICAgICAgICAgIDM3R0h6OiAzLjcgR0h6CiAgICAgICAgICAzOEdIejogMy44IEdIegogICAgICAgICAgMzlHSHo6IDMuOSBHSHoKICAgICAgICAgIDQwR0h6OiA0LjAgR0h6CiAgICAgICAgICA0MUdIejogNC4xIEdIegogICAgICAgICAgNDJHSHo6IDQuMiBHSHoKICAgICAgICAgIDQzR0h6OiA0LjMgR0h6CiAgICAgICAgICA0NEdIejogNC40IEdIegogICAgICAgICAgNDVHSHo6IDQuNSBHSHoKICAgICAgICAgIDQ2R0h6OiA0LjYgR0h6CiAgICAgICAgICA0N0dIejogNC43IEdIegogICAgICAgICAgNDhHSHo6IDQuOCBHSHoKICAgICAgICAgIDQ5R0h6OiA0LjkgR0h6CiAgICAgICAgICA1MEdIejogNS4wIEdIegogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tzcGVlZAogICAgICBOYW1lOiBDUFUtQ2xvY2tzcGVlZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLU51bWJlck9mQ1BVOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgQ1BVcwogICAgICBOYW1lOiBDUFUtTnVtYmVyT2ZDUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1QaHlzaWNhbENvcmVzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNNDogQU00CiAgICAgICAgICBCR0E6IEJHQQogICAgICAgICAgTEdBMTE1MTogTEdBMTE1MQogICAgICAgICAgTEdBMTIwMDogTEdBMTIwMAogICAgICAgICAgTEdBMTM2NjogTEdBMTM2NgogICAgICAgICAgTEdBMTcwMDogTEdBMTcwMAogICAgICAgICAgTEdBMjAxMTogTEdBMjAxMQogICAgICAgICAgTEdBMjAxMTM6IExHQTIwMTEtMwogICAgICAgICAgTEdBMjA2NjogTEdBMjA2NgogICAgICAgICAgTEdBNzc1OiBMR0E3NzUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUEdBOiBQR0EKICAgICAgICAgIFNvY2tldDM3MDogU29ja2V0IDM3MAogICAgICAgICAgU29ja2V0NDc4OiBTb2NrZXQgNDc4CiAgICAgICAgICBUUjQ6IFRSNAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFNvY2tldCBUeXBlCiAgICAgIE5hbWU6IENQVS1Tb2NrZXRUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtVGhyZWFkczoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUaHJlYWRzCiAgICAgIE5hbWU6IENQVS1UaHJlYWRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvT1M6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gT3BlcmF0aW5nIFN5c3RlbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9PUwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknCiAgICAgICAgICAnMTAnOiAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJwogICAgICAgICAgJzEyJzogJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknCiAgICAgICAgICAnMTUnOiAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKScKICAgICAgICAgICcxOCc6ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknCiAgICAgICAgICAnMic6ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknCiAgICAgICAgICAnMjAnOiAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJwogICAgICAgICAgJzIyJzogJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKScKICAgICAgICAgICcyNCc6ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKScKICAgICAgICAgICcyNyc6ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKScKICAgICAgICAgICczJzogJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJwogICAgICAgICAgJzMwJzogJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknCiAgICAgICAgICAnMzMnOiAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknCiAgICAgICAgICAnMzYnOiAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknCiAgICAgICAgICAnMzknOiAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknCiAgICAgICAgICAnNCc6ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKScKICAgICAgICAgICc0Mic6ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJwogICAgICAgICAgJzQ1JzogJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJwogICAgICAgICAgJzQ4JzogJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJwogICAgICAgICAgJzUnOiAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknCiAgICAgICAgICAnNic6ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKScKICAgICAgICAgICc3JzogJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKScKICAgICAgICAgICc4JzogJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKScKICAgICAgICAgICc5JzogJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgVW5pdHMgKFUpCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItVHlwZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE5LWluY2ggUmFjazogMTktaW5jaCBSYWNrCiAgICAgICAgICAyMS1pbmNoIFJhY2s6IDIxLWluY2ggUmFjawogICAgICAgICAgMjMtaW5jaCBSYWNrOiAyMy1pbmNoIFJhY2sKICAgICAgICAgIEN1c3RvbSBSYWNrOiBDdXN0b20gUmFjawogICAgICAgICAgRVRTSSBSYWNrOiBFVFNJIFJhY2sKICAgICAgICAgIE1pbmktUmFjazogTWluaS1SYWNrCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRvd2VyOiBUb3dlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEZvcm0gRmFjdG9yCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVdlaWdodDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIgU29mdHdhcmUKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlciBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2UtU3RvcmFnZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEFEQVRBOiBBREFUQQogICAgICAgICAgICAgICAgQURBVEFUZWNobm9sb2d5OiBBREFUQSBUZWNobm9sb2d5CiAgICAgICAgICAgICAgICBBcGFjZXI6IEFwYWNlcgogICAgICAgICAgICAgICAgQnVmZmFsbzogQnVmZmFsbwogICAgICAgICAgICAgICAgQ29yc2FpcjogQ29yc2FpcgogICAgICAgICAgICAgICAgQ3J1Y2lhbE1pY3JvbjogQ3J1Y2lhbCAoTWljcm9uKQogICAgICAgICAgICAgICAgR1RlY2hub2xvZ3lXZXN0ZXJuRGlnaXRhbDogRy1UZWNobm9sb2d5IChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIR1NUV2VzdGVybkRpZ2l0YWw6IEhHU1QgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhpdGFjaGk6IEhpdGFjaGkKICAgICAgICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgICAgICAgS2luZ3N0b246IEtpbmdzdG9uCiAgICAgICAgICAgICAgICBLaW5nc3RvbkRpZ2l0YWw6IEtpbmdzdG9uIERpZ2l0YWwKICAgICAgICAgICAgICAgIExhQ2llU2VhZ2F0ZTogTGFDaWUgKFNlYWdhdGUpCiAgICAgICAgICAgICAgICBMZXhhcjogTGV4YXIKICAgICAgICAgICAgICAgIE1heHRvcjogTWF4dG9yCiAgICAgICAgICAgICAgICBPQ1pUb3NoaWJhOiBPQ1ogKFRvc2hpYmEpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFBOWTogUE5ZCiAgICAgICAgICAgICAgICBQbGV4dG9yOiBQbGV4dG9yCiAgICAgICAgICAgICAgICBTS2h5bml4OiBTSyBoeW5peAogICAgICAgICAgICAgICAgU2Ftc3VuZzogU2Ftc3VuZwogICAgICAgICAgICAgICAgU2Ftc3VuZ1NlbWljb25kdWN0b3I6IFNhbXN1bmcgU2VtaWNvbmR1Y3RvcgogICAgICAgICAgICAgICAgU2FuRGlza1dlc3Rlcm5EaWdpdGFsOiBTYW5EaXNrIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBTZWFnYXRlOiBTZWFnYXRlCiAgICAgICAgICAgICAgICBTaWxpY29uUG93ZXI6IFNpbGljb24gUG93ZXIKICAgICAgICAgICAgICAgIFNvbnk6IFNvbnkKICAgICAgICAgICAgICAgIFN1cGVyVGFsZW50OiBTdXBlciBUYWxlbnQKICAgICAgICAgICAgICAgIFRlYW1Hcm91cDogVGVhbSBHcm91cAogICAgICAgICAgICAgICAgVG9zaGliYTogVG9zaGliYQogICAgICAgICAgICAgICAgVHJhbnNjZW5kOiBUcmFuc2NlbmQKICAgICAgICAgICAgICAgIFdlc3Rlcm5EaWdpdGFsOiBXZXN0ZXJuIERpZ2l0YWwKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIE1hbnVmYWN0dXJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UKICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU3RvcmFnZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gRnJlZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBNb3VudCBQb2ludAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZSBQYXJ0aXRpb24KICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBMb2NhdGlvbgogICAgTmFtZTogU3Vic2lkaWFyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIEFkZHJlc3NcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIKICAgIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIKICAgIERlc2NyaXB0aW9uXHJcblxyXG5TZWN0aW9uczpcclxuICBBZGRyZXNzOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBIZWFkZXI6CiAgICBBZGRyZXNzXHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVN0cmVldFxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1DaXR5XHJcbiAgICAgIC0KICAgIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnlcclxuICAgICAgLSBERjogTG9jYXRpb24tTGF0aXR1ZGVcclxuICAgICAgLSBERjoKICAgIExvY2F0aW9uLUxvbmdpdHVkZSIKICBEeW5hbWljRmllbGRzOgogICAgTG9jYXRpb24tQ2l0eToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ2l0eQogICAgICBOYW1lOiBMb2NhdGlvbi1DaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1MYXRpdHVkZToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTGF0aXR1ZGUKICAgICAgTmFtZTogTG9jYXRpb24tTGF0aXR1ZGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLUxvbmdpdHVkZToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTG9uZ2l0dWRlCiAgICAgIE5hbWU6IExvY2F0aW9uLUxvbmdpdHVkZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5OgogICAgICBDSUNsYXNzOiBTdWJzaWRpYXJ5CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIENvdW50cnkKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6IDAKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBDb3VudHJ5CiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tU3RyZWV0OgogICAgICBDSUNsYXNzOiBTdWJzaWRpYXJ5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTdHJlZXQKICAgICAgTmFtZTogTG9jYXRpb24tU3RyZWV0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTmV0d29yayBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogU3dpdGNoCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrCiAgICBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuCiAgICBcIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZToKICAgIElUU00gTmV0d29yayBJbmZvXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQgogICAgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQgogICAgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBVUFMKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbAogICAgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuCiAgICBcIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuCiAgICBcIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIKICAgIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUKICAgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlCiAgICBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzCiAgICBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNCiAgICBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbgogICAgYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgVVBTXHJcbiAgSVRTTSBNb2RlbDpcclxuCiAgICBcICAgTmFtZTogSVRTTSBNb2RlbFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZAogICAgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yawogICAgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVVQUy1CYXR0ZXJ5Q2FwYWNpdHk6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQmF0dGVyeSBDYXBhY2l0eSAoQWgpCiAgICAgIE5hbWU6IElUU01VUFMtQmF0dGVyeUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNVVBTLUJhdHRlcnlUeXBlOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBGbHl3aGVlbDogRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UKICAgICAgICAgIExpLWlvbjogTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeQogICAgICAgICAgTGlGZVBPNDogTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeQogICAgICAgICAgTmlDZDogTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnkKICAgICAgICAgIE5pTUg6IE5pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFNMQTogU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQmF0dGVyeSBUeXBlCiAgICAgIE5hbWU6IElUU01VUFMtQmF0dGVyeVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01VUFMtTWF4aW11bUxvYWRDYXBhY2l0eToKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpCiAgICAgIE5hbWU6IElUU01VUFMtTWF4aW11bUxvYWRDYXBhY2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBXTEFOIGFjY2VzcyBwb2ludAogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIFJvd1NwYW46CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yawogICAgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuICAtIE5hbWU6IExvY2F0ZWQKICAgIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTQogICAgTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbgogICAgXCBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6CiAgICBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIKICAgIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIKICAgIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCg==</File>
        <File Location="var/packagesetup/ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGZpcnN0IHBhaXJzKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZzo6UHJlZmVyZW5jZXNEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZhbGlkJywKKTsKCj1oZWFkMSBOQU1FCgp2YXI6OnBhY2thZ2VzZXR1cDo6SVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IC0gY29kZSB0byBleGVjdXRlIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbgoKPWhlYWQxIERFU0NSSVBUSU9OCgpGdW5jdGlvbnMgZm9yIGluc3RhbGxpbmcgdGhlIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCBwYWNrYWdlLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDb2RlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgndmFyOjpwYWNrYWdlc2V0dXA6OklUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCcpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBGb3JjZSBhIHJlbG9hZCBvZiBaWlpBdXRvLnBtIGFuZCBaWlpBQXV0by5wbSB0byBnZXQgdGhlIGZyZXNoIGNvbmZpZ3VyYXRpb24gdmFsdWVzLgogICAgZm9yIG15ICRNb2R1bGUgKCBzb3J0IGtleXMgJUlOQyApIHsKICAgICAgICBpZiAoICRNb2R1bGUgPX4gbS9aWlpBQT91dG9cLnBtJC8gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkSU5DeyRNb2R1bGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIENyZWF0ZSBjb21tb24gb2JqZWN0cyB3aXRoIGZyZXNoIGRlZmF1bHQgY29uZmlnLgogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKCk7CgogICAgIyBkZWZpbmUgVXNlcklEIHBhcmFtZXRlciBmb3IgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBzdGF0cyBvYmplY3QKICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZGVmaW5lIGZpbGUgcHJlZml4IGZvciBzdGF0cwogICAgJFNlbGYtPntTdGF0c0ZpbGVQcmVmaXh9ID0gJ0lUU01TdGF0cyc7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgQ29kZUluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIGluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZUluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlSW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIHRoZSBncm91cCBpdHNtLWNvbmZpZ2l0ZW0KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0dyb3VwIGZvciBJVFNNIENvbmZpZ0l0ZW0gbWFzayBhY2Nlc3MgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nLAogICAgKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgQzxjdXJfZGVwbF9zdGF0ZV9pZD4gb3IgQzxjdXJfaW5jaV9zdGF0ZV9pZD4gcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBkZXBsb3ltZW50IHN0YXRlcwogICAgJFNlbGYtPl9TZXREZXBsb3ltZW50U3RhdGVQcmVmZXJlbmNlcygpOwoKICAgICMgYWRkIHRoZSBDb25maWdJdGVtIG1hbmFnZW1lbnQgaW52b2tlciB0byB0aGUgRWxhc3RpY3NlYXJjaCB3ZWJzZXJ2aWNlCiAgICAkU2VsZi0+X1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlKCBBY3Rpb24gPT4gJ0FkZCcgKTsKCiAgICAjIGluc3RhbGwgc3RhdHMKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpLT5TdGF0c0luc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e1N0YXRzRmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVSZWluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHJlaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlUmVpbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVJlaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIHRoZSBncm91cCBpdHNtLWNvbmZpZ2l0ZW0KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0dyb3VwIGZvciBJVFNNIENvbmZpZ0l0ZW0gbWFzayBhY2Nlc3MgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nLAogICAgKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQgcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBzb21lIGRlcGxveW1lbnQgc3RhdGVzCiAgICAkU2VsZi0+X1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzKCk7CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntTdGF0c0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fMTFfMF8xNSgpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gMTEuMC4xNC4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8xMV8wXzE1KCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzExXzBfMTUgeyAgICAjIyBubyBjcml0aWMgcXcoT1RPQk86OlJlcXVpcmVDYW1lbENhc2UpCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdXBkYXRlIHN5c2NvbmZpZyBzZXR0aW5ncyBvZiBjdXN0b21lciBjb21wYW55IGFuZCBjdXN0b21lciB1c2VyIGluZm9ybWF0aW9uIGNlbnRlciB3aWRnZXRzCiAgICAkU2VsZi0+X1VwZGF0ZURhc2hib2FyZFdpZGdldFN5c0NvbmZpZygpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzExXzBfNygpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gMTEuMC43LgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzExXzBfNygpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8xMV8wXzcgeyAgICAjIyBubyBjcml0aWMgcXcoT1RPQk86OlJlcXVpcmVDYW1lbENhc2UpCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIHRoZSBDb25maWdJdGVtIG1hbmFnZW1lbnQgaW52b2tlciB0byB0aGUgRWxhc3RpY3NlYXJjaCB3ZWJzZXJ2aWNlCiAgICAkU2VsZi0+X1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlKCBBY3Rpb24gPT4gJ0FkZCcgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQgcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBzb21lIGRlcGxveW1lbnQgc3RhdGVzCiAgICAkU2VsZi0+X1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzKCk7CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntTdGF0c0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVW5pbnN0YWxsKCkKCnJ1biB0aGUgY29kZSB1bmluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVuaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNsZWFyIGNvbmZpZ2l0ZW1fbGluayB0YWJsZQogICAgIyAgIHBsYWNpbmcgdGhpcyBiZWZvcmUgX0R5bmFtaWNGaWVsZHNEZWxldGUgdG8gYXZvaWQgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgcHJldmVudGluZyBkeW5hbWljIGZpZWxkIHZhbHVlIGRlbGV0aW9uCiAgICAkU2VsZi0+X0NvbmZpZ0l0ZW1MaW5rRGVsZXRlKCk7CgogICAgIyBkZWxldGUgYWxsIGR5bmFtaWMgZmllbGRzOgogICAgIyAgIG9mIG9iamVjdCB0eXBlIGNvbmZpZyBpdGVtCiAgICAjICAgb2YgZmllbGQgdHlwZSBJVFNNQ29uZmlnSXRlbVJlZmVyZW5jZSBhbmQgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uUmVmZXJlbmNlCiAgICAkU2VsZi0+X0R5bmFtaWNGaWVsZHNEZWxldGUoKTsKCiAgICAjIGNsZWFuIHVwIEltcG9ydEV4cG9ydCB0ZW1wbGF0ZXMKICAgICRTZWxmLT5fQ29uZmlnSXRlbUltcG9ydEV4cG9ydFRlbXBsYXRlc0RlbGV0ZSgpOwoKICAgICMgZGVsZXRlIGFsbCBsaW5rcyB3aXRoIGNvbmZpZ3VyYXRpb24gaXRlbXMKICAgICRTZWxmLT5fTGlua0RlbGV0ZSgpOwoKICAgICMgZGVhY3RpdmF0ZSB0aGUgZ3JvdXAgQzxpdHNtLWNvbmZpZ2l0ZW0+CiAgICAkU2VsZi0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICAjIGRlbGV0ZSAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnIHNlcnZpY2UgcHJlZmVyZW5jZXMKICAgICRTZWxmLT5fRGVsZXRlU2VydmljZVByZWZlcmVuY2VzKCk7CgogICAgIyByZW1vdmUgdGhlIENvbmZpZ0l0ZW0gbWFuYWdlbWVudCBpbnZva2VyIGZyb20gdGhlIEVsYXN0aWNzZWFyY2ggd2Vic2VydmljZQogICAgJFNlbGYtPl9VcGRhdGVFbGFzdGljc2VhcmNoV2ViU2VydmljZSggQWN0aW9uID0+ICdSZW1vdmUnICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVW5pbnN0YWxsUG9zdCgpCgpydW4gdGhlIGNvZGUgdW5pbnN0YWxsIHBvc3QgcGFydAoKdXNpbmcgYSBwb3N0IGZ1bmN0aW9uIGJlY2F1c2UgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgaG9sZCBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gY29uZmlnIGl0ZW0gY2xhc3MgaXRlbXMKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVbmluc3RhbGxQb3N0KCk7Cgo9Y3V0CgpzdWIgQ29kZVVuaW5zdGFsbFBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlbGV0ZSBnZW5lcmFsIGNhdGFsb2cgY2xhc3NlczoKICAgICMgICBJVFNNOjpDb25maWdJdGVtOjpDbGFzcwogICAgIyAgIElUU006OkNvbmZpZ0l0ZW06OlJvbGUKICAgICMgICBJVFNNOjpDb25maWdJdGVtOjpDbGFzczo6Q2F0ZWdvcnkKICAgICRTZWxmLT5fR2VuZXJhbENhdGFsb2dDbGFzc2VzRGVsZXRlKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfU2V0RGVwbG95bWVudFN0YXRlUHJlZmVyZW5jZXMoKQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzKCkKCj1jdXQKCnN1YiBfU2V0RGVwbG95bWVudFN0YXRlUHJlZmVyZW5jZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlTWFwID0gKAogICAgICAgIEV4cGlyZWQgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICBJbmFjdGl2ZSAgICA9PiAncG9zdHByb2R1Y3RpdmUnLAogICAgICAgIE1haW50ZW5hbmNlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICBQaWxvdCAgICAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgUGxhbm5lZCAgICAgPT4gJ3ByZXByb2R1Y3RpdmUnLAogICAgICAgIFByb2R1Y3Rpb24gID0+ICdwcm9kdWN0aXZlJywKICAgICAgICBSZXBhaXIgICAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgUmV0aXJlZCAgICAgPT4gJ3Bvc3Rwcm9kdWN0aXZlJywKICAgICAgICBSZXZpZXcgICAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgJ1Rlc3QvUUEnICAgPT4gJ3ByZXByb2R1Y3RpdmUnLAogICAgKTsKCiAgICBOQU1FOgogICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVNYXAgKSB7CiAgICAgICAgbXkgJEl0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICAgICAgTmFtZSAgPT4gJE5hbWUsCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgIG5leHQgTkFNRSBpZiAhJEl0ZW07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW0tPntJdGVtSUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJ0Z1bmN0aW9uYWxpdHknLAogICAgICAgICAgICBWYWx1ZSAgPT4gWyAkTWFweyROYW1lfSBdLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfR3JvdXBBZGQoKQoKYWRkIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdUaGUgZ3JvdXAgZGVzY3JpcHRpb24uJywKICAgICk7Cgo9Y3V0CgpzdWIgX0dyb3VwQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgRGVzY3JpcHRpb24pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICMgZ2V0IGxpc3Qgb2YgYWxsIGdyb3VwcwogICAgbXkgJUdyb3VwTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExpc3QoKTsKCiAgICAjIHJldmVyc2UgdGhlIGdyb3VwIGxpc3QgZm9yIGVhc2llciBsb29rdXAKICAgIG15ICVHcm91cExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlR3JvdXBMaXN0OwoKICAgICMgY2hlY2sgaWYgZ3JvdXAgYWxyZWFkeSBleGlzdHMKICAgIG15ICRHcm91cElEID0gJEdyb3VwTGlzdFJldmVyc2V7ICRQYXJhbXtOYW1lfSB9OwoKICAgICMgcmVhY3RpdmF0ZSB0aGUgZ3JvdXAKICAgIGlmICgkR3JvdXBJRCkgewoKICAgICAgICAjIGdldCBjdXJyZW50IGdyb3VwIGRhdGEKICAgICAgICBteSAlR3JvdXBEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwR2V0KAogICAgICAgICAgICBJRCAgICAgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgcmVhY3RpdmF0ZSBncm91cAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cFVwZGF0ZSgKICAgICAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFkZCB0aGUgZ3JvdXAKICAgIGVsc2UgewogICAgICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwQWRkKAogICAgICAgICAgICBOYW1lICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgQ29tbWVudCA9PiAkUGFyYW17RGVzY3JpcHRpb259LAogICAgICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBsb29rdXAgdGhlIG5ldyBncm91cCBpZAogICAgbXkgJE5ld0dyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBhZGQgdXNlciByb290IHRvIHRoZSBncm91cAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyQWRkKAogICAgICAgIEdJRCAgICAgICAgPT4gJE5ld0dyb3VwSUQsCiAgICAgICAgVUlEICAgICAgICA9PiAxLAogICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICBybyAgICAgICAgPT4gMSwKICAgICAgICAgICAgbW92ZV9pbnRvID0+IDEsCiAgICAgICAgICAgIGNyZWF0ZSAgICA9PiAxLAogICAgICAgICAgICBvd25lciAgICAgPT4gMSwKICAgICAgICAgICAgcHJpb3JpdHkgID0+IDEsCiAgICAgICAgICAgIHJ3ICAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0dyb3VwRGVhY3RpdmF0ZSgpCgpkZWFjdGl2YXRlIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgKTsKCj1jdXQKCnN1YiBfR3JvdXBEZWFjdGl2YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTmFtZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9va3VwIGdyb3VwIGlkCiAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJEdyb3VwSUQ7CgogICAgIyBnZXQgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgIyBnZXQgY3VycmVudCBncm91cCBkYXRhCiAgICBteSAlR3JvdXBEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwR2V0KAogICAgICAgIElEICAgICA9PiAkR3JvdXBJRCwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBkZWFjdGl2YXRlIGdyb3VwCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBVcGRhdGUoCiAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle2ludmFsaWR9LAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCiMgVE9ETyB2ZXJpZnkgaWYgYWxsIHJlbGV2YW50IGxpbmtzIGFyZSBkZWxldGVkCgo9aGVhZDIgX0xpbmtEZWxldGUoKQoKZGVsZXRlIGFsbCBleGlzdGluZyBsaW5rcyB0byBjb25maWd1cmF0aW9uIGl0ZW1zCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fTGlua0RlbGV0ZSgpOwoKPWN1dAoKc3ViIF9MaW5rRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgYWxsIGNvbmZpZ3VyYXRpb24gaXRlbXMKICAgIG15ICRDb25maWdJdGVtSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1TZWFyY2goKTsKCiAgICByZXR1cm4gaWYgISRDb25maWdJdGVtSURzOwogICAgcmV0dXJuIGlmIHJlZiAkQ29uZmlnSXRlbUlEcyBuZSAnQVJSQVknOwoKICAgICMgZGVsZXRlIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0RlbGV0ZUFsbCgKICAgICAgICAgICAgT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIEtleSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0ZpbGx1cEVtcHR5TGFzdFZlcnNpb25JRCgpCgpmaWxsIHVwIGVtcHR5IGVudHJpZXMgaW4gdGhlIGxhc3RfdmVyc2lvbl9pZCBjb2x1bW4gb2YgdGhlIEM8Y29uZmlnaXRlbT4gdGFibGUKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCj1jdXQKCnN1YiBfRmlsbHVwRW1wdHlMYXN0VmVyc2lvbklEIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGVtcHR5IGxhc3RfdmVyc2lvbl9pZAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFICcKICAgICAgICAgICAgLiAnbGFzdF92ZXJzaW9uX2lkID0gMCBPUiBsYXN0X3ZlcnNpb25faWQgSVMgTlVMTCcsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRSb3dbMF07CiAgICB9CgogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICMgZ2V0IHRoZSBsYXN0IHZlcnNpb24gb2YgdGhpcyBjb25maWd1cmF0aW9uIGl0ZW0KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24gJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgY29uZmlnaXRlbV9pZCA9ID8gT1JERVIgQlkgaWQgREVTQycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRDb25maWdJdGVtSUQgXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICBteSAkVmVyc2lvbklEOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRWZXJzaW9uSUQgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRWZXJzaW9uSUQ7CgogICAgICAgICMgdXBkYXRlIEM8aW5jaV9zdGF0ZV9pZD4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW0gJwogICAgICAgICAgICAgICAgLiAnU0VUIGxhc3RfdmVyc2lvbl9pZCA9ID8gJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkVmVyc2lvbklELCBcJENvbmZpZ0l0ZW1JRCBdLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfRmlsbHVwRW1wdHlWZXJzaW9uSW5jaWRlbnRTdGF0ZUlEKCkKCmZpbGwgdXAgZW1wdHkgZW50cmllcyBpbiB0aGUgQzxpbmNpX3N0YXRlX2lkIGNvbHVtbj4gb2YgdGhlIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0ZpbGx1cEVtcHR5VmVyc2lvbkluY2lkZW50U3RhdGVJRCgpOwoKPWN1dAoKc3ViIF9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBvcGVyYXRpb25hbCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBlcnJvciBoYW5kbGluZwogICAgaWYgKCAhJEluY2lTdGF0ZUxpc3QgfHwgcmVmICRJbmNpU3RhdGVMaXN0IG5lICdIQVNIJyB8fCAhJXskSW5jaVN0YXRlTGlzdH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBmaW5kIGFueSBpdGVtIGluIGdlbmVyYWwgY2F0YWxvZyBjbGFzcyBJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzb3J0IGlkcwogICAgbXkgQEluY2lTdGF0ZUtleUxpc3QgPSBzb3J0IGtleXMgJXskSW5jaVN0YXRlTGlzdH07CgogICAgIyB1cGRhdGUgaW5jaV9zdGF0ZV9pZAogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX3ZlcnNpb24gJwogICAgICAgICAgICAuICdTRVQgaW5jaV9zdGF0ZV9pZCA9ID8gJwogICAgICAgICAgICAuICdXSEVSRSBpbmNpX3N0YXRlX2lkID0gMCBPUiBpbmNpX3N0YXRlX2lkIElTIE5VTEwnLAogICAgICAgIEJpbmQgPT4gWyBcJEluY2lTdGF0ZUtleUxpc3RbMF0gXSwKICAgICk7Cn0KCj1oZWFkMiBfRmlsbHVwRW1wdHlJbmNpZGVudEFuZERlcGxveW1lbnRTdGF0ZUlEKCkKCmZpbGwgdXAgZW1wdHkgZW50cmllcyBpbiB0aGUgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQgY29sdW1uIG9mIHRoZSBDPGNvbmZpZ2l0ZW0+IHRhYmxlCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRmlsbHVwRW1wdHlJbmNpZGVudEFuZERlcGxveW1lbnRTdGF0ZUlEKCk7Cgo9Y3V0CgpzdWIgX0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBlbXB0eSBjdXJfZGVwbF9zdGF0ZV9pZCBvciBjdXJfaW5jaV9zdGF0ZV9pZAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFICcKICAgICAgICAgICAgLiAnY3VyX2RlcGxfc3RhdGVfaWQgPSAwIE9SIGN1cl9kZXBsX3N0YXRlX2lkIElTIE5VTEwgT1IgJwogICAgICAgICAgICAuICdjdXJfaW5jaV9zdGF0ZV9pZCA9IDAgT1IgY3VyX2luY2lfc3RhdGVfaWQgSVMgTlVMTCcsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRSb3dbMF07CiAgICB9CgogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICMgZ2V0IGxhc3QgdmVyc2lvbgogICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJExhc3RWZXJzaW9uOwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmIHJlZiAkTGFzdFZlcnNpb24gbmUgJ0hBU0gnOwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkTGFzdFZlcnNpb24tPntEZXBsU3RhdGVJRH07CiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRMYXN0VmVyc2lvbi0+e0luY2lTdGF0ZUlEfTsKCiAgICAgICAgIyBjb21wbGV0ZSBjb25maWd1cmF0aW9uIGl0ZW0KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW0gU0VUICcKICAgICAgICAgICAgICAgIC4gJ2N1cl9kZXBsX3N0YXRlX2lkID0gPywgJwogICAgICAgICAgICAgICAgLiAnY3VyX2luY2lfc3RhdGVfaWQgPSA/ICcKICAgICAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgXCRMYXN0VmVyc2lvbi0+e0RlcGxTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIFwkTGFzdFZlcnNpb24tPntJbmNpU3RhdGVJRH0sCiAgICAgICAgICAgICAgICBcJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0RlbGV0ZVNlcnZpY2VQcmVmZXJlbmNlcygpCgpEZWxldGVzIHRoZSBzZXJ2aWNlIHByZWZlcmVuY2VzIGZvciB0aGUga2V5ICdDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcycuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRGVsZXRlU2VydmljZVByZWZlcmVuY2VzKCk7Cgo9Y3V0CgpzdWIgX0RlbGV0ZVNlcnZpY2VQcmVmZXJlbmNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHNlcnZpY2UgbGlzdAogICAgbXkgJVNlcnZpY2VMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIFNFUlZJQ0VJRDoKICAgIGZvciBteSAkU2VydmljZUlEICggc29ydCBrZXlzICVTZXJ2aWNlTGlzdCApIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgdHlwZSBmcm9tIENJcyBvZiB0aGUgc2VydmljZQogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJycsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfVXBkYXRlRWxhc3RpY3NlYXJjaFdlYlNlcnZpY2UoKQoKQWRkcyB0aGUgQ29uZmlnSXRlbSBtYW5hZ2VtZW50IGludm9rZXIuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fVXBkYXRlRWxhc3RpY3NlYXJjaFdlYlNlcnZpY2UoCiAgICAgICAgTW9kZSA9PiAnQWRkfFJlbW92ZScKICAgICk7Cgo9Y3V0CgpzdWIgX1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFdlYnNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpOwogICAgbXkgJFdlYnNlcnZpY2UgICAgICAgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUdldCgKICAgICAgICBOYW1lID0+ICdFbGFzdGljc2VhcmNoJywKICAgICk7CgogICAgaWYgKCAhJFdlYnNlcnZpY2UgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEaWQgbm90IGZpbmQgdGhlIEVsYXN0aWNzZWFyY2ggd2Vic2VydmljZSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0FkZCcgKSB7CiAgICAgICAgJFdlYnNlcnZpY2UtPntDb25maWd9e1JlcXVlc3Rlcn17SW52b2tlcn17Q29uZmlnSXRlbUluZ2VzdEF0dGFjaG1lbnR9ID0gewogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnJywKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50JywKICAgICAgICB9OwogICAgICAgICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e0ludm9rZXJ9e0NvbmZpZ0l0ZW1NYW5hZ2VtZW50fSA9IHsKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJycsCiAgICAgICAgICAgIEV2ZW50cyAgICAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBc3luY2hyb25vdXMgPT4gJzAnLAogICAgICAgICAgICAgICAgICAgIEV2ZW50ICAgICAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAnMCcsCiAgICAgICAgICAgICAgICAgICAgRXZlbnQgICAgICAgID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+ICcwJywKICAgICAgICAgICAgICAgICAgICBFdmVudCAgICAgICAgPT4gJ0F0dGFjaG1lbnRBZGRQb3N0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+ICcwJywKICAgICAgICAgICAgICAgICAgICBFdmVudCAgICAgICAgPT4gJ0F0dGFjaG1lbnREZWxldGVQb3N0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+ICcwJywKICAgICAgICAgICAgICAgICAgICBFdmVudCAgICAgICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgVHlwZSA9PiAnRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbU1hbmFnZW1lbnQnLAogICAgICAgIH07CiAgICAgICAgJFdlYnNlcnZpY2UtPntDb25maWd9e1JlcXVlc3Rlcn17VHJhbnNwb3J0fXtDb25maWd9e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ317Q29uZmlnSXRlbUluZ2VzdEF0dGFjaG1lbnR9ID0gewogICAgICAgICAgICBDb21tYW5kICAgID0+ICdQT1NUJywKICAgICAgICAgICAgQ29udHJvbGxlciA9PiAnL3RtcGF0dGFjaG1lbnRzLzpkb2NhcGkvOmlkP3BpcGVsaW5lPTpwYXRoJywKICAgICAgICB9OwogICAgICAgICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e1RyYW5zcG9ydH17Q29uZmlnfXtJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9e0NvbmZpZ0l0ZW1NYW5hZ2VtZW50fSA9IHsKICAgICAgICAgICAgQ29tbWFuZCAgICA9PiAnUE9TVCcsCiAgICAgICAgICAgIENvbnRyb2xsZXIgPT4gJy9jb25maWdpdGVtLzpkb2NhcGkvOmlkJywKICAgICAgICB9OwogICAgfQoKICAgIGVsc2lmICggJFBhcmFte0FjdGlvbn0gZXEgJ1JlbW92ZScgKSB7CiAgICAgICAgZGVsZXRlICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e0ludm9rZXJ9e0NvbmZpZ0l0ZW1Jbmdlc3RBdHRhY2htZW50fTsKICAgICAgICBkZWxldGUgJFdlYnNlcnZpY2UtPntDb25maWd9e1JlcXVlc3Rlcn17SW52b2tlcn17Q29uZmlnSXRlbU1hbmFnZW1lbnR9OwogICAgICAgIGRlbGV0ZSAkV2Vic2VydmljZS0+e0NvbmZpZ317UmVxdWVzdGVyfXtUcmFuc3BvcnR9e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ317Q29uZmlnSXRlbUluZ2VzdEF0dGFjaG1lbnR9OwogICAgICAgIGRlbGV0ZSAkV2Vic2VydmljZS0+e0NvbmZpZ317UmVxdWVzdGVyfXtUcmFuc3BvcnR9e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ317Q29uZmlnSXRlbU1hbmFnZW1lbnR9OwogICAgfQoKICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gQWN0aW9uIHByb3ZpZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFN1Y2Nlc3MgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyRXZWJzZXJ2aWNlfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIHRoZSBFbGFzdGljc2VhcmNoIHdlYnNlcnZpY2UhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHJldHVybiAxOwoKfQoKPWhlYWQyIF9VcGRhdGVEYXNoYm9hcmRXaWRnZXRTeXNDb25maWcoKQoKVXBkYXRlcyB0aGUgc3lzY29uZmlnIHNldHRpbmdzIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGFuZCBjdXN0b21lciB1c2VyIGluZm9ybWF0aW9uIGNlbnRlciB3aWRnZXRzIHRvIHRoZSBuZXcgc3RydWN0dXJlLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X1VwZGF0ZURhc2hib2FyZFdpZGdldFN5c0NvbmZpZygpOwoKPWN1dAoKc3ViIF9VcGRhdGVEYXNoYm9hcmRXaWRnZXRTeXNDb25maWcgewoKICAgIG15ICRMb2dPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgIG15IEBTZXR0aW5ncyA9ICgKICAgICAgICAiQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkiLAogICAgICAgICJBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyIgogICAgKTsKCiAgICBteSAkQWxsRGlydHk7CiAgICBteSBAQ2hhbmdlZFNldHRpbmdzOwoKICAgIFNFVFRJTkc6CiAgICBmb3IgbXkgJFNldHRpbmdOYW1lIChAU2V0dGluZ3MpIHsKCiAgICAgICAgbXkgJVNldHRpbmcgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICRTZXR0aW5nTmFtZSwKICAgICAgICApOwoKICAgICAgICAjIGRvIG5vdGhpbmcgaWYgc2V0dGluZyBpcyBub3QgbW9kaWZpZWQgYW5kIG5vdCBkaXJ0eQogICAgICAgIG5leHQgU0VUVElORyBpZiAhJFNldHRpbmd7SXNNb2RpZmllZH0gJiYgISRTZXR0aW5ne0lzRGlydHl9OwoKICAgICAgICAjIGFzIHRoZSBTeXNDb25maWcgY2hhbmdlIGJyZWFrcyB0aGUgb2xkIHNldHRpbmcsIGR1cmluZyB1cGdyYWRlIHRvIDExLjEgd2UgaGF2ZSB0byB1c2UgdGhlIGZvcm1lcmx5IGRlcGxveWVkIHNldHRpbmcKICAgICAgICBpZiAoICEkU2V0dGluZ3tJc01vZGlmaWVkfSApIHsKICAgICAgICAgICAgJVNldHRpbmcgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nR2V0KAogICAgICAgICAgICAgICAgTmFtZSAgICAgPT4gJFNldHRpbmdOYW1lLAogICAgICAgICAgICAgICAgRGVwbG95ZWQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRBbGxEaXJ0eSA9IDE7CiAgICAgICAgfQoKICAgICAgICBuZXh0IFNFVFRJTkcgaWYgcmVmICRTZXR0aW5ne0VmZmVjdGl2ZVZhbHVlfXtDb25maWdJdGVtS2V5fSBuZSAnSEFTSCc7CgogICAgICAgIHB1c2ggQENoYW5nZWRTZXR0aW5ncywgJFNldHRpbmdOYW1lOwoKICAgICAgICAjIGZldGNoIGR5bmFtaWMgZmllbGQgZnJvbSBvbGQgc3RydWN0dXJlCiAgICAgICAgbXkgJElkZW50aWZpZXJERiA9IGZpcnN0IHsgJFNldHRpbmd7RWZmZWN0aXZlVmFsdWV9e0NvbmZpZ0l0ZW1LZXl9eyRffSB9IGtleXMgJFNldHRpbmd7RWZmZWN0aXZlVmFsdWV9e0NvbmZpZ0l0ZW1LZXl9LT4lKjsKCiAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICBGb3JjZSAgICAgPT4gMSwKICAgICAgICAgICAgRGVmYXVsdElEID0+ICRTZXR0aW5ne0RlZmF1bHRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBVcGRhdGUgc2V0dGluZyB3aXRoIG1vZGlmaWVkIGRhdGEKICAgICAgICBteSAlUmVzdWx0ID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VwZGF0ZSgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFNldHRpbmdOYW1lLAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAkU2V0dGluZ3tFZmZlY3RpdmVWYWx1ZX0tPiUqLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAkSWRlbnRpZmllckRGLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeGNsdXNpdmVMb2NrR1VJRCA9PiAkRXhjbHVzaXZlTG9ja0dVSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFJlc3VsdHtTdWNjZXNzfSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIHNldHRpbmcgJFNldHRpbmdOYW1lLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdVbmxvY2soCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICBEZWZhdWx0SUQgPT4gJFNldHRpbmd7RGVmYXVsdElEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdW5sb2NrIHNldHRpbmcgJFNldHRpbmdOYW1lLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgIH0KCiAgICBpZiAoIEBDaGFuZ2VkU2V0dGluZ3MgKSB7CiAgICAgICAgbXkgJURpcnR5U2V0dGluZ3MgPSAkQWxsRGlydHkgPyAoKSA6IHsgRGlydHlTZXR0aW5ncyA9PiBcQENoYW5nZWRTZXR0aW5ncyB9OwoKICAgICAgICBteSAlRGVwbG95bWVudFJlc3VsdCA9ICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ3VyYXRpb25EZXBsb3koCiAgICAgICAgICAgIENvbW1lbnRzID0+ICJJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgVXBncmFkZSAoZml4ZWQgQ0lDIGFuZCBDVUlDIElUU00gV2lkZ2V0IENvbmZpZykuIiwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICAgPT4gMSwKICAgICAgICAgICAgJURpcnR5U2V0dGluZ3MsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERlcGxveW1lbnRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRGVwbG95bWVudCBmYWlsZWQuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfRHluYW1pY0ZpZWxkc0RlbGV0ZSgpCgpEZWxldGVzIHRoZSBkeW5hbWljIGZpZWxkcyB3aGljaCBhcmUgcmVsYXRlZCB0byB0aGlzIHBhY2thZ2UsIGVpdGhlciBiZWNhdXNlIHRoZXkgYXJlIG9mIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtIG9yIGJlY2F1c2UgdGhleSBhcmUgb2YgZmllbGQgdHlwZSBJVFNNQ29uZmlnSXRlbVJlZmVyZW5jZSBvciBJVFNNQ29uZmlnSXRlbVZlcnNpb25SZWZlcmVuY2UuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0RlbGV0ZSgpOwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVjZXNzYXJ5IG9iamVjdHMKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAjIGdldCBhbGwgZHluYW1pYyBmaWVsZHMgYmVjYXVzZSB3ZSBjYW4ndCBmaWx0ZXIgZm9yIGZpZWxkIHR5cGUgaW4gZHluYW1pYyBmaWVsZCBsaXN0IGZ1bmN0aW9ucwogICAgbXkgJER5bmFtaWNGaWVsZHMgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkID0+IDAsCiAgICApOwoKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJER5bmFtaWNGaWVsZHMtPkAqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRAogICAgICAgICAgICB1bmxlc3MgKAogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdJVFNNQ29uZmlnSXRlbScKICAgICAgICAgICAgICAgIHx8ICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJwogICAgICAgICAgICAgICAgfHwgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW1WZXJzaW9uJwogICAgICAgICAgICApOwoKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntJbnRlcm5hbEZpZWxkfSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSBpbnRlcm5hbCBEeW5hbWljRmllbGQgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QWxsVmFsdWVzRGVsZXRlKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICdNZXNzYWdlJyAgPT4gIkNvdWxkIG5vdCBkZWxldGUgdmFsdWVzIGZvciBEeW5hbWljRmllbGQgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGREZWxldGUoCiAgICAgICAgICAgIElEICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSBEeW5hbWljRmllbGQgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9HZW5lcmFsQ2F0YWxvZ0NsYXNzZXNEZWxldGUoKQoKRGVsZXRlcyB0aGUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzIGl0ZW1zIHdoaWNoIGFyZSByZWxhdGVkIHRvIHRoaXMgcGFja2FnZSBhbmQgdGhlaXIgcHJlZmVyZW5jZXMgYXMgd2VsbC4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9HZW5lcmFsQ2F0YWxvZ0NsYXNzZXNEZWxldGUoKTsKCj1jdXQKCnN1YiBfR2VuZXJhbENhdGFsb2dDbGFzc2VzRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVjZXNzYXJ5IG9iamVjdHMKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJFByZWZlcmVuY2VzT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nOjpQcmVmZXJlbmNlc0RCJyk7CiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBteSBAQ2xhc3Nlc1RvRGVsZXRlCiAgICAgICAgPSBxdyhJVFNNOjpDb25maWdJdGVtOjpDbGFzcyBJVFNNOjpDb25maWdJdGVtOjpSb2xlIElUU006OkNvbmZpZ0l0ZW06OkNsYXNzOjpDYXRlZ29yeSBJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUgSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm8pOwoKICAgIENMQVNTOgogICAgZm9yIG15ICRDbGFzcyAoQENsYXNzZXNUb0RlbGV0ZSkgewoKICAgICAgICBteSAkSXRlbUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgIFZhbGlkID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDTEFTUyB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1MaXN0KTsKCiAgICAgICAgZm9yIG15ICRJdGVtICggcGFpcnMgJEl0ZW1MaXN0LT4lKiApIHsKICAgICAgICAgICAgbXkgKCAkSUQsICROYW1lICkgPSAkSXRlbS0+QCo7CgogICAgICAgICAgICAjIHVuc2V0IHByZWZlcmVuY2VzIG9mIGl0ZW0KICAgICAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJFByZWZlcmVuY2VzT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICglUHJlZmVyZW5jZXMpIHsKICAgICAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIGtleXMgJVByZWZlcmVuY2VzICkgewogICAgICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlc09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJRCwKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgID0+ICRQcmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkZWxldGUgaXRlbSBmcm9tIGRhdGFiYXNlCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGdlbmVyYWxfY2F0YWxvZyBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICAgICAgXCRJRCwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAnTWVzc2FnZScgID0+ICJDb3VsZCBub3QgZGVsZXRlIEdlbmVyYWxDYXRhbG9nIGl0ZW0gJE5hbWUhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENMQVNTOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0NvbmZpZ0l0ZW1MaW5rRGVsZXRlKCkKCkNsZWFycyB0aGUgY29uZmlnaXRlbV9saW5rIGRhdGFiYXNlIHRhYmxlLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NvbmZpZ0l0ZW1MaW5rRGVsZXRlKCk7Cgo9Y3V0CgpzdWIgX0NvbmZpZ0l0ZW1MaW5rRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWxldGUgdGFibGUgcm93cyBmcm9tIGRhdGFiYXNlCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycsCiAgICApOwogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSByb3dzIG9mIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayEiLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfQ29uZmlnSXRlbUltcG9ydEV4cG9ydFRlbXBsYXRlc0RlbGV0ZSgpCgpEZWxldGVzIGFsbCBJbXBvcnRFeHBvcnQgdGVtcGxhdGVzIHdpdGggb2JqZWN0IHR5cGUgQ29uZmlnSXRlbS4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Db25maWdJdGVtSW1wb3J0RXhwb3J0VGVtcGxhdGVzRGVsZXRlKCk7Cgo9Y3V0CgpzdWIgX0NvbmZpZ0l0ZW1JbXBvcnRFeHBvcnRUZW1wbGF0ZXNEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgIG15ICRUZW1wbGF0ZUlETGlzdCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlRlbXBsYXRlTGlzdCgKICAgICAgICBPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICByZXR1cm4gMSB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRUZW1wbGF0ZUlETGlzdCk7CgogICAgZm9yIG15ICRUZW1wbGF0ZUlEICggJFRlbXBsYXRlSURMaXN0LT5AKiApIHsKCiAgICAgICAgIyBkZWxldGUgdGVtcGxhdGUgZnJvbSBkYXRhYmFzZQogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+VGVtcGxhdGVEZWxldGUoCiAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggISREZWxldGVTdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICdNZXNzYWdlJyAgPT4gIkNvdWxkIG5vdCBkZWxldGUgSW1wb3J0RXhwb3J0IHRlbXBsYXRlIG9mIHR5cGUgSVRTTUNvbmZpZ0l0ZW0gd2l0aCBJRCAkVGVtcGxhdGVJRCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="doc/en/ITSMConfigurationManagement.pdf" Permission="644" Encode="Base64">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3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHdKAADeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdEgCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4pwQA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgn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axf2q23wo0a49BjiJLcAzqMdIa4FAKCijJWam2/DAQAA/IVUjyLUzJ/+8+Gv3f59fVjRIZbiUTX9P3/aztIRLYktgPNuSSROjQIAQEXIlAAAAODCci9/IK59+IAl7rPdKVVNbmWe/dSIdTmVX7CqqBcx/JD40gOAP9uOlBjzCgAAlMNICQAAAC4QLfNIqjkszqR6VKF5FH1CbspRd2xEaInIQgps8MxLVR/919gxd3zwUjNz6QW4d3z3yZMjZ87fdtxjj27eq987b/Vq4pAK5r1V+5GCR244MOaNdcfMES3uefTj+11vPvDh5I3O0EadRk946g7vwApa5oop/35hyowVh47bqnW8q//rQ9vWtHiX+W2f7nfsumv18v7JBl4iAAAAwB8Znn9+KFUAcFnxeBRFUe12K6UAcIEpK4c/eEXfSb+uSdmzNSXDeWLdpE8e+vdspfsN18QVfdspe8X0sSsiHx5ze/KGb1780dT7ruQIWTuy8OcPtyU8+K9GoTu/veG6nwMefPJ/o/re1d62fNyHP5g739s6SNu16M2xv66JvOnjzwY+cMXhL4Z/9sYv+b1ffea1B+umf/PZuwcbDOpZRd499aZO49O63PP6yNvvudq2etzbr22re3ePKgGS8OQXhNRp1KFVnKMC3d327kurVjVKOoXBEQCcP03zXg4cPJyQEEs1AAAolJPjMhoNJlOpLhUMjwAAAHCBqOHteg68LurwnJWb81Tn1lW/p0R0u79769DThzSQLTH9RtzdctPnT36WVmooW2N8n+FPvPZYm5aNa7fq0fPmJlLawUyl8C5zoyde6925UULrft27xsoNBjwwqFvt+i063n99XM6B9BxNWffp93/U7/fBS107Nq/T+rqbxw5vm/31tN+9QzAYkvvcM/TBJjFErwAAAIC/YngEAACAC8SU0PmmUS0bRd7w+NDFeUIKaHjfoI8er2m3nHkAJgXUuX7047M6vPDf764f2vDkVENCi/49N8+c+PWkbYd2bNk0Z26Bo1ZR4CvZIuJjzUZZCIs1wCxXrVHF5r1hcgSaJVVowrNja0re4o+aRn1ctCxNcWv1Dx5ThUM2mM2MiwAAAAD4M0JbAACAC0U2qlvefXPUEumqF4deO/fNoaPeHNv13WHNzjprQONHHnzou6efeWHFpOpF03IWje/Y62epa9fe7Rre2v3alqan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dwKAdwKAd0oAAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0SAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHinBADgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeKQEAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAd0oAAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4J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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>